[DRE-commits] [ruby-gsl] 03/08: Imported Upstream version 1.16.0.6+dfsg1
Balint Reczey
rbalint at moszumanska.debian.org
Mon Oct 5 16:22:14 UTC 2015
This is an automated email from the git hooks/post-receive script.
rbalint pushed a commit to branch master
in repository ruby-gsl.
commit 0349b3dc2a5873327d842e1fb7530535d06d87e8
Author: Balint Reczey <balint at balintreczey.hu>
Date: Sun Oct 4 18:45:41 2015 +0200
Imported Upstream version 1.16.0.6+dfsg1
---
.gitignore | 12 +
.travis.yml | 24 +
AUTHORS | 8 +
COPYING | 680 +++----
ChangeLog | 1199 +++++------
Gemfile | 4 +
README | 28 -
README.md | 77 +
Rakefile | 47 +-
THANKS | 2 +-
examples/blas/blas.rb | 2 +-
examples/bspline.rb | 6 +-
examples/complex/functions.rb | 8 +-
examples/complex/mul.rb | 2 +-
examples/const/physconst.rb | 8 +-
examples/const/travel.rb | 8 +-
examples/eigen/nonsymmv.rb | 2 +-
examples/eigen/qhoscillator.rb | 6 +-
examples/fft/radix2.rb | 2 +-
examples/fft/real-halfcomplex.rb | 6 +-
examples/fft/real-halfcomplex2.rb | 6 +-
examples/fit/expfit.rb | 2 +-
examples/fit/multifit.rb | 2 +-
examples/fit/ndlinear.rb | 88 +-
examples/fit/nonlinearfit.rb | 2 +-
examples/fit/wlinear.rb | 6 +-
examples/function/function.rb | 2 +-
examples/function/min.rb | 2 +-
examples/function/synchrotron.rb | 4 +-
examples/gallery/koch.rb | 2 +-
examples/histogram/cauchy.rb | 4 +-
examples/histogram/exponential.rb | 2 +-
examples/histogram/histo3d.rb | 2 +-
examples/histogram/histogram-pdf.rb | 4 +-
examples/histogram/xexp.rb | 2 +-
examples/integration/ahmed.rb | 4 +-
examples/integration/cosmology.rb | 14 +-
examples/integration/friedmann.rb | 8 +-
examples/integration/qng.rb | 2 +-
examples/interp/demo.rb | 4 +-
examples/linalg/LQ_solve.rb | 2 +-
examples/linalg/LU.rb | 2 +-
examples/linalg/LU2.rb | 2 +-
examples/linalg/LU_narray.rb | 2 +-
examples/linalg/PTLQ.rb | 2 +-
examples/linalg/QRPT.rb | 2 +-
examples/linalg/chol.rb | 2 +-
examples/linalg/chol_narray.rb | 2 +-
examples/linalg/complex.rb | 2 +-
examples/math/elementary.rb | 2 +-
examples/math/functions.rb | 2 +-
examples/math/inf_nan.rb | 2 +-
examples/math/minmax.rb | 2 +-
examples/math/power.rb | 2 +-
examples/math/test.rb | 2 +-
examples/min.rb | 2 +-
examples/multimin/bundle.rb | 2 +-
examples/multimin/cqp.rb | 34 +-
examples/multiroot/fsolver3.rb | 2 +-
examples/odeiv/binarysystem.rb | 24 +-
examples/odeiv/demo.rb | 6 +-
examples/odeiv/frei1.rb | 14 +-
examples/odeiv/frei2.rb | 8 +-
examples/odeiv/oscillator.rb | 2 +-
examples/odeiv/sedov.rb | 6 +-
examples/odeiv/whitedwarf.rb | 22 +-
examples/permutation/ex1.rb | 4 +-
examples/permutation/permutation.rb | 2 +-
examples/poly/demo.rb | 2 +-
examples/random/diffusion.rb | 2 +-
examples/random/generator.rb | 4 +-
examples/random/randomwalk.rb | 6 +-
examples/random/rng.rb | 2 +-
examples/roots/bisection.rb | 2 +-
examples/roots/brent.rb | 2 +-
examples/roots/demo.rb | 2 +-
examples/roots/newton.rb | 4 +-
examples/roots/recombination.gp | 1 -
examples/sf/hyperg.rb | 2 +-
examples/sf/sphbessel.rb | 2 +-
examples/sort/sort.rb | 2 +-
examples/tamu_anova.rb | 8 +-
examples/vector/add.rb | 2 +-
examples/vector/decimate.rb | 2 +-
examples/vector/gnuplot.rb | 16 +-
examples/vector/vector.rb | 4 +-
examples/wavelet/wavelet1.rb | 2 +-
ext/gsl/bspline.c | 130 --
ext/gsl/const.c | 672 -------
ext/gsl/cqp.c | 283 ---
ext/gsl/fcmp.c | 64 -
ext/gsl/fresnel.c | 312 ---
ext/gsl/jacobi.c | 739 -------
ext/gsl/ool.c | 879 --------
ext/gsl/oper_complex_source.c | 251 ---
ext/gsl/sf_mathieu.c | 238 ---
ext/{gsl => gsl_native}/alf.c | 18 +-
ext/{gsl => gsl_native}/array.c | 215 +-
ext/{gsl => gsl_native}/array_complex.c | 124 +-
ext/{gsl => gsl_native}/blas.c | 0
ext/{gsl => gsl_native}/blas1.c | 64 +-
ext/{gsl => gsl_native}/blas2.c | 112 +-
ext/{gsl => gsl_native}/blas3.c | 108 +-
ext/{gsl => gsl_native}/block.c | 9 +-
.../block_source.c => gsl_native/block_source.h} | 220 +-
ext/gsl_native/bspline.c | 122 ++
ext/{gsl => gsl_native}/bundle.c | 0
ext/{gsl => gsl_native}/cdf.c | 164 +-
ext/{gsl => gsl_native}/cheb.c | 159 +-
ext/{gsl => gsl_native}/combination.c | 25 +-
ext/{gsl => gsl_native}/common.c | 44 +-
ext/{gsl => gsl_native}/complex.c | 228 ++-
ext/gsl_native/const.c | 331 +++
ext/{gsl => gsl_native}/const_additional.c | 45 +-
ext/gsl_native/cqp.c | 283 +++
ext/{gsl => gsl_native}/deriv.c | 52 +-
ext/{gsl => gsl_native}/dht.c | 48 +-
ext/{gsl => gsl_native}/diff.c | 48 +-
ext/{gsl => gsl_native}/dirac.c | 89 +-
ext/{gsl => gsl_native}/eigen.c | 2113 ++++++++++----------
ext/{gsl => gsl_native}/error.c | 26 +-
ext/{gsl => gsl_native}/extconf.rb | 18 +-
ext/{gsl => gsl_native}/fft.c | 390 ++--
ext/{gsl => gsl_native}/fit.c | 32 +-
ext/gsl_native/fresnel.c | 312 +++
ext/{gsl => gsl_native}/function.c | 64 +-
ext/{gsl => gsl_native}/geometry.c | 30 +-
ext/{gsl => gsl_native}/graph.c | 124 +-
ext/{gsl => gsl_native}/gsl.c | 33 +-
ext/{gsl => gsl_native}/gsl_narray.c | 39 +-
ext/{gsl => gsl_native}/histogram.c | 273 ++-
ext/{gsl => gsl_native}/histogram2d.c | 167 +-
ext/{gsl => gsl_native}/histogram3d.c | 144 +-
ext/{gsl => gsl_native}/histogram3d_source.c | 391 ++--
ext/{gsl => gsl_native}/histogram_find.c | 64 +-
ext/{gsl => gsl_native}/histogram_oper.c | 95 +-
ext/{gsl => gsl_native}/ieee.c | 22 +-
ext/{gsl => gsl_native}/include/rb_gsl.h | 7 -
ext/{gsl => gsl_native}/include/rb_gsl_array.h | 40 +-
ext/{gsl => gsl_native}/include/rb_gsl_cheb.h | 0
ext/{gsl => gsl_native}/include/rb_gsl_common.h | 96 +-
ext/{gsl => gsl_native}/include/rb_gsl_complex.h | 0
ext/{gsl => gsl_native}/include/rb_gsl_const.h | 5 -
ext/{gsl => gsl_native}/include/rb_gsl_dirac.h | 0
ext/{gsl => gsl_native}/include/rb_gsl_eigen.h | 0
ext/{gsl => gsl_native}/include/rb_gsl_fft.h | 3 -
ext/{gsl => gsl_native}/include/rb_gsl_fit.h | 0
ext/{gsl => gsl_native}/include/rb_gsl_function.h | 0
ext/{gsl => gsl_native}/include/rb_gsl_graph.h | 4 +-
ext/{gsl => gsl_native}/include/rb_gsl_histogram.h | 16 +-
.../include/rb_gsl_histogram3d.h | 100 +-
.../include/rb_gsl_integration.h | 0
ext/{gsl => gsl_native}/include/rb_gsl_interp.h | 0
ext/{gsl => gsl_native}/include/rb_gsl_linalg.h | 1 -
ext/{gsl => gsl_native}/include/rb_gsl_math.h | 4 -
ext/{gsl => gsl_native}/include/rb_gsl_odeiv.h | 0
ext/{gsl => gsl_native}/include/rb_gsl_poly.h | 6 +-
ext/{gsl => gsl_native}/include/rb_gsl_rational.h | 2 +-
ext/{gsl => gsl_native}/include/rb_gsl_rng.h | 0
ext/{gsl => gsl_native}/include/rb_gsl_root.h | 0
ext/{gsl => gsl_native}/include/rb_gsl_sf.h | 82 +-
.../include/rb_gsl_statistics.h | 0
ext/{gsl => gsl_native}/include/rb_gsl_tensor.h | 0
.../include/rb_gsl_with_narray.h | 0
ext/{gsl => gsl_native}/include/templates_off.h | 0
ext/{gsl => gsl_native}/include/templates_on.h | 2 +-
ext/{gsl => gsl_native}/integration.c | 343 ++--
ext/{gsl => gsl_native}/interp.c | 54 +-
ext/gsl_native/jacobi.c | 733 +++++++
ext/{gsl => gsl_native}/linalg.c | 1024 +++++-----
ext/{gsl => gsl_native}/linalg_complex.c | 182 +-
ext/{gsl => gsl_native}/math.c | 108 +-
ext/{gsl => gsl_native}/matrix.c | 10 +-
ext/{gsl => gsl_native}/matrix_complex.c | 225 +--
ext/{gsl => gsl_native}/matrix_double.c | 151 +-
ext/{gsl => gsl_native}/matrix_int.c | 99 +-
.../matrix_source.c => gsl_native/matrix_source.h} | 582 +++---
ext/{gsl => gsl_native}/min.c | 117 +-
ext/{gsl => gsl_native}/monte.c | 104 +-
ext/{gsl => gsl_native}/multifit.c | 285 ++-
ext/{gsl => gsl_native}/multimin.c | 138 +-
ext/{gsl => gsl_native}/multimin_fsdf.c | 30 +-
ext/{gsl => gsl_native}/multiroots.c | 125 +-
ext/{gsl => gsl_native}/multiset.c | 10 +-
ext/{gsl => gsl_native}/ndlinear.c | 641 +++---
ext/{gsl => gsl_native}/nmf.c | 22 +-
ext/{gsl => gsl_native}/nmf_wrap.c | 2 +-
ext/{gsl => gsl_native}/ntuple.c | 26 +-
ext/{gsl => gsl_native}/odeiv.c | 201 +-
ext/gsl_native/ool.c | 879 ++++++++
ext/{gsl => gsl_native}/permutation.c | 70 +-
ext/{gsl => gsl_native}/poly.c | 7 +-
ext/{gsl => gsl_native}/poly2.c | 12 +-
.../poly_source.c => gsl_native/poly_source.h} | 507 +++--
ext/{gsl => gsl_native}/qrng.c | 23 +-
ext/{gsl => gsl_native}/randist.c | 461 ++---
ext/{gsl => gsl_native}/rational.c | 18 +-
ext/{gsl => gsl_native}/rng.c | 74 +-
ext/{gsl => gsl_native}/root.c | 86 +-
ext/{gsl => gsl_native}/sf.c | 360 ++--
ext/{gsl => gsl_native}/sf_airy.c | 0
ext/{gsl => gsl_native}/sf_bessel.c | 12 +-
ext/{gsl => gsl_native}/sf_clausen.c | 0
ext/{gsl => gsl_native}/sf_coulomb.c | 78 +-
ext/{gsl => gsl_native}/sf_coupling.c | 58 +-
ext/{gsl => gsl_native}/sf_dawson.c | 0
ext/{gsl => gsl_native}/sf_debye.c | 9 -
ext/{gsl => gsl_native}/sf_dilog.c | 0
ext/{gsl => gsl_native}/sf_elementary.c | 4 +-
ext/{gsl => gsl_native}/sf_ellint.c | 84 +-
ext/{gsl => gsl_native}/sf_elljac.c | 4 +-
ext/{gsl => gsl_native}/sf_erfc.c | 4 -
ext/{gsl => gsl_native}/sf_exp.c | 4 +-
ext/{gsl => gsl_native}/sf_expint.c | 12 +-
ext/{gsl => gsl_native}/sf_fermi_dirac.c | 0
ext/{gsl => gsl_native}/sf_gamma.c | 6 +-
ext/{gsl => gsl_native}/sf_gegenbauer.c | 0
ext/{gsl => gsl_native}/sf_hyperg.c | 0
ext/{gsl => gsl_native}/sf_laguerre.c | 6 +-
ext/{gsl => gsl_native}/sf_lambert.c | 0
ext/{gsl => gsl_native}/sf_legendre.c | 0
ext/{gsl => gsl_native}/sf_log.c | 6 +-
ext/gsl_native/sf_mathieu.c | 235 +++
ext/{gsl => gsl_native}/sf_power.c | 0
ext/{gsl => gsl_native}/sf_psi.c | 13 +-
ext/{gsl => gsl_native}/sf_synchrotron.c | 0
ext/{gsl => gsl_native}/sf_transport.c | 0
ext/{gsl => gsl_native}/sf_trigonometric.c | 6 +-
ext/{gsl => gsl_native}/sf_zeta.c | 4 -
ext/{gsl => gsl_native}/signal.c | 124 +-
ext/{gsl => gsl_native}/siman.c | 76 +-
ext/{gsl => gsl_native}/sort.c | 7 +-
ext/{gsl => gsl_native}/spline.c | 68 +-
ext/{gsl => gsl_native}/stats.c | 217 +-
ext/{gsl => gsl_native}/sum.c | 64 +-
ext/{gsl => gsl_native}/tamu_anova.c | 0
ext/{gsl => gsl_native}/tensor.c | 6 +-
.../tensor_source.c => gsl_native/tensor_source.h} | 288 +--
ext/{gsl => gsl_native}/vector.c | 6 +-
ext/{gsl => gsl_native}/vector_complex.c | 336 ++--
ext/{gsl => gsl_native}/vector_double.c | 341 ++--
ext/{gsl => gsl_native}/vector_int.c | 48 +-
.../vector_source.c => gsl_native/vector_source.h} | 814 ++++----
ext/{gsl => gsl_native}/wavelet.c | 451 ++---
gsl.gemspec | 29 +
lib/gsl.rb | 8 +-
lib/gsl/gnuplot.rb | 4 +-
lib/gsl/version.rb | 4 +-
metadata.yml | 460 ++---
test/gsl/blas_test.rb | 2 +-
test/gsl/index_test.rb | 61 +
test/gsl/matrix_test.rb | 21 +
uncrustify.cfg | 1693 ++++++++++++++++
253 files changed, 13417 insertions(+), 13264 deletions(-)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c314621
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,12 @@
+doc
+doc.local
+pkg
+tmp
+.gh-pages
+Makefile
+mkmf.log
+*.so
+*.o
+extconf.h
+Gemfile.lock
+*~
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..765341a
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,24 @@
+language:
+ ruby
+
+rvm:
+ - 1.9
+ - 2.0
+ - 2.1
+ - 2.2
+ - ruby-head
+ - rbx-2
+
+env:
+ matrix:
+ - "NARRAY=1"
+ - ""
+
+matrix:
+ allow_failures:
+ - rvm: ruby-head
+ - rvm: rbx-2
+
+before_install:
+ - sudo apt-get update -qq
+ - sudo apt-get install -y libgsl0-dev
diff --git a/AUTHORS b/AUTHORS
index ac6bea9..359b27b 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -4,3 +4,11 @@ David MacMahon
davidm at astro.berkeley.edu
Jens Wille
jens.wille at gmail.com
+Daniel Mendler
+ mail at daniel-mendler.de
+Sameer Deshmukh
+ sameer.deshmukh93 at gmail.com
+John Woods
+ john.o.woods at gmail.com
+Daniel Mendler
+ mail at daniel-mendler.de
diff --git a/COPYING b/COPYING
index a43ea21..e8bd143 100644
--- a/COPYING
+++ b/COPYING
@@ -1,339 +1,341 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Appendix: How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+= License for Ruby/GSL
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+ freedom to share and change it. By contrast, the GNU General Public
+ License is intended to guarantee your freedom to share and change free
+ software--to make sure the software is free for all its users. This
+ General Public License applies to most of the Free Software
+ Foundation's software and to any other program whose authors commit to
+ using it. (Some other Free Software Foundation software is covered by
+ the GNU Library General Public License instead.) You can apply it to
+ your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+ price. Our General Public Licenses are designed to make sure that you
+ have the freedom to distribute copies of free software (and charge for
+ this service if you wish), that you receive source code or can get it
+ if you want it, that you can change the software or use pieces of it
+ in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+ anyone to deny you these rights or to ask you to surrender the rights.
+ These restrictions translate to certain responsibilities for you if you
+ distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+ gratis or for a fee, you must give the recipients all the rights that
+ you have. You must make sure that they, too, receive or can get the
+ source code. And you must show them these terms so they know their
+ rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+ (2) offer you this license which gives you legal permission to copy,
+ distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+ that everyone understands that there is no warranty for this free
+ software. If the software is modified by someone else and passed on, we
+ want its recipients to know that what they have is not the original, so
+ that any problems introduced by others will not reflect on the original
+ authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+ patents. We wish to avoid the danger that redistributors of a free
+ program will individually obtain patent licenses, in effect making the
+ program proprietary. To prevent this, we have made it clear that any
+ patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+ modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+ a notice placed by the copyright holder saying it may be distributed
+ under the terms of this General Public License. The "Program", below,
+ refers to any such program or work, and a "work based on the Program"
+ means either the Program or any derivative work under copyright law:
+ that is to say, a work containing the Program or a portion of it,
+ either verbatim or with modifications and/or translated into another
+ language. (Hereinafter, translation is included without limitation in
+ the term "modification".) Each licensee is addressed as "you".
+
+ Activities other than copying, distribution and modification are not
+ covered by this License; they are outside its scope. The act of
+ running the Program is not restricted, and the output from the Program
+ is covered only if its contents constitute a work based on the
+ Program (independent of having been made by running the Program).
+ Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+ source code as you receive it, in any medium, provided that you
+ conspicuously and appropriately publish on each copy an appropriate
+ copyright notice and disclaimer of warranty; keep intact all the
+ notices that refer to this License and to the absence of any warranty;
+ and give any other recipients of the Program a copy of this License
+ along with the Program.
+
+ You may charge a fee for the physical act of transferring a copy, and
+ you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+ of it, thus forming a work based on the Program, and copy and
+ distribute such modifications or work under the terms of Section 1
+ above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+ These requirements apply to the modified work as a whole. If
+ identifiable sections of that work are not derived from the Program,
+ and can be reasonably considered independent and separate works in
+ themselves, then this License, and its terms, do not apply to those
+ sections when you distribute them as separate works. But when you
+ distribute the same sections as part of a whole which is a work based
+ on the Program, the distribution of the whole must be on the terms of
+ this License, whose permissions for other licensees extend to the
+ entire whole, and thus to each and every part regardless of who wrote it.
+
+ Thus, it is not the intent of this section to claim rights or contest
+ your rights to work written entirely by you; rather, the intent is to
+ exercise the right to control the distribution of derivative or
+ collective works based on the Program.
+
+ In addition, mere aggregation of another work not based on the Program
+ with the Program (or with a work based on the Program) on a volume of
+ a storage or distribution medium does not bring the other work under
+ the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+ under Section 2) in object code or executable form under the terms of
+ Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+ The source code for a work means the preferred form of the work for
+ making modifications to it. For an executable work, complete source
+ code means all the source code for all modules it contains, plus any
+ associated interface definition files, plus the scripts used to
+ control compilation and installation of the executable. However, as a
+ special exception, the source code distributed need not include
+ anything that is normally distributed (in either source or binary
+ form) with the major components (compiler, kernel, and so on) of the
+ operating system on which the executable runs, unless that component
+ itself accompanies the executable.
+
+ If distribution of executable or object code is made by offering
+ access to copy from a designated place, then offering equivalent
+ access to copy the source code from the same place counts as
+ distribution of the source code, even though third parties are not
+ compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+ except as expressly provided under this License. Any attempt
+ otherwise to copy, modify, sublicense or distribute the Program is
+ void, and will automatically terminate your rights under this License.
+ However, parties who have received copies, or rights, from you under
+ this License will not have their licenses terminated so long as such
+ parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+ signed it. However, nothing else grants you permission to modify or
+ distribute the Program or its derivative works. These actions are
+ prohibited by law if you do not accept this License. Therefore, by
+ modifying or distributing the Program (or any work based on the
+ Program), you indicate your acceptance of this License to do so, and
+ all its terms and conditions for copying, distributing or modifying
+ the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+ Program), the recipient automatically receives a license from the
+ original licensor to copy, distribute or modify the Program subject to
+ these terms and conditions. You may not impose any further
+ restrictions on the recipients' exercise of the rights granted herein.
+ You are not responsible for enforcing compliance by third parties to
+ this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+ infringement or for any other reason (not limited to patent issues),
+ conditions are imposed on you (whether by court order, agreement or
+ otherwise) that contradict the conditions of this License, they do not
+ excuse you from the conditions of this License. If you cannot
+ distribute so as to satisfy simultaneously your obligations under this
+ License and any other pertinent obligations, then as a consequence you
+ may not distribute the Program at all. For example, if a patent
+ license would not permit royalty-free redistribution of the Program by
+ all those who receive copies directly or indirectly through you, then
+ the only way you could satisfy both it and this License would be to
+ refrain entirely from distribution of the Program.
+
+ If any portion of this section is held invalid or unenforceable under
+ any particular circumstance, the balance of the section is intended to
+ apply and the section as a whole is intended to apply in other
+ circumstances.
+
+ It is not the purpose of this section to induce you to infringe any
+ patents or other property right claims or to contest validity of any
+ such claims; this section has the sole purpose of protecting the
+ integrity of the free software distribution system, which is
+ implemented by public license practices. Many people have made
+ generous contributions to the wide range of software distributed
+ through that system in reliance on consistent application of that
+ system; it is up to the author/donor to decide if he or she is willing
+ to distribute software through any other system and a licensee cannot
+ impose that choice.
+
+ This section is intended to make thoroughly clear what is believed to
+ be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+ certain countries either by patents or by copyrighted interfaces, the
+ original copyright holder who places the Program under this License
+ may add an explicit geographical distribution limitation excluding
+ those countries, so that distribution is permitted only in or among
+ countries not thus excluded. In such case, this License incorporates
+ the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+ of the General Public License from time to time. Such new versions will
+ be similar in spirit to the present version, but may differ in detail to
+ address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the Program
+ specifies a version number of this License which applies to it and "any
+ later version", you have the option of following the terms and conditions
+ either of that version or of any later version published by the Free
+ Software Foundation. If the Program does not specify a version number of
+ this License, you may choose any version ever published by the Free Software
+ Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+ programs whose distribution conditions are different, write to the author
+ to ask for permission. For software which is copyrighted by the Free
+ Software Foundation, write to the Free Software Foundation; we sometimes
+ make exceptions for this. Our decision will be guided by the two goals
+ of preserving the free status of all derivatives of our free software and
+ of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+ REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+ possible use to the public, the best way to achieve this is to make it
+ free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+ to attach them to the start of each source file to most effectively
+ convey the exclusion of warranty; and each file should have at least
+ the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ Also add information on how to contact you by electronic and paper mail.
+
+ If the program is interactive, make it output a short notice like this
+ when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+ The hypothetical commands `show w' and `show c' should show the appropriate
+ parts of the General Public License. Of course, the commands you use may
+ be called something other than `show w' and `show c'; they could even be
+ mouse-clicks or menu items--whatever suits your program.
+
+ You should also get your employer (if you work as a programmer) or your
+ school, if any, to sign a "copyright disclaimer" for the program, if
+ necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+ This General Public License does not permit incorporating your program into
+ proprietary programs. If your program is a subroutine library, you may
+ consider it more useful to permit linking proprietary applications with the
+ library. If this is what you want to do, use the GNU Library General
+ Public License instead of this License.
diff --git a/ChangeLog b/ChangeLog
index 91761f4..30b5563 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,117 +1,129 @@
-Fri Dec 19 2014
- * Ruby/GSL 1.16.0.4
- * Optimize and extract multiplication and division operations on Fixnum
- and Float. Pull request #8 by Veselin Vasilev.
- * Fixed division in GSL::Oper for GSL::Vector::Col. Issue #9.
-
-Tue Oct 21 2014
- * Ruby/GSL 1.16.0.3
- * Fixed RDoc issues. Issue #6 by @bigtunacan.
- * Fixed $LOAD_PATH problem. Pull request #7 by Takahiro SATOH.
-
-Wed Jul 9 2014
- * Ruby/GSL 1.16.0.2
- * Fixed linking problem.
-
-Thu Apr 24 2014
- * Ruby/GSL 1.16.0.1
- * Extensive cleanup.
- * Fixed linking problems.
- * Required Ruby version >= 1.8.7.
-
-Fri Jan 24 2014
- * Ruby/GSL 1.16.0
- * GSL-1.16 support.
-
-Fri Jan 24 2014
- * Ruby/GSL 1.15.3.2
- * Windows compatibility.
- * Ruby 2.x compatibility.
- * Ported tests to Test::Unit.
- * Silenced compilation warnings.
- * Switched to rake-compiler for compilation.
-
-Sat Feb 26 2011
- * Ruby/GSL 1.14.7
- * Fix conversion of non-DFLOAT NArray to GSL::Vector and
- GSL::Vector::Complex.
-
-Thu Feb 24 2011
- * Ruby/GSL 1.14.6
- * Add Vector::Complex support to NArray conversions
- * Raise exception when trying to create View from NArray object of
- incompatible type.
-
-Sun Nov 14 2010
- * Ruby/GSL 1.14.5
- * Convert docs from rdtool to rdoc
- * Fix object id handling bugs on 64-bit systems
- * Fix Vector's handling of Range parameters
-
-Wed Sep 29 2010
- * Modification for ruby-1.9.2
- * Replaced STR2CSTR to StringValuePtr
-
-Mon Mar 22 2010
- * GSL-1.14 support
- * Added GSL::Multiset class
- * Added GSL::Function#glfixed(a, b table)
-
-Sun Aug 16 2009
- * Added Non-negative Matrix Factorization (NMF) support (by Roman Shterenzon)
-
-Sat Aug 8 2009
- * Added GSL-1.13 features:
- * Added GSL::Monte::Miser#params_get, GSL::Monte::Vegas#params_get
- * Added GSL::BSpline::greville_abscissa(i)
- * Added GSL::Poly#eval_derivs(x)
- * Added a new minimization algorithm "quad_golden"
- * Added a new multimin algorithm "nmsimplex2rand"
-
-Tue Jun 9 2009
- * Fixed bug in linalg.c (bug [#25842])
-
-Thu Feb 2 2009
- * Fixed a bug in GSL::Histogram.alloc_uniform() (bug [#23040])
- * Fixed a bug in GSL::Vector#/ (bug [#23334])
-
-Thu Nov 6 2008
- * Match with the tensor extension version 0.99
- * now not compatible for the versions older than tensor-0.97.
-
-Sat Jul 26 2008
- * GSL::Poly.eval now handles complex numbers (GSL-1.11)
- * Added new quasi-random generators "halton" and "reversehalton"
- * Added a module function GSL::MultiFit::linear_residuals() (GSL-1.11)
- * Fixed a bug in ODE solver
-
-Mon Jun 30 2008
- * Fixed GSL::Vector#normalize (#20865)
-
-Mon May 26 2008
- * Fixed a bug in GSL::Matrix::to_v (#19757)
- * Fixed a bug in GSL::Vector::Int multiplication (#19924)
-
-Sat Dec 8 2007
- * Version 1.10.3
-
-Tue Dec 2 2007
- * Improved GSL::Vector#get for a Range arg
- * Improved GSL::Vector#concat for an Array arg
- * Fixed a bug in GSL::Matrix.alloc with column vector arguments
-
-Thu Dec 2 2007
- * Added methods GSL::Vector#pow(p), GSL::Vector#pow!(p)
-
-Wed Oct 17 2007
- * Fixed a bug in poly_source.c
-
-Sun Oct 7 2007
- * Version 1.10.0
- * ndlinear extension support
-
-Sat Sep 22 2007
- Added GSL-1.10 features
+# markup: rd
+
+== Thu Jul 03 2015
+* Ruby/GSL 1.16.0.6
+ * rb-gsl and gsl are now the same gem
+
+== Thu Jul 02 2015
+* Ruby/GSL 1.16.0.5
+ * Optional narray support
+ * Drop Ruby 1.8 support
+ * Drop support for GSL < 1.15
+
+== Fri Dec 19 2014
+* Ruby/GSL 1.16.0.4
+ * Optimize and extract multiplication and division operations on Fixnum
+ and Float. Pull request #8 by Veselin Vasilev.
+ * Fixed division in GSL::Oper for GSL::Vector::Col. Issue #9.
+
+== Tue Oct 21 2014
+* Ruby/GSL 1.16.0.3
+ * Fixed RDoc issues. Issue #6 by @bigtunacan.
+ * Fixed $LOAD_PATH problem. Pull request #7 by Takahiro SATOH.
+
+== Wed Jul 9 2014
+* Ruby/GSL 1.16.0.2
+ * Fixed linking problem.
+
+== Thu Apr 24 2014
+* Ruby/GSL 1.16.0.1
+ * Extensive cleanup.
+ * Fixed linking problems.
+ * Required Ruby version >= 1.8.7.
+
+== Fri Jan 24 2014
+* Ruby/GSL 1.16.0
+ * GSL-1.16 support.
+
+== Fri Jan 24 2014
+* Ruby/GSL 1.15.3.2
+ * Windows compatibility.
+ * Ruby 2.x compatibility.
+ * Ported tests to Test::Unit.
+ * Silenced compilation warnings.
+ * Switched to rake-compiler for compilation.
+
+== Sat Feb 26 2011
+* Ruby/GSL 1.14.7
+ * Fix conversion of non-DFLOAT NArray to GSL::Vector and
+ GSL::Vector::Complex.
+
+== Thu Feb 24 2011
+* Ruby/GSL 1.14.6
+ * Add Vector::Complex support to NArray conversions
+ * Raise exception when trying to create View from NArray object of
+ incompatible type.
+
+== Sun Nov 14 2010
+* Ruby/GSL 1.14.5
+ * Convert docs from rdtool to rdoc
+ * Fix object id handling bugs on 64-bit systems
+ * Fix Vector's handling of Range parameters
+
+== Wed Sep 29 2010
+* Modification for ruby-1.9.2
+ * Replaced STR2CSTR to StringValuePtr
+
+== Mon Mar 22 2010
+* GSL-1.14 support
+ * Added GSL::Multiset class
+ * Added GSL::Function#glfixed(a, b table)
+
+== Sun Aug 16 2009
+* Added Non-negative Matrix Factorization (NMF) support (by Roman Shterenzon)
+
+== Sat Aug 8 2009
+* Added GSL-1.13 features:
+ * Added GSL::Monte::Miser#params_get, GSL::Monte::Vegas#params_get
+ * Added GSL::BSpline::greville_abscissa(i)
+ * Added GSL::Poly#eval_derivs(x)
+ * Added a new minimization algorithm "quad_golden"
+ * Added a new multimin algorithm "nmsimplex2rand"
+
+== Tue Jun 9 2009
+* Fixed bug in linalg.c (bug [#25842])
+
+== Thu Feb 2 2009
+* Fixed a bug in GSL::Histogram.alloc_uniform() (bug [#23040])
+* Fixed a bug in GSL::Vector#/ (bug [#23334])
+
+== Thu Nov 6 2008
+* Match with the tensor extension version 0.99
+ * now not compatible for the versions older than tensor-0.97.
+
+== Sat Jul 26 2008
+* GSL::Poly.eval now handles complex numbers (GSL-1.11)
+* Added new quasi-random generators "halton" and "reversehalton"
+* Added a module function GSL::MultiFit::linear_residuals() (GSL-1.11)
+* Fixed a bug in ODE solver
+
+== Mon Jun 30 2008
+* Fixed GSL::Vector#normalize (#20865)
+
+== Mon May 26 2008
+* Fixed a bug in GSL::Matrix::to_v (#19757)
+* Fixed a bug in GSL::Vector::Int multiplication (#19924)
+
+== Sat Dec 8 2007
+* Version 1.10.3
+
+== Tue Dec 2 2007
+* Improved GSL::Vector#get for a Range arg
+* Improved GSL::Vector#concat for an Array arg
+* Fixed a bug in GSL::Matrix.alloc with column vector arguments
+
+== Thu Dec 2 2007
+* Added methods GSL::Vector#pow(p), GSL::Vector#pow!(p)
+
+== Wed Oct 17 2007
+* Fixed a bug in poly_source.c
+
+== Sun Oct 7 2007
+* Version 1.10.0
+* ndlinear extension support
+
+== Sat Sep 22 2007
+* Added GSL-1.10 features
* Added generalized eigensystem methods
* Added method GSL::Stats::correlation(v1, v2) to compute
Pearson correlation of two datasets
@@ -125,476 +137,489 @@ Sat Sep 22 2007
and GSL::Linalg::Chomplex::Cholesky::svx
* Added method GSL::hypot3(x, y, z)
-Sat Aug 11 2007
- * Modified ext/extconf.rb: Check gsl_stats_correlation()
-
-Sun Aug 5 2007
- * Improved GSL::Vector::filescan()
-Tue May 15 2007
- * Fixed a bug in Vector#get (Thank to Daigo Moriwaki)
-
-Sun Feb 18 2007
- * Completed GSL-1.8.90 features
- * Change names "unsymm" ---> "nonsymm" for non-symmetric eigen systems
- * Added Mathieu functions
- * Added Vector#ispos, isneg
- * Added knuthran2002 generator
- * Added a new minimization method GSL::MultiMin::FdfMinimizer::BFGS2
-
-Sun Dec 31 2006
- * Remove the module function GSL::equal?, which breaks the Ruby policy.
-
-Sun Dec 24 2006
- * Added Basis splines
- * CQP and Bundle extentions support
-
-Wed Dec 13 2006
- * OOL extension support (OOL version 0.2)
- * OOL: Open Optimization Library
-
-Mon Dec 11 2006
- * Add a quasi-random sequence generator hdsobol
- (require the qrngextra extension)
-
-Tue Sep 26 2006
- * Fixed a bug in GSL::Vector#*
-
-Sun Sep 24 2006
- * Fixed a bug in GSL::Matrix.vandermonde()
- * Added methods GSL::Vector#join, zip, cumsum, cumprod
-
-Thu Sep 21 2006
- * Added methods to calculate eigenvectors of nonsymmetric matrices
- * Added test scripts tests/eigen/unsymm.rb, tests/eigen/unsymmv.rb
-
-Wed Aug 23 2006
- * Added methods to calculate eigenvalues of nonsymmetric matrices
-
-Fri Aug 18 2006
- * Fixed bug in Sf::hypot
-
-Sat Apr 29 2006
- * Applied patch provided by Cameron McBride, to fix a bug in
- randist.c
- * Applied patched by zunda to fix some test/ scripts.
-
-Thu Apr 13 2006
- * Version 1.8.0
- * Added cumulative distribution functions under the module GSL::Cdf:
- binomial, poisson, geometric, negative binomial, pascal and hypergeometric.
- * Added module functions GSL::Cdf::beta_Pinv, beta_Qinv, fdist_Pinv, and
- fdist_Qinv.
- * Added the multilinear fit estimator function GSL::MultiFit::linear_est.
- * Added new random variate generators,
- GSL::Ran::gaussian_ziggurat and gamma_mt.
- * Added Debye functions for n=5 and n=6, as
- GSL::Sf::debye_5 and debye_6.
- * Added GSL::Spline#min_size
- * Added the Debye unit to physical constants.
-
-Fri Dec 2 2005
- * Singleton method "new" ---> "alloc"
-
-Sun Nov 27 2005
- * Apply patch by zunda to improve multifit.
- * Fix bug in dirac.c
-
-Tue Apr 3 JST 2005
- * Added Vector#collect!, Matrix#collect!
- * Added lib/rbgsl.rb, in which the GSL module is not included by default
-
-Wed Apr 27 2005
- * The following Linalg methods now can handle NArray objects:
- * GSL::Linalg::
- * LU.decomp(m)
- * LU.solve(lu, b)
- * LU.svx(lu, bx)
- * LU.det(lu, sign)
- * LU.lndet(lu)
- * LU.invert(lu, perm)
- * QR.decomp(m)
- * QR.solve(qr, tau, b)
- * QR.svx(qr, tau, bx)
- * SV.decomp(m)
- * SV.solve(u, v, s, b)
- * SV.svx(u, v, s, bx)
- * Cholesky.decomp(m)
- * Cholesky.solve(u, v, s, b)
- * Cholesky.svx(u, v, s, bx)
- * HH.solve(m, b)
- * HH.svx(m, bx)
-
-Mon Apr 18 2005
- * Improved gsl_narray.c (thanks to T. Horinouchi)
- * Modified extconf.rb
- * Automatic finding of NArray
- * Applied a patch by zunda
-
-Thu Apr 7 2005
- * Modified extconf.rb
-
-Mon Mar 21 2005
- * Version 1.6.2
-
-Sat Mar 19 2005
- * Fixed Blas.dgemm, .zgemm
- * Fixed method re-definitions
-
-Tue Mar 15 2005
- * Added class GSL::Block::Byte, GSL::Block::Index
- * Added NArray-like methods, Vector#eq, ne, gt, where, any? etc.
- * Added methods Vector#floor, Vector#ceil,
- and Vector#round (if the system has)
-
-Sat Mar 12 2005
- * Fixed Vector#get
-
-Sat Feb 26 2005
- * Ruby 1.9.0 support
-
-Sat Feb 5 2005
- * Version 1.6.1
-
-Wed Jan 26 2005
- * Added in-place FFT methods
- * Fixed FFT document
-
-Thu Jan 20 2005
- * Added Vector#decimate, Vector#diff
- * Added Matrix#rot90
- * Fixed Matrix::Complex
-
-Thu Jan 06 2005
- * Some methods which receive GSL::Vector now can also manipulate
- NArray objects.
- * Special functions
- * Probability distributions
- * Statistics
- * FFTs
- * Wavelet transforms
- * Interpolations
- * Serices accelerations
- * Added method Vector#decimate
- * Sf::exp now can receive Complex or Vector::Complex
-
-Tue Jan 04
- * Version 1.6.0
-
-Thu Dec 30 2004 Yoshiki Tsunesada
- * Update for GSL-1.5.90
- * Added Sf::psi_1
- * Added ODE stepper rk2simp
- * Added LQ, PTLQ decompositions
- * Added methods Cdf::exppow_P, Cdf::exppow_Q
-
-Mon Dec 27 2004 Yoshiki Tsunesada
- * All Ruby/GSL classes are defined as derivatives of the base class
- GSL::Object.
- * Defined the method GSL::Object#info
- * Added Vector#histogram
- * Added Vector.filescan
- * Modified the methods Histogram#increment, accumulate
- * Added methods Poly.fit, Poly.wfit, MultiFit.polyfit
- * Added methods Vector::Complex#abs2, abs, arg
- * Modified FFT methods: now they return FFTed data as a new vector,
- and do not destroy the input vector.
-
-Sat Dec 11 2004 Yoshiki Tsunesada
- * Modified Histogram#integral
-
-Fri Dec 10 2004 Yoshiki Tsunesada
- * Added methods Histogram#reverse, Histogram2d#integrate,
- Histogram2d#normalize
-
-Mon Dec 6 2004 Yoshiki Tsunesada
- * Version 1.5.4
-
-Fri Dec 3 2004 Yoshiki Tsunesada
- * Added Histogram#rebin
-
-Fri Nov 26 2004 Yoshiki Tsunesada
- * Added method Vector#to_m
- * Added methods Matrix#reverse_rows, Matrix#reverse_columns
-
-Tue Nov 16 2004 Yoshiki Tsunesada
- * The method Matrix#** is now obsolete, use "*"
- for matrix multiplication instead.
- * Improved Matrix#* and Vetor#*
- * Added methods Vector#to_m_diagonal, Vector#to_m_circulant,
- Vector#collect
- * Added methods Matrix.hilbert, Matrix.invhilbert, Matrix.pascal,
- Matrix.vandermonde, Matrix.toeplitz, Matrix.circulant
- * Added methods Vector.indgen, Vector#indgen,
- Matrix.indgen, Matrix#indgen (mimics NArray)
- * Added class GSL::Histogram3d
- * Checked GSL lower version compatibilities
- * gsl-1.0 ~ gsl-1.5: OK
- * gsl-0.9.4: OK
- * gsl-0.9.3 or older: not tested
- * gsl-1.6 (development version, CVS Nov2004): OK
-
-Sun Nov 7 2004 Yoshiki Tsunesada
- * Support the gsl_tensor package
- * http://sources.redhat.com/ml/gsl-discuss/2004-q4/msg00053.html
- * Added class GSL::Tensor, GSL::Tensor::Int
- * The methods Vector#get, Vector#[] now receive multiple
- arguments, or an Array, or a Range object.
-
-Thu Nov 4 2004 Yoshiki Tsunesada
- * Added class GSL::Histogram::Integral, which represents the
- cumulative distribution.
- * Added method GSL::Histogram#integrate, which creates a
- GSL::Histogram::Integral object.
- * Added methods GSL::Histogram2d#xproject, yproject, normalize, increment2.
-
-Sun Oct 31 2004 Yoshiki Tsunesada
- * Fix the document for Polynomials
- * Added methods Poly::hermite(n), Poly::cheb(n), and Poly::cheb_II(n) etc..
- * Added method Poly#compan, which returns the companion matrix.
- * The method Matrix#/ is improved: if a Vector is given, this method
- solves the linear system.
-
-Mon Oct 25 2004 Yoshiki Tsunesada
- * Split the source file "randist.c" into "randist.c" and "cdf.c"
- * Split the source file "diff.c" into "diff.c" and "deriv.c"
- * Split the source file "interp.c" into "interp.c" and "spline.c"
- * Added methods Vector#abs, sqrt, square, normalize
- * Added sample scripts odeiv/frei1.rb, fft/frei2.rb
- and eigen/qhoscillator.rb, which deal with quantum mechanical
- calculations. These are translated from the C++ code in the
- Harald Wiedemann's textbook "Numerische Physik"
- (Springer 2004, ISBN 3-540-40774-X).
-
-Sat Oct 23 2004 Yoshiki Tsunesada
- * Added a method GSL::Vector#logspace2. The following two are
- equivalent:
- v1 = Vector.logspace(1, 3, 5)
- v2 = Vector.logspace2(10, 1000, 5)
-
-Tue Oct 19 2004 Yoshiki Tsunesada
- * Support the rngextra package
- * http://www.network-theory.co.uk/download/rngextra/
- * Added two random number generators "rngextra_rng1" and "rngextra_rng2"
- * Fixed a bug in the method Vector#subvector_with_stride
-
-Mon Oct 18 2004 Yoshiki Tsunesada
- * Added a sample script dht.rb
-
-Fri Oct 8 2004 Yoshiki Tsunesada
- * Version 1.5.3
-
-Thu Oct 7 2004 Yoshiki Tsunesada
- * The methods Vector.graph and GSL::graph improved.
- * Added sample scripts of special functions and probability distribution
- functions.
-
-Sat Oct 2 2004 Yoshiki Tsunesada
- * Discrete wavelet transform (experimental)
- * Presently this is only for CVS trackers,
- since DWT is not supported in the latest version GSL-1.5.
- * Added methods Vector.connect, Vector#connect
-
-Thu Sep 30 2004 Yoshiki Tsunesada
- * The methods Vector#[] and Vector#[]= accept an index of
- negative integer. For example, v[-1] returns the last element
- of the vector v, v[-2] does the second last, and so on.
-
-Fri Sep 24 2004 Yoshiki Tsunesada
- * Fixed bug in Sf::legendre_Ql
-
-Wed Sep 1 2004 Yoshiki Tsunesada
- * Version 1.5.2
-
-Fri Aug 27 2004 Yoshiki Tsunesada
- * Experimental implementation of GNU plotutils graph and GNUPLOT interfaces
- * Added unary minus operators for GSL::Vector, GSL::Matrix
-
-Thu Aug 19 2004 Yoshiki Tsunesada
- * Added class GSL::Matrix::Int
- * Correct descriptions of GSL::Matrix#get_row, get_col
- * Changed behaviour of methods NArray#to_gv, NArray#to_gm,
- added methods NArray#to_gv_view, NArray#to_gm_view
-
-Wed Aug 18 2004
- * Added method GSL::set_error_handler
-
-Tue Aug 17 2004
- * Version 1.5.1
-
-Sat Aug 14 2004 Yoshiki Tsunesada
- * Changed behaviour of the methods Odeiv::Evolve#apply, Odeiv::Solver#apply
- * Fixed bug in GSL::Histogram#get
- * Fixed buf in GSL::Vector#matrix_view_with_tda
- * Added class GSL::Vector::Int
- * Added test suite
-
-Wed Aug 11 2004 Yoshiki Tsunesada
- * Fixed bug in GSL::Sf::legendle_Ql_e
- * Fixed bug in GSL::MultiFit.linear
-
-Tue Aug 10 2004 Yoshiki Tsunesada
- * Fixed bugs in GSL::Cdf::gumbel2_P, gumbel2_Q
- * Version 1.5.0
-
-Fri Aug 6 2004 Yoshiki Tsunesada
- * Fixed bug in Histogram2d.new_uniform
-
-4.Aug.2004
- * Correct source code errors in interp.c, multifit.c
-
-2.Aug.2004
- * Added methods GSL::Vector#dot (inner product)
- * Added classes GSL::Vector::Col < GSL::Vector,
- GSL::Vector::Col::View < GSL::Vector::Col
-
-1.Aug.2004
- * Version 0.9.9
-
-30.Jul.2004
- * Added methods GSL::Rng.default_seed, GSL::Rng.default_seed=(seed)
-
-26.Jul.2004
- * Cumulative distribution functions
- * Changed module path GSL::Ran:: ---> GSL::Cdf
- * Constants GSL::VERSION, GSL::RUBY_GSL_VERSION defined
-
-24.Jul.2004
- * Experimental implementation of discrete wavelet transforms (tests/wavelet)
-
-22.Jul.2004
- * Elementary functions as GSL::sin now can take argument of Integer, Float,
- Array, Vector or Matrix.
- * Strict type check
-
-20.Jul.2004
- * Added methods GSL::heapsort, Vector#heapsort, Vector::Complex#heapsort
- * Added methods GSL::heapsort_index, Vector#heapsort_index,
- Vector::Complex#heapsort_index
- * version 0.9.4
-
-18.Jul.2004
- * Added missing functions GSL::Sf::legendre_Ql
- * Added missing functions GSL::Sf::psi_e
- * Added missing functions GSL::Sf::zetam1, zetam1_int
-
-17.Jul.2004
- * Added GSL::Eigen::Symmv::sort, GSL::Eigen::Hermv::sort
- * Update GSL::Monte
-
-15.Jul.2004
- * Version 0.9.2
- * Added methods Matrix#each_row, Matrix#each_col
- * Added methods Matrix::Complex#each_row, Matrix::Complex#each_col
- * Fixed bug in Complex::polar
- * Fixed bug in Complex#abs, arg, abs2, logabs
-
-13.Jul.2004
- * Added Matrix#trace, Matrix::Complex#trace
-
-11.Jul.2004
- * version 0.9.0
- * Householder Transformations
- * LU decomposition for complex matrices
- * All the GSL functions implemented.
-
-10.Jul.2004
- * Blas level 3
- * Fixed GSL::Vector::sort_index
-
-8.Jul.2004
- * Correct document on random distributions
-
-7.Jul.2004
- * Fixed bug in the method GSL::Sf::coulomb_wave_sphF_array
-
-6.Jul.2004
- * GSL 1.5 support
- * Fixed a bug in the method GSL::Sf::bessel_sequence_Jnu_e
-
-5.Jul.2004
- * Compile test with -Wall option:
- * remove unused variables, check missing prototype declarations
- * Fixed a bug in the method GSL::Multimin::test_size (wrong binding)
-
-30.Jun.2004
- * ver 0.4.7
-
-28.Jun.2004
- * Switch rb_f_lambda() and rb_block_proc(), for proper ruby version.
-
-20.Jun.2004
- * Added Linalg::balance_comlumns(A, D) and Matrix#balance_columns(D)
- * BLAS support
- * Level 1
- * Level 2
-
-19.Jun.2004
- * Support gsl-1.4.90
- * Added Stefan-Boltzmann constant, Thomson scattering cross section
- * Module Deriv
-
-13.Jun.2004
- * Fixed a bug in the sample script integration/friedmann.rb
- * Improved interfaces of polynomial equations
- * Correct the document on GSL::Complex
-
-10.Jun.2004
- * ver 0.4.2
- * The module GSL::Math removed
- * The module name GSL::Const is changed to GSL::CONST
-
-09.Jun.2004
- * ver 0.4.1
- * Add random number generators borosh13, coveyou, fishman18,
- fishman20, fishman2x, knuthran, knuthran2, lecuyer21, waterman14.
- * Correct the documentation on random number generators
- * Add functions expint_E1_scaled,expint_E2_scaled, and others
- * Add methods Rng::fwrite, fread
- * Add function binomial_tpe
-
-05.Jun.2004
- * 0.4.0
-
-02.Jun.2004
- * rb_gc_mark
- * Implemented simulated annealing, Ntuples
-
-25.Apr.2004
- * Vector, Matrix, Matrix::Complex coerce
-
-24.Apr.2004 version 0.3.11
- * GSL::Complex, coerce
-
-22.Apr.2004 version 0.3.10
- * polish sources of special functions
-
-18.Apr.2004, version 0.3.9
- * bug fix Eigensystems, Interpolation
-
-16.Apr.2004
- * bug fix Vector, Matrix, Linalg
-
-14.Apr.2004, version 0.3.8
- * N-tuples
- * Improvement in NArray object conversions (thanks to S. Nishizawa)
-
-13.Apr.2004
- * Poly divided-difference reporesentation, Taylor expansion
- * Apply patch by S. Nishizawa, for type checks in C code,
- and some modifications in sample scripts
-
-12.Apr.2004, version 0.3.7
- * Add mathematical functions ldexp, frexp
- * Add gsl_sf_hazard function
- * QRng bug fix
- * GSL::Stats module
-
-version 0.3.6 Monte-Carlo integration
-version 0.3.5 Multidimensional minimization
-version 0.3.4 Combinations, One dimensional minimization, Multidimensional
-root-finding
-version 0.3.3 Nonlinear least-squared fitting
-versoin 0.3.2 Least-squared fitting
-version 0.3.1 One dimensional root-finding
-version 0.3.0 FFTs, Ordinary differential equations
-2002 version 0.2.5
+== Sat Aug 11 2007
+* Modified ext/extconf.rb: Check gsl_stats_correlation()
+
+== Sun Aug 5 2007
+* Improved GSL::Vector::filescan()
+== Tue May 15 2007
+* Fixed a bug in Vector#get (Thank to Daigo Moriwaki)
+
+== Sun Feb 18 2007
+* Completed GSL-1.8.90 features
+ * Change names "unsymm" ---> "nonsymm" for non-symmetric eigen systems
+ * Added Mathieu functions
+ * Added Vector#ispos, isneg
+ * Added knuthran2002 generator
+ * Added a new minimization method GSL::MultiMin::FdfMinimizer::BFGS2
+
+== Sun Dec 31 2006
+* Remove the module function GSL::equal?, which breaks the Ruby policy.
+
+== Sun Dec 24 2006
+* Added Basis splines
+* CQP and Bundle extentions support
+
+== Wed Dec 13 2006
+* OOL extension support (OOL version 0.2)
+ * OOL: Open Optimization Library
+
+== Mon Dec 11 2006
+* Add a quasi-random sequence generator hdsobol
+ (require the qrngextra extension)
+
+== Tue Sep 26 2006
+* Fixed a bug in GSL::Vector#*
+
+== Sun Sep 24 2006
+* Fixed a bug in GSL::Matrix.vandermonde()
+* Added methods GSL::Vector#join, zip, cumsum, cumprod
+
+== Thu Sep 21 2006
+* Added methods to calculate eigenvectors of nonsymmetric matrices
+* Added test scripts tests/eigen/unsymm.rb, tests/eigen/unsymmv.rb
+
+== Wed Aug 23 2006
+* Added methods to calculate eigenvalues of nonsymmetric matrices
+
+== Fri Aug 18 2006
+* Fixed bug in Sf::hypot
+
+== Sat Apr 29 2006
+* Applied patch provided by Cameron McBride, to fix a bug in
+ randist.c
+* Applied patched by zunda to fix some test/ scripts.
+
+== Thu Apr 13 2006
+* Version 1.8.0
+ * Added cumulative distribution functions under the module GSL::Cdf:
+ binomial, poisson, geometric, negative binomial, pascal and hypergeometric.
+ * Added module functions GSL::Cdf::beta_Pinv, beta_Qinv, fdist_Pinv, and
+ fdist_Qinv.
+ * Added the multilinear fit estimator function GSL::MultiFit::linear_est.
+ * Added new random variate generators,
+ GSL::Ran::gaussian_ziggurat and gamma_mt.
+ * Added Debye functions for n=5 and n=6, as
+ GSL::Sf::debye_5 and debye_6.
+ * Added GSL::Spline#min_size
+ * Added the Debye unit to physical constants.
+
+== Fri Dec 2 2005
+* Singleton method "new" ---> "alloc"
+
+== Sun Nov 27 2005
+* Apply patch by zunda to improve multifit.
+* Fix bug in dirac.c
+
+== Tue Apr 3 JST 2005
+* Added Vector#collect!, Matrix#collect!
+* Added lib/rbgsl.rb, in which the GSL module is not included by default
+
+== Wed Apr 27 2005
+* The following Linalg methods now can handle NArray objects:
+ * GSL::Linalg::
+ * LU.decomp(m)
+ * LU.solve(lu, b)
+ * LU.svx(lu, bx)
+ * LU.det(lu, sign)
+ * LU.lndet(lu)
+ * LU.invert(lu, perm)
+ * QR.decomp(m)
+ * QR.solve(qr, tau, b)
+ * QR.svx(qr, tau, bx)
+ * SV.decomp(m)
+ * SV.solve(u, v, s, b)
+ * SV.svx(u, v, s, bx)
+ * Cholesky.decomp(m)
+ * Cholesky.solve(u, v, s, b)
+ * Cholesky.svx(u, v, s, bx)
+ * HH.solve(m, b)
+ * HH.svx(m, bx)
+
+== Mon Apr 18 2005
+* Improved gsl_narray.c (thanks to T. Horinouchi)
+* Modified extconf.rb
+ * Automatic finding of NArray
+* Applied a patch by zunda
+
+== Thu Apr 7 2005
+* Modified extconf.rb
+
+== Mon Mar 21 2005
+* Version 1.6.2
+
+== Sat Mar 19 2005
+* Fixed Blas.dgemm, .zgemm
+* Fixed method re-definitions
+
+== Tue Mar 15 2005
+* Added class GSL::Block::Byte, GSL::Block::Index
+* Added NArray-like methods, Vector#eq, ne, gt, where, any? etc.
+* Added methods Vector#floor, Vector#ceil,
+ and Vector#round (if the system has)
+
+== Sat Mar 12 2005
+* Fixed Vector#get
+
+== Sat Feb 26 2005
+* Ruby 1.9.0 support
+
+== Sat Feb 5 2005
+* Version 1.6.1
+
+== Wed Jan 26 2005
+* Added in-place FFT methods
+ * Fixed FFT document
+
+== Thu Jan 20 2005
+* Added Vector#decimate, Vector#diff
+* Added Matrix#rot90
+* Fixed Matrix::Complex
+
+== Thu Jan 06 2005
+* Some methods which receive GSL::Vector now can also manipulate
+ NArray objects.
+ * Special functions
+ * Probability distributions
+ * Statistics
+ * FFTs
+ * Wavelet transforms
+ * Interpolations
+ * Serices accelerations
+* Added method Vector#decimate
+* Sf::exp now can receive Complex or Vector::Complex
+
+== Tue Jan 04
+* Version 1.6.0
+
+== Thu Dec 30 2004 Yoshiki Tsunesada
+* Update for GSL-1.5.90
+ * Added Sf::psi_1
+ * Added ODE stepper rk2simp
+ * Added LQ, PTLQ decompositions
+ * Added methods Cdf::exppow_P, Cdf::exppow_Q
+
+== Mon Dec 27 2004 Yoshiki Tsunesada
+* All Ruby/GSL classes are defined as derivatives of the base class
+ GSL::Object.
+* Defined the method GSL::Object#info
+* Added Vector#histogram
+* Added Vector.filescan
+* Modified the methods Histogram#increment, accumulate
+* Added methods Poly.fit, Poly.wfit, MultiFit.polyfit
+* Added methods Vector::Complex#abs2, abs, arg
+* Modified FFT methods: now they return FFTed data as a new vector,
+ and do not destroy the input vector.
+
+== Sat Dec 11 2004 Yoshiki Tsunesada
+* Modified Histogram#integral
+
+== Fri Dec 10 2004 Yoshiki Tsunesada
+* Added methods Histogram#reverse, Histogram2d#integrate,
+ Histogram2d#normalize
+
+== Mon Dec 6 2004 Yoshiki Tsunesada
+* Version 1.5.4
+
+== Fri Dec 3 2004 Yoshiki Tsunesada
+* Added Histogram#rebin
+
+== Fri Nov 26 2004 Yoshiki Tsunesada
+* Added method Vector#to_m
+* Added methods Matrix#reverse_rows, Matrix#reverse_columns
+
+== Tue Nov 16 2004 Yoshiki Tsunesada
+* The method Matrix#** is now obsolete, use "*"
+ for matrix multiplication instead.
+* Improved Matrix#* and Vetor#*
+* Added methods Vector#to_m_diagonal, Vector#to_m_circulant,
+ Vector#collect
+* Added methods Matrix.hilbert, Matrix.invhilbert, Matrix.pascal,
+ Matrix.vandermonde, Matrix.toeplitz, Matrix.circulant
+* Added methods Vector.indgen, Vector#indgen,
+ Matrix.indgen, Matrix#indgen (mimics NArray)
+* Added class GSL::Histogram3d
+* Checked GSL lower version compatibilities
+ * gsl-1.0 ~ gsl-1.5: OK
+ * gsl-0.9.4: OK
+ * gsl-0.9.3 or older: not tested
+ * gsl-1.6 (development version, CVS Nov2004): OK
+
+== Sun Nov 7 2004 Yoshiki Tsunesada
+* Support the gsl_tensor package
+ * http://sources.redhat.com/ml/gsl-discuss/2004-q4/msg00053.html
+ * Added class GSL::Tensor, GSL::Tensor::Int
+* The methods Vector#get, Vector#[] now receive multiple
+ arguments, or an Array, or a Range object.
+
+== Thu Nov 4 2004 Yoshiki Tsunesada
+* Added class GSL::Histogram::Integral, which represents the
+ cumulative distribution.
+* Added method GSL::Histogram#integrate, which creates a
+ GSL::Histogram::Integral object.
+* Added methods GSL::Histogram2d#xproject, yproject, normalize, increment2.
+
+== Sun Oct 31 2004 Yoshiki Tsunesada
+* Fix the document for Polynomials
+* Added methods Poly::hermite(n), Poly::cheb(n), and Poly::cheb_II(n) etc..
+* Added method Poly#compan, which returns the companion matrix.
+* The method Matrix#/ is improved: if a Vector is given, this method
+ solves the linear system.
+
+== Mon Oct 25 2004 Yoshiki Tsunesada
+* Split the source file "randist.c" into "randist.c" and "cdf.c"
+* Split the source file "diff.c" into "diff.c" and "deriv.c"
+* Split the source file "interp.c" into "interp.c" and "spline.c"
+* Added methods Vector#abs, sqrt, square, normalize
+* Added sample scripts odeiv/frei1.rb, fft/frei2.rb
+ and eigen/qhoscillator.rb, which deal with quantum mechanical
+ calculations. These are translated from the C++ code in the
+ Harald Wiedemann's textbook "Numerische Physik"
+ (Springer 2004, ISBN 3-540-40774-X).
+
+== Sat Oct 23 2004 Yoshiki Tsunesada
+* Added a method GSL::Vector#logspace2. The following two are
+ equivalent:
+ v1 = Vector.logspace(1, 3, 5)
+ v2 = Vector.logspace2(10, 1000, 5)
+
+== Tue Oct 19 2004 Yoshiki Tsunesada
+* Support the rngextra package
+ * http://www.network-theory.co.uk/download/rngextra/
+ * Added two random number generators "rngextra_rng1" and "rngextra_rng2"
+ * Fixed a bug in the method Vector#subvector_with_stride
+
+== Mon Oct 18 2004 Yoshiki Tsunesada
+* Added a sample script dht.rb
+
+== Fri Oct 8 2004 Yoshiki Tsunesada
+* Version 1.5.3
+
+== Thu Oct 7 2004 Yoshiki Tsunesada
+* The methods Vector.graph and GSL::graph improved.
+* Added sample scripts of special functions and probability distribution
+ functions.
+
+== Sat Oct 2 2004 Yoshiki Tsunesada
+* Discrete wavelet transform (experimental)
+* Presently this is only for CVS trackers,
+ since DWT is not supported in the latest version GSL-1.5.
+* Added methods Vector.connect, Vector#connect
+
+== Thu Sep 30 2004 Yoshiki Tsunesada
+* The methods Vector#[] and Vector#[]= accept an index of
+ negative integer. For example, v[-1] returns the last element
+ of the vector v, v[-2] does the second last, and so on.
+
+== Fri Sep 24 2004 Yoshiki Tsunesada
+* Fixed bug in Sf::legendre_Ql
+
+== Wed Sep 1 2004 Yoshiki Tsunesada
+* Version 1.5.2
+
+== Fri Aug 27 2004 Yoshiki Tsunesada
+* Experimental implementation of GNU plotutils graph and GNUPLOT interfaces
+* Added unary minus operators for GSL::Vector, GSL::Matrix
+
+== Thu Aug 19 2004 Yoshiki Tsunesada
+* Added class GSL::Matrix::Int
+* Correct descriptions of GSL::Matrix#get_row, get_col
+* Changed behaviour of methods NArray#to_gv, NArray#to_gm,
+ added methods NArray#to_gv_view, NArray#to_gm_view
+
+== Wed Aug 18 2004
+* Added method GSL::set_error_handler
+
+== Tue Aug 17 2004
+* Version 1.5.1
+
+== Sat Aug 14 2004 Yoshiki Tsunesada
+* Changed behaviour of the methods Odeiv::Evolve#apply, Odeiv::Solver#apply
+* Fixed bug in GSL::Histogram#get
+* Fixed buf in GSL::Vector#matrix_view_with_tda
+* Added class GSL::Vector::Int
+* Added test suite
+
+== Wed Aug 11 2004 Yoshiki Tsunesada
+* Fixed bug in GSL::Sf::legendle_Ql_e
+* Fixed bug in GSL::MultiFit.linear
+
+== Tue Aug 10 2004 Yoshiki Tsunesada
+* Fixed bugs in GSL::Cdf::gumbel2_P, gumbel2_Q
+* Version 1.5.0
+
+== Fri Aug 6 2004 Yoshiki Tsunesada
+* Fixed bug in Histogram2d.new_uniform
+
+== 4.Aug.2004
+* Correct source code errors in interp.c, multifit.c
+
+== 2.Aug.2004
+* Added methods GSL::Vector#dot (inner product)
+* Added classes GSL::Vector::Col < GSL::Vector,
+ GSL::Vector::Col::View < GSL::Vector::Col
+
+== 1.Aug.2004
+* Version 0.9.9
+
+== 30.Jul.2004
+* Added methods GSL::Rng.default_seed, GSL::Rng.default_seed=(seed)
+
+== 26.Jul.2004
+* Cumulative distribution functions
+* Changed module path GSL::Ran:: ---> GSL::Cdf
+* Constants GSL::VERSION, GSL::RUBY_GSL_VERSION defined
+
+== 24.Jul.2004
+* Experimental implementation of discrete wavelet transforms (tests/wavelet)
+
+== 22.Jul.2004
+* Elementary functions as GSL::sin now can take argument of Integer, Float,
+ Array, Vector or Matrix.
+* Strict type check
+
+== 20.Jul.2004
+* Added methods GSL::heapsort, Vector#heapsort, Vector::Complex#heapsort
+* Added methods GSL::heapsort_index, Vector#heapsort_index,
+ Vector::Complex#heapsort_index
+* version 0.9.4
+
+== 18.Jul.2004
+* Added missing functions GSL::Sf::legendre_Ql
+* Added missing functions GSL::Sf::psi_e
+* Added missing functions GSL::Sf::zetam1, zetam1_int
+
+== 17.Jul.2004
+* Added GSL::Eigen::Symmv::sort, GSL::Eigen::Hermv::sort
+* Update GSL::Monte
+
+== 15.Jul.2004
+* Version 0.9.2
+* Added methods Matrix#each_row, Matrix#each_col
+* Added methods Matrix::Complex#each_row, Matrix::Complex#each_col
+* Fixed bug in Complex::polar
+* Fixed bug in Complex#abs, arg, abs2, logabs
+
+== 13.Jul.2004
+* Added Matrix#trace, Matrix::Complex#trace
+
+== 11.Jul.2004
+* version 0.9.0
+* Householder Transformations
+* LU decomposition for complex matrices
+* All the GSL functions implemented.
+
+== 10.Jul.2004
+* Blas level 3
+* Fixed GSL::Vector::sort_index
+
+== 8.Jul.2004
+* Correct document on random distributions
+
+== 7.Jul.2004
+* Fixed bug in the method GSL::Sf::coulomb_wave_sphF_array
+
+== 6.Jul.2004
+* GSL 1.5 support
+* Fixed a bug in the method GSL::Sf::bessel_sequence_Jnu_e
+
+== 5.Jul.2004
+* Compile test with -Wall option:
+ * remove unused variables, check missing prototype declarations
+* Fixed a bug in the method GSL::Multimin::test_size (wrong binding)
+
+== 30.Jun.2004
+* ver 0.4.7
+
+== 28.Jun.2004
+* Switch rb_f_lambda() and rb_block_proc(), for proper ruby version.
+
+== 20.Jun.2004
+* Added Linalg::balance_comlumns(A, D) and Matrix#balance_columns(D)
+* BLAS support
+ * Level 1
+ * Level 2
+
+== 19.Jun.2004
+* Support gsl-1.4.90
+ * Added Stefan-Boltzmann constant, Thomson scattering cross section
+ * Module Deriv
+
+== 13.Jun.2004
+* Fixed a bug in the sample script integration/friedmann.rb
+* Improved interfaces of polynomial equations
+* Correct the document on GSL::Complex
+
+== 10.Jun.2004
+* ver 0.4.2
+* The module GSL::Math removed
+* The module name GSL::Const is changed to GSL::CONST
+
+== 09.Jun.2004
+* ver 0.4.1
+* Add random number generators borosh13, coveyou, fishman18,
+ fishman20, fishman2x, knuthran, knuthran2, lecuyer21, waterman14.
+* Correct the documentation on random number generators
+* Add functions expint_E1_scaled,expint_E2_scaled, and others
+* Add methods Rng::fwrite, fread
+* Add function binomial_tpe
+
+== 05.Jun.2004
+* 0.4.0
+
+== 02.Jun.2004
+* rb_gc_mark
+* Implemented simulated annealing, Ntuples
+
+== 25.Apr.2004
+* Vector, Matrix, Matrix::Complex coerce
+
+== 24.Apr.2004 version 0.3.11
+* GSL::Complex, coerce
+
+== 22.Apr.2004 version 0.3.10
+* polish sources of special functions
+
+== 18.Apr.2004, version 0.3.9
+* bug fix Eigensystems, Interpolation
+
+== 16.Apr.2004
+* bug fix Vector, Matrix, Linalg
+
+== 14.Apr.2004, version 0.3.8
+* N-tuples
+* Improvement in NArray object conversions (thanks to S. Nishizawa)
+
+== 13.Apr.2004
+* Poly divided-difference reporesentation, Taylor expansion
+* Apply patch by S. Nishizawa, for type checks in C code,
+ and some modifications in sample scripts
+
+== 12.Apr.2004, version 0.3.7
+* Add mathematical functions ldexp, frexp
+* Add gsl_sf_hazard function
+* QRng bug fix
+* GSL::Stats module
+
+== version 0.3.6
+* Monte-Carlo integration
+
+== version 0.3.5
+* Multidimensional minimization
+
+== version 0.3.4
+* Combinations, One dimensional minimization, Multidimensional root-finding
+
+== version 0.3.3
+* Nonlinear least-squared fitting
+
+== versoin 0.3.2
+* Least-squared fitting
+
+== version 0.3.1
+* One dimensional root-finding
+
+== version 0.3.0
+* FFTs, Ordinary differential equations
+
+== 2002 version 0.2.5
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..ab57309
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,4 @@
+source 'https://rubygems.org'
+gemspec
+
+gem 'narray' if ENV['NARRAY']
diff --git a/README b/README
deleted file mode 100644
index b0f19ed..0000000
--- a/README
+++ /dev/null
@@ -1,28 +0,0 @@
-== Description
-
-Ruby/GSL, a ruby interface to GSL (GNU Scientific library)
-
-== Installation
-
-See http://blackwinter.github.com/rb-gsl.
-
-== Reference
-
-See http://blackwinter.github.com/rb-gsl/rdoc/ref_rdoc.
-
-== Licence
-
-Ruby/GSL is free software: you can redistribute it and/or modify it
-under the terms of the GNU General Public License.
-This library is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY.
-
-== Bug Reports
-
-Any bug reports are welcome. If you encounter bugs in Ruby/GSL, please
-report them on GitHub: https://github.com/blackwinter/rb-gsl/issues.
-
-== Authors
-
-* Yoshiki Tsunesada <y-tsunesada at mm dot em-net dot ne dot jp> (Original author)
-* Jens Wille <mailto:jens.wille at gmail.com>
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..52a97bb
--- /dev/null
+++ b/README.md
@@ -0,0 +1,77 @@
+# Ruby/GSL, a Ruby interface to GSL (GNU Scientific library)
+
+Permission is granted to copy, distribute and/or modify this document under
+the terms of the GNU Free Documentation License.
+
+## Description
+
+Ruby/GSL is a Ruby interface to the [GNU Scientific Library](https://gnu.org/software/gsl/)
+(GSL), for numerical computing with [Ruby](http://www.ruby-lang.org/).
+
+
+## Installation
+
+Ruby/GSL may be installed as a Ruby Gem by simply running
+
+ gem install rb-gsl
+
+Note that the GSL libraries must already be installed before Ruby/GSL
+can be installed:
+
+Debian/Ubuntu: +libgsl0-dev+
+Fedora/SuSE: +gsl-devel+
+Gentoo: +sci-libs/gsl+
+OS X: <tt>brew install gsl</tt>
+
+It is recommended to install the [GNU plotutils](https://gnu.org/software/plotutils/plotutils.html)
+package. Some of the example scripts in the +examples/+ directory use the
++graph+ utility included in the package to plot the results. Windows cygwin
+binaries of <tt>GNU plotutils</tt> and related packages are available
+[here](http://gnuwin32.sourceforge.net/packages/plotutils.htm).
+
+
+## Reference
+
+The [Ruby/GSL reference manual](link:rdoc/ref_rdoc.html) follows and borrows
+large parts of the GSL reference manual.
+
+
+## Examples
+
+See scripts in +examples/+ and +test/+ directories.
+
+
+## Related Projects
+
+* [ruby-gsl](http://ruby-gsl.sourceforge.net/): Another Ruby binding,
+ developed by Arno Erpenbeck.
+
+
+## Licence
+
+Ruby/GSL is free software: you can redistribute it and/or modify it
+under the terms of the GNU General Public License.
+This library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY.
+
+
+## Bug Reports
+
+Any bug reports are welcome. If you encounter bugs in Ruby/GSL, please
+report them on GitHub(https://github.com/SciRuby/rb-gsl/issues).
+
+
+## Links
+
+Documentation: https://sciruby.github.com/rb-gsl
+Source code: https://github.com/SciRuby/rb-gsl
+RubyGem: https://rubygems.org/gems/rb-gsl
+Bug tracker: https://github.com/SciRuby/rb-gsl/issues
+Travis CI: https://travis-ci.org/SciRuby/rb-gsl
+
+
+## Authors
+
+* Yoshiki Tsunesada <y-tsunesada at mm dot em-net dot ne dot jp> (July, 2004)
+* David MacMahon <davidm at astro.berkeley.edu> (November, 2010)
+* Jens Wille <mailto:jens.wille at gmail.com> (November, 2013)
diff --git a/Rakefile b/Rakefile
index 69c8936..780cebb 100644
--- a/Rakefile
+++ b/Rakefile
@@ -1,39 +1,20 @@
require File.expand_path(%q{../lib/gsl/version}, __FILE__)
-begin
- require 'hen'
+require 'bundler/setup'
+require 'rubygems/package_task'
+require 'rake/extensiontask'
+require 'rake/testtask'
- note = '[Ruby 2.x and GSL 1.16 compatible fork]'
+Bundler::GemHelper.install_tasks
- Hen.lay! {{
- :gem => {
- :name => %q{rb-gsl},
- :version => GSL::RB_GSL_VERSION,
- :summary => %Q{Ruby interface to the GNU Scientific Library #{note}},
- :description => %Q{Ruby/GSL is a Ruby interface to the GNU Scientific Library, for numerical computing with Ruby #{note}},
- :authors => ['Yoshiki Tsunesada', 'David MacMahon', 'Jens Wille'],
- :email => %q{jens.wille at gmail.com},
- :license => %q{GPL-2.0},
- :homepage => :blackwinter,
- :dependencies => [['narray', '>= 0.5.9']],
- :requirements => ['GSL (http://www.gnu.org/software/gsl/)'],
-
- :extra_files => FileList['examples/**/*', 'rdoc/*'].to_a,
+Rake::TestTask.new do |t|
+ t.libs << 'test'
+ t.libs << 'test/gsl'
+ t.test_files = FileList['test/*.rb', 'test/gsl/*.rb']
+end
- :extension => { :cross_compile => false },
+spec = eval(IO.read('gsl.gemspec'))
+Gem::PackageTask.new(spec).define
+Rake::ExtensionTask.new(:gsl_native, spec)
- :required_ruby_version => '>= 1.8.7'
- },
- :rdoc => {
- :title => 'Ruby/GSL{version: (v%s)}',
- :rdoc_files => FileList['rdoc/*'].to_a,
- :main => 'index.rdoc',
- :root => 'rdoc'
- },
- :test => {
- :libs => %w[lib test]
- }
- }}
-rescue LoadError => err
- warn "Please install the `hen' gem. (#{err})"
-end
+task :default => [:compile, :test]
diff --git a/THANKS b/THANKS
index 2f5f4df..4085f5b 100644
--- a/THANKS
+++ b/THANKS
@@ -1,5 +1,5 @@
Takeshi Horinouchi
-Masahide Kikkawa
+Masahide Kikkawa
Seiya Nishizawa (Patches, NArray supports)
Arno Erpenbeck (ruby-gsl project)
Austin Newton
diff --git a/examples/blas/blas.rb b/examples/blas/blas.rb
index 3a0f000..957c7b6 100755
--- a/examples/blas/blas.rb
+++ b/examples/blas/blas.rb
@@ -10,4 +10,4 @@ B = b.matrix_view(3, 2)
C = GSL::Blas.dgemm(GSL::Blas::NoTrans, GSL::Blas::NoTrans, 1.0, A, B, 0.0)
p C
-p A*B
+p A*B
diff --git a/examples/bspline.rb b/examples/bspline.rb
index f9e6b73..6758be3 100755
--- a/examples/bspline.rb
+++ b/examples/bspline.rb
@@ -19,15 +19,15 @@ w = GSL::Vector.alloc(N)
for i in 0...N do
xi = (15.0/(N-1)/1)*i
yi = Math::cos(xi)*Math::exp(-0.1*xi)
-
+
sigma = 0.1
dy = GSL::Ran.gaussian(r, sigma)
yi += dy
-
+
x[i] = xi
y[i] = yi
w[i] = sigma
-
+
# printf("%f %f\n", xi, yi)
end
diff --git a/examples/complex/functions.rb b/examples/complex/functions.rb
index 0812096..5b88e5a 100755
--- a/examples/complex/functions.rb
+++ b/examples/complex/functions.rb
@@ -26,8 +26,8 @@ p f.log == z
p z.pow(f) # [1.931e-02 1.752e-02], verified with Octave result
# The results below are verified with the Octave results
-p GSL::Complex.sin(z)
-p GSL::Complex.cos(z)
+p GSL::Complex.sin(z)
+p GSL::Complex.cos(z)
p GSL::Complex.tan(z)
p GSL::Complex.sec(z)
p GSL::Complex.csc(z)
@@ -43,8 +43,8 @@ p GSL::Complex.arccsc(z)
p GSL::Complex.arccsc_real(2)
p GSL::Complex.arccot(z)
-p GSL::Complex.sinh(z)
-p GSL::Complex.cosh(z)
+p GSL::Complex.sinh(z)
+p GSL::Complex.cosh(z)
p GSL::Complex.tanh(z)
p GSL::Complex.sech(z)
p GSL::Complex.csch(z)
diff --git a/examples/complex/mul.rb b/examples/complex/mul.rb
index 3e5a28d..5177c7e 100755
--- a/examples/complex/mul.rb
+++ b/examples/complex/mul.rb
@@ -3,7 +3,7 @@ require 'gsl'
a = GSL::Complex.rect(1, 2)
b = GSL::Complex[3, 4]
-
+
p a*b # -5 + 10i
p a.mul(b)
p a
diff --git a/examples/const/physconst.rb b/examples/const/physconst.rb
index b662a48..afb1c03 100755
--- a/examples/const/physconst.rb
+++ b/examples/const/physconst.rb
@@ -42,7 +42,7 @@ MENU[2] = ["", "ASTRONOMICAL_UNIT", "GRAVITATIONAL_CONSTANT",
MENU[3] = ["", "ELECTRON_CHARGE", "ELECTRON_VOLT", "UNIFIED_ATOMIC_MASS",
"MASS_ELECTRON", "MASS_MUON", "MASS_PROTON", "MASS_NEUTRON",
"FINE_STRUCTURE", "RYDBERG", "BOHR_RADIUS", "ANGSTROM",
- "BARN", "BOHR_MAGNETON", "NUCLEAR_MAGNETON",
+ "BARN", "BOHR_MAGNETON", "NUCLEAR_MAGNETON",
"ELECTRON_MAGNETIC_MOMENT", "PROTON_MAGNETIC_MOMENT",
"THOMSON_CROSS_SECTION"]
@@ -56,10 +56,10 @@ MENU[9] = ["", "POUND_MASS", "OUNCE_MASS", "TON", "METRIC_TON", "UK_TON",
"TROY_OUNCE", "CARAT", "GRAM_FORCE", "POUND_FORCE",
"KILOPOUND_FORCE", "POUNDAL"]
MENU[10] = ["", "CALORIE", "BTU", "THERM", "HORSEPOWER"]
-MENU[11] = ["", "BAR", "STD_ATMOSPHERE", "TORR", "METER_OF_MERCURY",
+MENU[11] = ["", "BAR", "STD_ATMOSPHERE", "TORR", "METER_OF_MERCURY",
"INCH_OF_MERCURY", "INCH_OF_WATER", "PSI"]
MENU[12] = ["", "POISE", "STOKES"]
-MENU[13] = ["", "STILB", "LUMEN", "LUX", "PHOT", "FOOTCANDLE",
+MENU[13] = ["", "STILB", "LUMEN", "LUX", "PHOT", "FOOTCANDLE",
"LAMBERT", "FOOTLAMBERT"]
MENU[14] = ["", "CURIE", "ROENTGEN", "RAD"]
MENU[15] = ["", "NEWTON", "DYNE", "JOULE", "ERG"]
@@ -96,7 +96,7 @@ def show_submenu(ind, w)
w.setpos(i+=1, 1)
str = " ? ['m' to menu]: "
w.addstr(str)
- w.setpos(i, str.size+1)
+ w.setpos(i, str.size+1)
w.box('|', '-')
w.refresh
end
diff --git a/examples/const/travel.rb b/examples/const/travel.rb
index efe8b9c..a2d894a 100755
--- a/examples/const/travel.rb
+++ b/examples/const/travel.rb
@@ -8,8 +8,8 @@ c = SPEED_OF_LIGHT;
au = ASTRONOMICAL_UNIT;
minutes = MINUTE;
-# distance stored in meters
-r_earth = 1.00 * au;
+# distance stored in meters
+r_earth = 1.00 * au;
r_mars = 1.52 * au;
t_min = (r_mars - r_earth) / c;
@@ -30,8 +30,8 @@ c = SPEED_OF_LIGHT;
au = ASTRONOMICAL_UNIT;
minutes = MINUTE;
-# distance stored in meters
-r_earth = 1.00 * au;
+# distance stored in meters
+r_earth = 1.00 * au;
r_mars = 1.52 * au;
t_min = (r_mars - r_earth) / c;
diff --git a/examples/eigen/nonsymmv.rb b/examples/eigen/nonsymmv.rb
index 71bd38e..27091d7 100755
--- a/examples/eigen/nonsymmv.rb
+++ b/examples/eigen/nonsymmv.rb
@@ -13,7 +13,7 @@ p eval
p evec
=begin
-This can be compared with the corresponding output from GNU OCTAVE,
+This can be compared with the corresponding output from GNU OCTAVE,
octave> [v,d] = eig(vander([-1 -2 3 4]));
octave> diag(d)
diff --git a/examples/eigen/qhoscillator.rb b/examples/eigen/qhoscillator.rb
index 48c26bf..96b0988 100755
--- a/examples/eigen/qhoscillator.rb
+++ b/examples/eigen/qhoscillator.rb
@@ -61,13 +61,13 @@ end
# The differences with Tabelle 5.1 are from NMAX and dx.
# If we use NMAX=512 and dx=0.02, we obtain the same results (but much slower).
STDERR.puts(" Eigen values:")
-STDERR.printf(" %2s Exact %5s %10s | %2s Exact %5s %10s\n",
+STDERR.printf(" %2s Exact %5s %10s | %2s Exact %5s %10s\n",
"n", "E", "err\(\%\)", "n", "E", "err\(\%\)")
STDERR.print(" -----------------------------------------------------\n")
for n1 in 0..6 do
exact1 = n1 + 0.5
exact2 = n1 + 7 + 0.5
- STDERR.printf(" %2d %4.1f %8.5f %+7.5f | %2d %4.1f %8.5f %+7.5f\n",
+ STDERR.printf(" %2d %4.1f %8.5f %+7.5f | %2d %4.1f %8.5f %+7.5f\n",
n1, exact1, eval[n1], (exact1 - eval[n1])/exact1*100,
n1+7, exact2, eval[n1+7], (exact2-eval[n1+7])/exact2*100)
end
@@ -75,7 +75,7 @@ STDERR.flush
# Eigen vectors of n = 0, 1, 2, 10. See p217 "Abb 5.3"
c = Math::sqrt(1.0/dx)
-vec0 = evec.col(0).scale(c)
+vec0 = evec.col(0).scale(c)
vec1 = evec.col(1).scale(c)
vec2 = evec.col(2).scale(c)
vec10 = evec.col(10).scale(c)
diff --git a/examples/fft/radix2.rb b/examples/fft/radix2.rb
index c07a5d1..6bd5f47 100755
--- a/examples/fft/radix2.rb
+++ b/examples/fft/radix2.rb
@@ -1,5 +1,5 @@
#!/usr/bin/env ruby
-require("gsl")
+require("gsl")
n = 128
data = GSL::Vector::Complex.alloc(n)
diff --git a/examples/fft/real-halfcomplex.rb b/examples/fft/real-halfcomplex.rb
index cbf6a2f..609ada7 100755
--- a/examples/fft/real-halfcomplex.rb
+++ b/examples/fft/real-halfcomplex.rb
@@ -11,7 +11,7 @@ end
rtable = GSL::FFT::RealWavetable.alloc(n)
rwork = GSL::FFT::RealWorkspace.alloc(n)
-
+
#ffted = data.real_transform(rtable, rwork)
#ffted = data.real_transform(rtable)
#ffted = data.real_transform(rwork)
@@ -22,9 +22,9 @@ ffted = data.real_transform()
for i in 11...n do
ffted[i] = 0.0
end
-
+
hctable = GSL::FFT::HalfComplexWavetable.alloc(n)
-
+
#data2 = ffted.halfcomplex_inverse(hctable, rwork)
#data2 = ffted.halfcomplex_inverse()
#data2 = ffted.ifft
diff --git a/examples/fft/real-halfcomplex2.rb b/examples/fft/real-halfcomplex2.rb
index 8162c53..4069137 100755
--- a/examples/fft/real-halfcomplex2.rb
+++ b/examples/fft/real-halfcomplex2.rb
@@ -12,15 +12,15 @@ org = data.clone
rtable = GSL::FFT::RealWavetable.alloc(n)
rwork = GSL::FFT::RealWorkspace.alloc(n)
-
+
data.real_transform!(rtable, rwork)
for i in 11...n do
data[i] = 0.0
end
-
+
hctable = GSL::FFT::HalfComplexWavetable.alloc(n)
-
+
#data.halfcomplex_inverse!(hctable, rwork)
#data.halfcomplex_inverse!()
#data.ifft!
diff --git a/examples/fit/expfit.rb b/examples/fit/expfit.rb
index 658a180..c31d280 100755
--- a/examples/fit/expfit.rb
+++ b/examples/fit/expfit.rb
@@ -22,7 +22,7 @@ p err
GSL::graph(x, y, y0+amp*GSL::Sf::exp(-b*x))
# This will result in
-# [ 1.019e+00 5.045e+00 1.040e-01 ]
+# [ 1.019e+00 5.045e+00 1.040e-01 ]
# [ 3.385e-02 5.395e-02 2.826e-03 ]
# GNUPLOT results:
diff --git a/examples/fit/multifit.rb b/examples/fit/multifit.rb
index 213e731..44b6da4 100755
--- a/examples/fit/multifit.rb
+++ b/examples/fit/multifit.rb
@@ -2,7 +2,7 @@
require("gsl")
GSL::Rng.env_setup()
-
+
r = GSL::Rng.alloc(GSL::Rng::DEFAULT)
n = 19
diff --git a/examples/fit/ndlinear.rb b/examples/fit/ndlinear.rb
index 610cd4d..ad710d8 100755
--- a/examples/fit/ndlinear.rb
+++ b/examples/fit/ndlinear.rb
@@ -2,8 +2,8 @@
require("gsl")
unless GSL::MultiFit.const_defined?("Ndlinear")
- puts("The extension library NDLINEAR is not installed.")
- exit()
+ puts("The extension library NDLINEAR is not installed.")
+ exit()
end
N_DIM = 3
@@ -13,33 +13,33 @@ N_SUM_PHI = 9
R_MAX = 3.0
def psi_real_exact(k, l, m, r, theta, phi)
- rr = GSL::pow(r, l)*Math::exp(-r*r)*GSL::Sf::laguerre_n(k, l + 0.5, 2 * r * r)
+ rr = GSL::pow(r, l)*Math::exp(-r*r)*GSL::Sf::laguerre_n(k, l + 0.5, 2 * r * r)
- tt = GSL::Sf::legendre_sphPlm(l, m, Math::cos(theta))
+ tt = GSL::Sf::legendre_sphPlm(l, m, Math::cos(theta))
- pp = Math::cos(m*phi)
+ pp = Math::cos(m*phi)
- rr*tt*pp
+ rr*tt*pp
end
basis_r = Proc.new { |r, y, params|
- params.eval(r, y)
+ params.eval(r, y)
}
basis_theta = Proc.new { |theta, y, params|
- for i in 0...N_SUM_THETA do
- y[i] = GSL::Sf::legendre_Pl(i, Math::cos(theta));
- end
+ for i in 0...N_SUM_THETA do
+ y[i] = GSL::Sf::legendre_Pl(i, Math::cos(theta));
+ end
}
basis_phi = Proc.new { |phi, y, params|
- for i in 0...N_SUM_PHI do
- if i%2 == 0
- y[i] = Math::cos(i*0.5*phi)
- else
- y[i] = Math::sin((i+1.0)*0.5*phi)
- end
- end
+ for i in 0...N_SUM_PHI do
+ if i%2 == 0
+ y[i] = Math::cos(i*0.5*phi)
+ else
+ y[i] = Math::sin((i+1.0)*0.5*phi)
+ end
+ end
}
@@ -67,19 +67,19 @@ data = GSL::Vector.alloc(NDATA)
for i in 0...NDATA do
- r = rng.uniform()*R_MAX
- theta = rng.uniform()*Math::PI
- phi = rng.uniform()*2*Math::PI
+ r = rng.uniform()*R_MAX
+ theta = rng.uniform()*Math::PI
+ phi = rng.uniform()*2*Math::PI
- psi = psi_real_exact(k, l, m, r, theta, phi)
+ psi = psi_real_exact(k, l, m, r, theta, phi)
- dpsi = rng.gaussian(0.05*psi)
+ dpsi = rng.gaussian(0.05*psi)
- vars[i,0] = r
- vars[i,1] = theta
- vars[i,2] = phi
+ vars[i,0] = r
+ vars[i,1] = theta
+ vars[i,2] = phi
- data[i] = psi + dpsi
+ data[i] = psi + dpsi
end
#GSL::MultiFit::Ndlinear::design(vars, X, ndlinear)
@@ -99,18 +99,18 @@ x = GSL::Vector.alloc(N_DIM)
r = 0.01
while r < R_MAX do
- theta = 0.0
- while theta < Math::PI do
- phi = 0.0
- while phi < 2*Math::PI do
- dV = r*r*Math::sin(theta)*dr*dtheta*dphi
- x[0] = r
- x[1] = theta
- x[2] = phi
-
- psi_model, err = GSL::MultiFit::Ndlinear.calc(x, coeffs, cov, ndlinear)
- psi = psi_real_exact(k, l, m, r, theta, phi)
- err = psi_model - psi
+ theta = 0.0
+ while theta < Math::PI do
+ phi = 0.0
+ while phi < 2*Math::PI do
+ dV = r*r*Math::sin(theta)*dr*dtheta*dphi
+ x[0] = r
+ x[1] = theta
+ x[2] = phi
+
+ psi_model, err = GSL::MultiFit::Ndlinear.calc(x, coeffs, cov, ndlinear)
+ psi = psi_real_exact(k, l, m, r, theta, phi)
+ err = psi_model - psi
eps_rms += err * err * dV;
volume += dV;
@@ -118,13 +118,13 @@ while r < R_MAX do
printf("%e %e %e %e\n", r, theta, psi, psi_model)
end
- phi += dphi
- end
- theta += dtheta
- end
- printf("\n");
+ phi += dphi
+ end
+ theta += dtheta
+ end
+ printf("\n");
- r += dr
+ r += dr
end
eps_rms /= volume
diff --git a/examples/fit/nonlinearfit.rb b/examples/fit/nonlinearfit.rb
index 63e9816..cf26446 100755
--- a/examples/fit/nonlinearfit.rb
+++ b/examples/fit/nonlinearfit.rb
@@ -5,7 +5,7 @@ FFF = GSL::Function.alloc { |t, params|
a = params[0]; lambda = params[1]; b = params[2]
a*Math::exp(-lambda*t) + b
}
-
+
procf = Proc.new { |x, t, y, sigma, f|
a = x[0]; lambda = x[1]; b = x[2]
FFF.set_params(x)
diff --git a/examples/fit/wlinear.rb b/examples/fit/wlinear.rb
index 3cf2946..b335821 100755
--- a/examples/fit/wlinear.rb
+++ b/examples/fit/wlinear.rb
@@ -10,7 +10,7 @@ c0, c1, cov00, cov01, cov11, chisq = GSL::Fit::wlinear(x, w, y)
printf("# best fit: Y = %g + %g X\n", c0, c1);
printf("# covariance matrix:\n");
-printf("# [ %g, %g\n# %g, %g]\n",
+printf("# [ %g, %g\n# %g, %g]\n",
cov00, cov01, cov01, cov11);
printf("# chisq = %g\n", chisq);
@@ -26,9 +26,9 @@ begin
flo = File.open("lo.dat", "w")
for i in -30...130 do
xf = x[0] + (i/100.0) * (x[n-1] - x[0])
-
+
yf, yf_err = GSL::Fit::linear_est(xf, c0, c1, cov00, cov01, cov11)
-
+
ffit.printf("%g %g\n", xf, yf)
fhi.printf("%g %g\n", xf, yf + yf_err)
flo.printf("%g %g\n", xf, yf - yf_err)
diff --git a/examples/function/function.rb b/examples/function/function.rb
index fcaf680..2d4790a 100755
--- a/examples/function/function.rb
+++ b/examples/function/function.rb
@@ -2,7 +2,7 @@
require("gsl")
include Math
-f = GSL::Function::alloc{ |x, params|
+f = GSL::Function::alloc{ |x, params|
a = params[0]
b = params[1]
c = params[2]
diff --git a/examples/function/min.rb b/examples/function/min.rb
index 8c72d23..8186e18 100755
--- a/examples/function/min.rb
+++ b/examples/function/min.rb
@@ -14,7 +14,7 @@ gmf.set(humps, m, a, b)
printf("Using %s method\n", gmf.name)
printf("%5s [%9s, %9s] %9s %10s %9s\n", "iter", "lower", "upper", "min",
"err", "err(est)")
-printf("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n",
+printf("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n",
iter, a, b, m, m - m_expected, b - a)
begin
iter += 1
diff --git a/examples/function/synchrotron.rb b/examples/function/synchrotron.rb
index 1fbee8f..88a7673 100755
--- a/examples/function/synchrotron.rb
+++ b/examples/function/synchrotron.rb
@@ -5,8 +5,8 @@ require("gsl")
# Create Function object from the module function
F = GSL::Function.alloc { |x| GSL::Sf::synchrotron_1(x) }
# Derivative of the function
-DF = GSL::Function.alloc { |x|
- result, abserr, status = F.deriv_central(x, 1e-6)
+DF = GSL::Function.alloc { |x|
+ result, abserr, status = F.deriv_central(x, 1e-6)
result
}
# Find zero-point of the derivative in interval (0.01, 5)
diff --git a/examples/gallery/koch.rb b/examples/gallery/koch.rb
index 9b871ae..c01a80f 100755
--- a/examples/gallery/koch.rb
+++ b/examples/gallery/koch.rb
@@ -15,7 +15,7 @@ def koch(x, y, theta, size, order, file)
x, y = koch(x, y, theta, size/3, order-1, file)
theta += Math::PI/3
x, y = koch(x, y, theta, size/3, order-1, file)
- theta -= 2.0*Math::PI/3
+ theta -= 2.0*Math::PI/3
x, y = koch(x, y, theta, size/3, order-1, file)
theta += Math::PI/3
x, y = koch(x, y, theta, size/3, order-1, file)
diff --git a/examples/histogram/cauchy.rb b/examples/histogram/cauchy.rb
index 13ed3a3..467bd19 100755
--- a/examples/histogram/cauchy.rb
+++ b/examples/histogram/cauchy.rb
@@ -1,6 +1,6 @@
#!/usr/bin/env ruby
# Usage from command line:
-# % gsl-randist 0 10000 cauchy 30 | ./hist1d.rb -100 100 200
+# % gsl-randist 0 10000 cauchy 30 | ./hist1d.rb -100 100 200
require("gsl")
@@ -24,4 +24,4 @@ end
h.graph("-C -g 3 -L 'gsl-randist 0 10000 cauchy 30'")
-
+
diff --git a/examples/histogram/exponential.rb b/examples/histogram/exponential.rb
index bff7899..94e8435 100755
--- a/examples/histogram/exponential.rb
+++ b/examples/histogram/exponential.rb
@@ -16,4 +16,4 @@ x = GSL::Vector.linspace(0, 15, 100)
y = a*GSL::Sf::exp(x*b)
GSL::graph(h, [x, y], "-C -g 3")
-
+
diff --git a/examples/histogram/histo3d.rb b/examples/histogram/histo3d.rb
index f30c3be..165d286 100755
--- a/examples/histogram/histo3d.rb
+++ b/examples/histogram/histo3d.rb
@@ -5,7 +5,7 @@ N = 5000
BINS = 50
rng = GSL::Rng.alloc(1)
-h = GSL::Histogram3d.alloc(BINS, [-5, 5], BINS, [-4, 8], BINS, [-8, 3])
+h = GSL::Histogram3d.alloc(BINS, [-5, 5], BINS, [-4, 8], BINS, [-8, 3])
sig1 = 1
sig2 = 2
sig3 = 1.3
diff --git a/examples/histogram/histogram-pdf.rb b/examples/histogram/histogram-pdf.rb
index 655ddef..6ef9803 100755
--- a/examples/histogram/histogram-pdf.rb
+++ b/examples/histogram/histogram-pdf.rb
@@ -16,8 +16,8 @@ rng2 = GSL::Rng.alloc()
h2 = GSL::Histogram.alloc(NBINS, [-MAX, MAX])
NDATA2 = 10000
for i in 0...NDATA2 do
- val = hpdf.sample(rng2.uniform())
- h2.fill(val)
+ val = hpdf.sample(rng2.uniform())
+ h2.fill(val)
end
GSL::graph(h, h2)
diff --git a/examples/histogram/xexp.rb b/examples/histogram/xexp.rb
index 6ce508c..4ed75b5 100755
--- a/examples/histogram/xexp.rb
+++ b/examples/histogram/xexp.rb
@@ -18,4 +18,4 @@ x = GSL::Vector.linspace(0, 15, 100)
y = amp*x*GSL::Sf::exp(-x*b)
GSL::graph(h, [x, y], "-C -g 3")
-
+
diff --git a/examples/integration/ahmed.rb b/examples/integration/ahmed.rb
index 1474c4f..625cf5b 100755
--- a/examples/integration/ahmed.rb
+++ b/examples/integration/ahmed.rb
@@ -6,7 +6,7 @@ require("gsl")
include GSL
include Math
-f = Function.alloc { |x|
+f = Function.alloc { |x|
sqrtx22 = sqrt(x*x + 2)
atan(sqrtx22)/(sqrtx22*(x*x + 1))
}
@@ -18,4 +18,4 @@ puts("Expect: 5pi^2/96 = #{5.0*M_PI*M_PI/96}")
puts("QNG result: #{val}")
-
+
diff --git a/examples/integration/cosmology.rb b/examples/integration/cosmology.rb
index fc24e45..11a3352 100755
--- a/examples/integration/cosmology.rb
+++ b/examples/integration/cosmology.rb
@@ -18,18 +18,18 @@ module Cosmology
1.0/sqrt(k*z12 + lambda + matter*z12*zplus1 + radiation*z12*z12)
}
WSpace = GSL::Integration::Workspace.alloc(1000)
-
+
class Universe
H2H0 = 3.24e-18
G = GRAVITATIONAL_CONSTANT
RAD_DENSITY = 8.0*pow_5(PI)*pow_4(BOLTZMANN)/15.0/pow_3(PLANCKS_CONSTANT_H*SPEED_OF_LIGHT)
# p SPEED_OF_LIGHT/(0.71*100*1e5*1e3)*13
-
+
def initialize(matter = 0.3, lambda = 0.7, cmbT = 2.7, h = 0.7)
# Hubble parameter at present
@h = h
@H0 = H2H0*h
-
+
# Density parameters
@matter = matter
@lambda = lambda
@@ -39,12 +39,12 @@ module Cosmology
@k = 1.0 - @Omega
@q = @matter/2.0 + @radiation - @lambda # Decceleration parameter
end
-
+
def comoving_distance(z)
InvHz.set_params(self)
InvHz.integration_qags([0.0, z], WSpace)[0]
end
-
+
# r: comoving distance
def conformal_factor(r)
tmp = sqrt(@k)
@@ -56,13 +56,13 @@ module Cosmology
r
end
end
-
+
def luminosity_distance(z)
r = self.comoving_distance(z)
s = self.conformal_factor(r)
[r, (1.0 + z)*s] # comoving distance, luminosity distance
end
-
+
attr_reader :h
attr_reader :H0
attr_reader :matter
diff --git a/examples/integration/friedmann.rb b/examples/integration/friedmann.rb
index c0ec395..9ff1527 100755
--- a/examples/integration/friedmann.rb
+++ b/examples/integration/friedmann.rb
@@ -18,10 +18,10 @@ begin
z = 0.01
while z <= 3
# comoving distance, luminosity distance
- chi10, ldist10 = u10.luminosity_distance(z)
- chi37, ldist37 = u37.luminosity_distance(z)
- chi01, ldist01 = u01.luminosity_distance(z)
- file.printf("%e %e %e %e %e %e %e\n",
+ chi10, ldist10 = u10.luminosity_distance(z)
+ chi37, ldist37 = u37.luminosity_distance(z)
+ chi01, ldist01 = u01.luminosity_distance(z)
+ file.printf("%e %e %e %e %e %e %e\n",
z, chi10, ldist10, chi37, ldist37, chi01, ldist01)
z += 0.1
end
diff --git a/examples/integration/qng.rb b/examples/integration/qng.rb
index 93fe4e5..553ac80 100755
--- a/examples/integration/qng.rb
+++ b/examples/integration/qng.rb
@@ -6,7 +6,7 @@ include Math
f = Function.alloc { |x| Math::sin(x)/x }
p f.qng(0, 2.0*Math::PI)
-
+
# Singular at x = 0
f2 = Function.alloc { |x| exp(-x)/sqrt(x) }
diff --git a/examples/interp/demo.rb b/examples/interp/demo.rb
index 0167c3d..f4c3a1b 100755
--- a/examples/interp/demo.rb
+++ b/examples/interp/demo.rb
@@ -27,9 +27,9 @@ def spline_compare(type, xa, ya, filename)
end
end
-types = ["linear", "polynomial", "cspline", "cspline_periodic",
+types = ["linear", "polynomial", "cspline", "cspline_periodic",
"akima", "akima_periodic"]
-
+
types.each do |t|
filename = t + ".dat"
spline_compare(t, xa, ya, filename)
diff --git a/examples/linalg/LQ_solve.rb b/examples/linalg/LQ_solve.rb
index 3ab3e1b..7ebffad 100755
--- a/examples/linalg/LQ_solve.rb
+++ b/examples/linalg/LQ_solve.rb
@@ -3,7 +3,7 @@ require("gsl")
include GSL
m = GSL::Matrix::alloc([0.18, 0.60, 0.57, 0.96], [0.41, 0.24, 0.99, 0.58],
- [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85])
+ [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85])
m.transpose!
lq, tau = m.LQ_decomp
diff --git a/examples/linalg/LU.rb b/examples/linalg/LU.rb
index 08df546..67d4069 100755
--- a/examples/linalg/LU.rb
+++ b/examples/linalg/LU.rb
@@ -4,7 +4,7 @@ include GSL
include Linalg
m = Matrix::alloc([0.18, 0.60, 0.57, 0.96], [0.41, 0.24, 0.99, 0.58],
- [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85])
+ [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85])
m.print
lu, perm = m.LU_decomp
diff --git a/examples/linalg/LU2.rb b/examples/linalg/LU2.rb
index 3998a70..df946b7 100755
--- a/examples/linalg/LU2.rb
+++ b/examples/linalg/LU2.rb
@@ -4,7 +4,7 @@ include GSL
include Linalg
m = Matrix::alloc([0.18, 0.60, 0.57, 0.96], [0.41, 0.24, 0.99, 0.58],
- [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85])
+ [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85])
m.print
lu, perm = m.LU_decomp
diff --git a/examples/linalg/LU_narray.rb b/examples/linalg/LU_narray.rb
index 0626569..058d497 100755
--- a/examples/linalg/LU_narray.rb
+++ b/examples/linalg/LU_narray.rb
@@ -4,7 +4,7 @@ include GSL
include Linalg
m = NArray[[0.18, 0.60, 0.57, 0.96], [0.41, 0.24, 0.99, 0.58],
- [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85]]
+ [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85]]
b = NArray[1.0, 2, 3, 4]
lu, perm, signum = LU.decomp(m)
diff --git a/examples/linalg/PTLQ.rb b/examples/linalg/PTLQ.rb
index 6739ad1..da8dc72 100755
--- a/examples/linalg/PTLQ.rb
+++ b/examples/linalg/PTLQ.rb
@@ -3,7 +3,7 @@ require("gsl")
include GSL
m = Matrix::alloc([0.18, 0.60, 0.57, 0.96], [0.41, 0.24, 0.99, 0.58],
- [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85])
+ [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85])
m.transpose!
lq, tau = m.PTLQ_decomp
p lq.class
diff --git a/examples/linalg/QRPT.rb b/examples/linalg/QRPT.rb
index a357b01..6c5ca63 100755
--- a/examples/linalg/QRPT.rb
+++ b/examples/linalg/QRPT.rb
@@ -4,7 +4,7 @@ include GSL
m = Matrix::alloc([0.18, 0.60, 0.57, 0.96], [0.41, 0.24, 0.99, 0.58],
- [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85])
+ [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85])
qr, tau = m.QRPT_decomp
p qr.class
p tau.class
diff --git a/examples/linalg/chol.rb b/examples/linalg/chol.rb
index 9352fd1..faf450a 100755
--- a/examples/linalg/chol.rb
+++ b/examples/linalg/chol.rb
@@ -14,7 +14,7 @@ p Cholesky.solve(c, b) # Expected [-0.125, 0.75]
begin
m = Matrix::alloc([0.18, 0.60, 0.57, 0.96], [0.41, 0.24, 0.99, 0.58],
[0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85])
-
+
c = Cholesky.decomp(m)
b = [1, 2, 3, 4].to_gv
p Cholesky.solve(c, b)
diff --git a/examples/linalg/chol_narray.rb b/examples/linalg/chol_narray.rb
index 9d9be86..4433923 100755
--- a/examples/linalg/chol_narray.rb
+++ b/examples/linalg/chol_narray.rb
@@ -11,5 +11,5 @@ b = NArray[1.0, 2]
p Cholesky.solve(c, b) # Expected [-0.125, 0.75]
b = NArray[1.0, 2]
-Cholesky.svx(c, b)
+Cholesky.svx(c, b)
p b
diff --git a/examples/linalg/complex.rb b/examples/linalg/complex.rb
index 757ea08..18155f9 100755
--- a/examples/linalg/complex.rb
+++ b/examples/linalg/complex.rb
@@ -4,7 +4,7 @@ include GSL
include Linalg
m = Matrix::alloc([0.18, 0.60, 0.57, 0.96], [0.41, 0.24, 0.99, 0.58],
- [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85])
+ [0.14, 0.30, 0.97, 0.66], [0.51, 0.13, 0.19, 0.85])
m.inv.print
p m.det
diff --git a/examples/math/elementary.rb b/examples/math/elementary.rb
index d1ad506..f7b3a9b 100755
--- a/examples/math/elementary.rb
+++ b/examples/math/elementary.rb
@@ -1,5 +1,5 @@
#!/usr/bin/env ruby
-require("gsl")
+require("gsl")
puts("gsl_log1p")
p GSL::log1p(0.1)
diff --git a/examples/math/functions.rb b/examples/math/functions.rb
index 3aefc5c..641c481 100755
--- a/examples/math/functions.rb
+++ b/examples/math/functions.rb
@@ -1,5 +1,5 @@
#!/usr/bin/env ruby
-require("gsl")
+require("gsl")
puts("gsl_log1p")
p GSL::log1p(0.1)
diff --git a/examples/math/inf_nan.rb b/examples/math/inf_nan.rb
index 83e266d..91d07d0 100755
--- a/examples/math/inf_nan.rb
+++ b/examples/math/inf_nan.rb
@@ -1,5 +1,5 @@
#!/usr/bin/env ruby
-require("gsl")
+require("gsl")
include GSL
puts("GSL_POSINF")
diff --git a/examples/math/minmax.rb b/examples/math/minmax.rb
index a81bbbe..b543d57 100755
--- a/examples/math/minmax.rb
+++ b/examples/math/minmax.rb
@@ -1,5 +1,5 @@
#!/usr/bin/env ruby
-require("gsl")
+require("gsl")
p GSL::MAX(1, 2)
p GSL::MAX(1, 2.0)
diff --git a/examples/math/power.rb b/examples/math/power.rb
index c77657d..a0f6ecb 100755
--- a/examples/math/power.rb
+++ b/examples/math/power.rb
@@ -1,5 +1,5 @@
#!/usr/bin/env ruby
-require("gsl")
+require("gsl")
p GSL::pow_int(8, 3)
p 8*8*8.0
diff --git a/examples/math/test.rb b/examples/math/test.rb
index aa3ed52..86de861 100755
--- a/examples/math/test.rb
+++ b/examples/math/test.rb
@@ -1,5 +1,5 @@
#!/usr/bin/env ruby
-require("gsl")
+require("gsl")
puts("sign of 5.0")
p GSL::SIGN(5.0)
diff --git a/examples/min.rb b/examples/min.rb
index bd7ea18..9875b36 100755
--- a/examples/min.rb
+++ b/examples/min.rb
@@ -10,7 +10,7 @@ gmf.set(fn1, m, a, b)
printf("Using %s method\n", gmf.name)
printf("%5s [%9s, %9s] %9s %10s %9s\n", "iter", "lower", "upper", "min",
"err", "err(est)")
-printf("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n",
+printf("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n",
iter, a, b, m, m - m_expected, b - a)
begin
iter += 1
diff --git a/examples/multimin/bundle.rb b/examples/multimin/bundle.rb
index 9f542e0..b0264b5 100755
--- a/examples/multimin/bundle.rb
+++ b/examples/multimin/bundle.rb
@@ -53,7 +53,7 @@ begin
iter += 1
status = s.iterate
status = s.test_convergence(1e-5)
- printf("%4d %14.7f %13.8e %13.8e\n", iter, s.f, subgradient.dnrm2, s.eps)
+ printf("%4d %14.7f %13.8e %13.8e\n", iter, s.f, subgradient.dnrm2, s.eps)
if status == GSL::SUCCESS
printf("\nMinimum is found at\n")
x = s.x
diff --git a/examples/multimin/cqp.rb b/examples/multimin/cqp.rb
index ed4b9c3..e75c519 100755
--- a/examples/multimin/cqp.rb
+++ b/examples/multimin/cqp.rb
@@ -11,9 +11,9 @@ module GSL::CQP
cqp_data.b = GSL::Vector.alloc(1); cqp_data.b[0] = 1.5
cqp_data.C = GSL::Matrix[[1, 0, 0, 1], 2, 2]
cqp_data.d = GSL::Vector.calloc(2)
-
+
Test_Problem.new("Goulds's problem", 2, 1, 2, cqp_data, 0.0)
- end
+ end
def Test_Problem.betts()
cqp_data = GSL::CQP::Data.alloc()
cqp_data.Q = GSL::Matrix[[0.02, 0, 0, 2], 2, 2]
@@ -22,10 +22,10 @@ module GSL::CQP
cqp_data.b = GSL::Vector.alloc(1); cqp_data.b[0] = 20
cqp_data.C = GSL::Matrix.calloc(4, 2)
cqp_data.C[0,0] = 1.0; cqp_data.C[1,1] = 1.0
- cqp_data.C[2,0] = -1.0; cqp_data.C[3,1] = -11.0
+ cqp_data.C[2,0] = -1.0; cqp_data.C[3,1] = -11.0
cqp_data.d = GSL::Vector[2.0, -50, -50, -50]
-
-
+
+
Test_Problem.new("Betts's problem", 2, 1, 4, cqp_data, 0.04)
end
def Test_Problem.beale()
@@ -36,12 +36,12 @@ module GSL::CQP
cqp_data.b = GSL::Vector.alloc(1); cqp_data.b[0] = -3.0
cqp_data.C = GSL::Matrix.eye(3, 3)
cqp_data.d = GSL::Vector.calloc(3)
-
+
cqp_data.Q[0,0] = 4.0; cqp_data.Q[0,1] = 2.0
- cqp_data.Q[1,0] = 2.0; cqp_data.Q[1,1] = 4.0
- cqp_data.Q[2,0] = 2.0; cqp_data.Q[2,2] = 2.0
+ cqp_data.Q[1,0] = 2.0; cqp_data.Q[1,1] = 4.0
+ cqp_data.Q[2,0] = 2.0; cqp_data.Q[2,2] = 2.0
Test_Problem.new("Beale's problem", 3, 1, 3, cqp_data, 9.0+1.0/9.0)
- end
+ end
def initialize(name, n, me, mi, cqp, opt_value)
@name = name
@@ -51,7 +51,7 @@ module GSL::CQP
@cqp = cqp
@opt_value = opt_value
end
-
+
def solve()
max_iter = 1000
iter = 1
@@ -61,7 +61,7 @@ module GSL::CQP
printf("******************** %s ********************\n\n", @name)
printf("== Itn ======= f ======== ||gap|| ==== ||residual||\n\n")
-
+
begin
status = s.iterate
status = s.test_convergence(1e-10, 1e-10)
@@ -70,7 +70,7 @@ module GSL::CQP
printf("\nMinimum is found at\n");
x = s.x
lm_eq = s.lm_eq
- lm_ineq = s.lm_ineq
+ lm_ineq = s.lm_ineq
for j in 0...x.size do
printf("%9.6f ", x[j])
end
@@ -79,21 +79,21 @@ module GSL::CQP
for j in 0...lm_eq.size do
printf("%9.6f ", lm_eq[j])
end
- printf("\n\n")
+ printf("\n\n")
printf("\nLagrange-multipliers for Cx>=d\n");
for j in 0...lm_ineq.size do
printf("%9.6f ", lm_ineq[j])
end
- printf("\n\n")
+ printf("\n\n")
else
iter += 1
end
- end while status == GSL::CONTINUE and iter <= max_iter
- GSL::SUCCESS
+ end while status == GSL::CONTINUE and iter <= max_iter
+ GSL::SUCCESS
end
attr_accessor :name, :n, :me, :mi
- attr_accessor :cqp, :opt_value
+ attr_accessor :cqp, :opt_value
end
end
diff --git a/examples/multiroot/fsolver3.rb b/examples/multiroot/fsolver3.rb
index 805f26e..12b2f2a 100755
--- a/examples/multiroot/fsolver3.rb
+++ b/examples/multiroot/fsolver3.rb
@@ -9,7 +9,7 @@ func = GSL::MultiRoot::Function.alloc(2) { |x, f|
f[0] = -2.0*x0*x0 + 3.0*x0*x1 + 4.0*sin(x1) - 6.0
f[1] = 3.0*x0*x0 - 2.0*x0*x1*x1 + 3.0*cos(x0) + 4.0
}
-
+
p func.solve([1.0, 2.0].to_gv, 1000, 1e-7, "hybrids")
p func.solve([1.0, 2.0].to_gv, 1000, "broyden")
p func.solve([1.0, 2.0], "hybrid")
diff --git a/examples/odeiv/binarysystem.rb b/examples/odeiv/binarysystem.rb
index 76898fa..754a8fd 100755
--- a/examples/odeiv/binarysystem.rb
+++ b/examples/odeiv/binarysystem.rb
@@ -2,13 +2,13 @@
# 19/Apr/2004 by Yoshiki Tsunesada
#
# This is an example to calculate the orbital evolution of
-# a double neutron star (binary) system. General relativity predicts
-# that the binary orbital decays by radiating gravitational waves,
-# and the two stars will coalesce in time scale of 100-1000 Mega-years.
-# The values used here are of the binary system J0730-3039 discovered
-# in 2003 (Burgay et al., Nature 2003). The result shows that the two
-# neutron stars will merge after about 85 Mega-years. From the age of
-# the system 100 Mega-year, the lifetime of the system is estimated
+# a double neutron star (binary) system. General relativity predicts
+# that the binary orbital decays by radiating gravitational waves,
+# and the two stars will coalesce in time scale of 100-1000 Mega-years.
+# The values used here are of the binary system J0730-3039 discovered
+# in 2003 (Burgay et al., Nature 2003). The result shows that the two
+# neutron stars will merge after about 85 Mega-years. From the age of
+# the system 100 Mega-year, the lifetime of the system is estimated
# about 185 Mega-years.
#
# References:
@@ -16,7 +16,7 @@
# 2. Shapiro & Teukolsky, "Black holes, white dwarfs and neutron stars"
# John Wiley and Sans (1983)
#
-
+
require("gsl")
include Math
@@ -33,7 +33,7 @@ GMsolarC3 = 4.925490947e-6
MegaYear = 3600*24*365*1e6
# Time evolution of the binary orbital period and the eccentricity
-# due to gravitational radiation.
+# due to gravitational radiation.
# The calculation is based on general relativity (See e.g. Ref.2).
# y[0]: orbital period (pb)
# y[1]: eccentricity (e)
@@ -45,7 +45,7 @@ deriv = Proc.new { |t, y, dydt, binary|
e = y[1] # eccentricity
m1 = binary.m1 # neutron star masses
m2 = binary.m2
- totalM = m1 + m2 # total mass
+ totalM = m1 + m2 # total mass
mu = m1*m2/totalM # reduced mass
mm = mu*GSL::pow(totalM, 2.0/3.0)
f_e = GSL::pow(1.0 - e*e, -3.5)*(1.0 + (73.0/24.0 + 37.0/96.0*e*e)*e*e);
@@ -85,8 +85,8 @@ tend = 2500*MegaYear
h = 1.0*MegaYear
begin
- file = File.open("binarysystem.dat", "w")
- while t < tend
+ file = File.open("binarysystem.dat", "w")
+ while t < tend
t, h, status = solver.apply(t, tend, h, y)
break if status != GSL::SUCCESS
break if GSL::isnan?(y[0])
diff --git a/examples/odeiv/demo.rb b/examples/odeiv/demo.rb
index 2bad6b6..2d51f0d 100755
--- a/examples/odeiv/demo.rb
+++ b/examples/odeiv/demo.rb
@@ -1,5 +1,5 @@
#!/usr/bin/env ruby
-# Solve
+# Solve
# dydt = -2y ---> y(t) = exp(-2t)
require("gsl")
@@ -40,11 +40,11 @@ def odeiv_compare_algorithm(solver, steptype, t0, tend, h0, y0, outfile)
end
if GSL::VERSION >= "1.5.90"
- ALGORITHMS = ["rk2", "rk4", "rkf45", "rkck", "rk8pd", "rk2imp", "rk4imp",
+ ALGORITHMS = ["rk2", "rk4", "rkf45", "rkck", "rk8pd", "rk2imp", "rk4imp",
"bsimp", "gear1", "gear2", "rk2simp"]
gpfile = "demo2.gp"
else
- ALGORITHMS = ["rk2", "rk4", "rkf45", "rkck", "rk8pd", "rk2imp", "rk4imp",
+ ALGORITHMS = ["rk2", "rk4", "rkf45", "rkck", "rk8pd", "rk2imp", "rk4imp",
"bsimp", "gear1", "gear2"]
gpfile = "demo.gp"
end
diff --git a/examples/odeiv/frei1.rb b/examples/odeiv/frei1.rb
index 40b54c8..5c2ae7f 100755
--- a/examples/odeiv/frei1.rb
+++ b/examples/odeiv/frei1.rb
@@ -1,13 +1,13 @@
#!/usr/bin/env ruby
# Solve Schroedinger equation
#
-# This example is taken from frei1.cpp
+# This example is taken from frei1.cpp
# in "Numerische Physik" p201-204 (Springer),
# which simulates the time evolution of a probability density.
#
# Name: frei1.cpp
-# Zweck: Simuliert ein quantenmechanisches freies Teilchen
-# Gleichung: Schroedingergleichung ohne Potential verwendete
+# Zweck: Simuliert ein quantenmechanisches freies Teilchen
+# Gleichung: Schroedingergleichung ohne Potential verwendete
# Bibiliothek: GSL
#
# Reference:
@@ -20,7 +20,7 @@ require("gsl")
#NMAX = 8192
NMAX = 256
-# The wave equation:
+# The wave equation:
# calculate time derivative of the wave function.
# The second spatial derivative is approximated by
# d2_psi/dx2 ~ (psi[n+1] - 2*psi[n] + pxi[n-1])/(dx*dx)
@@ -68,7 +68,7 @@ sum = 0.0
for n in 0...NMAX do
x = (n-NMAX/2) * $dx
psi[n] = Math::exp(-GSL::pow_2(x/alpha)/2)
- sum += GSL::pow_2(psi[n])
+ sum += GSL::pow_2(psi[n])
end
sum = 1.0/Math::sqrt(sum)
@@ -89,12 +89,12 @@ IO.popen("graph -T X -C -g 3", "w") do |io|
c = GSL::Odeiv::Control.y_new(atol, rtol)
evolve = GSL::Odeiv::Evolve.alloc(2*NMAX)
sys = GSL::Odeiv::System.alloc(f, 2*NMAX)
-
+
t = 0.0
for n in 1..n_out do
t1 = n*dt
STDOUT.printf("t = %2.1f (%2d/%2d)\n", t1-dt, n, n_out)
- while t < t1
+ while t < t1
t, h, status = evolve.apply(c, step, sys, t, t1, h, psi)
break if status != GSL::SUCCESS
end
diff --git a/examples/odeiv/frei2.rb b/examples/odeiv/frei2.rb
index 4f2e396..c119cf8 100755
--- a/examples/odeiv/frei2.rb
+++ b/examples/odeiv/frei2.rb
@@ -1,5 +1,5 @@
#!/usr/bin/env ruby
-# This example is taken from frei2.cpp
+# This example is taken from frei2.cpp
# in "Numerische Physik" p205-206 (Springer).
#
# Reference:
@@ -45,10 +45,10 @@ IO.popen("graph -T X -C -g 3", "w") do |io|
io.printf("%e %e\n", x, psi[n1].abs)
end
io.printf("\n")
-
+
psi_p.radix2_forward!
-
-
+
+
t = 0.0
for n in 1..n_out do
t1 = n*dt
diff --git a/examples/odeiv/oscillator.rb b/examples/odeiv/oscillator.rb
index 8129ec2..46e75b3 100755
--- a/examples/odeiv/oscillator.rb
+++ b/examples/odeiv/oscillator.rb
@@ -5,7 +5,7 @@
# b: resist
# f: external force
-require("gsl")
+require("gsl")
dim = 2
diff --git a/examples/odeiv/sedov.rb b/examples/odeiv/sedov.rb
index 707fb07..3fde9c6 100755
--- a/examples/odeiv/sedov.rb
+++ b/examples/odeiv/sedov.rb
@@ -18,16 +18,16 @@ include Math
Sedov = Proc.new { |logx, y, dydlogx, sh|
a = -5.0*(6.0*y[2] - 15.0*y[2]*y[0]*sh + 2.0*y[0]*y[1] - 7.0*y[0]*y[0]*y[1] + 5.0*GSL::pow_3(y[0])*y[1])
b = -25.0*y[2]*sh + 4.0*y[1] - 20.0*y[0]*y[1] + 25.0*y[0]*y[0]*y[1]
- dydlogx[0] = a/b
+ dydlogx[0] = a/b
bb = -5.0*(6.0*y[2] - 15.0*y[2]*y[0]*sh + 2.0*y[0]*y[1] - 7.0*y[0]*y[0]*y[1])
a = -5.0*(-30.0*y[2]*y[1] + 2.0*y[0]*y[1]*y[1] - 25.0*GSL::pow_2(y[0]*y[1]) + 50.0*GSL::pow_3(y[0])*GSL::pow_2(y[1]))
bb = (-2.0 + 5.0*y[0])*(-25.0*y[2]*sh + 4.0*y[1] - 20.0*y[0]*y[1] + 25.0*y[0]*y[0]*y[1])
- dydlogx[1] = a/bb
+ dydlogx[1] = a/bb
a = -5.0*y[2]*(-10.0*y[2]*sh + 4.0*y[1] - 14.0*y[0]*y[1] + 10.0*y[0]*y[0]*y[1] - y[0]*sh*y[1] + 10.0*y[0]*y[0]*sh*y[1])
- dydlogx[2] = a/b
+ dydlogx[2] = a/b
}
DIM = 3
diff --git a/examples/odeiv/whitedwarf.rb b/examples/odeiv/whitedwarf.rb
index a94da40..19987ea 100755
--- a/examples/odeiv/whitedwarf.rb
+++ b/examples/odeiv/whitedwarf.rb
@@ -15,8 +15,8 @@ module Degenerate
hbar = PLANCKS_CONSTANT_HBAR # Planck's constant
me = MASS_ELECTRON # Electron mass
mn = MASS_NEUTRON # Neutron mass
- mu = UNIFIED_ATOMIC_MASS
- c = SPEED_OF_LIGHT
+ mu = UNIFIED_ATOMIC_MASS
+ c = SPEED_OF_LIGHT
ELambda = hbar/me/c # Compton length of electron
NLambda = hbar/mn/c
MeC2 = me*c*c # Electron rest mass energy
@@ -29,24 +29,24 @@ module Degenerate
tmp = sqrt(1.0 + x*x)
(x*tmp*(2.0*x*x/3.0 - 1.0) + log(x + tmp))/8/PI/PI
end
-
+
def chi(x)
tmp = sqrt(1.0 + x*x)
(x*tmp*(1.0 + 2*x*x) - log(x + tmp))/8/PI/PI
end
-
+
def xe_rho_mue(rho, mue)
Factor_xe*GSL::pow(rho/mue, 1.0/3.0)
end
-
+
def xn_rho(rho)
Factor_xn*GSL::pow(rho, 1.0/3.0)
end
-
+
end
# Polytrope gas sphere
-module Polytrope
+module Polytrope
# Lane-Emden equation
# n: polytrope index
@@ -59,7 +59,7 @@ module Polytrope
dim = 2
y = GSL::Vector[1.0, 0.0]
dydx = GSL::Vector.alloc(dim)
-
+
solver = Solver.alloc(Step::RKF45, [1e-6, 0], EmdenEq, dim)
solver.set_params(n)
solver.reset
@@ -71,7 +71,7 @@ module Polytrope
x = 0.0001
xend = 10.0
h = 1e-6
-
+
file = File.open("polytrope.dat", "w")
i = 0
while x < xend
@@ -94,10 +94,10 @@ module Polytrope
vdy2 = vdy.subvector(0, i)
spline = GSL::Spline.alloc(GSL::Interp::AKIMA, i)
spline.init(vy2.reverse, vx2.reverse)
-
+
# Find star surface:
# Star sufrace is defined as the zero point of density structure function
- x1 = spline.eval(0.0)
+ x1 = spline.eval(0.0)
spline.init(vx2, vdy2)
yx2 = spline.eval(x1).abs
return [x1, yx2*x1*x1]
diff --git a/examples/permutation/ex1.rb b/examples/permutation/ex1.rb
index b93d053..5754cd2 100755
--- a/examples/permutation/ex1.rb
+++ b/examples/permutation/ex1.rb
@@ -11,12 +11,12 @@ pp.init
pp.fprintf(STDOUT, " %u")
printf("\n")
-puts(" random permutation:");
+puts(" random permutation:");
r.shuffle(pp)
pp.fprintf(STDOUT, " %u")
printf("\n");
-puts("inverse permutation:");
+puts("inverse permutation:");
q = pp.inverse
q.fprintf(STDOUT, " %u")
printf ("\n");
diff --git a/examples/permutation/permutation.rb b/examples/permutation/permutation.rb
index dd179c5..d15af08 100755
--- a/examples/permutation/permutation.rb
+++ b/examples/permutation/permutation.rb
@@ -1,5 +1,5 @@
#!/usr/bin/env ruby
-require("gsl")
+require("gsl")
p = GSL::Permutation::alloc(10)
p.init
diff --git a/examples/poly/demo.rb b/examples/poly/demo.rb
index 7bac055..bb503c5 100755
--- a/examples/poly/demo.rb
+++ b/examples/poly/demo.rb
@@ -6,7 +6,7 @@ include GSL
poly = Poly[1.5, -1.25, -3.75, 0, 1]
# Solve the equation p(x) == 0
root = poly.solve # Vector::Complex
-# Extract only the real parts
+# Extract only the real parts
# (imaginary parts are zero for this case)
re = root.real # Vector::View
diff --git a/examples/random/diffusion.rb b/examples/random/diffusion.rb
index 28264b8..d34485f 100755
--- a/examples/random/diffusion.rb
+++ b/examples/random/diffusion.rb
@@ -19,7 +19,7 @@ h[2] = GSL::Histogram.alloc(61, -30, 30)
i = 0
for n in [6, 50, 100] do
- M.times do
+ M.times do
s = 0
n.times do
ds = rng.get%2 == 0 ? 1 : -1
diff --git a/examples/random/generator.rb b/examples/random/generator.rb
index a3601c9..ac8f1f3 100755
--- a/examples/random/generator.rb
+++ b/examples/random/generator.rb
@@ -7,8 +7,8 @@ names = ["default", "mt19937", "mt19937_1999", "mt19937_1998", "ranlxs0", "ranlx
"gfsr4", "rand", "random_bsd", "random8_bsd", "random32_bsd", "random64_bsd",
"random128_bsd", "random256_bsd", "random_libc5", "random_glibc2", "rand48", "ran0",
"ran1", "ran2", "ran3", "ranf", "ranmar", "r250", "tt800", "vax", "transputer",
-"randu", "minstd", "uni", "uni32", "slatec", "zuf", "borosh13", "coveyou",
-"fishman18", "fishman20", "fishman2x", "knuthran2", "knuthran", "lecuyer21",
+"randu", "minstd", "uni", "uni32", "slatec", "zuf", "borosh13", "coveyou",
+"fishman18", "fishman20", "fishman2x", "knuthran2", "knuthran", "lecuyer21",
"waterman14"]
names.each do |name|
diff --git a/examples/random/randomwalk.rb b/examples/random/randomwalk.rb
index d58c1bf..4ba60be 100755
--- a/examples/random/randomwalk.rb
+++ b/examples/random/randomwalk.rb
@@ -17,7 +17,7 @@ sigma = Math::sqrt(N).to_i
h = GSL::Histogram.alloc(8*sigma+1, [-4*sigma-0.5, 4*sigma+0.5])
-M.times do
+M.times do
s = 0
N.times do
ds = rng.get%2 == 0 ? 1 : -1
@@ -27,8 +27,8 @@ M.times do
end
x = GSL::Vector.linspace(-40, 40, 80)
-y = GSL::Ran::gaussian_pdf(x, sigma)*M*2
-# Factor 2 is not important, but necessary
+y = GSL::Ran::gaussian_pdf(x, sigma)*M*2
+# Factor 2 is not important, but necessary
# because only the even ranges are filled:
# a + b = N a: positive steps, b: negative steps
# a - b = s s: the end point after the N steps
diff --git a/examples/random/rng.rb b/examples/random/rng.rb
index 9ae8b85..ef6942e 100755
--- a/examples/random/rng.rb
+++ b/examples/random/rng.rb
@@ -18,7 +18,7 @@ p r.max
p r.get
p r.get
-r2 = GSL::Random::Rng.alloc
+r2 = GSL::Random::Rng.alloc
p r2.uniform
p r2.uniform
diff --git a/examples/roots/bisection.rb b/examples/roots/bisection.rb
index 5822b13..99421f3 100755
--- a/examples/roots/bisection.rb
+++ b/examples/roots/bisection.rb
@@ -8,7 +8,7 @@ f = GSL::Function.alloc { |x, params|
}
f.set_params(1, 0, -5)
expected = Math::sqrt(5.0)
-printf("%5s [%9s, %9s] %9s %10s %9s\n",
+printf("%5s [%9s, %9s] %9s %10s %9s\n",
"iter", "lower", "upper", "root", "err", "err(est)")
solver.set(f, 0.0, 5.0)
iter = 0
diff --git a/examples/roots/brent.rb b/examples/roots/brent.rb
index d44e15c..66bbb96 100755
--- a/examples/roots/brent.rb
+++ b/examples/roots/brent.rb
@@ -19,7 +19,7 @@ f.set_params(1, 0, -5)
expected = sqrt(5.0)
printf("%5s [%9s, %9s] %9s %10s %9s\n",
- "iter", "lower", "upper", "root",
+ "iter", "lower", "upper", "root",
"err", "err(est)")
solver.set(f, 0.0, 5.0)
diff --git a/examples/roots/demo.rb b/examples/roots/demo.rb
index 1ebd053..c4e6051 100755
--- a/examples/roots/demo.rb
+++ b/examples/roots/demo.rb
@@ -7,7 +7,7 @@ f = GSL::Function.alloc { |x, params|
}
f.set_params(1, 0, -5)
expected = Math::sqrt(5.0)
-printf("%5s [%9s, %9s] %9s %10s %9s\n", "iter",
+printf("%5s [%9s, %9s] %9s %10s %9s\n", "iter",
"lower", "upper", "root", "err", "err(est)")
solver.set(f, 0.0, 5.0)
iter = 0; status = nil
diff --git a/examples/roots/newton.rb b/examples/roots/newton.rb
index 40d1b08..d1ab75e 100755
--- a/examples/roots/newton.rb
+++ b/examples/roots/newton.rb
@@ -2,14 +2,14 @@
require("gsl")
include Math
-f = Proc.new { |x, params|
+f = Proc.new { |x, params|
a = params[0]
b = params[1]
c = params[2]
(a*x + b)*x + c
}
-df = Proc.new { |x, params|
+df = Proc.new { |x, params|
a = params[0]
b = params[1]
2.0*a*x + b
diff --git a/examples/roots/recombination.gp b/examples/roots/recombination.gp
index 6af9921..9769b09 100644
--- a/examples/roots/recombination.gp
+++ b/examples/roots/recombination.gp
@@ -9,4 +9,3 @@ set ylabel 'Fractional ionization'
set x2label 'Temperature of the Universe [K]'
set grid
plot 'recombination.dat' u 2:3 title '' w l lw 3, 1 title ''
-
diff --git a/examples/sf/hyperg.rb b/examples/sf/hyperg.rb
index f9928ff..2a7c033 100755
--- a/examples/sf/hyperg.rb
+++ b/examples/sf/hyperg.rb
@@ -1,5 +1,5 @@
#!/usr/bin/env ruby
-require("gsl")
+require("gsl")
p GSL::Sf.hyperg_0F1(2, 3)
r = GSL::Sf.hyperg_0F1_e(2, 3)
diff --git a/examples/sf/sphbessel.rb b/examples/sf/sphbessel.rb
index 1da8f86..2e0f7cd 100755
--- a/examples/sf/sphbessel.rb
+++ b/examples/sf/sphbessel.rb
@@ -19,7 +19,7 @@ File.open("sphbessel.dat", "w") do |file|
k0 = bessel_k0_scaled(x)
k1 = bessel_k1_scaled(x)
k2 = bessel_k2_scaled(x)
- file.printf("%e %e %e %e %e %e %e %e %e %e %e %e %e %e\n",
+ file.printf("%e %e %e %e %e %e %e %e %e %e %e %e %e %e\n",
x, j0, j1, j2, j3, y0, y1, y2, i0, i1, i2, k0, k1, k2)
x += 0.1
end
diff --git a/examples/sort/sort.rb b/examples/sort/sort.rb
index d8c518b..b9c4dcf 100755
--- a/examples/sort/sort.rb
+++ b/examples/sort/sort.rb
@@ -1,5 +1,5 @@
#!/usr/bin/env ruby
-require("gsl")
+require("gsl")
N = 100000
k = 5
diff --git a/examples/tamu_anova.rb b/examples/tamu_anova.rb
index d774fa8..e23f54c 100755
--- a/examples/tamu_anova.rb
+++ b/examples/tamu_anova.rb
@@ -1,16 +1,16 @@
#!/usr/bin/env ruby
require("gsl")
-data = GSL::Vector[88.60,73.20,91.40,68.00,75.20,63.00,53.90,69.20,
-50.10,71.50,44.90,59.50,40.20,56.30,38.70,31.00,
+data = GSL::Vector[88.60,73.20,91.40,68.00,75.20,63.00,53.90,69.20,
+50.10,71.50,44.90,59.50,40.20,56.30,38.70,31.00,
39.60,45.30,25.20,22.70]
factor = GSL::Vector::Int[1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4]
table = GSL::TAMU_ANOVA::Table.oneway(data, factor, 4)
table.print
-data = GSL::Vector[45.50,45.30,45.40,44.40,44.60,43.90,44.60,44.00,44.20,
-43.90,44.70,44.20,44.00,43.80,44.60,43.10,46.00,45.90,
+data = GSL::Vector[45.50,45.30,45.40,44.40,44.60,43.90,44.60,44.00,44.20,
+43.90,44.70,44.20,44.00,43.80,44.60,43.10,46.00,45.90,
44.80,46.20,45.10,45.50]
factor = GSL::Vector::Int[1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3]
diff --git a/examples/vector/add.rb b/examples/vector/add.rb
index 45a33b8..2ced74b 100755
--- a/examples/vector/add.rb
+++ b/examples/vector/add.rb
@@ -23,7 +23,7 @@ a += b
a
# Subtract b from a
-a -= b
+a -= b
# Show a
a
diff --git a/examples/vector/decimate.rb b/examples/vector/decimate.rb
index aee0e8b..156f262 100755
--- a/examples/vector/decimate.rb
+++ b/examples/vector/decimate.rb
@@ -34,5 +34,5 @@ x1 = GSL::Vector.linspace(0, 20, N/DECIMATE1)
x2 = GSL::Vector.linspace(0, 20, N/DECIMATE2)
# y1 and y2 are shifted vertically for visual purpose
-GSL::graph([x0, y0], [x1, y1-1], [x2, y2-2])
+GSL::graph([x0, y0], [x1, y1-1], [x2, y2-2])
END
diff --git a/examples/vector/gnuplot.rb b/examples/vector/gnuplot.rb
index 27ef61c..b82bec2 100755
--- a/examples/vector/gnuplot.rb
+++ b/examples/vector/gnuplot.rb
@@ -9,28 +9,28 @@ require 'gsl/gnuplot';
# Plot using gnuplot
Gnuplot.open do |gp|
Gnuplot::Plot.new( gp ) do |plot|
-
+
plot.xrange "[0:10]"
plot.yrange "[-1.5:1.5]"
plot.title "Sin Wave Example"
plot.xlabel "x"
plot.ylabel "sin(x)"
plot.pointsize 3
- plot.grid
+ plot.grid
x = GSL::Vector[0..10]
y = GSL::Sf::sin(x)
plot.data = [
Gnuplot::DataSet.new( "sin(x)" ) { |ds|
- ds.with = "lines"
- ds.title = "String function"
- ds.linewidth = 4
+ ds.with = "lines"
+ ds.title = "String function"
+ ds.linewidth = 4
},
-
+
Gnuplot::DataSet.new( [x, y] ) { |ds|
- ds.with = "linespoints"
- ds.title = "Array data"
+ ds.with = "linespoints"
+ ds.title = "Array data"
}
]
diff --git a/examples/vector/vector.rb b/examples/vector/vector.rb
index 3a04784..0d06dfb 100755
--- a/examples/vector/vector.rb
+++ b/examples/vector/vector.rb
@@ -78,8 +78,8 @@ __END__
v = GSL::Vector::alloc(10)
for i in 1...10 do
- v.set(i, i.to_f)
-end
+ v.set(i, i.to_f)
+end
v.print
v.swap_elements(3, 5)
diff --git a/examples/wavelet/wavelet1.rb b/examples/wavelet/wavelet1.rb
index 61bb769..fc8abca 100755
--- a/examples/wavelet/wavelet1.rb
+++ b/examples/wavelet/wavelet1.rb
@@ -31,7 +31,7 @@ perm = data2.abs.sort_index
i = 0
while (i + nc) < n
data2[perm[i]] = 0.0
- i += 1
+ i += 1
end
# Choose as you like...
diff --git a/ext/gsl/bspline.c b/ext/gsl/bspline.c
deleted file mode 100644
index d96defe..0000000
--- a/ext/gsl/bspline.c
+++ /dev/null
@@ -1,130 +0,0 @@
-
-#include "include/rb_gsl.h"
-#ifdef GSL_1_9_LATER
-#include "gsl/gsl_bspline.h"
-
-static VALUE cBSWS;
-
-static VALUE rb_gsl_bspline_alloc(VALUE klass, VALUE k, VALUE n)
-{
- gsl_bspline_workspace *w;
- w = gsl_bspline_alloc(FIX2INT(k), FIX2INT(n));
- return Data_Wrap_Struct(klass, 0, gsl_bspline_free, w);
-}
-
-static VALUE rb_gsl_bspline_ncoeffs(VALUE obj)
-{
- gsl_bspline_workspace *w;
- Data_Get_Struct(obj, gsl_bspline_workspace, w);
- return INT2FIX((int)gsl_bspline_ncoeffs(w));
-}
-static VALUE rb_gsl_bspline_order(VALUE obj)
-{
- gsl_bspline_workspace *w;
- Data_Get_Struct(obj, gsl_bspline_workspace, w);
- return INT2FIX((int)gsl_bspline_order(w));
-}
-static VALUE rb_gsl_bspline_nbreak(VALUE obj)
-{
- gsl_bspline_workspace *w;
- Data_Get_Struct(obj, gsl_bspline_workspace, w);
- return INT2FIX((int)gsl_bspline_nbreak(w));
-}
-static VALUE rb_gsl_bspline_breakpoint(VALUE obj, VALUE i)
-{
- gsl_bspline_workspace *w;
- Data_Get_Struct(obj, gsl_bspline_workspace, w);
- return rb_float_new(gsl_bspline_breakpoint(FIX2INT(i), w));
-}
-static VALUE rb_gsl_bspline_knots(VALUE obj, VALUE b)
-{
- gsl_bspline_workspace *w;
- gsl_vector *bpts;
- CHECK_VECTOR(b);
- Data_Get_Struct(obj, gsl_bspline_workspace, w);
- Data_Get_Struct(b, gsl_vector, bpts);
- gsl_bspline_knots(bpts, w);
- return Data_Wrap_Struct(cgsl_vector_view_ro, 0, NULL, w->knots);
-}
-static VALUE rb_gsl_bspline_knots_uniform(int argc, VALUE *argv, VALUE obj)
-{
- gsl_bspline_workspace *w;
- int argc2;
- switch (TYPE(obj)) {
- case T_MODULE:
- case T_CLASS:
- case T_OBJECT:
- if (!rb_obj_is_kind_of(argv[argc-1], cBSWS)) {
- rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::BSpline expected)",
- rb_class2name(CLASS_OF(argv[argc-1])));
- }
- Data_Get_Struct(argv[argc-1], gsl_bspline_workspace, w);
- argc2 = argc-1;
- break;
- default:
- Data_Get_Struct(obj, gsl_bspline_workspace, w);
- argc2 = argc;
- }
- if (argc2 != 2) rb_raise(rb_eArgError, "Wrong number of arguments.");
- gsl_bspline_knots_uniform(NUM2DBL(argv[0]), NUM2DBL(argv[1]), w);
- return Data_Wrap_Struct(cgsl_vector_view_ro, 0, NULL, w->knots);
-}
-static VALUE rb_gsl_bspline_eval(int argc, VALUE *argv, VALUE obj)
-{
- gsl_bspline_workspace *w;
- double x;
- gsl_vector *B;
- VALUE vB;
-
- Data_Get_Struct(obj, gsl_bspline_workspace, w);
-
- switch (argc) {
- case 2:
- CHECK_VECTOR(argv[1]);
- Data_Get_Struct(argv[1], gsl_vector, B);
- vB = argv[1];
- x = NUM2DBL(argv[0]);
- break;
- case 1:
- x = NUM2DBL(argv[0]);
- B = gsl_vector_alloc(w->nbreak+w->k-2);
- vB = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, B);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc);
- }
-
- gsl_bspline_eval(x, B, w);
-
- return vB;
-}
-#ifdef GSL_1_13_LATER
-static VALUE rb_gsl_bspline_greville_abscissa(VALUE obj, VALUE i)
-{
- gsl_bspline_workspace *w;
- Data_Get_Struct(obj, gsl_bspline_workspace, w);
- return rb_float_new(gsl_bspline_greville_abscissa(i, w));
-}
-#endif
-
-void Init_bspline(VALUE module)
-{
- cBSWS = rb_define_class_under(module, "BSpline", cGSL_Object);
-
- rb_define_singleton_method(cBSWS, "alloc", rb_gsl_bspline_alloc, 2);
-
- rb_define_method(cBSWS, "ncoeffs", rb_gsl_bspline_ncoeffs, 0);
- rb_define_method(cBSWS, "order", rb_gsl_bspline_order, 0);
- rb_define_method(cBSWS, "nbreak", rb_gsl_bspline_nbreak, 0);
- rb_define_method(cBSWS, "breakpoint", rb_gsl_bspline_breakpoint, 1);
- rb_define_method(cBSWS, "knots", rb_gsl_bspline_knots, 1);
- rb_define_method(cBSWS, "knots_uniform", rb_gsl_bspline_knots_uniform, -1);
- rb_define_singleton_method(cBSWS, "knots_uniform", rb_gsl_bspline_knots_uniform, -1);
- rb_define_method(cBSWS, "eval", rb_gsl_bspline_eval, -1);
-
-#ifdef GSL_1_13_LATER
- rb_define_method(cBSWS, "greville_abscissa", rb_gsl_bspline_greville_abscissa, 1);
-#endif
-
-}
-#endif
diff --git a/ext/gsl/const.c b/ext/gsl/const.c
deleted file mode 100644
index 8e3cbbe..0000000
--- a/ext/gsl/const.c
+++ /dev/null
@@ -1,672 +0,0 @@
-/*
- const.c
- Ruby/GSL: Ruby extension library for GSL (GNU Scientific Library)
- (C) Copyright 2001-2006 by Yoshiki Tsunesada
-
- Ruby/GSL is free software: you can redistribute it and/or modify it
- under the terms of the GNU General Public License.
- This library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY.
-*/
-
-#include "include/rb_gsl_const.h"
-
-static void rb_gsl_const_mks(VALUE module);
-static void rb_gsl_const_cgs(VALUE module);
-static void rb_gsl_const_num(VALUE module);
-void Init_gsl_const_additional(VALUE mmks, VALUE mcgs, VALUE mnum);
-
-#ifndef GSL_1_4_LATER
-static void rb_gsl_const_mks(VALUE module)
-{
- rb_define_const(module, "SPEED_OF_LIGHT",
- rb_float_new(GSL_CONST_MKS_SPEED_OF_LIGHT));
- rb_define_const(module, "GRAVITATIONAL_CONSTANT",
- rb_float_new(GSL_CONST_MKS_GRAVITATIONAL_CONSTANT));
- rb_define_const(module, "PLANCKS_CONSTANT_H",
- rb_float_new(GSL_CONST_MKS_PLANCKS_CONSTANT_H));
- rb_define_const(module, "PLANCKS_CONSTANT_HBAR",
- rb_float_new(GSL_CONST_MKS_PLANCKS_CONSTANT_HBAR));
- rb_define_const(module, "VACUUM_PERMEABILITY",
- rb_float_new(GSL_CONST_MKS_VACUUM_PERMEABILITY));
- rb_define_const(module, "ASTRONOMICAL_UNIT",
- rb_float_new(GSL_CONST_MKS_ASTRONOMICAL_UNIT));
- rb_define_const(module, "LIGHT_YEAR", rb_float_new(GSL_CONST_MKS_LIGHT_YEAR));
- rb_define_const(module, "PARSEC", rb_float_new(GSL_CONST_MKS_PARSEC));
- rb_define_const(module, "GRAV_ACCEL", rb_float_new(GSL_CONST_MKS_GRAV_ACCEL));
- rb_define_const(module, "ELECTRON_VOLT",
- rb_float_new(GSL_CONST_MKS_ELECTRON_VOLT));
- rb_define_const(module, "MASS_ELECTRON",
- rb_float_new(GSL_CONST_MKS_MASS_ELECTRON));
- rb_define_const(module, "MASS_MUON", rb_float_new(GSL_CONST_MKS_MASS_MUON));
- rb_define_const(module, "MASS_PROTON", rb_float_new(GSL_CONST_MKS_MASS_PROTON));
- rb_define_const(module, "MASS_NEUTRON", rb_float_new(GSL_CONST_MKS_MASS_NEUTRON));
- rb_define_const(module, "RYDBERG", rb_float_new(GSL_CONST_MKS_RYDBERG));
- rb_define_const(module, "BOLTZMANN", rb_float_new(GSL_CONST_MKS_BOLTZMANN));
- rb_define_const(module, "MOLAR_GAS", rb_float_new(GSL_CONST_MKS_MOLAR_GAS));
- rb_define_const(module, "BOHR_MAGNETON",
- rb_float_new(GSL_CONST_MKS_BOHR_MAGNETON));
- rb_define_const(module, "NUCLEAR_MAGNETON",
- rb_float_new(GSL_CONST_MKS_NUCLEAR_MAGNETON));
- rb_define_const(module, "ELECTRON_MAGNETIC_MOMENT",
- rb_float_new(GSL_CONST_MKS_ELECTRON_MAGNETIC_MOMENT));
- rb_define_const(module, "PROTON_MAGNETIC_MOMENT",
- rb_float_new(GSL_CONST_MKS_PROTON_MAGNETIC_MOMENT));
- rb_define_const(module, "STANDARD_GAS_VOLUME",
- rb_float_new(GSL_CONST_MKS_STANDARD_GAS_VOLUME));
-
- rb_define_const(module, "MINUTE", rb_float_new(GSL_CONST_MKS_MINUTE));
- rb_define_const(module, "HOUR", rb_float_new(GSL_CONST_MKS_HOUR));
- rb_define_const(module, "DAY", rb_float_new(GSL_CONST_MKS_DAY));
- rb_define_const(module, "WEEK", rb_float_new(GSL_CONST_MKS_WEEK));
- rb_define_const(module, "INCH", rb_float_new(GSL_CONST_MKS_INCH));
- rb_define_const(module, "FOOT", rb_float_new(GSL_CONST_MKS_FOOT));
- rb_define_const(module, "YARD", rb_float_new(GSL_CONST_MKS_YARD));
- rb_define_const(module, "MILE", rb_float_new(GSL_CONST_MKS_MILE));
- rb_define_const(module, "NAUTICAL_MILE", rb_float_new(GSL_CONST_MKS_NAUTICAL_MILE));
- rb_define_const(module, "FATHOM", rb_float_new(GSL_CONST_MKS_FATHOM));
- rb_define_const(module, "MIL", rb_float_new(GSL_CONST_MKS_MIL));
- rb_define_const(module, "POINT", rb_float_new(GSL_CONST_MKS_POINT));
- rb_define_const(module, "TEXPOINT", rb_float_new(GSL_CONST_MKS_TEXPOINT));
- rb_define_const(module, "MICRON", rb_float_new(GSL_CONST_MKS_MICRON));
- rb_define_const(module, "ANGSTROM", rb_float_new(GSL_CONST_MKS_ANGSTROM));
- rb_define_const(module, "HECTARE", rb_float_new(GSL_CONST_MKS_HECTARE));
- rb_define_const(module, "ACRE", rb_float_new(GSL_CONST_MKS_ACRE));
-#ifdef GSL_0_9_4_LATER
- rb_define_const(module, "BARN", rb_float_new(GSL_CONST_MKS_BARN));
- rb_define_const(module, "BTU", rb_float_new(GSL_CONST_MKS_BTU));
- rb_define_const(module, "SOLAR_MASS", rb_float_new(GSL_CONST_MKS_SOLAR_MASS));
-#else
- rb_define_const(module, "BARN", rb_float_new(1.0e-28));
- rb_define_const(module, "BTU", rb_float_new(1.05505585262e3));
-#endif
- rb_define_const(module, "LITER", rb_float_new(GSL_CONST_MKS_LITER));
- rb_define_const(module, "US_GALLON", rb_float_new(GSL_CONST_MKS_US_GALLON));
- rb_define_const(module, "QUART", rb_float_new(GSL_CONST_MKS_QUART));
- rb_define_const(module, "PINT", rb_float_new(GSL_CONST_MKS_PINT));
- rb_define_const(module, "CUP", rb_float_new(GSL_CONST_MKS_CUP));
- rb_define_const(module, "FLUID_OUNCE", rb_float_new(GSL_CONST_MKS_FLUID_OUNCE));
- rb_define_const(module, "TABLESPOON", rb_float_new(GSL_CONST_MKS_TABLESPOON));
- rb_define_const(module, "CANADIAN_GALLON",
- rb_float_new(GSL_CONST_MKS_CANADIAN_GALLON));
-
- rb_define_const(module, "UK_GALLON", rb_float_new(GSL_CONST_MKS_UK_GALLON));
- rb_define_const(module, "KILOMETERS_PER_HOUR",
- rb_float_new(GSL_CONST_MKS_MILES_PER_HOUR));
- rb_define_const(module, "MILES_PER_HOUR",
- rb_float_new(GSL_CONST_MKS_KILOMETERS_PER_HOUR));
- rb_define_const(module, "KNOT", rb_float_new(GSL_CONST_MKS_KNOT));
- rb_define_const(module, "POUND_MASS", rb_float_new(GSL_CONST_MKS_POUND_MASS));
- rb_define_const(module, "POUND_OUNCE", rb_float_new(GSL_CONST_MKS_OUNCE_MASS));
- rb_define_const(module, "POUND_TON", rb_float_new(GSL_CONST_MKS_TON));
- rb_define_const(module, "POUND_METRIC_TON",
- rb_float_new(GSL_CONST_MKS_METRIC_TON));
- rb_define_const(module, "POUND_UK_TON", rb_float_new(GSL_CONST_MKS_UK_TON));
- rb_define_const(module, "POUND_TROY_OUNCE",
- rb_float_new(GSL_CONST_MKS_TROY_OUNCE));
- rb_define_const(module, "CARAT", rb_float_new(GSL_CONST_MKS_CARAT));
- rb_define_const(module, "UNIFIED_ATOMIC_MASS",
- rb_float_new(GSL_CONST_MKS_UNIFIED_ATOMIC_MASS));
- rb_define_const(module, "GRAM_FORCE", rb_float_new(GSL_CONST_MKS_GRAM_FORCE));
- rb_define_const(module, "POUND_FORCE", rb_float_new(GSL_CONST_MKS_POUND_FORCE));
- rb_define_const(module, "KILOPOUND_FORCE",
- rb_float_new(GSL_CONST_MKS_KILOPOUND_FORCE));
- rb_define_const(module, "POUNDAL", rb_float_new(GSL_CONST_MKS_POUNDAL));
- rb_define_const(module, "CALORIE", rb_float_new(GSL_CONST_MKS_CALORIE));
- rb_define_const(module, "THERM", rb_float_new(GSL_CONST_MKS_THERM));
- rb_define_const(module, "HORSEPOWER", rb_float_new(GSL_CONST_MKS_HORSEPOWER));
- rb_define_const(module, "BAR", rb_float_new(GSL_CONST_MKS_BAR));
- rb_define_const(module, "STD_ATMOSPHERE",
- rb_float_new(GSL_CONST_MKS_STD_ATMOSPHERE));
- rb_define_const(module, "TORR", rb_float_new(GSL_CONST_MKS_TORR));
- rb_define_const(module, "METER_OF_MERCURY",
- rb_float_new(GSL_CONST_MKS_METER_OF_MERCURY));
- rb_define_const(module, "INCH_OF_MERCURY",
- rb_float_new(GSL_CONST_MKS_INCH_OF_MERCURY));
- rb_define_const(module, "INCH_OF_WATER",
- rb_float_new(GSL_CONST_MKS_INCH_OF_WATER));
- rb_define_const(module, "PSI", rb_float_new(GSL_CONST_MKS_PSI));
- rb_define_const(module, "POISE", rb_float_new(GSL_CONST_MKS_POISE));
- rb_define_const(module, "STOKES", rb_float_new(GSL_CONST_MKS_STOKES));
- rb_define_const(module, "FARADAY", rb_float_new(GSL_CONST_MKS_FARADAY));
- rb_define_const(module, "ELECTRON_CHARGE",
- rb_float_new(GSL_CONST_MKS_ELECTRON_CHARGE));
- rb_define_const(module, "GAUSS", rb_float_new(GSL_CONST_MKS_GAUSS));
- rb_define_const(module, "STILB", rb_float_new(GSL_CONST_MKS_STILB));
- rb_define_const(module, "LUMEN", rb_float_new(GSL_CONST_MKS_LUMEN));
- rb_define_const(module, "LUX", rb_float_new(GSL_CONST_MKS_LUX));
- rb_define_const(module, "PHOT", rb_float_new(GSL_CONST_MKS_PHOT));
- rb_define_const(module, "FOOTCANDLE", rb_float_new(GSL_CONST_MKS_FOOTCANDLE));
- rb_define_const(module, "LAMBERT", rb_float_new(GSL_CONST_MKS_LAMBERT));
- rb_define_const(module, "CURIE", rb_float_new(GSL_CONST_MKS_CURIE));
- rb_define_const(module, "ROENTGEN", rb_float_new(GSL_CONST_MKS_ROENTGEN));
- rb_define_const(module, "RAD", rb_float_new(GSL_CONST_MKS_RAD));
-
-#ifdef GSL_1_1_LATER
- rb_define_const(module, "VACUUM_PERMITTIVITY",
- rb_float_new(GSL_CONST_MKS_VACUUM_PERMITTIVITY));
- rb_define_const(module, "BOHR_RADIUS", rb_float_new(GSL_CONST_MKS_BOHR_RADIUS));
-#endif
-
-#ifdef GSL_1_2_LATER
- rb_define_const(module, "NEWTON", rb_float_new(GSL_CONST_MKS_NEWTON));
- rb_define_const(module, "DYNE", rb_float_new(GSL_CONST_MKS_DYNE));
- rb_define_const(module, "JOULE", rb_float_new(GSL_CONST_MKS_JOULE));
- rb_define_const(module, "ERG", rb_float_new(GSL_CONST_MKS_ERG));
-#endif
-
-#ifdef GSL_1_8_LATER
- rb_define_const(module, "DEBYE", rb_float_new(GSL_CONST_MKS_DEBYE));
-#endif
-
-}
-
-static void rb_gsl_const_cgs(VALUE module)
-{
- rb_define_const(module, "SPEED_OF_LIGHT",
- rb_float_new(GSL_CONST_CGS_SPEED_OF_LIGHT));
- rb_define_const(module, "GRAVITATIONAL_CONSTANT",
- rb_float_new(GSL_CONST_CGS_GRAVITATIONAL_CONSTANT));
- rb_define_const(module, "PLANCKS_CONSTANT_H",
- rb_float_new(GSL_CONST_CGS_PLANCKS_CONSTANT_H));
- rb_define_const(module, "PLANCKS_CONSTANT_HBAR",
- rb_float_new(GSL_CONST_CGS_PLANCKS_CONSTANT_HBAR));
- rb_define_const(module, "ASTRONOMICAL_UNIT",
- rb_float_new(GSL_CONST_CGS_ASTRONOMICAL_UNIT));
- rb_define_const(module, "LIGHT_YEAR", rb_float_new(GSL_CONST_CGS_LIGHT_YEAR));
- rb_define_const(module, "PARSEC", rb_float_new(GSL_CONST_CGS_PARSEC));
- rb_define_const(module, "GRAV_ACCEL", rb_float_new(GSL_CONST_CGS_GRAV_ACCEL));
- rb_define_const(module, "ELECTRON_VOLT",
- rb_float_new(GSL_CONST_CGS_ELECTRON_VOLT));
- rb_define_const(module, "MASS_ELECTRON",
- rb_float_new(GSL_CONST_CGS_MASS_ELECTRON));
- rb_define_const(module, "MASS_MUON", rb_float_new(GSL_CONST_CGS_MASS_MUON));
- rb_define_const(module, "MASS_PROTON",
- rb_float_new(GSL_CONST_CGS_MASS_PROTON));
- rb_define_const(module, "MASS_NEUTRON", rb_float_new(GSL_CONST_CGS_MASS_NEUTRON));
- rb_define_const(module, "RYDBERG", rb_float_new(GSL_CONST_CGS_RYDBERG));
- rb_define_const(module, "BOHR_MAGNETON",
- rb_float_new(GSL_CONST_CGS_BOHR_MAGNETON));
-
- rb_define_const(module, "NUCLEAR_MAGNETON",
- rb_float_new(GSL_CONST_CGS_NUCLEAR_MAGNETON));
- rb_define_const(module, "ELECTRON_MAGNETIC_MOMENT",
- rb_float_new(GSL_CONST_CGS_ELECTRON_MAGNETIC_MOMENT));
- rb_define_const(module, "PROTON_MAGNETIC_MOMENT",
- rb_float_new(GSL_CONST_CGS_PROTON_MAGNETIC_MOMENT));
- rb_define_const(module, "STANDARD_GAS_VOLUME",
- rb_float_new(GSL_CONST_CGS_STANDARD_GAS_VOLUME));
-
- rb_define_const(module, "MINUTE", rb_float_new(GSL_CONST_CGS_MINUTE));
- rb_define_const(module, "HOUR", rb_float_new(GSL_CONST_CGS_HOUR));
- rb_define_const(module, "DAY", rb_float_new(GSL_CONST_CGS_DAY));
- rb_define_const(module, "WEEK", rb_float_new(GSL_CONST_CGS_WEEK));
- rb_define_const(module, "INCH", rb_float_new(GSL_CONST_CGS_INCH));
- rb_define_const(module, "FOOT", rb_float_new(GSL_CONST_CGS_FOOT));
- rb_define_const(module, "YARD", rb_float_new(GSL_CONST_CGS_YARD));
- rb_define_const(module, "MILE", rb_float_new(GSL_CONST_CGS_MILE));
- rb_define_const(module, "NAUTICAL_MILE",
- rb_float_new(GSL_CONST_CGS_NAUTICAL_MILE));
- rb_define_const(module, "FATHOM", rb_float_new(GSL_CONST_CGS_FATHOM));
- rb_define_const(module, "MIL", rb_float_new(GSL_CONST_CGS_MIL));
- rb_define_const(module, "POINT", rb_float_new(GSL_CONST_CGS_POINT));
- rb_define_const(module, "TEXPOINT", rb_float_new(GSL_CONST_CGS_TEXPOINT));
- rb_define_const(module, "MICRON", rb_float_new(GSL_CONST_CGS_MICRON));
- rb_define_const(module, "ANGSTROM", rb_float_new(GSL_CONST_CGS_ANGSTROM));
- rb_define_const(module, "HECTARE", rb_float_new(GSL_CONST_CGS_HECTARE));
- rb_define_const(module, "ACRE", rb_float_new(GSL_CONST_CGS_ACRE));
-#ifdef GSL_0_9_4_LATER
- rb_define_const(module, "BARN", rb_float_new(GSL_CONST_CGS_BARN));
- rb_define_const(module, "BTU", rb_float_new(GSL_CONST_CGS_BTU));
- rb_define_const(module, "SOLAR_MASS", rb_float_new(GSL_CONST_CGS_SOLAR_MASS));
-#else
- rb_define_const(module, "BARN", rb_float_new(1e-24));
- rb_define_const(module, "BTU", rb_float_new(1.05505585262e10));
-#endif
- rb_define_const(module, "LITER", rb_float_new(GSL_CONST_CGS_LITER));
- rb_define_const(module, "US_GALLON", rb_float_new(GSL_CONST_CGS_US_GALLON));
- rb_define_const(module, "QUART", rb_float_new(GSL_CONST_CGS_QUART));
- rb_define_const(module, "PINT", rb_float_new(GSL_CONST_CGS_PINT));
- rb_define_const(module, "CUP", rb_float_new(GSL_CONST_CGS_CUP));
- rb_define_const(module, "FLUID_OUNCE", rb_float_new(GSL_CONST_CGS_FLUID_OUNCE));
- rb_define_const(module, "TABLESPOON", rb_float_new(GSL_CONST_CGS_TABLESPOON));
- rb_define_const(module, "CANADIAN_GALLON",
- rb_float_new(GSL_CONST_CGS_CANADIAN_GALLON));
-
- rb_define_const(module, "UK_GALLON", rb_float_new(GSL_CONST_CGS_UK_GALLON));
- rb_define_const(module, "KILOMETERS_PER_HOUR",
- rb_float_new(GSL_CONST_CGS_MILES_PER_HOUR));
- rb_define_const(module, "MILES_PER_HOUR",
- rb_float_new(GSL_CONST_CGS_KILOMETERS_PER_HOUR));
- rb_define_const(module, "KNOT", rb_float_new(GSL_CONST_CGS_KNOT));
- rb_define_const(module, "POUND_MASS", rb_float_new(GSL_CONST_CGS_POUND_MASS));
- rb_define_const(module, "POUND_OUNCE", rb_float_new(GSL_CONST_CGS_OUNCE_MASS));
- rb_define_const(module, "POUND_TON", rb_float_new(GSL_CONST_CGS_TON));
- rb_define_const(module, "POUND_METRIC_TON",
- rb_float_new(GSL_CONST_CGS_METRIC_TON));
- rb_define_const(module, "POUND_UK_TON", rb_float_new(GSL_CONST_CGS_UK_TON));
- rb_define_const(module, "POUND_TROY_OUNCE",
- rb_float_new(GSL_CONST_CGS_TROY_OUNCE));
- rb_define_const(module, "CARAT", rb_float_new(GSL_CONST_CGS_CARAT));
- rb_define_const(module, "UNIFIED_ATOMIC_MASS",
- rb_float_new(GSL_CONST_CGS_UNIFIED_ATOMIC_MASS));
- rb_define_const(module, "GRAM_FORCE", rb_float_new(GSL_CONST_CGS_GRAM_FORCE));
- rb_define_const(module, "POUND_FORCE", rb_float_new(GSL_CONST_CGS_POUND_FORCE));
- rb_define_const(module, "KILOPOUND_FORCE",
- rb_float_new(GSL_CONST_CGS_KILOPOUND_FORCE));
- rb_define_const(module, "POUNDAL", rb_float_new(GSL_CONST_CGS_POUNDAL));
- rb_define_const(module, "CALORIE", rb_float_new(GSL_CONST_CGS_CALORIE));
- rb_define_const(module, "THERM", rb_float_new(GSL_CONST_CGS_THERM));
- rb_define_const(module, "HORSEPOWER", rb_float_new(GSL_CONST_CGS_HORSEPOWER));
- rb_define_const(module, "BAR", rb_float_new(GSL_CONST_CGS_BAR));
- rb_define_const(module, "STD_ATMOSPHERE",
- rb_float_new(GSL_CONST_CGS_STD_ATMOSPHERE));
- rb_define_const(module, "TORR", rb_float_new(GSL_CONST_CGS_TORR));
- rb_define_const(module, "METER_OF_MERCURY",
- rb_float_new(GSL_CONST_CGS_METER_OF_MERCURY));
- rb_define_const(module, "INCH_OF_MERCURY",
- rb_float_new(GSL_CONST_CGS_INCH_OF_MERCURY));
- rb_define_const(module, "INCH_OF_WATER",
- rb_float_new(GSL_CONST_CGS_INCH_OF_WATER));
- rb_define_const(module, "PSI", rb_float_new(GSL_CONST_CGS_PSI));
- rb_define_const(module, "POISE", rb_float_new(GSL_CONST_CGS_POISE));
- rb_define_const(module, "STOKES", rb_float_new(GSL_CONST_CGS_STOKES));
- rb_define_const(module, "FARADAY", rb_float_new(GSL_CONST_CGS_FARADAY));
- rb_define_const(module, "ELECTRON_CHARGE",
- rb_float_new(GSL_CONST_CGS_ELECTRON_CHARGE));
- rb_define_const(module, "ELECTRON_CHARGE_ESU",
- rb_float_new(GSL_CONST_CGS_ELECTRON_CHARGE*GSL_CONST_CGS_SPEED_OF_LIGHT));
- rb_define_const(module, "GAUSS", rb_float_new(GSL_CONST_CGS_GAUSS));
- rb_define_const(module, "STILB", rb_float_new(GSL_CONST_CGS_STILB));
- rb_define_const(module, "LUMEN", rb_float_new(GSL_CONST_CGS_LUMEN));
- rb_define_const(module, "LUX", rb_float_new(GSL_CONST_CGS_LUX));
- rb_define_const(module, "PHOT", rb_float_new(GSL_CONST_CGS_PHOT));
- rb_define_const(module, "FOOTCANDLE", rb_float_new(GSL_CONST_CGS_FOOTCANDLE));
- rb_define_const(module, "LAMBERT", rb_float_new(GSL_CONST_CGS_LAMBERT));
- rb_define_const(module, "CURIE", rb_float_new(GSL_CONST_CGS_CURIE));
- rb_define_const(module, "ROENTGEN", rb_float_new(GSL_CONST_CGS_ROENTGEN));
- rb_define_const(module, "RAD", rb_float_new(GSL_CONST_CGS_RAD));
-
- rb_define_const(module, "BOLTZMANN", rb_float_new(GSL_CONST_CGS_BOLTZMANN));
- rb_define_const(module, "MOLAR_GAS", rb_float_new(GSL_CONST_CGS_MOLAR_GAS));
-
-#ifdef GSL_1_1_LATER
- rb_define_const(module, "BOHR_RADIUS", rb_float_new(GSL_CONST_CGS_BOHR_RADIUS));
-#endif
-#ifdef GSL_1_2_LATER
- rb_define_const(module, "NEWTON", rb_float_new(GSL_CONST_CGS_NEWTON));
- rb_define_const(module, "DYNE", rb_float_new(GSL_CONST_CGS_DYNE));
- rb_define_const(module, "JOULE", rb_float_new(GSL_CONST_CGS_JOULE));
- rb_define_const(module, "ERG", rb_float_new(GSL_CONST_CGS_ERG));
-#endif
-
-}
-
-static void rb_gsl_const_num(VALUE module)
-{
- rb_define_const(module, "AVOGADRO", rb_float_new(GSL_CONST_NUM_AVOGADRO));
- rb_define_const(module, "FINE_STRUCTURE",
- rb_float_new(GSL_CONST_NUM_FINE_STRUCTURE));
-#ifdef GSL_1_2_LATER
- rb_define_const(module, "YOTTA", rb_float_new(GSL_CONST_NUM_YOTTA));
- rb_define_const(module, "ZETTA", rb_float_new(GSL_CONST_NUM_ZETTA));
- rb_define_const(module, "EXA", rb_float_new(GSL_CONST_NUM_EXA));
- rb_define_const(module, "PETA", rb_float_new(GSL_CONST_NUM_PETA));
- rb_define_const(module, "TERA", rb_float_new(GSL_CONST_NUM_TERA));
- rb_define_const(module, "GIGA", rb_float_new(GSL_CONST_NUM_GIGA));
- rb_define_const(module, "MEGA", rb_float_new(GSL_CONST_NUM_MEGA));
- rb_define_const(module, "KILO", rb_float_new(GSL_CONST_NUM_KILO));
- rb_define_const(module, "MILLI", rb_float_new(GSL_CONST_NUM_MILLI));
- rb_define_const(module, "MICRO", rb_float_new(GSL_CONST_NUM_MICRO));
- rb_define_const(module, "NANO", rb_float_new(GSL_CONST_NUM_NANO));
- rb_define_const(module, "PICO", rb_float_new(GSL_CONST_NUM_PICO));
- rb_define_const(module, "FEMTO", rb_float_new(GSL_CONST_NUM_FEMTO));
- rb_define_const(module, "ATTO", rb_float_new(GSL_CONST_NUM_ATTO));
- rb_define_const(module, "ZEPTO", rb_float_new(GSL_CONST_NUM_ZEPTO));
- rb_define_const(module, "YOCTO", rb_float_new(GSL_CONST_NUM_YOCTO));
-#endif
-}
-
-void Init_gsl_const(VALUE module)
-{
- VALUE mgsl_const;
- VALUE mgsl_const_mks, mgsl_const_cgs, mgsl_const_num;
-
- mgsl_const = rb_define_module_under(module, "CONST");
- mgsl_const_mks = rb_define_module_under(mgsl_const, "MKSA");
- rb_gsl_const_mks(mgsl_const_mks);
- mgsl_const_cgs = rb_define_module_under(mgsl_const, "CGSM");
- rb_gsl_const_cgs(mgsl_const_cgs);
- mgsl_const_num = rb_define_module_under(mgsl_const, "NUM");
- rb_gsl_const_num(mgsl_const_num);
- Init_gsl_const_additional(mgsl_const_mks, mgsl_const_cgs, mgsl_const_num);
-}
-
-#else
-
-static void rb_gsl_const_mks(VALUE module)
-{
- rb_define_const(module, "SPEED_OF_LIGHT",
- rb_float_new(GSL_CONST_MKSA_SPEED_OF_LIGHT));
- rb_define_const(module, "GRAVITATIONAL_CONSTANT",
- rb_float_new(GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT));
- rb_define_const(module, "PLANCKS_CONSTANT_H",
- rb_float_new(GSL_CONST_MKSA_PLANCKS_CONSTANT_H));
- rb_define_const(module, "PLANCKS_CONSTANT_HBAR",
- rb_float_new(GSL_CONST_MKSA_PLANCKS_CONSTANT_HBAR));
- rb_define_const(module, "VACUUM_PERMEABILITY",
- rb_float_new(GSL_CONST_MKSA_VACUUM_PERMEABILITY));
- rb_define_const(module, "VACUUM_PERMITTIVITY",
- rb_float_new(GSL_CONST_MKSA_VACUUM_PERMITTIVITY));
- rb_define_const(module, "ASTRONOMICAL_UNIT",
- rb_float_new(GSL_CONST_MKSA_ASTRONOMICAL_UNIT));
- rb_define_const(module, "LIGHT_YEAR", rb_float_new(GSL_CONST_MKSA_LIGHT_YEAR));
- rb_define_const(module, "PARSEC", rb_float_new(GSL_CONST_MKSA_PARSEC));
- rb_define_const(module, "GRAV_ACCEL", rb_float_new(GSL_CONST_MKSA_GRAV_ACCEL));
- rb_define_const(module, "ELECTRON_VOLT",
- rb_float_new(GSL_CONST_MKSA_ELECTRON_VOLT));
- rb_define_const(module, "MASS_ELECTRON",
- rb_float_new(GSL_CONST_MKSA_MASS_ELECTRON));
- rb_define_const(module, "MASS_MUON", rb_float_new(GSL_CONST_MKSA_MASS_MUON));
- rb_define_const(module, "MASS_PROTON", rb_float_new(GSL_CONST_MKSA_MASS_PROTON));
- rb_define_const(module, "MASS_NEUTRON", rb_float_new(GSL_CONST_MKSA_MASS_NEUTRON));
- rb_define_const(module, "RYDBERG", rb_float_new(GSL_CONST_MKSA_RYDBERG));
- rb_define_const(module, "BOHR_MAGNETON",
- rb_float_new(GSL_CONST_MKSA_BOHR_MAGNETON));
- rb_define_const(module, "NUCLEAR_MAGNETON",
- rb_float_new(GSL_CONST_MKSA_NUCLEAR_MAGNETON));
- rb_define_const(module, "ELECTRON_MAGNETIC_MOMENT",
- rb_float_new(GSL_CONST_MKSA_ELECTRON_MAGNETIC_MOMENT));
- rb_define_const(module, "PROTON_MAGNETIC_MOMENT",
- rb_float_new(GSL_CONST_MKSA_PROTON_MAGNETIC_MOMENT));
- rb_define_const(module, "STANDARD_GAS_VOLUME",
- rb_float_new(GSL_CONST_MKSA_STANDARD_GAS_VOLUME));
-
- rb_define_const(module, "MINUTE", rb_float_new(GSL_CONST_MKSA_MINUTE));
- rb_define_const(module, "HOUR", rb_float_new(GSL_CONST_MKSA_HOUR));
- rb_define_const(module, "DAY", rb_float_new(GSL_CONST_MKSA_DAY));
- rb_define_const(module, "WEEK", rb_float_new(GSL_CONST_MKSA_WEEK));
- rb_define_const(module, "INCH", rb_float_new(GSL_CONST_MKSA_INCH));
- rb_define_const(module, "FOOT", rb_float_new(GSL_CONST_MKSA_FOOT));
- rb_define_const(module, "YARD", rb_float_new(GSL_CONST_MKSA_YARD));
- rb_define_const(module, "MILE", rb_float_new(GSL_CONST_MKSA_MILE));
- rb_define_const(module, "NAUTICAL_MILE",
- rb_float_new(GSL_CONST_MKSA_NAUTICAL_MILE));
- rb_define_const(module, "FATHOM", rb_float_new(GSL_CONST_MKSA_FATHOM));
- rb_define_const(module, "MIL", rb_float_new(GSL_CONST_MKSA_MIL));
- rb_define_const(module, "POINT", rb_float_new(GSL_CONST_MKSA_POINT));
- rb_define_const(module, "TEXPOINT", rb_float_new(GSL_CONST_MKSA_TEXPOINT));
- rb_define_const(module, "MICRON", rb_float_new(GSL_CONST_MKSA_MICRON));
- rb_define_const(module, "ANGSTROM", rb_float_new(GSL_CONST_MKSA_ANGSTROM));
- rb_define_const(module, "HECTARE", rb_float_new(GSL_CONST_MKSA_HECTARE));
- rb_define_const(module, "ACRE", rb_float_new(GSL_CONST_MKSA_ACRE));
- rb_define_const(module, "BARN", rb_float_new(GSL_CONST_MKSA_BARN));
- rb_define_const(module, "LITER", rb_float_new(GSL_CONST_MKSA_LITER));
- rb_define_const(module, "US_GALLON", rb_float_new(GSL_CONST_MKSA_US_GALLON));
- rb_define_const(module, "QUART", rb_float_new(GSL_CONST_MKSA_QUART));
- rb_define_const(module, "PINT", rb_float_new(GSL_CONST_MKSA_PINT));
- rb_define_const(module, "CUP", rb_float_new(GSL_CONST_MKSA_CUP));
- rb_define_const(module, "FLUID_OUNCE", rb_float_new(GSL_CONST_MKSA_FLUID_OUNCE));
- rb_define_const(module, "TABLESPOON", rb_float_new(GSL_CONST_MKSA_TABLESPOON));
- rb_define_const(module, "CANADIAN_GALLON",
- rb_float_new(GSL_CONST_MKSA_CANADIAN_GALLON));
-
- rb_define_const(module, "UK_GALLON", rb_float_new(GSL_CONST_MKSA_UK_GALLON));
- rb_define_const(module, "KILOMETERS_PER_HOUR",
- rb_float_new(GSL_CONST_MKSA_MILES_PER_HOUR));
- rb_define_const(module, "MILES_PER_HOUR",
- rb_float_new(GSL_CONST_MKSA_KILOMETERS_PER_HOUR));
- rb_define_const(module, "KNOT", rb_float_new(GSL_CONST_MKSA_KNOT));
- rb_define_const(module, "POUND_MASS", rb_float_new(GSL_CONST_MKSA_POUND_MASS));
- rb_define_const(module, "POUND_OUNCE", rb_float_new(GSL_CONST_MKSA_OUNCE_MASS));
- rb_define_const(module, "POUND_TON", rb_float_new(GSL_CONST_MKSA_TON));
- rb_define_const(module, "POUND_METRIC_TON",
- rb_float_new(GSL_CONST_MKSA_METRIC_TON));
- rb_define_const(module, "POUND_UK_TON", rb_float_new(GSL_CONST_MKSA_UK_TON));
- rb_define_const(module, "POUND_TROY_OUNCE",
- rb_float_new(GSL_CONST_MKSA_TROY_OUNCE));
- rb_define_const(module, "CARAT", rb_float_new(GSL_CONST_MKSA_CARAT));
- rb_define_const(module, "UNIFIED_ATOMIC_MASS",
- rb_float_new(GSL_CONST_MKSA_UNIFIED_ATOMIC_MASS));
- rb_define_const(module, "GRAM_FORCE", rb_float_new(GSL_CONST_MKSA_GRAM_FORCE));
- rb_define_const(module, "POUND_FORCE", rb_float_new(GSL_CONST_MKSA_POUND_FORCE));
- rb_define_const(module, "KILOPOUND_FORCE",
- rb_float_new(GSL_CONST_MKSA_KILOPOUND_FORCE));
- rb_define_const(module, "POUNDAL", rb_float_new(GSL_CONST_MKSA_POUNDAL));
- rb_define_const(module, "CALORIE", rb_float_new(GSL_CONST_MKSA_CALORIE));
- rb_define_const(module, "BTU", rb_float_new(GSL_CONST_MKSA_BTU));
- rb_define_const(module, "THERM", rb_float_new(GSL_CONST_MKSA_THERM));
- rb_define_const(module, "HORSEPOWER", rb_float_new(GSL_CONST_MKSA_HORSEPOWER));
- rb_define_const(module, "BAR", rb_float_new(GSL_CONST_MKSA_BAR));
- rb_define_const(module, "STD_ATMOSPHERE",
- rb_float_new(GSL_CONST_MKSA_STD_ATMOSPHERE));
- rb_define_const(module, "TORR", rb_float_new(GSL_CONST_MKSA_TORR));
- rb_define_const(module, "METER_OF_MERCURY",
- rb_float_new(GSL_CONST_MKSA_METER_OF_MERCURY));
- rb_define_const(module, "INCH_OF_MERCURY",
- rb_float_new(GSL_CONST_MKSA_INCH_OF_MERCURY));
- rb_define_const(module, "INCH_OF_WATER",
- rb_float_new(GSL_CONST_MKSA_INCH_OF_WATER));
- rb_define_const(module, "PSI", rb_float_new(GSL_CONST_MKSA_PSI));
- rb_define_const(module, "POISE", rb_float_new(GSL_CONST_MKSA_POISE));
- rb_define_const(module, "STOKES", rb_float_new(GSL_CONST_MKSA_STOKES));
- rb_define_const(module, "FARADAY", rb_float_new(GSL_CONST_MKSA_FARADAY));
- rb_define_const(module, "ELECTRON_CHARGE",
- rb_float_new(GSL_CONST_MKSA_ELECTRON_CHARGE));
- rb_define_const(module, "GAUSS", rb_float_new(GSL_CONST_MKSA_GAUSS));
- rb_define_const(module, "STILB", rb_float_new(GSL_CONST_MKSA_STILB));
- rb_define_const(module, "LUMEN", rb_float_new(GSL_CONST_MKSA_LUMEN));
- rb_define_const(module, "LUX", rb_float_new(GSL_CONST_MKSA_LUX));
- rb_define_const(module, "PHOT", rb_float_new(GSL_CONST_MKSA_PHOT));
- rb_define_const(module, "FOOTCANDLE", rb_float_new(GSL_CONST_MKSA_FOOTCANDLE));
- rb_define_const(module, "LAMBERT", rb_float_new(GSL_CONST_MKSA_LAMBERT));
- rb_define_const(module, "CURIE", rb_float_new(GSL_CONST_MKSA_CURIE));
- rb_define_const(module, "ROENTGEN", rb_float_new(GSL_CONST_MKSA_ROENTGEN));
- rb_define_const(module, "RAD", rb_float_new(GSL_CONST_MKSA_RAD));
- rb_define_const(module, "SOLAR_MASS", rb_float_new(GSL_CONST_MKSA_SOLAR_MASS));
-
- rb_define_const(module, "BOLTZMANN", rb_float_new(GSL_CONST_MKSA_BOLTZMANN));
- rb_define_const(module, "MOLAR_GAS", rb_float_new(GSL_CONST_MKSA_MOLAR_GAS));
-
- rb_define_const(module, "BOHR_RADIUS", rb_float_new(GSL_CONST_MKSA_BOHR_RADIUS));
- rb_define_const(module, "NEWTON", rb_float_new(GSL_CONST_MKSA_NEWTON));
- rb_define_const(module, "DYNE", rb_float_new(GSL_CONST_MKSA_DYNE));
- rb_define_const(module, "JOULE", rb_float_new(GSL_CONST_MKSA_JOULE));
- rb_define_const(module, "ERG", rb_float_new(GSL_CONST_MKSA_ERG));
-
-#ifdef GSL_1_4_9_LATER
- rb_define_const(module, "STEFAN_BOLTZMANN_CONSTANT",
- rb_float_new(GSL_CONST_MKSA_STEFAN_BOLTZMANN_CONSTANT));
- rb_define_const(module, "THOMSON_CROSS_SECTION",
- rb_float_new(GSL_CONST_MKSA_THOMSON_CROSS_SECTION));
-#endif
-
-
-#ifdef GSL_1_8_LATER
- rb_define_const(module, "DEBYE", rb_float_new(GSL_CONST_MKSA_DEBYE));
-#endif
-
-}
-
-
-static void rb_gsl_const_cgs(VALUE module)
-{
- rb_define_const(module, "SPEED_OF_LIGHT",
- rb_float_new(GSL_CONST_CGSM_SPEED_OF_LIGHT));
- rb_define_const(module, "GRAVITATIONAL_CONSTANT",
- rb_float_new(GSL_CONST_CGSM_GRAVITATIONAL_CONSTANT));
- rb_define_const(module, "PLANCKS_CONSTANT_H",
- rb_float_new(GSL_CONST_CGSM_PLANCKS_CONSTANT_H));
- rb_define_const(module, "PLANCKS_CONSTANT_HBAR",
- rb_float_new(GSL_CONST_CGSM_PLANCKS_CONSTANT_HBAR));
- rb_define_const(module, "ASTRONOMICAL_UNIT",
- rb_float_new(GSL_CONST_CGSM_ASTRONOMICAL_UNIT));
- rb_define_const(module, "LIGHT_YEAR",
- rb_float_new(GSL_CONST_CGSM_LIGHT_YEAR));
- rb_define_const(module, "PARSEC",
- rb_float_new(GSL_CONST_CGSM_PARSEC));
- rb_define_const(module, "GRAV_ACCEL",
- rb_float_new(GSL_CONST_CGSM_GRAV_ACCEL));
- rb_define_const(module, "ELECTRON_VOLT",
- rb_float_new(GSL_CONST_CGSM_ELECTRON_VOLT));
- rb_define_const(module, "MASS_ELECTRON",
- rb_float_new(GSL_CONST_CGSM_MASS_ELECTRON));
- rb_define_const(module, "MASS_MUON", rb_float_new(GSL_CONST_CGSM_MASS_MUON));
- rb_define_const(module, "MASS_PROTON", rb_float_new(GSL_CONST_CGSM_MASS_PROTON));
- rb_define_const(module, "MASS_NEUTRON", rb_float_new(GSL_CONST_CGSM_MASS_NEUTRON));
- rb_define_const(module, "RYDBERG", rb_float_new(GSL_CONST_CGSM_RYDBERG));
-
- rb_define_const(module, "BOHR_MAGNETON",
- rb_float_new(GSL_CONST_CGSM_BOHR_MAGNETON));
-
- rb_define_const(module, "NUCLEAR_MAGNETON",
- rb_float_new(GSL_CONST_CGSM_NUCLEAR_MAGNETON));
- rb_define_const(module, "ELECTRON_MAGNETIC_MOMENT",
- rb_float_new(GSL_CONST_CGSM_ELECTRON_MAGNETIC_MOMENT));
- rb_define_const(module, "PROTON_MAGNETIC_MOMENT",
- rb_float_new(GSL_CONST_CGSM_PROTON_MAGNETIC_MOMENT));
- rb_define_const(module, "STANDARD_GAS_VOLUME",
- rb_float_new(GSL_CONST_CGSM_STANDARD_GAS_VOLUME));
-
- rb_define_const(module, "MINUTE", rb_float_new(GSL_CONST_CGSM_MINUTE));
- rb_define_const(module, "HOUR", rb_float_new(GSL_CONST_CGSM_HOUR));
- rb_define_const(module, "DAY", rb_float_new(GSL_CONST_CGSM_DAY));
- rb_define_const(module, "WEEK", rb_float_new(GSL_CONST_CGSM_WEEK));
- rb_define_const(module, "INCH", rb_float_new(GSL_CONST_CGSM_INCH));
- rb_define_const(module, "FOOT", rb_float_new(GSL_CONST_CGSM_FOOT));
- rb_define_const(module, "YARD", rb_float_new(GSL_CONST_CGSM_YARD));
- rb_define_const(module, "MILE", rb_float_new(GSL_CONST_CGSM_MILE));
- rb_define_const(module, "NAUTICAL_MILE",
- rb_float_new(GSL_CONST_CGSM_NAUTICAL_MILE));
- rb_define_const(module, "FATHOM", rb_float_new(GSL_CONST_CGSM_FATHOM));
- rb_define_const(module, "MIL", rb_float_new(GSL_CONST_CGSM_MIL));
- rb_define_const(module, "POINT", rb_float_new(GSL_CONST_CGSM_POINT));
- rb_define_const(module, "TEXPOINT", rb_float_new(GSL_CONST_CGSM_TEXPOINT));
- rb_define_const(module, "MICRON", rb_float_new(GSL_CONST_CGSM_MICRON));
- rb_define_const(module, "ANGSTROM", rb_float_new(GSL_CONST_CGSM_ANGSTROM));
- rb_define_const(module, "HECTARE", rb_float_new(GSL_CONST_CGSM_HECTARE));
- rb_define_const(module, "ACRE", rb_float_new(GSL_CONST_CGSM_ACRE));
- rb_define_const(module, "BARN", rb_float_new(GSL_CONST_CGSM_BARN));
- rb_define_const(module, "LITER", rb_float_new(GSL_CONST_CGSM_LITER));
- rb_define_const(module, "US_GALLON", rb_float_new(GSL_CONST_CGSM_US_GALLON));
- rb_define_const(module, "QUART", rb_float_new(GSL_CONST_CGSM_QUART));
- rb_define_const(module, "PINT", rb_float_new(GSL_CONST_CGSM_PINT));
- rb_define_const(module, "CUP", rb_float_new(GSL_CONST_CGSM_CUP));
- rb_define_const(module, "FLUID_OUNCE", rb_float_new(GSL_CONST_CGSM_FLUID_OUNCE));
- rb_define_const(module, "TABLESPOON", rb_float_new(GSL_CONST_CGSM_TABLESPOON));
- rb_define_const(module, "CANADIAN_GALLON",
- rb_float_new(GSL_CONST_CGSM_CANADIAN_GALLON));
-
- rb_define_const(module, "UK_GALLON", rb_float_new(GSL_CONST_CGSM_UK_GALLON));
- rb_define_const(module, "KILOMETERS_PER_HOUR",
- rb_float_new(GSL_CONST_CGSM_MILES_PER_HOUR));
- rb_define_const(module, "MILES_PER_HOUR",
- rb_float_new(GSL_CONST_CGSM_KILOMETERS_PER_HOUR));
- rb_define_const(module, "KNOT", rb_float_new(GSL_CONST_CGSM_KNOT));
- rb_define_const(module, "POUND_MASS", rb_float_new(GSL_CONST_CGSM_POUND_MASS));
- rb_define_const(module, "POUND_OUNCE", rb_float_new(GSL_CONST_CGSM_OUNCE_MASS));
- rb_define_const(module, "POUND_TON", rb_float_new(GSL_CONST_CGSM_TON));
- rb_define_const(module, "POUND_METRIC_TON",
- rb_float_new(GSL_CONST_CGSM_METRIC_TON));
- rb_define_const(module, "POUND_UK_TON", rb_float_new(GSL_CONST_CGSM_UK_TON));
- rb_define_const(module, "POUND_TROY_OUNCE",
- rb_float_new(GSL_CONST_CGSM_TROY_OUNCE));
- rb_define_const(module, "CARAT", rb_float_new(GSL_CONST_CGSM_CARAT));
- rb_define_const(module, "UNIFIED_ATOMIC_MASS",
- rb_float_new(GSL_CONST_CGSM_UNIFIED_ATOMIC_MASS));
- rb_define_const(module, "GRAM_FORCE", rb_float_new(GSL_CONST_CGSM_GRAM_FORCE));
- rb_define_const(module, "POUND_FORCE", rb_float_new(GSL_CONST_CGSM_POUND_FORCE));
- rb_define_const(module, "KILOPOUND_FORCE",
- rb_float_new(GSL_CONST_CGSM_KILOPOUND_FORCE));
- rb_define_const(module, "POUNDAL", rb_float_new(GSL_CONST_CGSM_POUNDAL));
- rb_define_const(module, "CALORIE", rb_float_new(GSL_CONST_CGSM_CALORIE));
- rb_define_const(module, "BTU", rb_float_new(GSL_CONST_CGSM_BTU));
- rb_define_const(module, "THERM", rb_float_new(GSL_CONST_CGSM_THERM));
- rb_define_const(module, "HORSEPOWER", rb_float_new(GSL_CONST_CGSM_HORSEPOWER));
- rb_define_const(module, "BAR", rb_float_new(GSL_CONST_CGSM_BAR));
- rb_define_const(module, "STD_ATMOSPHERE",
- rb_float_new(GSL_CONST_CGSM_STD_ATMOSPHERE));
- rb_define_const(module, "TORR", rb_float_new(GSL_CONST_CGSM_TORR));
- rb_define_const(module, "METER_OF_MERCURY",
- rb_float_new(GSL_CONST_CGSM_METER_OF_MERCURY));
- rb_define_const(module, "INCH_OF_MERCURY",
- rb_float_new(GSL_CONST_CGSM_INCH_OF_MERCURY));
- rb_define_const(module, "INCH_OF_WATER",
- rb_float_new(GSL_CONST_CGSM_INCH_OF_WATER));
- rb_define_const(module, "PSI", rb_float_new(GSL_CONST_CGSM_PSI));
- rb_define_const(module, "POISE", rb_float_new(GSL_CONST_CGSM_POISE));
- rb_define_const(module, "STOKES", rb_float_new(GSL_CONST_CGSM_STOKES));
- rb_define_const(module, "FARADAY", rb_float_new(GSL_CONST_CGSM_FARADAY));
- rb_define_const(module, "ELECTRON_CHARGE",
- rb_float_new(GSL_CONST_CGSM_ELECTRON_CHARGE));
- rb_define_const(module, "ELECTRON_CHARGE_ESU",
- rb_float_new(GSL_CONST_CGSM_ELECTRON_CHARGE*GSL_CONST_CGSM_SPEED_OF_LIGHT));
-#ifndef GSL_1_13_LATER
- rb_define_const(module, "GAUSS", rb_float_new(GSL_CONST_CGSM_GAUSS));
-#endif
- rb_define_const(module, "STILB", rb_float_new(GSL_CONST_CGSM_STILB));
- rb_define_const(module, "LUMEN", rb_float_new(GSL_CONST_CGSM_LUMEN));
- rb_define_const(module, "LUX", rb_float_new(GSL_CONST_CGSM_LUX));
- rb_define_const(module, "PHOT", rb_float_new(GSL_CONST_CGSM_PHOT));
- rb_define_const(module, "FOOTCANDLE", rb_float_new(GSL_CONST_CGSM_FOOTCANDLE));
- rb_define_const(module, "LAMBERT", rb_float_new(GSL_CONST_CGSM_LAMBERT));
- rb_define_const(module, "CURIE", rb_float_new(GSL_CONST_CGSM_CURIE));
- rb_define_const(module, "ROENTGEN", rb_float_new(GSL_CONST_CGSM_ROENTGEN));
- rb_define_const(module, "RAD", rb_float_new(GSL_CONST_CGSM_RAD));
- rb_define_const(module, "SOLAR_MASS", rb_float_new(GSL_CONST_CGSM_SOLAR_MASS));
-
- rb_define_const(module, "BOLTZMANN", rb_float_new(GSL_CONST_CGSM_BOLTZMANN));
- rb_define_const(module, "MOLAR_GAS", rb_float_new(GSL_CONST_CGSM_MOLAR_GAS));
-
- rb_define_const(module, "BOHR_RADIUS", rb_float_new(GSL_CONST_CGSM_BOHR_RADIUS));
- rb_define_const(module, "NEWTON", rb_float_new(GSL_CONST_CGSM_NEWTON));
- rb_define_const(module, "DYNE", rb_float_new(GSL_CONST_CGSM_DYNE));
- rb_define_const(module, "JOULE", rb_float_new(GSL_CONST_CGSM_JOULE));
- rb_define_const(module, "ERG", rb_float_new(GSL_CONST_CGSM_ERG));
-
-#ifdef GSL_1_4_9_LATER
- rb_define_const(module, "STEFAN_BOLTZMANN_CONSTANT",
- rb_float_new(GSL_CONST_CGSM_STEFAN_BOLTZMANN_CONSTANT));
- rb_define_const(module, "THOMSON_CROSS_SECTION",
- rb_float_new(GSL_CONST_CGSM_THOMSON_CROSS_SECTION));
-#endif
-}
-
-static void rb_gsl_const_num(VALUE module)
-{
- rb_define_const(module, "AVOGADRO", rb_float_new(GSL_CONST_NUM_AVOGADRO));
- rb_define_const(module, "FINE_STRUCTURE",
- rb_float_new(GSL_CONST_NUM_FINE_STRUCTURE));
- rb_define_const(module, "YOTTA", rb_float_new(GSL_CONST_NUM_YOTTA));
- rb_define_const(module, "ZETTA", rb_float_new(GSL_CONST_NUM_ZETTA));
- rb_define_const(module, "EXA", rb_float_new(GSL_CONST_NUM_EXA));
- rb_define_const(module, "PETA", rb_float_new(GSL_CONST_NUM_PETA));
- rb_define_const(module, "TERA", rb_float_new(GSL_CONST_NUM_TERA));
- rb_define_const(module, "GIGA", rb_float_new(GSL_CONST_NUM_GIGA));
- rb_define_const(module, "MEGA", rb_float_new(GSL_CONST_NUM_MEGA));
- rb_define_const(module, "KILO", rb_float_new(GSL_CONST_NUM_KILO));
- rb_define_const(module, "MILLI", rb_float_new(GSL_CONST_NUM_MILLI));
- rb_define_const(module, "MICRO", rb_float_new(GSL_CONST_NUM_MICRO));
- rb_define_const(module, "NANO", rb_float_new(GSL_CONST_NUM_NANO));
- rb_define_const(module, "PICO", rb_float_new(GSL_CONST_NUM_PICO));
- rb_define_const(module, "FEMTO", rb_float_new(GSL_CONST_NUM_FEMTO));
- rb_define_const(module, "ATTO", rb_float_new(GSL_CONST_NUM_ATTO));
- rb_define_const(module, "ZEPTO", rb_float_new(GSL_CONST_NUM_ZEPTO));
- rb_define_const(module, "YOCTO", rb_float_new(GSL_CONST_NUM_YOCTO));
-}
-
-void Init_gsl_const(VALUE module)
-{
- VALUE mgsl_const;
- VALUE mgsl_const_mks, mgsl_const_cgs, mgsl_const_num;
-
- mgsl_const = rb_define_module_under(module, "CONST");
- mgsl_const_mks = rb_define_module_under(mgsl_const, "MKSA");
- rb_gsl_const_mks(mgsl_const_mks);
- mgsl_const_cgs = rb_define_module_under(mgsl_const, "CGSM");
- rb_gsl_const_cgs(mgsl_const_cgs);
- mgsl_const_num = rb_define_module_under(mgsl_const, "NUM");
- rb_gsl_const_num(mgsl_const_num);
- Init_gsl_const_additional(mgsl_const_mks, mgsl_const_cgs, mgsl_const_num);
-}
-#endif
diff --git a/ext/gsl/cqp.c b/ext/gsl/cqp.c
deleted file mode 100644
index 5cc0176..0000000
--- a/ext/gsl/cqp.c
+++ /dev/null
@@ -1,283 +0,0 @@
-#ifdef HAVE_GSL_GSL_CQP_H
-
-#include "include/rb_gsl.h"
-#include "gsl/gsl_cqp.h"
-
-static const gsl_cqpminimizer_type* type_by_string(VALUE t);
-static const gsl_cqpminimizer_type* get_type(VALUE t)
-{
-
- switch (TYPE(t)) {
- case T_STRING:
- return type_by_string(t);
- break;
- default:
- rb_raise(rb_eTypeError, "Wrong argument type %s.", rb_class2name(CLASS_OF(t)));
- }
-}
-
-static const gsl_cqpminimizer_type* type_by_string(VALUE t)
-{
- char *name;
- name = STR2CSTR(t);
- if (strcmp(name, "mg_pdip") == 0) {
- return gsl_cqpminimizer_mg_pdip;
- } else {
- rb_raise(rb_eRuntimeError, "Unknown minimizer type %s.", name);
- }
- return NULL; /* never reach here */
-}
-
-static VALUE rb_cqpminimizer_alloc(VALUE klass, VALUE t, VALUE n, VALUE me, VALUE mi)
-{
- gsl_cqpminimizer *m;
- m = gsl_cqpminimizer_alloc(get_type(t), (size_t) FIX2INT(n), (size_t) FIX2INT(me), (size_t) FIX2INT(mi));
- return Data_Wrap_Struct(klass, 0, gsl_cqpminimizer_free, m);
-}
-
-static VALUE rb_cqpminimizer_set(VALUE obj, VALUE data)
-{
- gsl_cqpminimizer *m;
- gsl_cqp_data *d;
- Data_Get_Struct(obj, gsl_cqpminimizer, m);
- Data_Get_Struct(data, gsl_cqp_data, d);
- gsl_cqpminimizer_set(m, d);
- return Qtrue;
-}
-
-static VALUE rb_cqpminimizer_name(VALUE obj)
-{
- gsl_cqpminimizer *m;
- Data_Get_Struct(obj, gsl_cqpminimizer, m);
- return rb_str_new2(gsl_cqpminimizer_name(m));
-}
-
-static VALUE rb_cqpminimizer_iterate(VALUE obj)
-{
- gsl_cqpminimizer *m;
- Data_Get_Struct(obj, gsl_cqpminimizer, m);
- return INT2FIX(gsl_cqpminimizer_iterate(m));
-}
-
-static VALUE rb_cqpminimizer_x(VALUE obj)
-{
- gsl_cqpminimizer *m;
- Data_Get_Struct(obj, gsl_cqpminimizer, m);
- return Data_Wrap_Struct(cgsl_vector_view, 0, NULL, gsl_cqpminimizer_x(m));
-}
-
-static VALUE rb_cqpminimizer_lm_eq(VALUE obj)
-{
- gsl_cqpminimizer *m;
- Data_Get_Struct(obj, gsl_cqpminimizer, m);
- return Data_Wrap_Struct(cgsl_vector_view, 0, NULL, gsl_cqpminimizer_lm_eq(m));
-}
-static VALUE rb_cqpminimizer_lm_ineq(VALUE obj)
-{
- gsl_cqpminimizer *m;
- Data_Get_Struct(obj, gsl_cqpminimizer, m);
- return Data_Wrap_Struct(cgsl_vector_view, 0, NULL, gsl_cqpminimizer_lm_ineq(m));
-}
-static VALUE rb_cqpminimizer_f(VALUE obj)
-{
- gsl_cqpminimizer *m;
- Data_Get_Struct(obj, gsl_cqpminimizer, m);
- return rb_float_new(gsl_cqpminimizer_f(m));
-}
-static VALUE rb_cqpminimizer_gap(VALUE obj)
-{
- gsl_cqpminimizer *m;
- Data_Get_Struct(obj, gsl_cqpminimizer, m);
- return rb_float_new(gsl_cqpminimizer_gap(m));
-}
-static VALUE rb_cqpminimizer_residuals_norm(VALUE obj)
-{
- gsl_cqpminimizer *m;
- Data_Get_Struct(obj, gsl_cqpminimizer, m);
- return rb_float_new(gsl_cqpminimizer_residuals_norm(m));
-}
-/*
-static VALUE rb_cqpminimizer_minimum(VALUE obj)
-{
- gsl_cqpminimizer *m;
- Data_Get_Struct(obj, gsl_cqpminimizer, m);
- return rb_float_new(gsl_cqpminimizer_minimum(m));
-}
-*/
-static VALUE rb_cqpminimizer_test_convergence(VALUE obj, VALUE g, VALUE r)
-{
- gsl_cqpminimizer *m;
- Data_Get_Struct(obj, gsl_cqpminimizer, m);
- return INT2FIX(gsl_cqpminimizer_test_convergence(m, NUM2DBL(g), NUM2DBL(r)));
-}
-static VALUE rb_cqpminimizer_test_infeasibility(VALUE obj, VALUE e)
-{
- gsl_cqpminimizer *m;
- Data_Get_Struct(obj, gsl_cqpminimizer, m);
- return INT2FIX(gsl_cqp_minimizer_test_infeasibility(m, NUM2DBL(e)));
-}
-
-static VALUE rb_cqp_data_alloc(VALUE klass)
-{
- gsl_cqp_data *d;
- d = (gsl_cqp_data*) malloc(sizeof(gsl_cqp_data));
- return Data_Wrap_Struct(klass, 0, free, d);
-}
-
-static VALUE rb_cqp_data_Q(VALUE obj)
-{
- gsl_cqp_data *d;
- Data_Get_Struct(obj, gsl_cqp_data, d);
- return Data_Wrap_Struct(cgsl_matrix_view, 0, NULL, d->Q);
-}
-
-static VALUE rb_cqp_data_q(VALUE obj)
-{
- gsl_cqp_data *d;
- Data_Get_Struct(obj, gsl_cqp_data, d);
- return Data_Wrap_Struct(cgsl_vector_view, 0, NULL, d->q);
-}
-
-static VALUE rb_cqp_data_A(VALUE obj)
-{
- gsl_cqp_data *d;
- Data_Get_Struct(obj, gsl_cqp_data, d);
- return Data_Wrap_Struct(cgsl_matrix_view, 0, NULL, d->A);
-}
-
-static VALUE rb_cqp_data_b(VALUE obj)
-{
- gsl_cqp_data *d;
- Data_Get_Struct(obj, gsl_cqp_data, d);
- return Data_Wrap_Struct(cgsl_vector_view, 0, NULL, d->b);
-}
-
-static VALUE rb_cqp_data_C(VALUE obj)
-{
- gsl_cqp_data *d;
- Data_Get_Struct(obj, gsl_cqp_data, d);
- return Data_Wrap_Struct(cgsl_matrix_view, 0, NULL, d->C);
-}
-
-static VALUE rb_cqp_data_d(VALUE obj)
-{
- gsl_cqp_data *d;
- Data_Get_Struct(obj, gsl_cqp_data, d);
- return Data_Wrap_Struct(cgsl_vector_view, 0, NULL, d->d);
-}
-
-static VALUE rb_cqp_data_set_Q(VALUE obj, VALUE mm)
-{
- gsl_cqp_data *d;
- gsl_matrix *m;
- Data_Get_Struct(obj, gsl_cqp_data, d);
- CHECK_MATRIX(mm);
- Data_Get_Struct(mm, gsl_matrix, m);
- d->Q = m;
- return Qtrue;
-}
-
-static VALUE rb_cqp_data_set_q(VALUE obj, VALUE vv)
-{
- gsl_cqp_data *d;
- gsl_vector *v;
- Data_Get_Struct(obj, gsl_cqp_data, d);
- CHECK_VECTOR(vv);
- Data_Get_Struct(vv, gsl_vector, v);
- d->q = v;
- return Qtrue;
-}
-
-static VALUE rb_cqp_data_set_A(VALUE obj, VALUE mm)
-{
- gsl_cqp_data *d;
- gsl_matrix *m;
- Data_Get_Struct(obj, gsl_cqp_data, d);
- CHECK_MATRIX(mm);
- Data_Get_Struct(mm, gsl_matrix, m);
- d->A = m;
- return Qtrue;
-}
-
-static VALUE rb_cqp_data_set_b(VALUE obj, VALUE vv)
-{
- gsl_cqp_data *d;
- gsl_vector *v;
- Data_Get_Struct(obj, gsl_cqp_data, d);
- CHECK_VECTOR(vv);
- Data_Get_Struct(vv, gsl_vector, v);
- d->b = v;
- return Qtrue;
-}
-
-static VALUE rb_cqp_data_set_C(VALUE obj, VALUE mm)
-{
- gsl_cqp_data *d;
- gsl_matrix *m;
- Data_Get_Struct(obj, gsl_cqp_data, d);
- CHECK_MATRIX(mm);
- Data_Get_Struct(mm, gsl_matrix, m);
- d->C = m;
- return Qtrue;
-}
-
-static VALUE rb_cqp_data_set_d(VALUE obj, VALUE vv)
-{
- gsl_cqp_data *d;
- gsl_vector *v;
- Data_Get_Struct(obj, gsl_cqp_data, d);
- CHECK_VECTOR(vv);
- Data_Get_Struct(vv, gsl_vector, v);
- d->d = v;
- return Qtrue;
-}
-
-void Init_cqp(VALUE module)
-{
- VALUE mCQP, cMinimizer, cData;
-
- mCQP = rb_define_module_under(module, "CQP");
- cMinimizer = rb_define_class_under(mCQP, "Minimizer", cGSL_Object);
- cData = rb_define_class_under(mCQP, "Data", cGSL_Object);
-
- rb_define_singleton_method(cMinimizer, "alloc", rb_cqpminimizer_alloc, 4);
-
- rb_define_method(cMinimizer, "set", rb_cqpminimizer_set, 1);
- rb_define_method(cMinimizer, "name", rb_cqpminimizer_name, 0);
- rb_define_method(cMinimizer, "iterate", rb_cqpminimizer_iterate, 0);
- rb_define_method(cMinimizer, "x", rb_cqpminimizer_x, 0);
- rb_define_method(cMinimizer, "lm_eq", rb_cqpminimizer_lm_eq, 0);
- rb_define_method(cMinimizer, "lm_ineq", rb_cqpminimizer_lm_ineq, 0);
- rb_define_method(cMinimizer, "f", rb_cqpminimizer_f, 0);
- rb_define_method(cMinimizer, "gap", rb_cqpminimizer_gap, 0);
- rb_define_method(cMinimizer, "residuals_norm", rb_cqpminimizer_residuals_norm, 0);
-/* rb_define_method(cMinimizer, "minimum", rb_cqpminimizer_minimum, 0); */
- rb_define_method(cMinimizer, "test_convergence", rb_cqpminimizer_test_convergence, 2);
- rb_define_method(cMinimizer, "test_infeasibility", rb_cqpminimizer_test_infeasibility, 1);
-
- /*****/
- rb_define_singleton_method(cData, "alloc", rb_cqp_data_alloc, 0);
-
- rb_define_method(cData, "Q", rb_cqp_data_Q, 0);
- rb_define_method(cData, "q", rb_cqp_data_q, 0);
- rb_define_method(cData, "A", rb_cqp_data_A, 0);
- rb_define_method(cData, "b", rb_cqp_data_b, 0);
- rb_define_method(cData, "C", rb_cqp_data_C, 0);
- rb_define_method(cData, "d", rb_cqp_data_d, 0);
-
- rb_define_method(cData, "set_Q", rb_cqp_data_set_Q, 1);
- rb_define_method(cData, "set_q", rb_cqp_data_set_q, 1);
- rb_define_method(cData, "set_A", rb_cqp_data_set_A, 1);
- rb_define_method(cData, "set_b", rb_cqp_data_set_b, 1);
- rb_define_method(cData, "set_C", rb_cqp_data_set_C, 1);
- rb_define_method(cData, "set_d", rb_cqp_data_set_d, 1);
- rb_define_alias(cData, "Q=", "set_Q");
- rb_define_alias(cData, "q=", "set_q");
- rb_define_alias(cData, "A=", "set_A");
- rb_define_alias(cData, "b=", "set_b");
- rb_define_alias(cData, "C=", "set_C");
- rb_define_alias(cData, "d=", "set_d");
-}
-
-#endif
-
diff --git a/ext/gsl/fcmp.c b/ext/gsl/fcmp.c
deleted file mode 100644
index f061147..0000000
--- a/ext/gsl/fcmp.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* sys/gsl_compare.c
- *
- * Copyright (C) 2002 Gert Van den Eynde
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * Based on fcmp 1.2.2 Copyright (c) 1998-2000 Theodore C. Belding
- * University of Michigan Center for the Study of Complex Systems
- * Ted.Belding at umich.edu
- *
- */
-
-#ifndef GSL_1_3_LATER
-
-#include <config.h>
-#include <gsl/gsl_sys.h>
-#include <math.h>
-
-int gsl_fcmp(const double x1, const double x2, const double epsilon)
-{
- int exponent;
- double delta, difference;
-
- /* Find exponent of largest absolute value */
-
- {
- double max = (fabs (x1) > fabs (x2)) ? x1 : x2;
-
- frexp (max, &exponent);
- }
-
- /* Form a neighborhood of size 2 * delta */
-
- delta = ldexp (epsilon, exponent);
-
- difference = x1 - x2;
-
- if (difference > delta) /* x1 > x2 */
- {
- return 1;
- }
- else if (difference < -delta) /* x1 < x2 */
- {
- return -1;
- }
- else /* -delta <= difference <= delta */
- {
- return 0; /* x1 ~=~ x2 */
- }
-}
-
-#endif
diff --git a/ext/gsl/fresnel.c b/ext/gsl/fresnel.c
deleted file mode 100644
index 352c538..0000000
--- a/ext/gsl/fresnel.c
+++ /dev/null
@@ -1,312 +0,0 @@
-/****************************************************************************
- * fresnel.c -
- * Calculation of Fresnel integrals by expansion to Chebyshev series
- * Expansions are taken from the book
- * Y.L. Luke. Mathematical functions and their approximations.
- * Moscow, "Mir", 1980. PP. 145-149 (Russian edition)
- ****************************************************************************
- */
-/*
- Modified for Ruby bindings
- 2006/Dec/24 Y. TSUNESADA
-*/
-#include <math.h>
-#include "include/rb_gsl.h"
-#include "include/rb_gsl_sf.h"
-
-static const double sqrt_pi_2 = 1.2533141373155002512078826424; /* sqrt(pi/2) */
-static const double sqrt_2_pi = 0.7978845608028653558798921199; /* sqrt(2/pi) */
-static const double _1_sqrt_2pi = 0.3989422804014326779399460599; /* 1/sqrt(2*pi) */
-static const double pi_2 = 1.5707963267948966192313216916; /* pi/2 */
-
-static double f_data_a[18] =
- {
- 0.76435138664186000189,
- -0.43135547547660179313,
- 0.43288199979726653054,
- -0.26973310338387111029,
- 0.08416045320876935378,
- -0.01546524484461381958,
- 0.00187855423439822018,
- -0.00016264977618887547,
- 0.00001057397656383260,
- -0.00000053609339889243,
- 0.00000002181658454933,
- -0.00000000072901621186,
- 0.00000000002037332546,
- -0.00000000000048344033,
- 0.00000000000000986533,
- -0.00000000000000017502,
- 0.00000000000000000272,
- -0.00000000000000000004
- };
-
-static double f_data_b[17] =
- {
- 0.63041404314570539241,
- -0.42344511405705333544,
- 0.37617172643343656625,
- -0.16249489154509567415,
- 0.03822255778633008694,
- -0.00564563477132190899,
- 0.00057454951976897367,
- -0.00004287071532102004,
- 0.00000245120749923299,
- -0.00000011098841840868,
- 0.00000000408249731696,
- -0.00000000012449830219,
- 0.00000000000320048425,
- -0.00000000000007032416,
- 0.00000000000000133638,
- -0.00000000000000002219,
- 0.00000000000000000032
- };
-
-static double fresnel_cos_0_8(double x)
-{
- double x_8 = x/8.0;
- double xx = 2.0*x_8*x_8 - 1.0;
-
- double t0 = 1.0;
- double t1 = xx;
- double sumC = f_data_a[0] + f_data_a[1]*t1;
- double t2;
- int n;
- for (n=2; n < 18; n++)
- {
- t2 = 2.0*xx*t1 - t0;
- sumC += f_data_a[n]*t2;
- t0 = t1; t1 = t2;
- }
- return _1_sqrt_2pi*sqrt(x)*sumC;
-}
-
-static double fresnel_sin_0_8(double x)
-{
- double x_8 = x/8.0;
- double xx = 2.0*x_8*x_8 - 1.0;
- double t0 = 1.;
- double t1 = xx;
- double ot1 = x_8;
- double ot2 = 2.0*x_8*t1 - ot1;
- double sumS = f_data_b[0]*ot1 + f_data_b[1]*ot2;
- int n;
- double t2;
- for (n=2; n < 17; n++)
- {
- t2 = 2.0*xx*t1 - t0;
- ot1 = ot2;
- ot2 = 2.0*x_8*t2 - ot1;
- sumS += f_data_b[n]*ot2;
- t0 = t1; t1 = t2;
- }
- return _1_sqrt_2pi*sqrt(x)*sumS;
-}
-
-static double f_data_e[41] =
- {
- 0.97462779093296822410,
- -0.02424701873969321371,
- 0.00103400906842977317,
- -0.00008052450246908016,
- 0.00000905962481966582,
- -0.00000131016996757743,
- 0.00000022770820391497,
- -0.00000004558623552026,
- 0.00000001021567537083,
- -0.00000000251114508133,
- 0.00000000066704761275,
- -0.00000000018931512852,
- 0.00000000005689898935,
- -0.00000000001798219359,
- 0.00000000000594162963,
- -0.00000000000204285065,
- 0.00000000000072797580,
- -0.00000000000026797428,
- 0.00000000000010160694,
- -0.00000000000003958559,
- 0.00000000000001581262,
- -0.00000000000000646411,
- 0.00000000000000269981,
- -0.00000000000000115038,
- 0.00000000000000049942,
- -0.00000000000000022064,
- 0.00000000000000009910,
- -0.00000000000000004520,
- 0.00000000000000002092,
- -0.00000000000000000982,
- 0.00000000000000000467,
- -0.00000000000000000225,
- 0.00000000000000000110,
- -0.00000000000000000054,
- 0.00000000000000000027,
- -0.00000000000000000014,
- 0.00000000000000000007,
- -0.00000000000000000004,
- 0.00000000000000000002,
- -0.00000000000000000001,
- 0.00000000000000000001
- };
-
-static double f_data_f[35] =
- {
- 0.99461545179407928910,
- -0.00524276766084297210,
- 0.00013325864229883909,
- -0.00000770856452642713,
- 0.00000070848077032045,
- -0.00000008812517411602,
- 0.00000001359784717148,
- -0.00000000246858295747,
- 0.00000000050925789921,
- -0.00000000011653400634,
- 0.00000000002906578309,
- -0.00000000000779847361,
- 0.00000000000222802542,
- -0.00000000000067239338,
- 0.00000000000021296411,
- -0.00000000000007041482,
- 0.00000000000002419805,
- -0.00000000000000861080,
- 0.00000000000000316287,
- -0.00000000000000119596,
- 0.00000000000000046444,
- -0.00000000000000018485,
- 0.00000000000000007527,
- -0.00000000000000003131,
- 0.00000000000000001328,
- -0.00000000000000000574,
- 0.00000000000000000252,
- -0.00000000000000000113,
- 0.00000000000000000051,
- -0.00000000000000000024,
- 0.00000000000000000011,
- -0.00000000000000000005,
- 0.00000000000000000002,
- -0.00000000000000000001,
- 0.00000000000000000001
- };
-
-static double fresnel_cos_8_inf(double x)
-{
- double xx = 128.0/(x*x) - 1.0; /* 2.0*(8/x)^2 - 1 */
- double t0 = 1.0;
- double t1 = xx;
- double sumP = f_data_e[0] + f_data_e[1]*t1;
- double sumQ = f_data_f[0] + f_data_f[1]*t1;
- double t2;
- int n;
- for(n = 2; n < 35; n++)
- {
- t2 = 2.0*xx*t1 - t0;
- sumP += f_data_e[n]*t2; /* sumP += f_data_e[n]*ChebyshevT(n,xx) */
- sumQ += f_data_f[n]*t2; /* sumQ += f_data_f[n]*ChebyshevT(n,xx) */
- t0 = t1; t1 = t2;
- }
- for(n = 35; n < 41; n++)
- {
- t2 = 2.0*xx*t1 - t0;
- sumP += f_data_e[n]*t2; /* sumP += f_data_e[n]*ChebyshevT(n,xx) */
- t0 = t1; t1 = t2;
- }
- return 0.5 - _1_sqrt_2pi*(0.5*sumP*cos(x)/x - sumQ*sin(x))/sqrt(x);
-}
-
-static double fresnel_sin_8_inf(double x)
-{
- double xx = 128.0/(x*x) - 1.0; /* 2.0*(8/x)^2 - 1 */
- double t0 = 1.0;
- double t1 = xx;
- double sumP = f_data_e[0] + f_data_e[1]*t1;
- double sumQ = f_data_f[0] + f_data_f[1]*t1;
- double t2;
- int n;
- for(n = 2; n < 35; n++)
- {
- t2 = 2.0*xx*t1 - t0;
- sumP += f_data_e[n]*t2; /* sumP += f_data_e[n]*ChebyshevT(n,xx) */
- sumQ += f_data_f[n]*t2; /* sumQ += f_data_f[n]*ChebyshevT(n,xx) */
- t0 = t1; t1 = t2;
- }
- for(n = 35; n < 41; n++)
- {
- t2 = 2.0*xx*t1 - t0;
- sumP += f_data_e[n]*t2; /* sumQ += f_data_f[n]*ChebyshevT(n,xx) */
- t0 = t1; t1 = t2;
- }
- return 0.5 - _1_sqrt_2pi*(0.5*sumP*sin(x)/x + sumQ*cos(x))/sqrt(x);
-}
-
-
-double fresnel_c(double x)
-{
- double xx = x*x*pi_2;
- double ret_val;
- if(xx<=8.0)
- ret_val = fresnel_cos_0_8(xx);
- else
- ret_val = fresnel_cos_8_inf(xx);
- return (x<0.0) ? -ret_val : ret_val;
-}
-
-double fresnel_s(double x)
-{
- double xx = x*x*pi_2;
- double ret_val;
- if(xx<=8.0)
- ret_val = fresnel_sin_0_8(xx);
- else
- ret_val = fresnel_sin_8_inf(xx);
- return (x<0.0) ? -ret_val : ret_val;
-}
-
-double fresnel_c1(double x)
-{
- return fresnel_c(x*sqrt_2_pi);
-}
-
-double fresnel_s1(double x)
-{
- return fresnel_s(x*sqrt_2_pi);
-}
-
-static VALUE rb_fresnel_c(VALUE obj, VALUE x)
-{
- return rb_gsl_sf_eval1(fresnel_c, x);
-}
-static VALUE rb_fresnel_s(VALUE obj, VALUE x)
-{
- return rb_gsl_sf_eval1(fresnel_s, x);
-}
-static VALUE rb_fresnel_c1(VALUE obj, VALUE x)
-{
- return rb_gsl_sf_eval1(fresnel_c1, x);
-}
-static VALUE rb_fresnel_s1(VALUE obj, VALUE x)
-{
- return rb_gsl_sf_eval1(fresnel_s1, x);
-}
-void Init_fresnel(VALUE module)
-{
- VALUE mfresnel;
- mfresnel = rb_define_module_under(module, "Fresnel");
- rb_define_module_function(module, "fresnel_c", rb_fresnel_c, 1);
- rb_define_module_function(module, "fresnel_s", rb_fresnel_s, 1);
- rb_define_module_function(module, "fresnel_c1", rb_fresnel_c1, 1);
- rb_define_module_function(module, "fresnel_s1", rb_fresnel_s1, 1);
- rb_define_module_function(mfresnel, "c", rb_fresnel_c, 1);
- rb_define_module_function(mfresnel, "s", rb_fresnel_s, 1);
- rb_define_module_function(mfresnel, "c1", rb_fresnel_c1, 1);
- rb_define_module_function(mfresnel, "s1", rb_fresnel_s1, 1);
-}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ext/gsl/jacobi.c b/ext/gsl/jacobi.c
deleted file mode 100644
index f4237be..0000000
--- a/ext/gsl/jacobi.c
+++ /dev/null
@@ -1,739 +0,0 @@
-#ifdef HAVE_JACOBI_H
-#include "include/rb_gsl.h"
-#include "jacobi.h"
-
-static VALUE jac_eval3_e(VALUE x, VALUE a, VALUE b,
- int (*f)(double, double, double, gsl_sf_result*))
-{
- gsl_sf_result *result;
- VALUE obj;
- obj = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, result);
- (*f)(NUM2DBL(x), NUM2DBL(a), NUM2DBL(b), result);
- return obj;
-}
-
-static VALUE jac_eval3(VALUE xx, VALUE aa, VALUE bb, double (*f)(double, double, double))
-{
- gsl_vector *x, *y;
- double a, b;
- size_t i, len;
- VALUE ary;
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
- a = NUM2DBL(aa);
- b = NUM2DBL(bb);
- if (VECTOR_P(xx)) {
- Data_Get_Struct(xx, gsl_vector, x);
- y = gsl_vector_alloc(x->size);
- for (i = 0; i < x->size; i++) {
- gsl_vector_set(y, i, (*f)(gsl_vector_get(x, i), a, b));
- }
- return Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(xx)), 0, gsl_vector_free, y);
- } else if (TYPE(xx) == T_ARRAY) {
- // len = RARRAY(xx)->len;
- len = RARRAY_LEN(xx);
- ary = rb_ary_new2(len);
- for (i = 0; i < len; i++) {
- rb_ary_store(ary, i, rb_float_new((*f)(NUM2DBL(rb_ary_entry(xx, i)), a, b)));
- }
- return ary;
-#ifdef HAVE_NARRAY_H
- } else if (NA_IsNArray(xx)) {
- GetNArray(xx, na);
- len = na->total;
- ptr1 = (double*) na->ptr;
- ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(xx));
- ptr2 = NA_PTR_TYPE(ary, double*);
- for (i = 0; i < len; i++) {
- ptr2[i] = (*f)(ptr1[i], a, b);
- }
- return ary;
-#endif
- } else {
- return rb_float_new((*f)(NUM2DBL(xx), a, b));
- }
-}
-
-static VALUE rb_jac_jacobi_eval(int argc, VALUE *argv,
- double (*f)(double, int, double, double),
- int (*f2)(int, const double*, int, double*, double, double, double*))
-{
- gsl_vector *x, *ws, *y;
- double a, b;
- VALUE ary;
- size_t len, i;
- int n, flag = 0;
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
- if (argc < 4) rb_raise(rb_eArgError, "Too few arguments (%d for >= 4)", argc);
- if (VECTOR_P(argv[0])) {
- Data_Get_Struct(argv[0], gsl_vector, x);
- y = gsl_vector_alloc(x->size);
- ary = Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(x)), 0, gsl_vector_free, y);
- switch (argc) {
- case 4:
- ws = gsl_vector_alloc(2*x->size);
- flag = 1;
- break;
- case 5:
- CHECK_VECTOR(argv[4]);
- Data_Get_Struct(argv[4], gsl_vector, ws);
- break;
- default:
- rb_raise(rb_eArgError, "Too many arguments (%d for 4 or 5)", argc);
- }
- (*f2)(x->size, x->data, FIX2INT(argv[1]), y->data, NUM2DBL(argv[2]), NUM2DBL(argv[3]),
- ws->data);
- if (flag == 1) gsl_vector_free(ws);
- return ary;
- } else if (TYPE(argv[0]) == T_ARRAY) {
- n = FIX2INT(argv[1]);
- a = NUM2DBL(argv[2]);
- b = NUM2DBL(argv[3]);
- // len = RARRAY(argv[0])->len;
- len = RARRAY_LEN(argv[0]);
- ary = rb_ary_new2(len);
- for (i = 0; i < len; i++) {
- rb_ary_store(ary, i, rb_float_new((*f)(NUM2DBL(rb_ary_entry(argv[0], i)), n, a, b)));
- }
- return ary;
-#ifdef HAVE_NARRAY_H
- } else if (NA_IsNArray(argv[0])) {
- GetNArray(argv[0], na);
- len = na->total;
- ptr1 = (double*) na->ptr;
- ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(argv[0]));
- ptr2 = NA_PTR_TYPE(ary, double*);
- n = FIX2INT(argv[1]);
- a = NUM2DBL(argv[2]);
- b = NUM2DBL(argv[3]);
- ws = gsl_vector_alloc(len);
- (*f2)(len, ptr1, n, ptr2, a, b, ws->data);
- gsl_vector_free(ws);
- return ary;
-#endif
- } else {
- return rb_float_new((*f)(NUM2DBL(argv[0]), FIX2INT(argv[1]), NUM2DBL(argv[2]), NUM2DBL(argv[3])));
- }
-
-}
-static VALUE rb_jac_jacobi_P0_e(VALUE module, VALUE x, VALUE a, VALUE b)
-{
- return jac_eval3_e(x, a, b, jac_jacobi_P0_e);
-}
-
-static VALUE rb_jac_jacobi_P0(VALUE module, VALUE x, VALUE a, VALUE b)
-{
- return jac_eval3(x, a, b, jac_jacobi_P0);
-}
-
-static VALUE rb_jac_jacobi_P1_e(VALUE module, VALUE x, VALUE a, VALUE b)
-{
- return jac_eval3_e(x, a, b, jac_jacobi_P1_e);
-}
-
-static VALUE rb_jac_jacobi_P1(VALUE module, VALUE x, VALUE a, VALUE b)
-{
- return jac_eval3(x, a, b, jac_jacobi_P1);
-}
-
-
-static VALUE rb_jac_jacobi(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_jacobi_eval(argc, argv, jac_jacobi, jac_jacobi_array);
-}
-
-static VALUE rb_jac_djacobi_P0_e(VALUE module, VALUE x, VALUE a, VALUE b)
-{
- return jac_eval3_e(x, a, b, jac_djacobi_P0_e);
-}
-
-static VALUE rb_jac_djacobi_P0(VALUE module, VALUE x, VALUE a, VALUE b)
-{
- return jac_eval3(x, a, b, jac_djacobi_P0);
-}
-
-static VALUE rb_jac_djacobi_P1_e(VALUE module, VALUE x, VALUE a, VALUE b)
-{
- return jac_eval3_e(x, a, b, jac_djacobi_P1_e);
-}
-
-static VALUE rb_jac_djacobi_P1(VALUE module, VALUE x, VALUE a, VALUE b)
-{
- return jac_eval3(x, a, b, jac_djacobi_P1);
-}
-
-static VALUE rb_jac_djacobi(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_jacobi_eval(argc, argv, jac_djacobi, jac_djacobi_array);
-}
-
-static VALUE rb_jac_zeros_eval(int argc, VALUE *argv, VALUE module,
- int (*f)(double*, int, double, double))
-{
- gsl_vector *x;
- int m, status;
- double a, b;
- VALUE xx;
- switch (argc) {
- case 3:
- if (FIXNUM_P(argv[0])) {
- m = FIX2INT(argv[0]);
- a = NUM2DBL(argv[1]);
- b = NUM2DBL(argv[2]);
- x = gsl_vector_alloc(m);
- xx = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, x);
- } else if (VECTOR_P(argv[0])) {
- Data_Get_Struct(argv[0], gsl_vector, x);
- m = x->size;
- a = NUM2DBL(argv[1]);
- b = NUM2DBL(argv[2]);
- xx = argv[0];
- } else {
- rb_raise(rb_eTypeError, "Wrong argument type %s (Fixnum or GSL::Vector expected)",
- rb_class2name(CLASS_OF(argv[0])));
- }
- break;
- case 4:
- CHECK_VECTOR(argv[0]);
- Data_Get_Struct(argv[0], gsl_vector, x);
- m = FIX2INT(argv[1]);
- a = NUM2DBL(argv[2]);
- b = NUM2DBL(argv[3]);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments (%d for 3 or 4)", argc);
- }
- status = (*f)(x->data, m, a, b);
- if (status != GSL_SUCCESS)
- rb_raise(rb_eRuntimeError, "Something wrong. (error code %d)", status);
- return xx;
-}
-
-static VALUE rb_jac_jacobi_zeros(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_zeros_eval(argc, argv, module, jac_jacobi_zeros);
-}
-
-static void jac_define_const(VALUE module)
-{
- rb_define_const(module, "GJ", INT2FIX(JAC_GJ));
- rb_define_const(module, "GLJ", INT2FIX(JAC_GLJ));
- rb_define_const(module, "GRJM", INT2FIX(JAC_GRJM));
- rb_define_const(module, "GRJP", INT2FIX(JAC_GRJP));
-}
-
-static VALUE rb_jac_quadrature_alloc(VALUE klass, VALUE vQ)
-{
- jac_quadrature *q;
-
- q = jac_quadrature_alloc(FIX2INT(vQ));
-
- return Data_Wrap_Struct(klass, 0, jac_quadrature_free, q);
-}
-
-static VALUE rb_jac_quadrature_Q(VALUE obj)
-{
- jac_quadrature *q;
- Data_Get_Struct(obj, jac_quadrature, q);
- return INT2FIX(q->Q);
-}
-
-static VALUE rb_jac_quadrature_type(VALUE obj)
-{
- jac_quadrature *q;
- Data_Get_Struct(obj, jac_quadrature, q);
- return INT2FIX((int) q->type);
-}
-
-static VALUE rb_jac_quadrature_alpha(VALUE obj)
-{
- jac_quadrature *q;
- Data_Get_Struct(obj, jac_quadrature, q);
- return NUM2DBL(q->alpha);
-}
-
-static VALUE rb_jac_quadrature_beta(VALUE obj)
-{
- jac_quadrature *q;
- Data_Get_Struct(obj, jac_quadrature, q);
- return NUM2DBL(q->beta);
-}
-
-static VALUE rb_jac_quadrature_x(VALUE obj)
-{
- jac_quadrature *q;
- gsl_vector_view *v;
- Data_Get_Struct(obj, jac_quadrature, q);
- v = gsl_vector_view_alloc();
- v->vector.data = q->x;
- v->vector.size = q->Q;
- v->vector.stride = 1;
- return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
-}
-
-static VALUE rb_jac_quadrature_w(VALUE obj)
-{
- jac_quadrature *q;
- gsl_vector_view *v;
- Data_Get_Struct(obj, jac_quadrature, q);
- v = gsl_vector_view_alloc();
- v->vector.data = q->w;
- v->vector.size = q->Q;
- v->vector.stride = 1;
- return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
-}
-
-static VALUE rb_jac_quadrature_D(VALUE obj)
-{
- jac_quadrature *q;
- gsl_vector_view *v;
- Data_Get_Struct(obj, jac_quadrature, q);
- v = gsl_vector_view_alloc();
- v->vector.data = q->D;
- v->vector.size = q->Q;
- v->vector.stride = 1;
- return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
-}
-
-static VALUE rb_jac_quadrature_xp(VALUE obj)
-{
- jac_quadrature *q;
- gsl_vector_view *v;
- Data_Get_Struct(obj, jac_quadrature, q);
- v = gsl_vector_view_alloc();
- v->vector.data = q->w;
- v->vector.size = q->np;
- v->vector.stride = 1;
- return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
-}
-
-static VALUE rb_jac_interpmat_alloc(int argc, VALUE *argv, VALUE obj)
-{
- int err;
- jac_quadrature *q;
- gsl_vector *xp;
- int np;
- Data_Get_Struct(obj, jac_quadrature, q);
- switch (argc) {
- case 1:
- CHECK_VECTOR(argv[0]);
- Data_Get_Struct(argv[0], gsl_vector, xp);
- np = xp->size;
- break;
- case 2:
- CHECK_VECTOR(argv[1]);
- Data_Get_Struct(argv[1], gsl_vector, xp);
- np = FIX2INT(argv[0]);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc);
- }
- err = jac_interpmat_alloc(q, np, xp->data);
- return FIX2INT(err);
-}
-
-static VALUE rb_jac_interpmat_free(VALUE obj)
-{
- jac_quadrature *q;
- Data_Get_Struct(obj, jac_quadrature, q);
- jac_interpmat_free(q);
- return Qtrue;
-}
-
-static VALUE rb_jac_quadrature_zwd(int argc, VALUE *argv, VALUE obj)
-{
- jac_quadrature *q;
- gsl_vector *ws;
- int flag = 0, type, status;
- double a, b;
- Data_Get_Struct(obj, jac_quadrature, q);
- switch (argc) {
- case 3:
- type = FIX2INT(argv[0]);
- a = NUM2DBL(argv[1]);
- b = NUM2DBL(argv[2]);
- ws = gsl_vector_alloc(q->Q);
- flag = 1;
- break;
- case 4:
- type = FIX2INT(argv[0]);
- a = NUM2DBL(argv[1]);
- b = NUM2DBL(argv[2]);
- Data_Get_Struct(argv[3], gsl_vector, ws);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments (%d for 3 or 4)", argc);
- }
- status = jac_quadrature_zwd(q, type, a, b, ws->data);
- if (flag == 1) gsl_vector_free(ws);
- return INT2FIX(status);
-}
-
-static VALUE rb_jac_integrate(VALUE obj, VALUE ff)
-{
- jac_quadrature *q;
- gsl_vector *f;
- CHECK_VECTOR(ff);
- Data_Get_Struct(obj, jac_quadrature, q);
- Data_Get_Struct(ff, gsl_vector, f);
- return rb_float_new(jac_integrate(q, f->data));
-}
-
-static VALUE rb_jac_interpolate(int argc, VALUE *argv, VALUE obj)
-{
- jac_quadrature *q;
- gsl_vector *f, *fout;
- VALUE vfout;
- switch (argc) {
- case 1:
- CHECK_VECTOR(argv[0]);
- Data_Get_Struct(argv[0], gsl_vector, f);
- fout = gsl_vector_alloc(f->size);
- vfout = Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(argv[0])), 0, gsl_vector_free, fout);
- break;
- case 2:
- CHECK_VECTOR(argv[0]);
- Data_Get_Struct(argv[0], gsl_vector, f);
- CHECK_VECTOR(argv[1]);
- Data_Get_Struct(argv[1], gsl_vector, fout);
- vfout = argv[1];
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc);
- }
- Data_Get_Struct(obj, jac_quadrature, q);
- jac_interpolate(q, f->data, fout->data);
- return vfout;
-}
-
-static VALUE rb_jac_differentiate(int argc, VALUE *argv, VALUE obj)
-{
- jac_quadrature *q;
- gsl_vector *f, *fout;
- VALUE vfout;
- switch (argc) {
- case 1:
- CHECK_VECTOR(argv[0]);
- Data_Get_Struct(argv[0], gsl_vector, f);
- fout = gsl_vector_alloc(f->size);
- vfout = Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(argv[0])), 0, gsl_vector_free, fout);
- break;
- case 2:
- CHECK_VECTOR(argv[0]);
- Data_Get_Struct(argv[0], gsl_vector, f);
- CHECK_VECTOR(argv[1]);
- Data_Get_Struct(argv[1], gsl_vector, fout);
- vfout = argv[1];
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc);
- }
- Data_Get_Struct(obj, jac_quadrature, q);
- jac_differentiate(q, f->data, fout->data);
- return vfout;
-}
-
-/*****/
-static VALUE rb_jac_qeval(int argc, VALUE *argv,
- int (*f)(double*, double*, const int, double, double, double*))
-{
- gsl_vector *z, *D, *ws;
- int Q;
- int flag = 0, status;
- double alpha, beta;
- VALUE vD;
- if (argc < 3) rb_raise(rb_eArgError, "Too few arguments (%d for >= 3)", argc);
- CHECK_VECTOR(argv[0]);
- Data_Get_Struct(argv[0], gsl_vector, z);
- argc -= 1;
- argv += 1;
- if (VECTOR_P(argv[argc-1])) {
- Data_Get_Struct(argv[argc-1], gsl_vector, ws);
- argc -= 1;
- } else {
- ws = gsl_vector_alloc(z->size);
- flag = 1;
- }
- switch (argc) {
- case 2:
- Q = z->size;
- D = gsl_vector_alloc(Q*Q);
- alpha = NUM2DBL(argv[0]);
- beta = NUM2DBL(argv[1]);
- vD = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, D);
- break;
- case 4:
- Data_Get_Struct(argv[0], gsl_vector, D);
- vD = argv[0];
- Q = FIX2INT(argv[1]);
- alpha = NUM2DBL(argv[2]);
- beta = NUM2DBL(argv[3]);
- break;
- case 3:
- if (VECTOR_P(argv[0])) {
- Q = z->size;
- Data_Get_Struct(argv[0], gsl_vector, D);
- vD = argv[0];
- } else {
- Q = FIX2INT(argv[0]);
- D = gsl_vector_alloc(Q*Q);
- vD = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, D);
- }
- alpha = NUM2DBL(argv[1]);
- beta = NUM2DBL(argv[2]);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments.");
- }
- status = (*f)(z->data, D->data, Q, alpha, beta, ws->data);
- if (flag == 1) gsl_vector_free(ws);
- if (status != GSL_SUCCESS) rb_raise(rb_eRuntimeError, "Something wrong.");
- return vD;
-}
-
-static VALUE rb_jac_diffmat_gj(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_qeval(argc, argv, jac_diffmat_gj);
-}
-
-static VALUE rb_jac_diffmat_glj(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_qeval(argc, argv, jac_diffmat_glj);
-}
-
-static VALUE rb_jac_diffmat_grjm(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_qeval(argc, argv, jac_diffmat_grjm);
-}
-
-static VALUE rb_jac_diffmat_grjp(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_qeval(argc, argv, jac_diffmat_grjp);
-}
-
-static VALUE rb_jac_weights_gj(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_qeval(argc, argv, jac_weights_gj);
-}
-
-static VALUE rb_jac_weights_glj(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_qeval(argc, argv, jac_weights_glj);
-}
-
-static VALUE rb_jac_weights_grjm(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_qeval(argc, argv, jac_weights_grjm);
-}
-
-static VALUE rb_jac_weights_grjp(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_qeval(argc, argv, jac_weights_grjp);
-}
-
-static VALUE rb_jac_zeros_gj(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_zeros_eval(argc, argv, module, jac_zeros_gj);
-}
-static VALUE rb_jac_zeros_glj(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_zeros_eval(argc, argv, module, jac_zeros_glj);
-}
-static VALUE rb_jac_zeros_grjm(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_zeros_eval(argc, argv, module, jac_zeros_grjm);
-}
-static VALUE rb_jac_zeros_grjp(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_zeros_eval(argc, argv, module, jac_zeros_grjp);
-}
-
-static VALUE rb_jac_lagrange_eval(int argc, VALUE *argv,
- double (*f)(int, double, int, double*, double, double))
-{
- gsl_vector *z;
- int i, Q;
- double alpha, beta, zz;
-
- switch (argc) {
- case 5:
- i = FIX2INT(argv[0]);
- zz = NUM2DBL(argv[1]);
- CHECK_VECTOR(argv[2]);
- Data_Get_Struct(argv[2], gsl_vector, z);
- Q = z->size;
- alpha = NUM2DBL(argv[3]);
- beta = NUM2DBL(argv[4]);
- break;
- case 6:
- i = FIX2INT(argv[0]);
- zz = NUM2DBL(argv[1]);
- Q = FIX2INT(argv[2]);
- CHECK_VECTOR(argv[3]);
- Data_Get_Struct(argv[3], gsl_vector, z);
- alpha = NUM2DBL(argv[4]);
- beta = NUM2DBL(argv[5]);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments (%d for 5 or 6)", argc);
- }
- return rb_float_new((*f)(i, zz, Q, z->data, alpha, beta));
-}
-
-static VALUE rb_jac_lagrange_gj(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_lagrange_eval(argc, argv, jac_lagrange_gj);
-}
-static VALUE rb_jac_lagrange_glj(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_lagrange_eval(argc, argv, jac_lagrange_glj);
-}
-static VALUE rb_jac_lagrange_grjm(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_lagrange_eval(argc, argv, jac_lagrange_grjm);
-}
-
-static VALUE rb_jac_lagrange_grjp(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_lagrange_eval(argc, argv, jac_lagrange_grjp);
-}
-
-static VALUE rb_jac_interpmat_eval(int argc, VALUE *argv,
- int (*f) (double*, double*, int, double*, int, double, double))
-{
- gsl_vector *imat, *zp, *z;
- double alpha, beta;
- int np, Q, status;
- VALUE vimat;
-
- if (argc < 3) rb_raise(rb_eArgError, "Too few arguments (%d for >= 3)", argc);
-
- CHECK_VECTOR(argv[0]);
- if (VECTOR_P(argv[1])) {
- Data_Get_Struct(argv[0], gsl_vector, imat);
- Data_Get_Struct(argv[1], gsl_vector, zp);
- vimat = argv[0];
- if (FIXNUM_P(argv[2])) np = FIX2INT(argv[2]);
- argc -= 3;
- argv += 3;
- } else {
- Data_Get_Struct(argv[0], gsl_vector, zp);
- if (FIXNUM_P(argv[1])) np = FIX2INT(argv[1]);
- else np = zp->size;
- imat = gsl_vector_alloc(np);
- vimat = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, imat);
- argc -= 2;
- argv += 2;
- }
- CHECK_VECTOR(argv[0]);
- Data_Get_Struct(argv[0], gsl_vector, z);
- argc -= 1;
- argv += 1;
- switch (argc) {
- case 3:
- Q = FIX2INT(argv[0]);
- alpha = NUM2DBL(argv[1]);
- beta = NUM2DBL(argv[2]);
- break;
- case 2:
- Q = z->size;
- alpha = NUM2DBL(argv[0]);
- beta = NUM2DBL(argv[1]);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments.");
- }
- (*f)(imat->data, zp->data, np, z->data, Q, alpha, beta);
- if (status != GSL_SUCCESS) rb_raise(rb_eRuntimeError, "Some error.");
- return vimat;
-}
-
-static VALUE rb_jac_interpmat_gj(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_interpmat_eval(argc, argv, jac_interpmat_gj);
-}
-
-static VALUE rb_jac_interpmat_glj(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_interpmat_eval(argc, argv, jac_interpmat_glj);
-}
-static VALUE rb_jac_interpmat_grjm(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_interpmat_eval(argc, argv, jac_interpmat_grjm);
-}
-static VALUE rb_jac_interpmat_grjp(int argc, VALUE *argv, VALUE module)
-{
- return rb_jac_interpmat_eval(argc, argv, jac_interpmat_grjp);
-}
-void Init_jacobi(VALUE module)
-{
- VALUE mjac, cjacq;
-
- mjac = rb_define_module("Jac");
- jac_define_const(mjac);
- cjacq = rb_define_class_under(mjac, "Quadrature", cGSL_Object);
-
- rb_define_module_function(mjac, "jacobi_P0_e", rb_jac_jacobi_P0_e, 3);
- rb_define_module_function(mjac, "jacobi_P0", rb_jac_jacobi_P0, 3);
- rb_define_module_function(mjac, "jacobi_P1_e", rb_jac_jacobi_P1_e, 3);
- rb_define_module_function(mjac, "jacobi_P1", rb_jac_jacobi_P1, 3);
- rb_define_module_function(mjac, "jacobi", rb_jac_jacobi, -1);
- rb_define_module_function(mjac, "djacobi_P0_e", rb_jac_djacobi_P0_e, 3);
- rb_define_module_function(mjac, "djacobi_P0", rb_jac_djacobi_P0, 3);
- rb_define_module_function(mjac, "djacobi_P1_e", rb_jac_djacobi_P1_e, 3);
- rb_define_module_function(mjac, "djacobi_P1", rb_jac_djacobi_P1, 3);
- rb_define_module_function(mjac, "djacobi", rb_jac_djacobi, 4);
-
- rb_define_module_function(mjac, "jacobi_zeros", rb_jac_jacobi_zeros, -1);
-
- /*****/
- rb_define_singleton_method(cjacq, "alloc", rb_jac_quadrature_alloc, 1);
- rb_define_method(cjacq, "Q", rb_jac_quadrature_Q, 0);
- rb_define_method(cjacq, "type", rb_jac_quadrature_type, 0);
- rb_define_method(cjacq, "alpha", rb_jac_quadrature_alpha, 0);
- rb_define_method(cjacq, "beta", rb_jac_quadrature_beta, 0);
- rb_define_method(cjacq, "x", rb_jac_quadrature_x, 0);
- rb_define_method(cjacq, "w", rb_jac_quadrature_w, 0);
- rb_define_method(cjacq, "D", rb_jac_quadrature_D, 0);
- rb_define_method(cjacq, "xp", rb_jac_quadrature_xp, 0);
- rb_define_method(cjacq, "interpmat_alloc", rb_jac_interpmat_alloc, -1);
- rb_define_method(cjacq, "interpmat_free", rb_jac_interpmat_free, 0);
- rb_define_method(cjacq, "zwd", rb_jac_quadrature_zwd, -1);
- rb_define_method(cjacq, "integrate", rb_jac_integrate, 1);
- rb_define_method(cjacq, "interpolate", rb_jac_interpolate, -1);
- rb_define_method(cjacq, "differentiate", rb_jac_differentiate, -1);
- /*****/
- rb_define_module_function(mjac, "diffmat_gj", rb_jac_diffmat_gj, -1);
- rb_define_module_function(mjac, "diffmat_glj", rb_jac_diffmat_glj, -1);
- rb_define_module_function(mjac, "diffmat_grjm", rb_jac_diffmat_grjm, -1);
- rb_define_module_function(mjac, "diffmat_grjp", rb_jac_diffmat_grjp, -1);
-
- rb_define_module_function(mjac, "weights_gj", rb_jac_weights_gj, -1);
- rb_define_module_function(mjac, "weights_glj", rb_jac_weights_glj, -1);
- rb_define_module_function(mjac, "weights_grjm", rb_jac_weights_grjm, -1);
- rb_define_module_function(mjac, "weights_grjp", rb_jac_weights_grjp, -1);
-
- rb_define_module_function(mjac, "zeros_gj", rb_jac_zeros_gj, -1);
- rb_define_module_function(mjac, "zeros_glj", rb_jac_zeros_glj, -1);
- rb_define_module_function(mjac, "zeros_grjm", rb_jac_zeros_grjm, -1);
- rb_define_module_function(mjac, "zeros_grjp", rb_jac_zeros_grjp, -1);
-
- rb_define_module_function(mjac, "lagrange_gj", rb_jac_lagrange_gj, -1);
- rb_define_module_function(mjac, "lagrange_glj", rb_jac_lagrange_glj, -1);
- rb_define_module_function(mjac, "lagrange_grjm", rb_jac_lagrange_grjm, -1);
- rb_define_module_function(mjac, "lagrange_grjp", rb_jac_lagrange_grjp, -1);
-
- rb_define_module_function(mjac, "interpmat_gj", rb_jac_interpmat_gj, -1);
- rb_define_module_function(mjac, "interpmat_glj", rb_jac_interpmat_glj, -1);
- rb_define_module_function(mjac, "interpmat_grjm", rb_jac_interpmat_grjm, -1);
- rb_define_module_function(mjac, "interpmat_grjp", rb_jac_interpmat_grjp, -1);
-
-}
-
-#endif
-
diff --git a/ext/gsl/ool.c b/ext/gsl/ool.c
deleted file mode 100644
index 6a93c3f..0000000
--- a/ext/gsl/ool.c
+++ /dev/null
@@ -1,879 +0,0 @@
-#ifdef HAVE_OOL_OOL_VERSION_H
-#include "include/rb_gsl.h"
-#include "include/rb_gsl_array.h"
-#include <ool/ool_conmin.h>
-
-static VALUE cool_conmin_function;
-static VALUE cool_conmin_constraint;
-static VALUE cool_conmin_pgrad;
-static VALUE cool_conmin_spg;
-static VALUE cool_conmin_gencan;
-static VALUE cool_conmin_pgrad_parameters;
-static VALUE cool_conmin_spg_parameters;
-static VALUE cool_conmin_gencan_parameters;
-
-#ifndef CHECK_OOL_CONMIN_FUNCTION
-#define CHECK_OOL_CONMIN_FUNCTION(x) if(CLASS_OF(x)!=cool_conmin_function)\
- rb_raise(rb_eTypeError,\
- "wrong argument type %s (OOL::Conmin::Function expected)",\
- rb_class2name(CLASS_OF(x)));
-#endif
-
-enum enum_ool_conmin_minimizer_type {
- OOL_CONMIN_PGRAD,
- OOL_CONMIN_SPG,
- OOL_CONMIN_GENCAN,
-};
-
-static const ool_conmin_minimizer_type* get_minimizer_type(VALUE t)
-{
- char name[64];
-
- switch (TYPE(t)) {
- case T_STRING:
- strcpy(name, STR2CSTR(t));
- if (str_tail_grep(name, "pgrad") == 0) {
- return ool_conmin_minimizer_pgrad;
- } else if (str_tail_grep(name, "spg") == 0) {
- return ool_conmin_minimizer_spg;
- } else if (str_tail_grep(name, "gencan") == 0) {
- return ool_conmin_minimizer_gencan;
- } else {
- rb_raise(rb_eTypeError, "%s: unknown minimizer type", name);
- }
- break;
- case T_FIXNUM:
- switch (FIX2INT(t)) {
- case OOL_CONMIN_PGRAD:
- return ool_conmin_minimizer_pgrad;
- break;
- case OOL_CONMIN_SPG:
- return ool_conmin_minimizer_spg;
- break;
- case OOL_CONMIN_GENCAN:
- return ool_conmin_minimizer_gencan;
- break;
- default:
- rb_raise(rb_eTypeError, "%d: unknown minimizer type", FIX2INT(t));
- break;
- }
- break;
- default:
- if (t == cool_conmin_pgrad) return ool_conmin_minimizer_pgrad;
- else if (t == cool_conmin_spg) return ool_conmin_minimizer_spg;
- else if (t == cool_conmin_gencan) return ool_conmin_minimizer_gencan;
- else rb_raise(rb_eTypeError, "type is given by a String or a Fixnum");
- break;
- }
-}
-
-static void def_const(VALUE module)
-{
- rb_define_const(module, "CONTINUE", INT2FIX(OOL_CONTINUE));
- rb_define_const(module, "SUCCESS", INT2FIX(OOL_SUCCESS));
-}
-
-
-static VALUE rb_ool_conmin_minimizer_set(int argc, VALUE *argv, VALUE obj);
-static VALUE rb_ool_conmin_minimizer_alloc(int argc, VALUE *argv, VALUE klass)
-{
- ool_conmin_minimizer *m;
- VALUE obj;
- if (argc < 2) rb_raise(rb_eArgError, "Too few arguments (%d for >= 2)", argc);
- m = ool_conmin_minimizer_alloc(get_minimizer_type(argv[0]), FIX2INT(argv[1]));
- obj = Data_Wrap_Struct(klass, 0, ool_conmin_minimizer_free, m);
- if (argc > 2) rb_ool_conmin_minimizer_set(argc-2, argv+2, obj);
- return obj;
-}
-
-static void* get_parameter(const ool_conmin_minimizer_type *T, ool_conmin_pgrad_parameters *Pp,
- ool_conmin_spg_parameters *Ps, ool_conmin_gencan_parameters *Pg, VALUE ary);
-static VALUE rb_ool_conmin_minimizer_set(int argc, VALUE *argv, VALUE obj)
-{
- ool_conmin_minimizer *m;
- ool_conmin_function *F;
- ool_conmin_constraint *C;
- gsl_vector *v;
- ool_conmin_pgrad_parameters Pp;
- ool_conmin_spg_parameters Ps;
- ool_conmin_gencan_parameters Pg;
- void *P;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- switch (argc) {
- case 3:
- if (CLASS_OF(argv[0]) != cool_conmin_function)
- rb_raise(rb_eTypeError, "Wrong argument type 0 (OOL::Conmin::Function expected)");
- if (CLASS_OF(argv[1]) != cool_conmin_constraint)
- rb_raise(rb_eTypeError, "Wrong argument type 1 (OOL::Conmin::Constraint expected)");
- if (!VECTOR_P(argv[2]))
- rb_raise(rb_eTypeError, "Wrong argument type 2 (GSL::Vector expected)");
- Data_Get_Struct(argv[0], ool_conmin_function, F);
- Data_Get_Struct(argv[1], ool_conmin_constraint, C);
- Data_Get_Struct(argv[2], gsl_vector, v);
- P = get_parameter(m->type, &Pp, &Ps, &Pg, Qnil);
- ool_conmin_minimizer_set(m, F, C, v, P);
- break;
- case 4:
- if (CLASS_OF(argv[0]) != cool_conmin_function)
- rb_raise(rb_eTypeError, "Wrong argument type 0 (OOL::Conmin::Function expected)");
- if (CLASS_OF(argv[1]) != cool_conmin_constraint)
- rb_raise(rb_eTypeError, "Wrong argument type 1 (OOL::Conmin::Constraint expected)");
- if (!VECTOR_P(argv[2]))
- rb_raise(rb_eTypeError, "Wrong argument type 2 (GSL::Vector expected)");
- if (!rb_obj_is_kind_of(argv[3], rb_cArray) && argv[3] != Qnil)
- rb_raise(rb_eTypeError, "Wrong argument type 3 (Array expected)");
- Data_Get_Struct(argv[0], ool_conmin_function, F);
- Data_Get_Struct(argv[1], ool_conmin_constraint, C);
- Data_Get_Struct(argv[2], gsl_vector, v);
- P = get_parameter(m->type, &Pp, &Ps, &Pg, argv[3]);
- ool_conmin_minimizer_set(m, F, C, v, P);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments (%d for 3 or 4)", argc);
- }
- return obj;
-}
-
-static void* get_parameter(const ool_conmin_minimizer_type *T, ool_conmin_pgrad_parameters *Pp,
- ool_conmin_spg_parameters *Ps, ool_conmin_gencan_parameters *Pg, VALUE ary)
-{
- if (T == ool_conmin_minimizer_pgrad) {
- if (ary == Qnil) {
- ool_conmin_parameters_default(T, (void*) Pp);
- } else {
- Pp->fmin = NUM2DBL(rb_ary_entry(ary, 0));
- Pp->tol = NUM2DBL(rb_ary_entry(ary, 1));
- Pp->alpha = NUM2DBL(rb_ary_entry(ary, 2));
- Pp->sigma1 = NUM2DBL(rb_ary_entry(ary, 3));
- Pp->sigma2 = NUM2DBL(rb_ary_entry(ary, 4));
- }
- return (void*) Pp;
- } else if (T == ool_conmin_minimizer_spg) {
- if (ary == Qnil) {
- ool_conmin_parameters_default(T, (void*) Ps);
- } else {
- Ps->fmin = NUM2DBL(rb_ary_entry(ary, 0));
- Ps->tol = NUM2DBL(rb_ary_entry(ary, 1));
- Ps->M = NUM2DBL(rb_ary_entry(ary, 2));
- Ps->alphamin = NUM2DBL(rb_ary_entry(ary, 3));
- Ps->alphamax = NUM2DBL(rb_ary_entry(ary, 4));
- Ps->gamma = NUM2DBL(rb_ary_entry(ary, 5));
- Ps->sigma2 = NUM2DBL(rb_ary_entry(ary, 6));
- Ps->sigma2 = NUM2DBL(rb_ary_entry(ary, 7));
- }
- return (void*) Ps;
- } else {
- if (ary == Qnil) {
- ool_conmin_parameters_default(T, (void*) Pg);
- } else {
- Pg->epsgpen = NUM2DBL(rb_ary_entry(ary, 0));
- Pg->epsgpsn = NUM2DBL(rb_ary_entry(ary, 1));
- Pg->fmin = NUM2DBL(rb_ary_entry(ary, 2));
- Pg->udelta0 = NUM2DBL(rb_ary_entry(ary, 3));
- Pg->ucgmia = NUM2DBL(rb_ary_entry(ary, 4));
- Pg->ucgmib = NUM2DBL(rb_ary_entry(ary, 5));
- Pg->cg_scre = FIX2INT(rb_ary_entry(ary, 6));
- Pg->cg_gpnf = NUM2DBL(rb_ary_entry(ary, 7));
- Pg->cg_epsi = NUM2DBL(rb_ary_entry(ary, 8));
- Pg->cg_epsf = NUM2DBL(rb_ary_entry(ary, 9));
- Pg->cg_epsnqmp = NUM2DBL(rb_ary_entry(ary, 10));
- Pg->cg_maxitnqmp = (size_t) FIX2INT(rb_ary_entry(ary, 11));
- Pg->nearlyq = FIX2INT(rb_ary_entry(ary, 12));
- Pg->nint = NUM2DBL(rb_ary_entry(ary, 13));
- Pg->next = NUM2DBL(rb_ary_entry(ary, 14));
- Pg->mininterp = (size_t) FIX2INT(rb_ary_entry(ary, 15));
- Pg->maxextrap = (size_t) FIX2INT(rb_ary_entry(ary, 16));
- Pg->trtype = FIX2INT(rb_ary_entry(ary, 17));
- Pg->eta = NUM2DBL(rb_ary_entry(ary, 18));
- Pg->delmin = NUM2DBL(rb_ary_entry(ary, 19));
- Pg->lspgmi = NUM2DBL(rb_ary_entry(ary, 20));
- Pg->lspgma = NUM2DBL(rb_ary_entry(ary, 21));
- Pg->theta = NUM2DBL(rb_ary_entry(ary, 22));
- Pg->gamma = NUM2DBL(rb_ary_entry(ary, 23));
- Pg->beta = NUM2DBL(rb_ary_entry(ary, 24));
- Pg->sigma1 = NUM2DBL(rb_ary_entry(ary, 25));
- Pg->sigma2 = NUM2DBL(rb_ary_entry(ary, 26));
- Pg->epsrel = NUM2DBL(rb_ary_entry(ary, 27));
- Pg->epsabs = NUM2DBL(rb_ary_entry(ary, 28));
- Pg->infrel = NUM2DBL(rb_ary_entry(ary, 29));
- Pg->infabs = NUM2DBL(rb_ary_entry(ary, 30));
- }
- return (void*) Pg;
- }
-}
-
-static VALUE create_parameters_ary_pgrad(ool_conmin_pgrad_parameters *Pp)
-{
- VALUE ary;
- ary = rb_ary_new2(5);
- rb_ary_store(ary, 0, rb_float_new(Pp->fmin));
- rb_ary_store(ary, 1, rb_float_new(Pp->tol));
- rb_ary_store(ary, 2, rb_float_new(Pp->alpha));
- rb_ary_store(ary, 3, rb_float_new(Pp->sigma1));
- rb_ary_store(ary, 4, rb_float_new(Pp->sigma2));
- return ary;
-}
-
-static VALUE create_parameters_ary_spg(ool_conmin_spg_parameters *Ps)
-{
- VALUE ary;
- ary = rb_ary_new2(8);
- rb_ary_store(ary, 0, rb_float_new(Ps->fmin));
- rb_ary_store(ary, 1, rb_float_new(Ps->tol));
- rb_ary_store(ary, 2, rb_float_new(Ps->M));
- rb_ary_store(ary, 3, rb_float_new(Ps->alphamin));
- rb_ary_store(ary, 4, rb_float_new(Ps->alphamax));
- rb_ary_store(ary, 5, rb_float_new(Ps->gamma));
- rb_ary_store(ary, 6, rb_float_new(Ps->sigma2));
- rb_ary_store(ary, 7, rb_float_new(Ps->sigma2));
- return ary;
-}
-
-static VALUE create_parameters_ary_gencan(ool_conmin_gencan_parameters *Pg)
-{
- VALUE ary;
- ary = rb_ary_new2(31);
- rb_ary_store(ary, 0, rb_float_new(Pg->epsgpen));
- rb_ary_store(ary, 1, rb_float_new(Pg->epsgpsn));
- rb_ary_store(ary, 2, rb_float_new(Pg->fmin));
- rb_ary_store(ary, 3, rb_float_new(Pg->udelta0));
- rb_ary_store(ary, 4, rb_float_new(Pg->ucgmia));
- rb_ary_store(ary, 5, rb_float_new(Pg->ucgmib));
- rb_ary_store(ary, 6, INT2FIX(Pg->cg_scre));
- rb_ary_store(ary, 7, rb_float_new(Pg->cg_gpnf));
- rb_ary_store(ary, 8, rb_float_new(Pg->cg_epsi));
- rb_ary_store(ary, 9, rb_float_new(Pg->cg_epsf));
- rb_ary_store(ary, 10, rb_float_new(Pg->cg_epsnqmp));
- rb_ary_store(ary, 11, INT2FIX((int) Pg->cg_maxitnqmp));
- rb_ary_store(ary, 12, INT2FIX(Pg->nearlyq));
- rb_ary_store(ary, 13, rb_float_new(Pg->nint));
- rb_ary_store(ary, 14, rb_float_new(Pg->next));
- rb_ary_store(ary, 15, INT2FIX((int)Pg->mininterp));
- rb_ary_store(ary, 16, INT2FIX((int)Pg->maxextrap));
- rb_ary_store(ary, 17, INT2FIX(Pg->trtype));
- rb_ary_store(ary, 18, rb_float_new(Pg->eta));
- rb_ary_store(ary, 19, rb_float_new(Pg->delmin));
- rb_ary_store(ary, 20, rb_float_new(Pg->lspgmi));
- rb_ary_store(ary, 21, rb_float_new(Pg->lspgma));
- rb_ary_store(ary, 22, rb_float_new(Pg->theta));
- rb_ary_store(ary, 23, rb_float_new(Pg->gamma));
- rb_ary_store(ary, 24, rb_float_new(Pg->beta));
- rb_ary_store(ary, 25, rb_float_new(Pg->sigma1));
- rb_ary_store(ary, 26, rb_float_new(Pg->sigma2));
- rb_ary_store(ary, 27, rb_float_new(Pg->epsrel));
- rb_ary_store(ary, 28, rb_float_new(Pg->epsabs));
- rb_ary_store(ary, 29, rb_float_new(Pg->infrel));
- rb_ary_store(ary, 30, rb_float_new(Pg->infabs));
- return ary;
-}
-static VALUE rb_ool_conmin_minimizer_parameters_get(VALUE obj)
-{
- ool_conmin_minimizer *m;
- ool_conmin_pgrad_parameters *Pp;
- ool_conmin_spg_parameters *Ps;
- ool_conmin_gencan_parameters *Pg;
- void *P;
- VALUE ary;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- ool_conmin_parameters_get(m, P);
- if (m->type == ool_conmin_minimizer_pgrad) {
- Pp = (ool_conmin_pgrad_parameters*) P;
- ary = create_parameters_ary_pgrad(Pp);
- } else if (m->type == ool_conmin_minimizer_spg) {
- Ps = (ool_conmin_spg_parameters*) P;
- ary = create_parameters_ary_spg(Ps);
- } else {
- Pg = (ool_conmin_gencan_parameters*) P;
- ary = create_parameters_ary_gencan(Pg);
- }
- return ary;
-}
-
-static VALUE rb_ool_conmin_minimizer_parameters_set(VALUE obj, VALUE params)
-{
- ool_conmin_minimizer *m;
- ool_conmin_pgrad_parameters *Pp;
- ool_conmin_spg_parameters *Ps;
- ool_conmin_gencan_parameters *Pg;
- void *P;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- P = get_parameter(m->type, Pp, Ps, Pg, params);
- ool_conmin_parameters_set(m, P);
- return params;
-}
-
-static VALUE rb_ool_conmin_minimizer_name(VALUE obj)
-{
- ool_conmin_minimizer *m;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- return rb_str_new2(ool_conmin_minimizer_name(m));
-}
-static VALUE rb_ool_conmin_minimizer_f(VALUE obj)
-{
- ool_conmin_minimizer *m;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- return rb_float_new(m->f);
-}
-static VALUE rb_ool_conmin_minimizer_x(VALUE obj)
-{
- ool_conmin_minimizer *m;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- return Data_Wrap_Struct(cgsl_vector, 0, NULL, m->x);
-}
-static VALUE rb_ool_conmin_minimizer_gradient(VALUE obj)
-{
- ool_conmin_minimizer *m;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- return Data_Wrap_Struct(cgsl_vector, 0, NULL, m->gradient);
-}
-static VALUE rb_ool_conmin_minimizer_minimum(VALUE obj)
-{
- ool_conmin_minimizer *m;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- return rb_float_new(ool_conmin_minimizer_minimum(m));
-}
-static VALUE rb_ool_conmin_minimizer_dx(VALUE obj)
-{
- ool_conmin_minimizer *m;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- return Data_Wrap_Struct(cgsl_vector, 0, NULL, m->dx);
-}
-static VALUE rb_ool_conmin_minimizer_size(VALUE obj)
-{
- ool_conmin_minimizer *m;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- return rb_float_new(ool_conmin_minimizer_size(m));
-}
-static VALUE rb_ool_conmin_minimizer_fcount(VALUE obj)
-{
- ool_conmin_minimizer *m;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- return INT2FIX((int) ool_conmin_minimizer_fcount(m));
-}
-static VALUE rb_ool_conmin_minimizer_gcount(VALUE obj)
-{
- ool_conmin_minimizer *m;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- return INT2FIX((int) ool_conmin_minimizer_gcount(m));
-}
-static VALUE rb_ool_conmin_minimizer_hcount(VALUE obj)
-{
- ool_conmin_minimizer *m;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- return INT2FIX((int) ool_conmin_minimizer_hcount(m));
-}
-static VALUE rb_ool_conmin_minimizer_is_optimal(VALUE obj)
-{
- ool_conmin_minimizer *m;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- return INT2FIX((int) ool_conmin_is_optimal(m));
-}
-static VALUE rb_ool_conmin_minimizer_is_optimal2(VALUE obj)
-{
- ool_conmin_minimizer *m;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- if (ool_conmin_is_optimal(m)) return Qtrue;
- else return Qfalse;
-}
-static VALUE rb_ool_conmin_minimizer_iterate(VALUE obj)
-{
- ool_conmin_minimizer *m;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- return INT2FIX((int) ool_conmin_minimizer_iterate(m));
-}
-static VALUE rb_ool_conmin_minimizer_restart(VALUE obj)
-{
- ool_conmin_minimizer *m;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- return INT2FIX((int) ool_conmin_minimizer_restart(m));
-}
-
-static VALUE rb_ool_conmin_pgrad_parameters_default(VALUE klass);
-static VALUE rb_ool_conmin_spg_parameters_default(VALUE klass);
-static VALUE rb_ool_conmin_gencan_parameters_default(VALUE klass);
-
-static VALUE rb_ool_conmin_minimizer_parameters_default(VALUE obj)
-{
- ool_conmin_minimizer *m;
- Data_Get_Struct(obj, ool_conmin_minimizer, m);
- if (m->type == ool_conmin_minimizer_spg) {
- return rb_ool_conmin_spg_parameters_default(cool_conmin_spg);
- } else if (m->type == ool_conmin_minimizer_pgrad) {
- return rb_ool_conmin_pgrad_parameters_default(cool_conmin_pgrad);
- } else if (m->type == ool_conmin_minimizer_gencan) {
- return rb_ool_conmin_gencan_parameters_default(cool_conmin_gencan);
- } else {
- rb_raise(rb_eRuntimeError, "Unkowm minimizer type.");
- }
- return Qnil; /* never reaches here */
-}
-
-/***/
-
-static void rb_ool_conmin_function_mark(ool_conmin_function *F)
-{
- rb_gc_mark((VALUE) F->params);
-}
-
-static double rb_ool_conmin_function_f(const gsl_vector *x, void *p);
-static void rb_ool_conmin_function_df(const gsl_vector *x, void *p, gsl_vector *g);
-static void rb_ool_conmin_function_fdf(const gsl_vector *x, void *p,
- double *f, gsl_vector *g);
-static void rb_ool_conmin_function_Hv(const gsl_vector *X, void *params,
- const gsl_vector *V, gsl_vector *hv);
-static void set_functions(int argc, VALUE *argv, ool_conmin_function *F);
-static void set_params(ool_conmin_function *F, VALUE p);
-static VALUE rb_ool_conmin_function_set_n(VALUE obj, VALUE nn);
-static VALUE rb_ool_conmin_function_set_functions(int argc, VALUE *argv, VALUE obj);
-static VALUE rb_ool_conmin_function_set(int argc, VALUE *argv, VALUE obj);
-
-static VALUE rb_ool_conmin_function_alloc(int argc, VALUE *argv, VALUE klass)
-{
- ool_conmin_function *F = NULL;
- VALUE ary, obj;
-
- F = ALLOC(ool_conmin_function);
- F->f = &rb_ool_conmin_function_f;
- F->df = &rb_ool_conmin_function_df;
- F->fdf = &rb_ool_conmin_function_fdf;
- F->Hv = &rb_ool_conmin_function_Hv;
- F->n = 0;
- ary = rb_ary_new2(5);
-
- F->params = (void *) ary;
- rb_ary_store(ary, 0, Qnil); /* proc f */
- rb_ary_store(ary, 1, Qnil); /* proc df */
- rb_ary_store(ary, 2, Qnil); /* proc fdf */
- rb_ary_store(ary, 3, Qnil); /* proc Hv */
- rb_ary_store(ary, 4, Qnil); /* params */
-// set_functions(argc, argv, F);
- obj = Data_Wrap_Struct(klass, rb_ool_conmin_function_mark, free, F);
- rb_ool_conmin_function_set(argc, argv, obj);
- return obj;
-}
-
-static VALUE rb_ool_conmin_function_set(int argc, VALUE *argv, VALUE obj)
-{
- ool_conmin_function *F;
- Data_Get_Struct(obj, ool_conmin_function, F);
- switch (argc) {
- case 0:
- break;
- case 1:
- rb_ool_conmin_function_set_n(obj, argv[0]);
- break;
- case 4:
- set_functions(argc, argv, F);
- break;
- case 5:
- if (FIXNUM_P(argv[0])) {
- rb_ool_conmin_function_set_n(obj, argv[0]);
- set_functions(argc-1, argv+1, F);
- } else {
- set_functions(argc-1, argv, F);
- set_params(F, argv[argc-1]);
- }
- break;
- case 6:
- rb_ool_conmin_function_set_n(obj, argv[0]);
- set_functions(argc-2, argv+1, F);
- set_params(F, argv[argc-1]);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments.");
- }
- return obj;
-}
-
-static VALUE rb_ool_conmin_function_set_n(VALUE obj, VALUE nn)
-{
- ool_conmin_function *F = NULL;
- if (FIXNUM_P(nn)) {
- Data_Get_Struct(obj, ool_conmin_function, F);
- F->n = (size_t) FIX2INT(nn);
- } else {
- rb_raise(rb_eArgError, "Wrong argument type %s (Fixnum expected)",
- rb_class2name(CLASS_OF(nn)));
- }
- return nn;
-}
-
-static VALUE rb_ool_conmin_function_n(VALUE obj)
-{
- ool_conmin_function *F = NULL;
- Data_Get_Struct(obj, ool_conmin_function, F);
- return INT2FIX((int) F->n);
-}
-static double rb_ool_conmin_function_f(const gsl_vector *x, void *p)
-{
- VALUE vx, proc, vp, result, ary;
- vx = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector *) x);
- ary = (VALUE) p;
- proc = rb_ary_entry(ary, 0);
- vp = rb_ary_entry(ary, RARRAY_LEN(ary)-1);
- if (NIL_P(vp)) result = rb_funcall(proc, RBGSL_ID_call, 1, vx);
- else result = rb_funcall(proc, RBGSL_ID_call, 2, vx, vp);
- return NUM2DBL(result);
-}
-
-static void rb_ool_conmin_function_df(const gsl_vector *x, void *p, gsl_vector *g)
-{
- VALUE vx, vg, proc, vp, ary;
- vx = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector *) x);
- vg = Data_Wrap_Struct(cgsl_vector, 0, NULL, g);
- ary = (VALUE) p;
- proc = rb_ary_entry(ary, 1);
- vp = rb_ary_entry(ary, RARRAY_LEN(ary)-1);
- if (NIL_P(vp)) {
- rb_funcall(proc, RBGSL_ID_call, 2, vx, vg);
- } else {
- rb_funcall(proc, RBGSL_ID_call, 3, vx, vp, vg);
- }
-}
-
-static void rb_ool_conmin_function_fdf(const gsl_vector *x, void *p,
- double *f, gsl_vector *g)
-{
- VALUE vx, vf, vg, proc_fdf, proc_f, proc_df, vp, ary, result;
- vx = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector *) x);
- vg = Data_Wrap_Struct(cgsl_vector, 0, NULL, g);
- vf = rb_float_new(*f);
- ary = (VALUE) p;
- proc_f = rb_ary_entry(ary, 0);
- proc_df = rb_ary_entry(ary, 1);
- proc_fdf = rb_ary_entry(ary, 2);
- vp = rb_ary_entry(ary, RARRAY_LEN(ary)-1);
- if (NIL_P(vp)) {
- result = rb_funcall(proc_f, RBGSL_ID_call, 1, vx);
- rb_funcall(proc_df, RBGSL_ID_call, 2, vx, vg);
- } else {
- result = rb_funcall(proc_f, RBGSL_ID_call, 2, vx, vp);
- rb_funcall(proc_df, RBGSL_ID_call, 3, vx, vp, vg);
- }
- *f = NUM2DBL(result);
-}
-
-static void rb_ool_conmin_function_Hv(const gsl_vector *X, void *params,
- const gsl_vector *V, gsl_vector *hv)
-{
- VALUE vX, vV, vHv, ary, proc_Hv, vp;
- vX = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector*) X);
- vV = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector*) V);
- vHv = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector*) hv);
- ary = (VALUE) params;
- proc_Hv = rb_ary_entry(ary, 3);
- vp = rb_ary_entry(ary, RARRAY_LEN(ary)-1);
- if (NIL_P(vp)) {
- rb_funcall(proc_Hv, RBGSL_ID_call, 3, vX, vV, vHv);
- } else {
- rb_funcall(proc_Hv, RBGSL_ID_call, 4, vX, vp, vV, vHv);
- }
-}
-
-static VALUE rb_ool_conmin_function_set_functions(int argc, VALUE *argv, VALUE obj)
-{
- ool_conmin_function *F;
- Data_Get_Struct(obj, ool_conmin_function, F);
- set_functions(argc, argv, F);
- return obj;
-}
-
-static void set_functions(int argc, VALUE *argv, ool_conmin_function *F)
-{
- VALUE ary;
- size_t i;
- if (F->params == NULL) {
- ary = rb_ary_new2(5);
- /* (VALUE) F->params = ary;*/
- F->params = (void *) ary;
- } else {
- ary = (VALUE) F->params;
- }
- switch (argc) {
- case 4:
- for (i = 0; i < argc; i++) rb_ary_store(ary, i, argv[i]);
- break;
- default:
- rb_raise(rb_eArgError,"Wrong number of arguments (%d for 4)", argc);
- }
-}
-
-static VALUE rb_ool_conmin_function_set_f(VALUE obj, VALUE proc)
-{
- ool_conmin_function *F;
- VALUE ary;
- Data_Get_Struct(obj, ool_conmin_function, F);
- if (F->params == NULL) {
- ary = rb_ary_new2(5);
- F->params = (void *) ary;
- } else {
- ary = (VALUE) F->params;
- }
- rb_ary_store(ary, 0, proc);
- return proc;
-}
-
-static VALUE rb_ool_conmin_function_set_df(VALUE obj, VALUE proc)
-{
- ool_conmin_function *F;
- VALUE ary;
- Data_Get_Struct(obj, ool_conmin_function, F);
- if (F->params == NULL) {
- ary = rb_ary_new2(5);
- F->params = (void *) ary;
- } else {
- ary = (VALUE) F->params;
- }
- rb_ary_store(ary, 1, proc);
- return proc;
-}
-
-static VALUE rb_ool_conmin_function_set_fdf(VALUE obj, VALUE proc)
-{
- ool_conmin_function *F;
- VALUE ary;
- Data_Get_Struct(obj, ool_conmin_function, F);
- if (F->params == NULL) {
- ary = rb_ary_new2(5);
- F->params = (void *) ary;
- } else {
- ary = (VALUE) F->params;
- }
- rb_ary_store(ary, 2, proc);
- return proc;
-}
-
-static VALUE rb_ool_conmin_function_set_Hv(VALUE obj, VALUE proc)
-{
- ool_conmin_function *F;
- VALUE ary;
- Data_Get_Struct(obj, ool_conmin_function, F);
- if (F->params == NULL) {
- ary = rb_ary_new2(5);
- F->params = (void *) ary;
- } else {
- ary = (VALUE) F->params;
- }
- rb_ary_store(ary, 3, proc);
- return proc;
-}
-
-static VALUE rb_ool_conmin_function_set_params(VALUE obj, VALUE p)
-{
- ool_conmin_function *F;
- Data_Get_Struct(obj, ool_conmin_function, F);
- set_params(F, p);
- return p;
-}
-
-static void set_params(ool_conmin_function *F, VALUE p)
-{
- VALUE ary;
- if (F->params == NULL) {
- ary = rb_ary_new2(5);
- /* (VALUE) F->params = ary;*/
- F->params = (void *) ary;
- } else {
- ary = (VALUE) F->params;
- }
- rb_ary_store(ary, 4, p);
-}
-
-static VALUE rb_ool_conmin_function_params(VALUE obj)
-{
- ool_conmin_function *F;
- Data_Get_Struct(obj, ool_conmin_function, F);
- return rb_ary_entry((VALUE) F->params, 4);;
-}
-
-static VALUE rb_ool_conmin_constraint_set(int argc, VALUE *argv, VALUE obj);
-static VALUE rb_ool_conmin_constraint_set_n(VALUE obj, VALUE n);
-static VALUE rb_ool_conmin_constraint_alloc(int argc, VALUE *argv, VALUE klass)
-{
- ool_conmin_constraint *C;
- VALUE obj;
- C = ALLOC(ool_conmin_constraint);
- C->n = 0;
- C->L = NULL;
- C->U = NULL;
-
- obj = Data_Wrap_Struct(klass, 0, free, C);
- rb_ool_conmin_constraint_set(argc, argv, obj);
- return obj;
-}
-
-static VALUE rb_ool_conmin_constraint_set_n(VALUE obj, VALUE n)
-{
- ool_conmin_constraint *C;
- if (!FIXNUM_P(n)) rb_raise(rb_eArgError, "Wrong argument type %s (Fixnum expected)",
- rb_class2name(CLASS_OF(n)));
- Data_Get_Struct(obj, ool_conmin_constraint, C);
- C->n = (size_t) FIX2INT(n);
- return n;
-}
-
-static VALUE rb_ool_conmin_constraint_set_L(VALUE obj, VALUE vL)
-{
- ool_conmin_constraint *C;
- gsl_vector *L;
- CHECK_VECTOR(vL);
- Data_Get_Struct(obj, ool_conmin_constraint, C);
- Data_Get_Struct(vL, gsl_vector, L);
- C->L = L;
- return vL;
-}
-
-static VALUE rb_ool_conmin_constraint_set_U(VALUE obj, VALUE vU)
-{
- ool_conmin_constraint *C;
- gsl_vector *U;
- CHECK_VECTOR(vU);
- Data_Get_Struct(obj, ool_conmin_constraint, C);
- Data_Get_Struct(vU, gsl_vector, U);
- C->U = U;
- return vU;
-}
-
-static VALUE rb_ool_conmin_constraint_set_LU(VALUE obj, VALUE vL, VALUE vU)
-{
- rb_ool_conmin_constraint_set_L(obj, vL);
- rb_ool_conmin_constraint_set_U(obj, vU);
- return obj;
-}
-
-static VALUE rb_ool_conmin_constraint_set(int argc, VALUE *argv, VALUE obj)
-{
- ool_conmin_constraint *C;
- Data_Get_Struct(obj, ool_conmin_constraint, C);
- switch (argc) {
- case 0:
- break;
- case 1:
- rb_ool_conmin_constraint_set_n(obj, argv[0]);
- break;
- case 2:
- rb_ool_conmin_constraint_set_LU(obj, argv[0], argv[1]);
- break;
- case 3:
- rb_ool_conmin_constraint_set_n(obj, argv[0]);
- rb_ool_conmin_constraint_set_LU(obj, argv[1], argv[2]);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1-3)", argc);
- }
- return obj;
-}
-
-static VALUE rb_ool_conmin_pgrad_parameters_default(VALUE klass)
-{
- ool_conmin_pgrad_parameters P;
- VALUE ary;
- ool_conmin_parameters_default(ool_conmin_minimizer_pgrad, (void*) &P);
- ary = create_parameters_ary_pgrad(&P);
- RBGSL_SET_CLASS(ary, cool_conmin_pgrad_parameters);
- return ary;
-}
-
-static VALUE rb_ool_conmin_spg_parameters_default(VALUE klass)
-{
- ool_conmin_spg_parameters P;
- VALUE ary;
- ool_conmin_parameters_default(ool_conmin_minimizer_spg, (void*) &P);
- ary = create_parameters_ary_spg(&P);
- RBGSL_SET_CLASS(ary, cool_conmin_spg_parameters);
- return ary;
-}
-
-static VALUE rb_ool_conmin_gencan_parameters_default(VALUE klass)
-{
- ool_conmin_gencan_parameters P;
- VALUE ary;
- ool_conmin_parameters_default(ool_conmin_minimizer_gencan, (void*) &P);
- ary = create_parameters_ary_gencan(&P);
- RBGSL_SET_CLASS(ary, cool_conmin_gencan_parameters);
- return ary;
-}
-
-/*************************************************/
-void Init_ool(VALUE module)
-{
- VALUE mOOL, mConmin;
- VALUE cool_conmin_minimizer;
-
- mOOL = rb_define_module("OOL");
- mConmin = rb_define_module_under(mOOL, "Conmin");
- cool_conmin_function = rb_define_class_under(mConmin, "Function", cgsl_function);
- cool_conmin_constraint = rb_define_class_under(mConmin, "Constraint", cGSL_Object);
- cool_conmin_minimizer = rb_define_class_under(mConmin, "Minimizer", cGSL_Object);
- cool_conmin_pgrad = rb_define_class_under(cool_conmin_minimizer, "Pgrad", cGSL_Object);
- cool_conmin_spg = rb_define_class_under(cool_conmin_minimizer, "Spg", cGSL_Object);
- cool_conmin_gencan = rb_define_class_under(cool_conmin_minimizer, "Gencan", cGSL_Object);
-
- def_const(mOOL);
-
- rb_define_singleton_method(cool_conmin_minimizer, "alloc", rb_ool_conmin_minimizer_alloc, -1);
- rb_define_method(cool_conmin_minimizer, "set", rb_ool_conmin_minimizer_set, -1);
- rb_define_method(cool_conmin_minimizer, "parameters_default", rb_ool_conmin_minimizer_parameters_default, 0);
- rb_define_method(cool_conmin_minimizer, "name", rb_ool_conmin_minimizer_name, 0);
- rb_define_method(cool_conmin_minimizer, "size", rb_ool_conmin_minimizer_size, 0);
- rb_define_method(cool_conmin_minimizer, "f", rb_ool_conmin_minimizer_f, 0);
- rb_define_method(cool_conmin_minimizer, "x", rb_ool_conmin_minimizer_x, 0);
- rb_define_method(cool_conmin_minimizer, "dx", rb_ool_conmin_minimizer_dx, 0);
- rb_define_method(cool_conmin_minimizer, "gradient", rb_ool_conmin_minimizer_gradient, 0);
- rb_define_method(cool_conmin_minimizer, "minimum", rb_ool_conmin_minimizer_minimum, 0);
- rb_define_method(cool_conmin_minimizer, "fcount", rb_ool_conmin_minimizer_fcount, 0);
- rb_define_method(cool_conmin_minimizer, "gcount", rb_ool_conmin_minimizer_gcount, 0);
- rb_define_method(cool_conmin_minimizer, "hcount", rb_ool_conmin_minimizer_hcount, 0);
- rb_define_method(cool_conmin_minimizer, "is_optimal", rb_ool_conmin_minimizer_is_optimal, 0);
- rb_define_method(cool_conmin_minimizer, "is_optimal?", rb_ool_conmin_minimizer_is_optimal2, 0);
- rb_define_method(cool_conmin_minimizer, "iterate", rb_ool_conmin_minimizer_iterate, 0);
- rb_define_method(cool_conmin_minimizer, "restart", rb_ool_conmin_minimizer_restart, 0);
- rb_define_method(cool_conmin_minimizer, "parameters_get", rb_ool_conmin_minimizer_parameters_get, 0);
- rb_define_method(cool_conmin_minimizer, "parameters_set", rb_ool_conmin_minimizer_parameters_set, 1);
-
- rb_define_singleton_method(cool_conmin_function, "alloc", rb_ool_conmin_function_alloc, -1);
- rb_define_method(cool_conmin_function, "set", rb_ool_conmin_function_set, -1);
- rb_define_method(cool_conmin_function, "set_n", rb_ool_conmin_function_set_n, 1);
- rb_define_alias(cool_conmin_function, "n=", "set_n");
- rb_define_method(cool_conmin_function, "n", rb_ool_conmin_function_n, 0);
- rb_define_method(cool_conmin_function, "params", rb_ool_conmin_function_params, 0);
- rb_define_method(cool_conmin_function, "set_params", rb_ool_conmin_function_set_params, 1);
- rb_define_alias(cool_conmin_function, "params=", "set_params");
- rb_define_method(cool_conmin_function, "set_functions", rb_ool_conmin_function_set_functions, 1);
- rb_define_alias(cool_conmin_function, "functions=", "set_functions");
- rb_define_method(cool_conmin_function, "set_f", rb_ool_conmin_function_set_f, 1);
- rb_define_alias(cool_conmin_function, "f=", "set_f");
- rb_define_method(cool_conmin_function, "set_df", rb_ool_conmin_function_set_df, 1);
- rb_define_alias(cool_conmin_function, "df=", "set_df");
- rb_define_method(cool_conmin_function, "set_fdf", rb_ool_conmin_function_set_fdf, 1);
- rb_define_alias(cool_conmin_function, "fdf=", "set_fdf");
- rb_define_method(cool_conmin_function, "set_Hv", rb_ool_conmin_function_set_Hv, 1);
- rb_define_alias(cool_conmin_function, "Hv=", "set_Hv");
-
- rb_define_singleton_method(cool_conmin_constraint, "alloc", rb_ool_conmin_constraint_alloc,
- -1);
- rb_define_method(cool_conmin_constraint, "set", rb_ool_conmin_constraint_set, -1);
- rb_define_method(cool_conmin_constraint, "set_n", rb_ool_conmin_constraint_set_n, 1);
- rb_define_alias(cool_conmin_constraint, "n=", "set_n");
- rb_define_method(cool_conmin_constraint, "set_L", rb_ool_conmin_constraint_set_L, 1);
- rb_define_alias(cool_conmin_constraint, "L=", "set_L");
- rb_define_method(cool_conmin_constraint, "set_U", rb_ool_conmin_constraint_set_U, 1);
- rb_define_alias(cool_conmin_constraint, "U=", "set_U");
- rb_define_method(cool_conmin_constraint, "set_LU", rb_ool_conmin_constraint_set_LU, 2);
- rb_define_alias(cool_conmin_constraint, "LU=", "set_LU");
-
- cool_conmin_pgrad_parameters = rb_define_class_under(cool_conmin_pgrad, "Parameters",
- rb_cArray);
- cool_conmin_spg_parameters = rb_define_class_under(cool_conmin_spg, "Parameters",
- rb_cArray);
- cool_conmin_gencan_parameters = rb_define_class_under(cool_conmin_gencan, "Parameters",
- rb_cArray);
- rb_define_singleton_method(cool_conmin_pgrad, "parameters_default",
- rb_ool_conmin_pgrad_parameters_default, 0);
- rb_define_singleton_method(cool_conmin_spg, "parameters_default",
- rb_ool_conmin_spg_parameters_default, 0);
- rb_define_singleton_method(cool_conmin_gencan, "parameters_default",
- rb_ool_conmin_gencan_parameters_default, 0);
-}
-
-#endif
diff --git a/ext/gsl/oper_complex_source.c b/ext/gsl/oper_complex_source.c
deleted file mode 100644
index 4071756..0000000
--- a/ext/gsl/oper_complex_source.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/* matrix/oper_complex_source.c
- *
- * Copyright (C) 1996, 1997, 1998, 1999, 2000 Brian Gough
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef GSL_1_2_LATER
-#include <config.h>
-#include <stdlib.h>
-#include <math.h>
-#include <gsl/gsl_math.h>
-#include <gsl/gsl_matrix.h>
-
-#define BASE_GSL_COMPLEX
-#include "include/templates_on.h"
-
-int
-FUNCTION (gsl_matrix, add) (GSL_TYPE (gsl_matrix) * a,
- const GSL_TYPE (gsl_matrix) * b)
-{
- const size_t M = a->size1;
- const size_t N = a->size2;
-
- if (b->size1 != M || b->size2 != N)
- {
- GSL_ERROR ("matrices must have same dimensions", GSL_EBADLEN);
- }
- else
- {
- const size_t tda_a = a->tda;
- const size_t tda_b = b->tda;
-
- size_t i, j;
-
- for (i = 0; i < M; i++)
- {
- for (j = 0; j < N; j++)
- {
- const size_t aij = 2 * (i * tda_a + j);
- const size_t bij = 2 * (i * tda_b + j);
-
- a->data[aij] += b->data[bij];
- a->data[aij + 1] += b->data[bij + 1];
- }
- }
-
- return GSL_SUCCESS;
- }
-}
-
-int
-FUNCTION (gsl_matrix, sub) (GSL_TYPE (gsl_matrix) * a,
- const GSL_TYPE (gsl_matrix) * b)
-{
- const size_t M = a->size1;
- const size_t N = a->size2;
-
- if (b->size1 != M || b->size2 != N)
- {
- GSL_ERROR ("matrices must have same dimensions", GSL_EBADLEN);
- }
- else
- {
- const size_t tda_a = a->tda;
- const size_t tda_b = b->tda;
-
- size_t i, j;
-
- for (i = 0; i < M; i++)
- {
- for (j = 0; j < N; j++)
- {
- const size_t aij = 2 * (i * tda_a + j);
- const size_t bij = 2 * (i * tda_b + j);
-
- a->data[aij] -= b->data[bij];
- a->data[aij + 1] -= b->data[bij + 1];
- }
- }
-
- return GSL_SUCCESS;
- }
-}
-
-int
-FUNCTION (gsl_matrix, mul_elements) (GSL_TYPE (gsl_matrix) * a,
- const GSL_TYPE (gsl_matrix) * b)
-{
- const size_t M = a->size1;
- const size_t N = a->size2;
-
- if (b->size1 != M || b->size2 != N)
- {
- GSL_ERROR ("matrices must have same dimensions", GSL_EBADLEN);
- }
- else
- {
- const size_t tda_a = a->tda;
- const size_t tda_b = b->tda;
-
- size_t i, j;
-
- for (i = 0; i < M; i++)
- {
- for (j = 0; j < N; j++)
- {
- const size_t aij = 2 * (i * tda_a + j);
- const size_t bij = 2 * (i * tda_b + j);
-
- ATOMIC ar = a->data[aij];
- ATOMIC ai = a->data[aij + 1];
-
- ATOMIC br = b->data[bij];
- ATOMIC bi = b->data[bij + 1];
-
- a->data[aij] = ar * br - ai * bi;
- a->data[aij + 1] = ar * bi + ai * br;
- }
- }
-
- return GSL_SUCCESS;
- }
-}
-
-int
-FUNCTION (gsl_matrix, div_elements) (GSL_TYPE (gsl_matrix) * a,
- const GSL_TYPE (gsl_matrix) * b)
-{
- const size_t M = a->size1;
- const size_t N = a->size2;
-
- if (b->size1 != M || b->size2 != N)
- {
- GSL_ERROR ("matrices must have same dimensions", GSL_EBADLEN);
- }
- else
- {
- const size_t tda_a = a->tda;
- const size_t tda_b = b->tda;
-
- size_t i, j;
-
- for (i = 0; i < M; i++)
- {
- for (j = 0; j < N; j++)
- {
- const size_t aij = 2 * (i * tda_a + j);
- const size_t bij = 2 * (i * tda_b + j);
-
- ATOMIC ar = a->data[aij];
- ATOMIC ai = a->data[aij + 1];
-
- ATOMIC br = b->data[bij];
- ATOMIC bi = b->data[bij + 1];
-
- ATOMIC s = 1.0 / hypot(br, bi);
-
- ATOMIC sbr = s * br;
- ATOMIC sbi = s * bi;
-
- a->data[aij] = (ar * sbr + ai * sbi) * s;
- a->data[aij + 1] = (ai * sbr - ar * sbi) * s;
- }
- }
-
- return GSL_SUCCESS;
- }
-}
-
-int FUNCTION (gsl_matrix, scale) (GSL_TYPE (gsl_matrix) * a, const BASE x)
-{
- const size_t M = a->size1;
- const size_t N = a->size2;
- const size_t tda = a->tda;
-
- size_t i, j;
-
- ATOMIC xr = GSL_REAL(x);
- ATOMIC xi = GSL_IMAG(x);
-
- for (i = 0; i < M; i++)
- {
- for (j = 0; j < N; j++)
- {
- const size_t aij = 2 * (i * tda + j);
-
- ATOMIC ar = a->data[aij];
- ATOMIC ai = a->data[aij + 1];
-
- a->data[aij] = ar * xr - ai * xi;
- a->data[aij + 1] = ar * xi + ai * xr;
- }
- }
-
- return GSL_SUCCESS;
-}
-
-int FUNCTION (gsl_matrix, add_constant) (GSL_TYPE (gsl_matrix) * a, const BASE x)
-{
- const size_t M = a->size1;
- const size_t N = a->size2;
- const size_t tda = a->tda;
-
- size_t i, j;
-
- for (i = 0; i < M; i++)
- {
- for (j = 0; j < N; j++)
- {
- a->data[2 * (i * tda + j)] += GSL_REAL (x);
- a->data[2 * (i * tda + j) + 1] += GSL_IMAG (x);
- }
- }
-
- return GSL_SUCCESS;
-}
-
-
-int FUNCTION (gsl_matrix, add_diagonal) (GSL_TYPE (gsl_matrix) * a, const BASE x)
-{
- const size_t M = a->size1;
- const size_t N = a->size2;
- const size_t tda = a->tda;
- const size_t loop_lim = (M < N ? M : N);
- size_t i;
- for (i = 0; i < loop_lim; i++)
- {
- a->data[2 * (i * tda + i)] += GSL_REAL (x);
- a->data[2 * (i * tda + i) + 1] += GSL_IMAG (x);
- }
-
- return GSL_SUCCESS;
-}
-
-
-#include "include/templates_off.h"
-#undef BASE_GSL_COMPLEX
-#endif
diff --git a/ext/gsl/sf_mathieu.c b/ext/gsl/sf_mathieu.c
deleted file mode 100644
index 721c7ff..0000000
--- a/ext/gsl/sf_mathieu.c
+++ /dev/null
@@ -1,238 +0,0 @@
-#include "include/rb_gsl.h"
-#ifdef GSL_1_9_LATER
-
-static VALUE cWorkspace;
-
-static VALUE rb_gsl_sf_mathieu_alloc(VALUE klass, VALUE n, VALUE q)
-{
- gsl_sf_mathieu_workspace *w;
- w = gsl_sf_mathieu_alloc((size_t) FIX2INT(n), NUM2DBL(q));
- return Data_Wrap_Struct(klass, 0, gsl_sf_mathieu_free, w);
-}
-
-static VALUE sf_mathieu_eval(VALUE order, VALUE qq,
- int (*f)(int, double, gsl_sf_result*))
-{
- gsl_sf_result r;
- (*f)(FIX2INT(order), NUM2DBL(qq), &r);
- return rb_float_new(r.val);
-}
-
-static VALUE sf_mathieu_eval2(VALUE n1, VALUE n2, VALUE q, VALUE x,
- int (*f)(int, int, double, double, gsl_sf_result*))
-{
- gsl_sf_result r;
- (*f)(FIX2INT(n1),FIX2INT(n2), NUM2DBL(q), NUM2DBL(x), &r);
- return rb_float_new(r.val);
-}
-
-static VALUE sf_mathieu_array_eval(int argc, VALUE *argv,
- int (*f)(int, int, double, gsl_sf_mathieu_workspace*, double[]))
-{
- gsl_sf_mathieu_workspace *w;
- gsl_vector *v;
- int n1, n2;
- double q;
- switch (argc) {
- case 4:
- if (!rb_obj_is_kind_of(argv[3], cWorkspace)) {
- rb_raise(rb_eTypeError, "Wrong argument type 3 (%s detected, %s expected)",
- rb_class2name(CLASS_OF(argv[3])), rb_class2name(cWorkspace));
- }
- n1 = FIX2INT(argv[0]);
- n2 = FIX2INT(argv[1]);
- q = NUM2DBL(argv[2]);
- Data_Get_Struct(argv[3], gsl_sf_mathieu_workspace, w);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments. (%d for 4)", argc);
- }
- v = gsl_vector_alloc(n2 - n1 + 1);
- (*f)(n1, n2, q, w, v->data);
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
-}
-
-static VALUE sf_mathieu_array_eval2(int argc, VALUE *argv,
- int (*f)(int, int, double, double, gsl_sf_mathieu_workspace*, double[]))
-{
- gsl_sf_mathieu_workspace *w;
- gsl_vector *v;
- int n1, n2;
- double q, x;
- switch (argc) {
- case 5:
- if (!rb_obj_is_kind_of(argv[4], cWorkspace)) {
- rb_raise(rb_eTypeError, "Wrong argument type 4 (%s detected, %s expected)",
- rb_class2name(CLASS_OF(argv[4])), rb_class2name(cWorkspace));
- }
- n1 = FIX2INT(argv[0]);
- n2 = FIX2INT(argv[1]);
- q = NUM2DBL(argv[2]);
- x = NUM2DBL(argv[3]);
- Data_Get_Struct(argv[4], gsl_sf_mathieu_workspace, w);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments. (%d for 5)", argc);
- }
- v = gsl_vector_alloc(n2 - n1 + 1);
- (*f)(n1, n2, q, x, w, v->data);
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
-}
-static VALUE sf_mathieu_array_eval3(int argc, VALUE *argv,
- int (*f)(int, int, int, double, double, gsl_sf_mathieu_workspace*, double[]))
-{
- gsl_sf_mathieu_workspace *w;
- gsl_vector *v;
- int n1, n2, n3;
- double q, x;
- switch (argc) {
- case 6:
- if (!rb_obj_is_kind_of(argv[5], cWorkspace)) {
- rb_raise(rb_eTypeError, "Wrong argument type 5 (%s detected, %s expected)",
- rb_class2name(CLASS_OF(argv[5])), rb_class2name(cWorkspace));
- }
- n1 = FIX2INT(argv[0]);
- n2 = FIX2INT(argv[1]);
- n3 = FIX2INT(argv[2]);
- q = NUM2DBL(argv[3]);
- x = NUM2DBL(argv[4]);
- Data_Get_Struct(argv[5], gsl_sf_mathieu_workspace, w);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments. (%d for 6)", argc);
- }
- v = gsl_vector_alloc(n3 - n2 + 1);
- (*f)(n1, n2, n3, q, x, w, v->data);
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
-}
-static VALUE sf_mathieu_eval_int_double2(VALUE order, VALUE qq, VALUE zz,
- int (*f)(int, double, double, gsl_sf_result*))
-{
- gsl_sf_result r;
- (*f)(FIX2INT(order), NUM2DBL(qq), NUM2DBL(zz), &r);
- return rb_float_new(r.val);
-}
-static VALUE sf_mathieu_eval_e_int_double2(VALUE order, VALUE qq, VALUE zz,
- int (*f)(int, double, double, gsl_sf_result*))
-{
- gsl_sf_result *r;
- VALUE val;
- val = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, r);
- (*f)(FIX2INT(order), NUM2DBL(qq), NUM2DBL(zz), r);
- return val;
-}
-
-static VALUE sf_mathieu_eval_e_int2_double2(VALUE n1, VALUE n2, VALUE qq, VALUE zz,
- int (*f)(int, int, double, double, gsl_sf_result*))
-{
- gsl_sf_result *r;
- VALUE val;
- val = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, r);
- (*f)(FIX2INT(n1), FIX2INT(n2), NUM2DBL(qq), NUM2DBL(zz), r);
- return val;
-}
-/**********/
-static VALUE rb_gsl_sf_mathieu_a_e(VALUE module, VALUE order, VALUE qq)
-{
- return rb_gsl_sf_eval_e_int_double(gsl_sf_mathieu_a, order, qq);
-}
-static VALUE rb_gsl_sf_mathieu_a(VALUE module, VALUE order, VALUE qq)
-{
- return sf_mathieu_eval(order, qq, gsl_sf_mathieu_a);
-}
-static VALUE rb_gsl_sf_mathieu_a_array(VALUE module, int argc, VALUE *argv)
-{
- return sf_mathieu_array_eval(argc, argv, gsl_sf_mathieu_a_array);
-}
-static VALUE rb_gsl_sf_mathieu_b_e(VALUE module, VALUE order, VALUE qq)
-{
- return rb_gsl_sf_eval_e_int_double(gsl_sf_mathieu_b, order, qq);
-}
-static VALUE rb_gsl_sf_mathieu_b(VALUE module, VALUE order, VALUE qq)
-{
- return sf_mathieu_eval(order, qq, gsl_sf_mathieu_b);
-}
-static VALUE rb_gsl_sf_mathieu_b_array(VALUE module, int argc, VALUE *argv)
-{
- return sf_mathieu_array_eval(argc, argv, gsl_sf_mathieu_b_array);
-}
-static VALUE rb_gsl_sf_mathieu_ce_e(VALUE module, VALUE order, VALUE qq, VALUE zz)
-{
- return sf_mathieu_eval_e_int_double2(order, qq, zz, gsl_sf_mathieu_ce);
-}
-static VALUE rb_gsl_sf_mathieu_ce(VALUE module, VALUE order, VALUE qq, VALUE zz)
-{
- return sf_mathieu_eval_int_double2(order, qq, zz, gsl_sf_mathieu_ce);
-}
-static VALUE rb_gsl_sf_mathieu_ce_array(VALUE module, int argc, VALUE *argv)
-{
- return sf_mathieu_array_eval2(argc, argv, gsl_sf_mathieu_ce_array);
-}
-static VALUE rb_gsl_sf_mathieu_se_e(VALUE module, VALUE order, VALUE qq, VALUE zz)
-{
- return sf_mathieu_eval_e_int_double2(order, qq, zz, gsl_sf_mathieu_se);
-}
-static VALUE rb_gsl_sf_mathieu_se(VALUE module, VALUE order, VALUE qq, VALUE zz)
-{
- return sf_mathieu_eval_int_double2(order, qq, zz, gsl_sf_mathieu_se);
-}
-static VALUE rb_gsl_sf_mathieu_se_array(VALUE module, int argc, VALUE *argv)
-{
- return sf_mathieu_array_eval2(argc, argv, gsl_sf_mathieu_se_array);
-}
-
-/*****/
-static VALUE rb_gsl_sf_mathieu_Mc_e(VALUE module, VALUE n1, VALUE n2, VALUE q, VALUE x)
-{
- return sf_mathieu_eval_e_int2_double2(n1, n2, q, x, gsl_sf_mathieu_Mc);
-}
-static VALUE rb_gsl_sf_mathieu_Mc(VALUE module, VALUE n1, VALUE n2, VALUE q, VALUE x)
-{
- return sf_mathieu_eval2(n1, n2, q, x, gsl_sf_mathieu_Mc);
-}
-static VALUE rb_gsl_sf_mathieu_Mc_array(VALUE module, int argc, VALUE *argv)
-{
- return sf_mathieu_array_eval3(argc, argv, gsl_sf_mathieu_Mc_array);
-}
-static VALUE rb_gsl_sf_mathieu_Ms_e(VALUE module, VALUE n1, VALUE n2, VALUE q, VALUE x)
-{
- return sf_mathieu_eval_e_int2_double2(n1, n2, q, x, gsl_sf_mathieu_Ms);
-}
-static VALUE rb_gsl_sf_mathieu_Ms(VALUE module, VALUE n1, VALUE n2, VALUE q, VALUE x)
-{
- return sf_mathieu_eval2(n1, n2, q, x, gsl_sf_mathieu_Ms);
-}
-static VALUE rb_gsl_sf_mathieu_Ms_array(VALUE module, int argc, VALUE *argv)
-{
- return sf_mathieu_array_eval3(argc, argv, gsl_sf_mathieu_Ms_array);
-}
-/*****/
-void Init_sf_mathieu(VALUE module)
-{
- VALUE mMathieu;
-
- mMathieu = rb_define_module_under(module, "Mathieu");
- cWorkspace = rb_define_class_under(mMathieu, "Workspace", cGSL_Object);
- rb_define_singleton_method(cWorkspace, "alloc", rb_gsl_sf_mathieu_alloc, 2);
-
- rb_define_module_function(module, "mathieu_a", rb_gsl_sf_mathieu_a, 2);
- rb_define_module_function(module, "mathieu_a_e", rb_gsl_sf_mathieu_a_e, 2);
- rb_define_module_function(module, "mathieu_a_array", rb_gsl_sf_mathieu_a_array, -1);
- rb_define_module_function(module, "mathieu_b", rb_gsl_sf_mathieu_b, 2);
- rb_define_module_function(module, "mathieu_b_e", rb_gsl_sf_mathieu_b_e, 2);
- rb_define_module_function(module, "mathieu_b_array", rb_gsl_sf_mathieu_b_array, -1);
- rb_define_module_function(module, "mathieu_ce", rb_gsl_sf_mathieu_ce, 3);
- rb_define_module_function(module, "mathieu_ce_e", rb_gsl_sf_mathieu_ce_e, 3);
- rb_define_module_function(module, "mathieu_ce_array", rb_gsl_sf_mathieu_ce_array, -1);
- rb_define_module_function(module, "mathieu_se", rb_gsl_sf_mathieu_se, 3);
- rb_define_module_function(module, "mathieu_se_e", rb_gsl_sf_mathieu_se_e, 3);
- rb_define_module_function(module, "mathieu_se_array", rb_gsl_sf_mathieu_se_array, -1);
- rb_define_module_function(module, "mathieu_Mc", rb_gsl_sf_mathieu_Mc, 4);
- rb_define_module_function(module, "mathieu_Mc_e", rb_gsl_sf_mathieu_Mc_e, 4);
- rb_define_module_function(module, "mathieu_Mc_array", rb_gsl_sf_mathieu_Mc_array, -1);
- rb_define_module_function(module, "mathieu_Ms", rb_gsl_sf_mathieu_Ms, 4);
- rb_define_module_function(module, "mathieu_Ms_e", rb_gsl_sf_mathieu_Ms_e, 4);
- rb_define_module_function(module, "mathieu_Ms_array", rb_gsl_sf_mathieu_Ms_array, -1);
-}
-
-#endif
diff --git a/ext/gsl/alf.c b/ext/gsl_native/alf.c
similarity index 93%
rename from ext/gsl/alf.c
rename to ext/gsl_native/alf.c
index aec11f0..366e5ad 100644
--- a/ext/gsl/alf.c
+++ b/ext/gsl_native/alf.c
@@ -19,7 +19,7 @@ static VALUE rb_alf_params(VALUE obj, VALUE csphase, VALUE cnorm, VALUE norm)
int ret;
Data_Get_Struct(obj, alf_workspace, w);
ret = alf_params(FIX2INT(csphase), FIX2INT(cnorm), (alf_norm_t) FIX2INT(norm), w);
- return INT2FIX(ret);
+ return INT2FIX(ret);
}
static void define_constants(VALUE klass)
@@ -60,11 +60,11 @@ static VALUE rb_alf_Plm_array(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(argv[1], gsl_vector, res);
lmax = w->lmax;
if (res->size < alf_array_size(lmax)) {
- rb_raise(rb_eRuntimeError, "Vector length is too small. (%d for >= %d\n", (int) res->size,
- (int) alf_array_size(lmax));
+ rb_raise(rb_eRuntimeError, "Vector length is too small. (%d for >= %d\n", (int) res->size,
+ (int) alf_array_size(lmax));
}
- ret = argv[1];
- } else {
+ ret = argv[1];
+ } else {
lmax = FIX2INT(argv[0]);
x = NUM2DBL(argv[1]);
res = gsl_vector_alloc(alf_array_size(lmax));
@@ -85,8 +85,8 @@ static VALUE rb_alf_Plm_array(int argc, VALUE *argv, VALUE obj)
CHECK_VECTOR(argv[2]);
Data_Get_Struct(argv[2], gsl_vector, res);
if (res->size < alf_array_size(lmax)) {
- rb_raise(rb_eRuntimeError, "Vector length is too small. (%d for >= %d\n", (int) res->size,
- (int) alf_array_size(lmax));
+ rb_raise(rb_eRuntimeError, "Vector length is too small. (%d for >= %d\n", (int) res->size,
+ (int) alf_array_size(lmax));
}
ret = argv[2];
}
@@ -155,11 +155,11 @@ static VALUE rb_alf_Plm_deriv_array(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(argv[3], gsl_vector, deriv);
if (res->size < alf_array_size(lmax)) {
rb_raise(rb_eRuntimeError, "Vector length is too small. (%d for >= %d\n", (int) res->size,
- (int) alf_array_size(lmax));
+ (int) alf_array_size(lmax));
}
if (deriv->size < alf_array_size(lmax)) {
rb_raise(rb_eRuntimeError, "Vector length is too small. (%d for >= %d\n", (int) res->size,
- (int) alf_array_size(lmax));
+ (int) alf_array_size(lmax));
}
ret1 = argv[2];
ret2 = argv[3];
diff --git a/ext/gsl/array.c b/ext/gsl_native/array.c
similarity index 77%
rename from ext/gsl/array.c
rename to ext/gsl_native/array.c
index d8c6db7..6ca059b 100644
--- a/ext/gsl/array.c
+++ b/ext/gsl_native/array.c
@@ -12,9 +12,7 @@
#include "include/rb_gsl_common.h"
#include "include/rb_gsl_array.h"
#include "include/rb_gsl_complex.h"
-#ifdef HAVE_NARRAY_H
#include "include/rb_gsl_with_narray.h"
-#endif
/* global variables */
VALUE cgsl_block, cgsl_block_int;
@@ -47,9 +45,6 @@ double* get_vector_ptr(VALUE ary, size_t *stride, size_t *n)
gsl_vector *v = NULL;
gsl_vector_complex *vc = NULL;
gsl_matrix *m;
-#ifdef HAVE_NARRAY_H
- VALUE ary2;
-#endif
if (VECTOR_P(ary)) {
Data_Get_Struct(ary, gsl_vector, v);
*stride = v->stride;
@@ -67,6 +62,7 @@ double* get_vector_ptr(VALUE ary, size_t *stride, size_t *n)
return m->data;
#ifdef HAVE_NARRAY_H
} else if (NA_IsNArray(ary)) {
+ VALUE ary2;
*n = NA_TOTAL(ary);
*stride = 1;
ary2 = na_change_type(ary, NA_DFLOAT);
@@ -74,7 +70,7 @@ double* get_vector_ptr(VALUE ary, size_t *stride, size_t *n)
#endif
} else {
rb_raise(rb_eTypeError,
- "wrong argument type %s", rb_class2name(CLASS_OF(ary)));
+ "wrong argument type %s", rb_class2name(CLASS_OF(ary)));
}
}
@@ -91,7 +87,7 @@ gsl_vector* get_cvector(VALUE obj)
rb_raise(rb_eTypeError,
"wrong argument type %s", rb_class2name(CLASS_OF(obj)));
}
- return v;
+ return v;
}
VALUE make_rarray_from_cvector(const gsl_vector *v)
@@ -142,7 +138,7 @@ gsl_vector* get_vector(VALUE ary)
return v;
} else {
rb_raise(rb_eTypeError,
- "wrong argument type %s", rb_class2name(CLASS_OF(ary)));
+ "wrong argument type %s", rb_class2name(CLASS_OF(ary)));
}
}
@@ -157,7 +153,7 @@ gsl_vector* make_cvector_from_rarrays(VALUE ary)
#endif
} else {
rb_raise(rb_eTypeError,
- "wrong argument type %s", rb_class2name(CLASS_OF(ary)));
+ "wrong argument type %s", rb_class2name(CLASS_OF(ary)));
}
}
@@ -184,7 +180,7 @@ void carray_set_from_rarrays(double *a, VALUE ary)
#endif
} else {
rb_raise(rb_eTypeError,
- "wrong argument type %s", rb_class2name(CLASS_OF(ary)));
+ "wrong argument type %s", rb_class2name(CLASS_OF(ary)));
}
}
@@ -274,7 +270,7 @@ VALUE make_matrix_clone2(VALUE vm)
mnew = gsl_matrix_alloc(m->size1, m->size2);
if (mnew == NULL) rb_raise(rb_eNoMemError, "gsl_matrix_alloc failed");
gsl_matrix_memcpy(mnew, m);
- return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);;
+ return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
}
gsl_matrix_complex* make_matrix_complex_clone(const gsl_matrix_complex *m)
@@ -316,8 +312,8 @@ gsl_matrix_complex* matrix_to_complex(const gsl_matrix *m)
return cm;
}
-void gsl_matrix_complex_mul(gsl_matrix_complex *mnew, const gsl_matrix_complex *m,
- const gsl_matrix_complex *mb)
+void gsl_matrix_complex_mul(gsl_matrix_complex *mnew, const gsl_matrix_complex *m,
+ const gsl_matrix_complex *mb)
{
gsl_complex a, b, c, sum;
size_t i, j, k;
@@ -325,45 +321,45 @@ void gsl_matrix_complex_mul(gsl_matrix_complex *mnew, const gsl_matrix_complex *
for (j = 0; j < m->size2; j++) {
sum = gsl_complex_rect(0.0, 0.0);
for (k = 0; k < m->size2; k++) {
- a = gsl_matrix_complex_get(m, j, k);
- b = gsl_matrix_complex_get(mb, k, i);
- c = gsl_complex_mul(a, b);
- sum = gsl_complex_add(sum, c);
+ a = gsl_matrix_complex_get(m, j, k);
+ b = gsl_matrix_complex_get(mb, k, i);
+ c = gsl_complex_mul(a, b);
+ sum = gsl_complex_add(sum, c);
}
gsl_matrix_complex_set(mnew, j, i, sum);
}
}
}
-void gsl_matrix_mul_vector(gsl_vector *vnew,
- const gsl_matrix *m, const gsl_vector *v)
+void gsl_matrix_mul_vector(gsl_vector *vnew,
+ const gsl_matrix *m, const gsl_vector *v)
{
size_t i, j;
double val;
for (i = 0; i < m->size1; i++) {
val = 0;
- for (j = 0; j < m->size2; j++)
+ for (j = 0; j < m->size2; j++)
val += gsl_matrix_get(m, i, j)*gsl_vector_get(v, j);
gsl_vector_set(vnew, i, val);
}
}
-void gsl_matrix_int_mul_vector(gsl_vector_int *vnew,
- const gsl_matrix_int *m, const gsl_vector_int *v)
+void gsl_matrix_int_mul_vector(gsl_vector_int *vnew,
+ const gsl_matrix_int *m, const gsl_vector_int *v)
{
size_t i, j;
int val;
for (i = 0; i < m->size1; i++) {
val = 0;
- for (j = 0; j < m->size2; j++)
+ for (j = 0; j < m->size2; j++)
val += gsl_matrix_int_get(m, i, j)*gsl_vector_int_get(v, j);
gsl_vector_int_set(vnew, i, val);
}
}
-void gsl_matrix_complex_mul_vector(gsl_vector_complex *vnew,
- const gsl_matrix_complex *m,
- const gsl_vector_complex *v)
+void gsl_matrix_complex_mul_vector(gsl_vector_complex *vnew,
+ const gsl_matrix_complex *m,
+ const gsl_vector_complex *v)
{
gsl_complex a, b, c, sum;
size_t i, j;
@@ -377,98 +373,17 @@ void gsl_matrix_complex_mul_vector(gsl_vector_complex *vnew,
}
gsl_vector_complex_set(vnew, i, sum);
}
-
-}
-
-/*****/
-#ifndef GSL_1_12_LATER
-int gsl_vector_complex_add(gsl_vector_complex *cv, const gsl_vector_complex *cv2)
-{
- size_t i;
- gsl_complex a, b, c;
- for (i = 0; i < cv->size; i++) {
- a = gsl_vector_complex_get(cv, i);
- b = gsl_vector_complex_get(cv2, i);
- c = gsl_complex_add(a, b);
- gsl_vector_complex_set(cv, i, c);
- }
- return 0;
}
-int gsl_vector_complex_add_constant(gsl_vector_complex *cv, gsl_complex b)
-{
- size_t i;
- gsl_complex a, c;
- for (i = 0; i < cv->size; i++) {
- a = gsl_vector_complex_get(cv, i);
- c = gsl_complex_add(a, b);
- gsl_vector_complex_set(cv, i, c);
- }
- return 0;
-}
-
-int gsl_vector_complex_scale(gsl_vector_complex *cv, gsl_complex b)
-{
- size_t i;
- gsl_complex a, c;
- for (i = 0; i < cv->size; i++) {
- a = gsl_vector_complex_get(cv, i);
- c = gsl_complex_mul(a, b);
- gsl_vector_complex_set(cv, i, c);
- }
- return 0;
-}
-
-
-int gsl_vector_complex_sub(gsl_vector_complex *cv, const gsl_vector_complex *cv2)
-{
- size_t i;
- gsl_complex a, b, c;
- for (i = 0; i < cv->size; i++) {
- a = gsl_vector_complex_get(cv, i);
- b = gsl_vector_complex_get(cv2, i);
- c = gsl_complex_sub(a, b);
- gsl_vector_complex_set(cv, i, c);
- }
- return 0;
-}
-
-int gsl_vector_complex_mul(gsl_vector_complex *cv, const gsl_vector_complex *cv2)
-{
- size_t i;
- gsl_complex a, b, c;
- for (i = 0; i < cv->size; i++) {
- a = gsl_vector_complex_get(cv, i);
- b = gsl_vector_complex_get(cv2, i);
- c = gsl_complex_mul(a, b);
- gsl_vector_complex_set(cv, i, c);
- }
- return 0;
-}
-
-int gsl_vector_complex_div(gsl_vector_complex *cv, const gsl_vector_complex *cv2)
-{
- size_t i;
- gsl_complex a, b, c;
- for (i = 0; i < cv->size; i++) {
- a = gsl_vector_complex_get(cv, i);
- b = gsl_vector_complex_get(cv2, i);
- c = gsl_complex_div(a, b);
- gsl_vector_complex_set(cv, i, c);
- }
- return 0;
-}
-#endif
-
VALUE rb_gsl_range2ary(VALUE obj)
{
// double beg, en;
// size_t n;
// int step;
VALUE ary;
- if (CLASS_OF(obj) != rb_cRange)
+ if (CLASS_OF(obj) != rb_cRange)
rb_raise(rb_eTypeError, "wrong argument type %s (Range expected)",
- rb_class2name(CLASS_OF(obj)));
+ rb_class2name(CLASS_OF(obj)));
ary = rb_funcall(obj, rb_gsl_id_to_a, 0);
return ary;
}
@@ -480,9 +395,9 @@ VALUE rb_gsl_range2vector(VALUE obj)
size_t n;
int i, step;
gsl_vector *v;
- if (CLASS_OF(obj) != rb_cRange)
+ if (CLASS_OF(obj) != rb_cRange)
rb_raise(rb_eTypeError, "wrong argument type %s (Range expected)",
- rb_class2name(CLASS_OF(obj)));
+ rb_class2name(CLASS_OF(obj)));
get_range_beg_en_n(obj, &beg, &en, &n, &step);
v = gsl_vector_alloc(n);
for (i = 0; i < (int) n; i++) gsl_vector_set(v, i, (double) (beg+i));
@@ -495,9 +410,9 @@ VALUE rb_gsl_range2vector_int(VALUE obj)
int beg, en, i, step;
size_t n;
gsl_vector_int *v;
- if (CLASS_OF(obj) != rb_cRange)
+ if (CLASS_OF(obj) != rb_cRange)
rb_raise(rb_eTypeError, "wrong argument type %s (Range expected)",
- rb_class2name(CLASS_OF(obj)));
+ rb_class2name(CLASS_OF(obj)));
get_range_int_beg_en_n(obj, &beg, &en, &n, &step);
v = gsl_vector_int_alloc(n);
for (i = 0; i < (int) n; i++) gsl_vector_int_set(v, i, beg+i);
@@ -547,71 +462,71 @@ void rb_gsl_matrix_int_view_free(gsl_matrix_int_view * mv)
void Init_gsl_array(VALUE module)
{
- cgsl_block = rb_define_class_under(module, "Block",
- cGSL_Object);
- cgsl_block_int = rb_define_class_under(cgsl_block, "Int",
- cGSL_Object);
- cgsl_block_uchar = rb_define_class_under(cgsl_block, "Byte",
- cGSL_Object);
+ cgsl_block = rb_define_class_under(module, "Block",
+ cGSL_Object);
+ cgsl_block_int = rb_define_class_under(cgsl_block, "Int",
+ cGSL_Object);
+ cgsl_block_uchar = rb_define_class_under(cgsl_block, "Byte",
+ cGSL_Object);
cgsl_block_complex = rb_define_class_under(cgsl_block, "Complex", cgsl_block);
- cgsl_vector = rb_define_class_under(module, "Vector",
- cGSL_Object);
- cgsl_vector_col = rb_define_class_under(cgsl_vector, "Col",
- cgsl_vector);
- cgsl_vector_complex = rb_define_class_under(cgsl_vector, "Complex",
- cGSL_Object);
+ cgsl_vector = rb_define_class_under(module, "Vector",
+ cGSL_Object);
+ cgsl_vector_col = rb_define_class_under(cgsl_vector, "Col",
+ cgsl_vector);
+ cgsl_vector_complex = rb_define_class_under(cgsl_vector, "Complex",
+ cGSL_Object);
cgsl_vector_complex_col = rb_define_class_under(cgsl_vector_complex, "Col",
- cgsl_vector_complex);
+ cgsl_vector_complex);
cgsl_matrix = rb_define_class_under(module, "Matrix", cGSL_Object);
cgsl_matrix_complex = rb_define_class_under(cgsl_matrix, "Complex", cGSL_Object);
cgsl_vector_view = rb_define_class_under(cgsl_vector, "View", cgsl_vector);
cgsl_vector_col_view = rb_define_class_under(cgsl_vector_col, "View", cgsl_vector_col);
- cgsl_vector_complex_view = rb_define_class_under(cgsl_vector_complex, "View",
- cgsl_vector_complex);
- cgsl_vector_complex_col_view = rb_define_class_under(cgsl_vector_complex_col, "View",
- cgsl_vector_complex_col);
+ cgsl_vector_complex_view = rb_define_class_under(cgsl_vector_complex, "View",
+ cgsl_vector_complex);
+ cgsl_vector_complex_col_view = rb_define_class_under(cgsl_vector_complex_col, "View",
+ cgsl_vector_complex_col);
cgsl_vector_int = rb_define_class_under(cgsl_vector, "Int", cGSL_Object);
- cgsl_vector_int_col = rb_define_class_under(cgsl_vector_int, "Col", cgsl_vector_int);
+ cgsl_vector_int_col = rb_define_class_under(cgsl_vector_int, "Col", cgsl_vector_int);
cgsl_vector_int_view = rb_define_class_under(cgsl_vector_int, "View", cgsl_vector_int);
cgsl_vector_int_col_view = rb_define_class_under(cgsl_vector_int_col, "View", cgsl_vector_int_col);
/*****/
- cgsl_matrix_view = rb_define_class_under(cgsl_matrix, "View",
- cgsl_matrix);
- cgsl_matrix_complex_view = rb_define_class_under(cgsl_matrix_complex, "View",
- cgsl_matrix_complex);
- cgsl_permutation = rb_define_class_under(module, "Permutation", cGSL_Object);
+ cgsl_matrix_view = rb_define_class_under(cgsl_matrix, "View",
+ cgsl_matrix);
+ cgsl_matrix_complex_view = rb_define_class_under(cgsl_matrix_complex, "View",
+ cgsl_matrix_complex);
+ cgsl_permutation = rb_define_class_under(module, "Permutation", cGSL_Object);
cgsl_index = rb_define_class_under(module, "Index", cgsl_permutation);
cgsl_vector_view_ro = rb_define_class_under(cgsl_vector_view, "ReadOnly",
- cgsl_vector_view);
+ cgsl_vector_view);
cgsl_vector_col_view_ro = rb_define_class_under(cgsl_vector_col_view, "ReadOnly",
- cgsl_vector_col_view);
+ cgsl_vector_col_view);
cgsl_vector_int_view_ro = rb_define_class_under(cgsl_vector_int_view, "ReadOnly",
- cgsl_vector_int_view);
+ cgsl_vector_int_view);
cgsl_vector_int_col_view_ro = rb_define_class_under(cgsl_vector_int_col_view, "ReadOnly",
- cgsl_vector_int_col_view);
+ cgsl_vector_int_col_view);
cgsl_matrix_view_ro = rb_define_class_under(cgsl_matrix_view, "ReadOnly",
- cgsl_matrix_view);
+ cgsl_matrix_view);
- cgsl_vector_complex_view_ro = rb_define_class_under(cgsl_vector_complex_view,
- "ReadOnly",
- cgsl_vector_complex_view);
- cgsl_matrix_complex_view_ro = rb_define_class_under(cgsl_matrix_complex_view,
- "ReadOnly",
- cgsl_matrix_complex_view);
+ cgsl_vector_complex_view_ro = rb_define_class_under(cgsl_vector_complex_view,
+ "ReadOnly",
+ cgsl_vector_complex_view);
+ cgsl_matrix_complex_view_ro = rb_define_class_under(cgsl_matrix_complex_view,
+ "ReadOnly",
+ cgsl_matrix_complex_view);
/*****/
cgsl_matrix_int = rb_define_class_under(cgsl_matrix, "Int", cGSL_Object);
cgsl_matrix_int_view = rb_define_class_under(cgsl_matrix_int, "View", cgsl_matrix_int);
cgsl_matrix_int_view_ro = rb_define_class_under(cgsl_matrix_int_view, "ReadOnly",
- cgsl_matrix_int_view);
+ cgsl_matrix_int_view);
/*****/
Init_gsl_block_init(module);
Init_gsl_block_int_init(module);
@@ -624,16 +539,14 @@ void Init_gsl_array(VALUE module)
Init_gsl_matrix_int(module);
Init_gsl_matrix_complex(module);
Init_gsl_permutation(module);
-#ifdef GSL_1_1_LATER
Init_gsl_combination(module);
-#endif
Init_gsl_array_complex(module);
Init_gsl_matrix_nmf();
rb_define_method(cgsl_vector_view_ro, "set", rb_gsl_obj_read_only, -1);
rb_define_method(cgsl_matrix_view_ro, "set", rb_gsl_obj_read_only, -1);
rb_define_method(cgsl_vector_int_view_ro, "set", rb_gsl_obj_read_only, -1);
- rb_define_method(cgsl_matrix_int_view_ro, "set", rb_gsl_obj_read_only, -1);
+ rb_define_method(cgsl_matrix_int_view_ro, "set", rb_gsl_obj_read_only, -1);
rb_define_method(cgsl_vector_complex_view_ro, "set", rb_gsl_obj_read_only, -1);
rb_define_method(cgsl_matrix_complex_view_ro, "set", rb_gsl_obj_read_only, -1);
diff --git a/ext/gsl/array_complex.c b/ext/gsl_native/array_complex.c
similarity index 71%
rename from ext/gsl/array_complex.c
rename to ext/gsl_native/array_complex.c
index 0d579a4..fe27463 100644
--- a/ext/gsl/array_complex.c
+++ b/ext/gsl_native/array_complex.c
@@ -74,7 +74,7 @@ static VALUE rb_gsl_complex_arithmetics5(int flag, VALUE obj, VALUE bb)
case GSL_COMPLEX_DIV:
c = ALLOC(gsl_complex);
*c = tmp;
- return Data_Wrap_Struct(cgsl_complex, 0, free, c);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, c);
break;
}
break;
@@ -87,83 +87,81 @@ static VALUE rb_gsl_complex_arithmetics5(int flag, VALUE obj, VALUE bb)
case GSL_COMPLEX_SUB:
case GSL_COMPLEX_MUL:
case GSL_COMPLEX_DIV:
- c = ALLOC(gsl_complex);
- *c = tmp;
- return Data_Wrap_Struct(cgsl_complex, 0, free, c);
- break;
+ c = ALLOC(gsl_complex);
+ *c = tmp;
+ return Data_Wrap_Struct(cgsl_complex, 0, free, c);
+ break;
}
} else {
if (VECTOR_P(bb)) {
- Data_Get_Struct(bb, gsl_vector, v);
- cv = vector_to_complex(v);
- cvnew = gsl_vector_complex_alloc(v->size);
- if (cvnew == NULL) rb_raise(rb_eNoMemError, "gsl_vector_complex_alloc failed");
- gsl_vector_complex_set_all(cvnew, *a);
- switch (flag) {
- case GSL_COMPLEX_ADD:
- gsl_vector_complex_add(cvnew, cv);
- break;
- case GSL_COMPLEX_SUB:
- gsl_vector_complex_sub(cvnew, cv);
- break;
- case GSL_COMPLEX_MUL:
- gsl_vector_complex_mul(cvnew, cv);
- break;
- case GSL_COMPLEX_DIV:
- gsl_vector_complex_add(cvnew, cv);
- break;
- }
- gsl_vector_complex_free(cv);
- return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cvnew);
+ Data_Get_Struct(bb, gsl_vector, v);
+ cv = vector_to_complex(v);
+ cvnew = gsl_vector_complex_alloc(v->size);
+ if (cvnew == NULL) rb_raise(rb_eNoMemError, "gsl_vector_complex_alloc failed");
+ gsl_vector_complex_set_all(cvnew, *a);
+ switch (flag) {
+ case GSL_COMPLEX_ADD:
+ gsl_vector_complex_add(cvnew, cv);
+ break;
+ case GSL_COMPLEX_SUB:
+ gsl_vector_complex_sub(cvnew, cv);
+ break;
+ case GSL_COMPLEX_MUL:
+ gsl_vector_complex_mul(cvnew, cv);
+ break;
+ case GSL_COMPLEX_DIV:
+ gsl_vector_complex_add(cvnew, cv);
+ break;
+ }
+ gsl_vector_complex_free(cv);
+ return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cvnew);
}
if (VECTOR_COMPLEX_P(bb)) {
- Data_Get_Struct(bb, gsl_vector_complex, cv);
- cvnew = gsl_vector_complex_alloc(v->size);
- if (cvnew == NULL) rb_raise(rb_eNoMemError, "gsl_vector_complex_alloc failed");
- gsl_vector_complex_set_all(cvnew, *a);
- switch (flag) {
- case GSL_COMPLEX_ADD:
- gsl_vector_complex_add(cvnew, cv);
- break;
- case GSL_COMPLEX_SUB:
- gsl_vector_complex_sub(cvnew, cv);
- break;
- case GSL_COMPLEX_MUL:
- gsl_vector_complex_mul(cvnew, cv);
- break;
- case GSL_COMPLEX_DIV:
- gsl_vector_complex_add(cvnew, cv);
- break;
- }
- return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cvnew);
+ Data_Get_Struct(bb, gsl_vector_complex, cv);
+ cvnew = gsl_vector_complex_alloc(v->size);
+ if (cvnew == NULL) rb_raise(rb_eNoMemError, "gsl_vector_complex_alloc failed");
+ gsl_vector_complex_set_all(cvnew, *a);
+ switch (flag) {
+ case GSL_COMPLEX_ADD:
+ gsl_vector_complex_add(cvnew, cv);
+ break;
+ case GSL_COMPLEX_SUB:
+ gsl_vector_complex_sub(cvnew, cv);
+ break;
+ case GSL_COMPLEX_MUL:
+ gsl_vector_complex_mul(cvnew, cv);
+ break;
+ case GSL_COMPLEX_DIV:
+ gsl_vector_complex_add(cvnew, cv);
+ break;
+ }
+ return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cvnew);
}
-
-
if (MATRIX_P(bb)) {
- Data_Get_Struct(bb, gsl_matrix, m);
- cm = matrix_to_complex(m);
- flagcm = 1;
- } else if (MATRIX_COMPLEX_P(bb)) {
- Data_Get_Struct(bb, gsl_matrix_complex, cm);
+ Data_Get_Struct(bb, gsl_matrix, m);
+ cm = matrix_to_complex(m);
+ flagcm = 1;
+ } else if (MATRIX_COMPLEX_P(bb)) {
+ Data_Get_Struct(bb, gsl_matrix_complex, cm);
} else {
- rb_raise(rb_eTypeError, "wrong argument type %s", rb_class2name(CLASS_OF(bb)));
+ rb_raise(rb_eTypeError, "wrong argument type %s", rb_class2name(CLASS_OF(bb)));
}
cmself = gsl_matrix_complex_alloc(m->size1, m->size2);
if (cmself == NULL) rb_raise(rb_eNoMemError, "gsl_matrix_complex_alloc failed");
gsl_matrix_complex_set_all(cmself, *a);
switch (flag) {
case GSL_COMPLEX_ADD:
- gsl_matrix_complex_add(cmself, cm);
- break;
+ gsl_matrix_complex_add(cmself, cm);
+ break;
case GSL_COMPLEX_SUB:
- gsl_matrix_complex_sub(cmself, cm);
- break;
+ gsl_matrix_complex_sub(cmself, cm);
+ break;
case GSL_COMPLEX_MUL:
- gsl_matrix_complex_mul_elements(cmself, cm);
- break;
+ gsl_matrix_complex_mul_elements(cmself, cm);
+ break;
case GSL_COMPLEX_DIV:
- gsl_matrix_complex_div_elements(cmself, cm);
- break;
+ gsl_matrix_complex_div_elements(cmself, cm);
+ break;
}
if (flagcm == 1) gsl_matrix_complex_free(cm);
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmself);
@@ -206,7 +204,7 @@ static VALUE rb_gsl_complex_coerce(VALUE obj, VALUE other)
c = ALLOC(gsl_complex);
*c = gsl_complex_rect(x, 0.0);
return rb_ary_new3(2, Data_Wrap_Struct(cgsl_complex, 0, free, c),
- obj);
+ obj);
break;
default:
if (MATRIX_P(other)) {
@@ -219,7 +217,7 @@ static VALUE rb_gsl_complex_coerce(VALUE obj, VALUE other)
gsl_matrix_complex_set_all(cmself, *c);
vcmself = Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmself);
return rb_ary_new3(2, vcmself, vcmnew);
- }
+ }
if (MATRIX_COMPLEX_P(other)) {
Data_Get_Struct(other, gsl_matrix_complex, cmnew);
cmself = gsl_matrix_complex_alloc(cmnew->size1, cmnew->size2);
diff --git a/ext/gsl/blas.c b/ext/gsl_native/blas.c
similarity index 100%
rename from ext/gsl/blas.c
rename to ext/gsl_native/blas.c
diff --git a/ext/gsl/blas1.c b/ext/gsl_native/blas1.c
similarity index 94%
rename from ext/gsl/blas1.c
rename to ext/gsl_native/blas1.c
index 6beefda..c027443 100644
--- a/ext/gsl/blas1.c
+++ b/ext/gsl_native/blas1.c
@@ -16,10 +16,10 @@
static int get_vector1(int argc, VALUE *argv, VALUE obj, gsl_vector **x);
static int get_vector_complex1(int argc, VALUE *argv, VALUE obj, gsl_vector_complex **x);
-static int get_vector2(int argc, VALUE *argv, VALUE obj,
- gsl_vector **x, gsl_vector **y);
-static int get_vector_complex2(int argc, VALUE *argv, VALUE obj,
- gsl_vector_complex **x, gsl_vector_complex **y);
+static int get_vector2(int argc, VALUE *argv, VALUE obj,
+ gsl_vector **x, gsl_vector **y);
+static int get_vector_complex2(int argc, VALUE *argv, VALUE obj,
+ gsl_vector_complex **x, gsl_vector_complex **y);
static int get_vector1(int argc, VALUE *argv, VALUE obj, gsl_vector **x)
{
@@ -29,7 +29,7 @@ static int get_vector1(int argc, VALUE *argv, VALUE obj, gsl_vector **x)
case T_CLASS:
case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
Data_Get_Vector(argv[0], (*x));
break;
default:
@@ -48,7 +48,7 @@ static int get_vector_complex1(int argc, VALUE *argv, VALUE obj, gsl_vector_comp
case T_CLASS:
case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
CHECK_VECTOR_COMPLEX(argv[0]);
Data_Get_Struct(argv[0], gsl_vector_complex, (*x));
break;
@@ -60,8 +60,8 @@ static int get_vector_complex1(int argc, VALUE *argv, VALUE obj, gsl_vector_comp
return flag;
}
-static int get_vector2(int argc, VALUE *argv, VALUE obj,
- gsl_vector **x, gsl_vector **y)
+static int get_vector2(int argc, VALUE *argv, VALUE obj,
+ gsl_vector **x, gsl_vector **y)
{
int flag = 0;
switch (TYPE(obj)) {
@@ -69,13 +69,13 @@ static int get_vector2(int argc, VALUE *argv, VALUE obj,
case T_CLASS:
case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
Data_Get_Vector(argv[0], (*x));
Data_Get_Vector(argv[1], (*y));
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
Data_Get_Vector(obj, (*x));
Data_Get_Vector(argv[0], (*y));
flag = 1;
@@ -85,8 +85,8 @@ static int get_vector2(int argc, VALUE *argv, VALUE obj,
}
-static int get_vector_complex2(int argc, VALUE *argv, VALUE obj,
- gsl_vector_complex **x, gsl_vector_complex **y)
+static int get_vector_complex2(int argc, VALUE *argv, VALUE obj,
+ gsl_vector_complex **x, gsl_vector_complex **y)
{
int flag = 0;
switch (TYPE(obj)) {
@@ -94,7 +94,7 @@ static int get_vector_complex2(int argc, VALUE *argv, VALUE obj,
case T_CLASS:
case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
CHECK_VECTOR_COMPLEX(argv[0]);
CHECK_VECTOR_COMPLEX(argv[1]);
Data_Get_Struct(argv[0], gsl_vector_complex, (*x));
@@ -102,7 +102,7 @@ static int get_vector_complex2(int argc, VALUE *argv, VALUE obj,
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
CHECK_VECTOR_COMPLEX(argv[0]);
Data_Get_Struct(obj, gsl_vector_complex, (*x));
Data_Get_Struct(argv[0], gsl_vector_complex, (*y));
@@ -242,7 +242,7 @@ static VALUE rb_gsl_blas_daxpy(int argc, VALUE *argv, VALUE obj)
default:
Data_Get_Struct(obj, gsl_vector, x);
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
Need_Float(argv[0]);
// a = RFLOAT(argv[0])->value;
a = NUM2DBL(argv[0]);
@@ -269,7 +269,7 @@ static VALUE rb_gsl_blas_daxpy2(int argc, VALUE *argv, VALUE obj)
default:
Data_Get_Struct(obj, gsl_vector, x);
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
Need_Float(argv[0]);
CHECK_VECTOR(argv[1]);
// a = RFLOAT(argv[0])->value;
@@ -298,7 +298,7 @@ static VALUE rb_gsl_blas_zaxpy(int argc, VALUE *argv, VALUE obj)
default:
Data_Get_Struct(obj, gsl_vector_complex, x);
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
CHECK_COMPLEX(argv[0]);
CHECK_VECTOR_COMPLEX(argv[1]);
Data_Get_Struct(argv[0], gsl_complex, a);
@@ -325,7 +325,7 @@ static VALUE rb_gsl_blas_zaxpy2(int argc, VALUE *argv, VALUE obj)
default:
Data_Get_Struct(obj, gsl_vector_complex, x);
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
CHECK_COMPLEX(argv[0]);
CHECK_VECTOR_COMPLEX(argv[1]);
Data_Get_Struct(argv[0], gsl_complex, a);
@@ -347,7 +347,7 @@ static VALUE rb_gsl_blas_dscal(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
Need_Float(argv[0]);
CHECK_VECTOR(argv[1]);
// a = RFLOAT(argv[0])->value;
@@ -358,7 +358,7 @@ static VALUE rb_gsl_blas_dscal(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
Need_Float(argv[0]);
// a = RFLOAT(argv[0])->value;
a = NUM2DBL(argv[0]);
@@ -379,7 +379,7 @@ static VALUE rb_gsl_blas_dscal2(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
Need_Float(argv[0]);
CHECK_VECTOR(argv[1]);
a = NUM2DBL(argv[0]);
@@ -388,7 +388,7 @@ static VALUE rb_gsl_blas_dscal2(int argc, VALUE *argv, VALUE obj)
default:
Data_Get_Struct(obj, gsl_vector, x);
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
Need_Float(argv[0]);
a = NUM2DBL(argv[0]);
break;
@@ -408,7 +408,7 @@ static VALUE rb_gsl_blas_zdscal(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
Need_Float(argv[0]);
CHECK_VECTOR_COMPLEX(argv[1]);
// a = RFLOAT(argv[0])->value;
@@ -420,7 +420,7 @@ static VALUE rb_gsl_blas_zdscal(int argc, VALUE *argv, VALUE obj)
default:
Data_Get_Struct(obj, gsl_vector_complex, x);
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
Need_Float(argv[0]);
a = NUM2DBL(argv[0]);
gsl_blas_zdscal(a, x);
@@ -438,7 +438,7 @@ static VALUE rb_gsl_blas_zdscal2(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
Need_Float(argv[0]);
CHECK_VECTOR_COMPLEX(argv[1]);
a = NUM2DBL(argv[0]);
@@ -447,7 +447,7 @@ static VALUE rb_gsl_blas_zdscal2(int argc, VALUE *argv, VALUE obj)
default:
Data_Get_Struct(obj, gsl_vector_complex, x);
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
Need_Float(argv[0]);
a = NUM2DBL(argv[0]);
break;
@@ -468,7 +468,7 @@ static VALUE rb_gsl_blas_zscal(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
CHECK_VECTOR_COMPLEX(argv[1]);
Data_Get_Struct(argv[0], gsl_complex, a);
Data_Get_Struct(argv[1], gsl_vector_complex, x);
@@ -477,7 +477,7 @@ static VALUE rb_gsl_blas_zscal(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
Data_Get_Struct(obj, gsl_vector_complex, x);
Data_Get_Struct(argv[0], gsl_complex, a);
gsl_blas_zscal(*a, x);
@@ -496,14 +496,14 @@ static VALUE rb_gsl_blas_zscal2(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
CHECK_VECTOR_COMPLEX(argv[1]);
Data_Get_Struct(argv[0], gsl_complex, a);
Data_Get_Struct(argv[1], gsl_vector_complex, x);
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
Data_Get_Struct(obj, gsl_vector_complex, x);
Data_Get_Struct(argv[0], gsl_complex, a);
break;
@@ -548,7 +548,7 @@ static VALUE rb_gsl_blas_drot2(VALUE obj, VALUE xx, VALUE yy, VALUE cc, VALUE ss
gsl_vector_memcpy(ynew, y);
gsl_blas_drot(xnew, ynew, c, s);
return rb_ary_new3(2, Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, xnew),
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, ynew));
+ Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, ynew));
}
static VALUE rb_gsl_blas_drotm(VALUE obj, VALUE xx, VALUE yy, VALUE PP)
@@ -601,7 +601,7 @@ static VALUE rb_gsl_blas_drotm2(VALUE obj, VALUE xx, VALUE yy, VALUE PP)
gsl_blas_drotm(xnew, ynew, p->data);
if (flag == 1) gsl_vector_free(p);
return rb_ary_new3(2, Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, xnew),
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, ynew));
+ Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, ynew));
}
void Init_gsl_blas1(VALUE module)
diff --git a/ext/gsl/blas2.c b/ext/gsl_native/blas2.c
similarity index 94%
rename from ext/gsl/blas2.c
rename to ext/gsl_native/blas2.c
index f43a574..7063e1f 100644
--- a/ext/gsl/blas2.c
+++ b/ext/gsl_native/blas2.c
@@ -57,7 +57,7 @@ static VALUE rb_gsl_blas_dgemv(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc < 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 4)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
Need_Float(argv[1]);
CHECK_MATRIX(argv[2]);
@@ -71,7 +71,7 @@ static VALUE rb_gsl_blas_dgemv(int argc, VALUE *argv, VALUE obj)
default:
Data_Get_Struct(obj, gsl_matrix, A);
if (argc < 3) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 3)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
Need_Float(argv[1]);
CHECK_VECTOR(argv[2]);
@@ -100,7 +100,6 @@ static VALUE rb_gsl_blas_dgemv(int argc, VALUE *argv, VALUE obj)
gsl_blas_dgemv(type, a, A, x, b, y);
if (flag == 1) return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, y);
else return argv[argc-1];
-
}
static VALUE rb_gsl_blas_dgemv2(int argc, VALUE *argv, VALUE obj)
@@ -114,7 +113,7 @@ static VALUE rb_gsl_blas_dgemv2(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc < 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 4)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
Need_Float(argv[1]);
CHECK_MATRIX(argv[2]);
@@ -128,7 +127,7 @@ static VALUE rb_gsl_blas_dgemv2(int argc, VALUE *argv, VALUE obj)
default:
Data_Get_Struct(obj, gsl_matrix, A);
if (argc < 3) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 3)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
Need_Float(argv[1]);
CHECK_VECTOR(argv[2]);
@@ -172,7 +171,7 @@ static VALUE rb_gsl_blas_zgemv(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc < 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 4)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
CHECK_COMPLEX(argv[1]);
CHECK_MATRIX_COMPLEX(argv[2]);
@@ -186,7 +185,7 @@ static VALUE rb_gsl_blas_zgemv(int argc, VALUE *argv, VALUE obj)
default:
Data_Get_Struct(obj, gsl_matrix_complex, A);
if (argc < 3) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 3)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
CHECK_COMPLEX(argv[1]);
CHECK_VECTOR_COMPLEX(argv[2]);
@@ -216,7 +215,6 @@ static VALUE rb_gsl_blas_zgemv(int argc, VALUE *argv, VALUE obj)
gsl_blas_zgemv(type, *a, A, x, *b, y);
if (flag == 1) return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, y);
else return argv[argc-1];
-
}
@@ -231,7 +229,7 @@ static VALUE rb_gsl_blas_zgemv2(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc < 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 4)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
CHECK_COMPLEX(argv[1]);
CHECK_MATRIX_COMPLEX(argv[2]);
@@ -245,7 +243,7 @@ static VALUE rb_gsl_blas_zgemv2(int argc, VALUE *argv, VALUE obj)
default:
Data_Get_Struct(obj, gsl_matrix_complex, A);
if (argc < 3) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 3)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
CHECK_COMPLEX(argv[1]);
CHECK_VECTOR_COMPLEX(argv[2]);
@@ -288,7 +286,7 @@ static VALUE rb_gsl_blas_dtrmv(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 5) rb_raise(rb_eArgError, "wrong number of arguments (%d for 5)",
- argc);
+ argc);
CHECK_MATRIX(argv[3]);
CHECK_VECTOR(argv[4]);
Data_Get_Struct(argv[3], gsl_matrix, A);
@@ -296,7 +294,7 @@ static VALUE rb_gsl_blas_dtrmv(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for 4)",
- argc);
+ argc);
CHECK_VECTOR(argv[3]);
Data_Get_Struct(obj, gsl_matrix, A);
Data_Get_Struct(argv[3], gsl_vector, x);
@@ -304,7 +302,7 @@ static VALUE rb_gsl_blas_dtrmv(int argc, VALUE *argv, VALUE obj)
}
CHECK_FIXNUM(argv[0]); CHECK_FIXNUM(argv[1]); CHECK_FIXNUM(argv[2]);
gsl_blas_dtrmv(FIX2INT(argv[0]), FIX2INT(argv[1]), FIX2INT(argv[2]),
- A, x);
+ A, x);
return argv[argc-1];
}
@@ -318,7 +316,7 @@ static VALUE rb_gsl_blas_dtrmv2(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 5) rb_raise(rb_eArgError, "wrong number of arguments (%d for 5)",
- argc);
+ argc);
CHECK_MATRIX(argv[3]);
CHECK_VECTOR(argv[4]);
Data_Get_Struct(argv[3], gsl_matrix, A);
@@ -326,7 +324,7 @@ static VALUE rb_gsl_blas_dtrmv2(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for 4)",
- argc);
+ argc);
CHECK_VECTOR(argv[3]);
Data_Get_Struct(obj, gsl_matrix, A);
Data_Get_Struct(argv[3], gsl_vector, x);
@@ -336,7 +334,7 @@ static VALUE rb_gsl_blas_dtrmv2(int argc, VALUE *argv, VALUE obj)
xnew = gsl_vector_alloc(x->size);
gsl_vector_memcpy(xnew, x);
gsl_blas_dtrmv(FIX2INT(argv[0]), FIX2INT(argv[1]), FIX2INT(argv[2]),
- A, xnew);
+ A, xnew);
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, xnew);
}
@@ -350,7 +348,7 @@ static VALUE rb_gsl_blas_ztrmv(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 5) rb_raise(rb_eArgError, "wrong number of arguments (%d for 5)",
- argc);
+ argc);
CHECK_MATRIX_COMPLEX(argv[3]);
CHECK_VECTOR_COMPLEX(argv[4]);
Data_Get_Struct(argv[3], gsl_matrix_complex, A);
@@ -358,7 +356,7 @@ static VALUE rb_gsl_blas_ztrmv(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for 4)",
- argc);
+ argc);
CHECK_VECTOR_COMPLEX(argv[3]);
Data_Get_Struct(obj, gsl_matrix_complex, A);
Data_Get_Struct(argv[3], gsl_vector_complex, x);
@@ -366,7 +364,7 @@ static VALUE rb_gsl_blas_ztrmv(int argc, VALUE *argv, VALUE obj)
}
CHECK_FIXNUM(argv[0]); CHECK_FIXNUM(argv[1]); CHECK_FIXNUM(argv[2]);
gsl_blas_ztrmv(FIX2INT(argv[0]), FIX2INT(argv[1]), FIX2INT(argv[2]),
- A, x);
+ A, x);
return argv[argc-1];
}
@@ -379,7 +377,7 @@ static VALUE rb_gsl_blas_ztrmv2(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 5) rb_raise(rb_eArgError, "wrong number of arguments (%d for 5)",
- argc);
+ argc);
CHECK_MATRIX_COMPLEX(argv[3]);
CHECK_VECTOR_COMPLEX(argv[4]);
Data_Get_Struct(argv[3], gsl_matrix_complex, A);
@@ -387,7 +385,7 @@ static VALUE rb_gsl_blas_ztrmv2(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for 4)",
- argc);
+ argc);
CHECK_VECTOR_COMPLEX(argv[3]);
Data_Get_Struct(obj, gsl_matrix_complex, A);
Data_Get_Struct(argv[3], gsl_vector_complex, x);
@@ -397,7 +395,7 @@ static VALUE rb_gsl_blas_ztrmv2(int argc, VALUE *argv, VALUE obj)
xnew = gsl_vector_complex_alloc(x->size);
gsl_vector_complex_memcpy(xnew, x);
gsl_blas_ztrmv(FIX2INT(argv[0]), FIX2INT(argv[1]), FIX2INT(argv[2]),
- A, xnew);
+ A, xnew);
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, xnew);
}
@@ -410,7 +408,7 @@ static VALUE rb_gsl_blas_dtrsv(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 5) rb_raise(rb_eArgError, "wrong number of arguments (%d for 5)",
- argc);
+ argc);
CHECK_MATRIX(argv[3]);
CHECK_VECTOR(argv[4]);
Data_Get_Struct(argv[3], gsl_matrix, A);
@@ -418,7 +416,7 @@ static VALUE rb_gsl_blas_dtrsv(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for 4)",
- argc);
+ argc);
CHECK_VECTOR(argv[3]);
Data_Get_Struct(obj, gsl_matrix, A);
Data_Get_Struct(argv[3], gsl_vector, x);
@@ -426,7 +424,7 @@ static VALUE rb_gsl_blas_dtrsv(int argc, VALUE *argv, VALUE obj)
}
CHECK_FIXNUM(argv[0]); CHECK_FIXNUM(argv[1]); CHECK_FIXNUM(argv[2]);
gsl_blas_dtrsv(FIX2INT(argv[0]), FIX2INT(argv[1]), FIX2INT(argv[2]),
- A, x);
+ A, x);
return argv[argc-1];
}
@@ -439,7 +437,7 @@ static VALUE rb_gsl_blas_dtrsv2(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 5) rb_raise(rb_eArgError, "wrong number of arguments (%d for 5)",
- argc);
+ argc);
CHECK_MATRIX(argv[3]);
CHECK_VECTOR(argv[4]);
Data_Get_Struct(argv[3], gsl_matrix, A);
@@ -447,7 +445,7 @@ static VALUE rb_gsl_blas_dtrsv2(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for 4)",
- argc);
+ argc);
CHECK_VECTOR(argv[3]);
Data_Get_Struct(obj, gsl_matrix, A);
Data_Get_Struct(argv[3], gsl_vector, x);
@@ -457,7 +455,7 @@ static VALUE rb_gsl_blas_dtrsv2(int argc, VALUE *argv, VALUE obj)
xnew = gsl_vector_alloc(x->size);
gsl_vector_memcpy(xnew, x);
gsl_blas_dtrsv(FIX2INT(argv[0]), FIX2INT(argv[1]), FIX2INT(argv[2]),
- A, xnew);
+ A, xnew);
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, xnew);
}
@@ -470,7 +468,7 @@ static VALUE rb_gsl_blas_ztrsv(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 5) rb_raise(rb_eArgError, "wrong number of arguments (%d for 5)",
- argc);
+ argc);
CHECK_MATRIX_COMPLEX(argv[3]);
CHECK_VECTOR_COMPLEX(argv[4]);
Data_Get_Struct(argv[3], gsl_matrix_complex, A);
@@ -478,7 +476,7 @@ static VALUE rb_gsl_blas_ztrsv(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for 4)",
- argc);
+ argc);
CHECK_VECTOR_COMPLEX(argv[3]);
Data_Get_Struct(obj, gsl_matrix_complex, A);
Data_Get_Struct(argv[3], gsl_vector_complex, x);
@@ -486,7 +484,7 @@ static VALUE rb_gsl_blas_ztrsv(int argc, VALUE *argv, VALUE obj)
}
CHECK_FIXNUM(argv[0]); CHECK_FIXNUM(argv[1]); CHECK_FIXNUM(argv[2]);
gsl_blas_ztrsv(FIX2INT(argv[0]), FIX2INT(argv[1]), FIX2INT(argv[2]),
- A, x);
+ A, x);
return argv[argc-1];
}
@@ -499,7 +497,7 @@ static VALUE rb_gsl_blas_ztrsv2(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 5) rb_raise(rb_eArgError, "wrong number of arguments (%d for 5)",
- argc);
+ argc);
CHECK_MATRIX_COMPLEX(argv[3]);
CHECK_VECTOR_COMPLEX(argv[4]);
Data_Get_Struct(argv[3], gsl_matrix_complex, A);
@@ -507,7 +505,7 @@ static VALUE rb_gsl_blas_ztrsv2(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for 4)",
- argc);
+ argc);
CHECK_VECTOR_COMPLEX(argv[3]);
Data_Get_Struct(obj, gsl_matrix_complex, A);
Data_Get_Struct(argv[3], gsl_vector_complex, x);
@@ -517,7 +515,7 @@ static VALUE rb_gsl_blas_ztrsv2(int argc, VALUE *argv, VALUE obj)
xnew = gsl_vector_complex_alloc(x->size);
gsl_vector_complex_memcpy(xnew, x);
gsl_blas_ztrsv(FIX2INT(argv[0]), FIX2INT(argv[1]), FIX2INT(argv[2]),
- A, xnew);
+ A, xnew);
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, xnew);
}
@@ -532,7 +530,7 @@ static VALUE rb_gsl_blas_dsymv(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc < 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 4)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
Need_Float(argv[1]);
CHECK_MATRIX(argv[2]);
@@ -546,7 +544,7 @@ static VALUE rb_gsl_blas_dsymv(int argc, VALUE *argv, VALUE obj)
default:
Data_Get_Struct(obj, gsl_matrix, A);
if (argc < 3) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 3)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
Need_Float(argv[1]);
CHECK_VECTOR(argv[2]);
@@ -575,7 +573,6 @@ static VALUE rb_gsl_blas_dsymv(int argc, VALUE *argv, VALUE obj)
gsl_blas_dsymv(type, a, A, x, b, y);
if (flag == 1) return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, y);
else return argv[argc-1];
-
}
static VALUE rb_gsl_blas_dsymv2(int argc, VALUE *argv, VALUE obj)
@@ -589,7 +586,7 @@ static VALUE rb_gsl_blas_dsymv2(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc < 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 4)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
Need_Float(argv[1]);
CHECK_MATRIX(argv[2]);
@@ -603,7 +600,7 @@ static VALUE rb_gsl_blas_dsymv2(int argc, VALUE *argv, VALUE obj)
default:
Data_Get_Struct(obj, gsl_matrix, A);
if (argc < 3) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 3)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
Need_Float(argv[1]);
CHECK_VECTOR(argv[2]);
@@ -647,7 +644,7 @@ static VALUE rb_gsl_blas_zhemv(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc < 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 4)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
CHECK_COMPLEX(argv[1]);
CHECK_MATRIX_COMPLEX(argv[2]);
@@ -661,7 +658,7 @@ static VALUE rb_gsl_blas_zhemv(int argc, VALUE *argv, VALUE obj)
default:
Data_Get_Struct(obj, gsl_matrix_complex, A);
if (argc < 3) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 3)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
CHECK_COMPLEX(argv[1]);
CHECK_VECTOR_COMPLEX(argv[2]);
@@ -691,7 +688,6 @@ static VALUE rb_gsl_blas_zhemv(int argc, VALUE *argv, VALUE obj)
gsl_blas_zhemv(type, *a, A, x, *b, y);
if (flag == 1) return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, y);
else return argv[argc-1];
-
}
static VALUE rb_gsl_blas_zhemv2(int argc, VALUE *argv, VALUE obj)
@@ -705,7 +701,7 @@ static VALUE rb_gsl_blas_zhemv2(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc < 4) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 4)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
CHECK_COMPLEX(argv[1]);
CHECK_MATRIX_COMPLEX(argv[2]);
@@ -719,7 +715,7 @@ static VALUE rb_gsl_blas_zhemv2(int argc, VALUE *argv, VALUE obj)
default:
Data_Get_Struct(obj, gsl_matrix_complex, A);
if (argc < 3) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 3)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
CHECK_COMPLEX(argv[1]);
CHECK_VECTOR_COMPLEX(argv[2]);
@@ -759,7 +755,7 @@ static VALUE rb_gsl_blas_dger(VALUE obj, VALUE aa, VALUE xx, VALUE yy, VALUE AA)
gsl_vector *x = NULL, *y = NULL;
double a;
Need_Float(aa);
- CHECK_VECTOR(xx); CHECK_VECTOR(yy);
+ CHECK_VECTOR(xx); CHECK_VECTOR(yy);
CHECK_MATRIX(AA);
a = NUM2DBL(aa);
Data_Get_Struct(xx, gsl_vector, x);
@@ -775,7 +771,7 @@ static VALUE rb_gsl_blas_dger2(VALUE obj, VALUE aa, VALUE xx, VALUE yy, VALUE AA
gsl_vector *x = NULL, *y = NULL;
double a;
Need_Float(aa);
- CHECK_VECTOR(xx); CHECK_VECTOR(yy);
+ CHECK_VECTOR(xx); CHECK_VECTOR(yy);
CHECK_MATRIX(AA);
a = NUM2DBL(aa);
Data_Get_Struct(xx, gsl_vector, x);
@@ -793,7 +789,7 @@ static VALUE rb_gsl_blas_zgeru(VALUE obj, VALUE aa, VALUE xx, VALUE yy, VALUE AA
gsl_vector_complex *x = NULL, *y = NULL;
gsl_complex *a;
CHECK_COMPLEX(aa);
- CHECK_VECTOR_COMPLEX(xx);CHECK_VECTOR_COMPLEX(yy);
+ CHECK_VECTOR_COMPLEX(xx); CHECK_VECTOR_COMPLEX(yy);
CHECK_MATRIX_COMPLEX(AA);
Data_Get_Struct(aa, gsl_complex, a);
Data_Get_Struct(xx, gsl_vector_complex, x);
@@ -809,7 +805,7 @@ static VALUE rb_gsl_blas_zgeru2(VALUE obj, VALUE aa, VALUE xx, VALUE yy, VALUE A
gsl_vector_complex *x = NULL, *y = NULL;
gsl_complex *a;
CHECK_COMPLEX(aa);
- CHECK_VECTOR_COMPLEX(xx);CHECK_VECTOR_COMPLEX(yy);
+ CHECK_VECTOR_COMPLEX(xx); CHECK_VECTOR_COMPLEX(yy);
CHECK_MATRIX_COMPLEX(AA);
Data_Get_Struct(aa, gsl_complex, a);
Data_Get_Struct(xx, gsl_vector_complex, x);
@@ -827,7 +823,7 @@ static VALUE rb_gsl_blas_zgerc(VALUE obj, VALUE aa, VALUE xx, VALUE yy, VALUE AA
gsl_vector_complex *x = NULL, *y = NULL;
gsl_complex *a;
CHECK_COMPLEX(aa);
- CHECK_VECTOR_COMPLEX(xx);CHECK_VECTOR_COMPLEX(yy);
+ CHECK_VECTOR_COMPLEX(xx); CHECK_VECTOR_COMPLEX(yy);
CHECK_MATRIX_COMPLEX(AA);
Data_Get_Struct(aa, gsl_complex, a);
Data_Get_Struct(xx, gsl_vector_complex, x);
@@ -843,7 +839,7 @@ static VALUE rb_gsl_blas_zgerc2(VALUE obj, VALUE aa, VALUE xx, VALUE yy, VALUE A
gsl_vector_complex *x = NULL, *y = NULL;
gsl_complex *a;
CHECK_COMPLEX(aa);
- CHECK_VECTOR_COMPLEX(xx);CHECK_VECTOR_COMPLEX(yy);
+ CHECK_VECTOR_COMPLEX(xx); CHECK_VECTOR_COMPLEX(yy);
CHECK_MATRIX_COMPLEX(AA);
Data_Get_Struct(aa, gsl_complex, a);
Data_Get_Struct(xx, gsl_vector_complex, x);
@@ -919,8 +915,8 @@ static VALUE rb_gsl_blas_zher_a(VALUE obj, VALUE tt, VALUE aa, VALUE xx, VALUE A
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, Anew);
}
-static VALUE rb_gsl_blas_dsyr2(VALUE obj, VALUE tt, VALUE aa, VALUE xx,
- VALUE yy, VALUE AA)
+static VALUE rb_gsl_blas_dsyr2(VALUE obj, VALUE tt, VALUE aa, VALUE xx,
+ VALUE yy, VALUE AA)
{
gsl_matrix *A = NULL;
gsl_vector *x = NULL, *y = NULL;
@@ -936,8 +932,8 @@ static VALUE rb_gsl_blas_dsyr2(VALUE obj, VALUE tt, VALUE aa, VALUE xx,
return AA;
}
-static VALUE rb_gsl_blas_dsyr2_a(VALUE obj, VALUE tt, VALUE aa, VALUE xx,
- VALUE yy, VALUE AA)
+static VALUE rb_gsl_blas_dsyr2_a(VALUE obj, VALUE tt, VALUE aa, VALUE xx,
+ VALUE yy, VALUE AA)
{
gsl_matrix *A = NULL, *Anew = NULL;
gsl_vector *x = NULL, *y = NULL;
@@ -955,8 +951,8 @@ static VALUE rb_gsl_blas_dsyr2_a(VALUE obj, VALUE tt, VALUE aa, VALUE xx,
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Anew);
}
-static VALUE rb_gsl_blas_zher2(VALUE obj, VALUE tt, VALUE aa, VALUE xx,
- VALUE yy, VALUE AA)
+static VALUE rb_gsl_blas_zher2(VALUE obj, VALUE tt, VALUE aa, VALUE xx,
+ VALUE yy, VALUE AA)
{
gsl_matrix_complex *A = NULL;
gsl_vector_complex *x = NULL, *y = NULL;
@@ -972,8 +968,8 @@ static VALUE rb_gsl_blas_zher2(VALUE obj, VALUE tt, VALUE aa, VALUE xx,
return AA;
}
-static VALUE rb_gsl_blas_zher2_a(VALUE obj, VALUE tt, VALUE aa, VALUE xx,
- VALUE yy, VALUE AA)
+static VALUE rb_gsl_blas_zher2_a(VALUE obj, VALUE tt, VALUE aa, VALUE xx,
+ VALUE yy, VALUE AA)
{
gsl_matrix_complex *A = NULL, *Anew = NULL;
gsl_vector_complex *x = NULL, *y = NULL;
diff --git a/ext/gsl/blas3.c b/ext/gsl_native/blas3.c
similarity index 91%
rename from ext/gsl/blas3.c
rename to ext/gsl_native/blas3.c
index 73d33b1..999b76d 100644
--- a/ext/gsl/blas3.c
+++ b/ext/gsl_native/blas3.c
@@ -91,11 +91,11 @@ static VALUE rb_gsl_blas_dgemm(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_blas_zgemm(int argc, VALUE *argv, VALUE obj)
{
gsl_matrix_complex *A = NULL, *B = NULL, *C = NULL;
- gsl_complex alpha, beta, *pa = &alpha, *pb = β
+ gsl_complex *pa = NULL, *pb = NULL;
CBLAS_TRANSPOSE_t TransA, TransB;
int flag = 0;
- alpha.dat[0] = 1.0; alpha.dat[1] = 0.0;
- beta.dat[0] = 0.0; beta.dat[1] = 0.0;
+ (*pa).dat[0] = 1.0; (*pa).dat[1] = 0.0;
+ (*pb).dat[0] = 0.0; (*pb).dat[1] = 0.0;
switch (argc) {
case 2:
CHECK_MATRIX_COMPLEX(argv[0]);
@@ -156,7 +156,7 @@ static VALUE rb_gsl_blas_zgemm(int argc, VALUE *argv, VALUE obj)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 7)", argc);
break;
}
- gsl_blas_zgemm(TransA, TransB, alpha, A, B, beta, C);
+ gsl_blas_zgemm(TransA, TransB, *pa, A, B, *pb, C);
if (flag == 1) return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, C);
else return argv[6];
}
@@ -307,7 +307,7 @@ static VALUE rb_gsl_blas_zsymm(int argc, VALUE *argv, VALUE obj)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 7)", argc);
break;
}
- gsl_blas_zsymm(Side, Uplo, alpha, A, B, beta, C);
+ gsl_blas_zsymm(Side, Uplo, *pa, A, B, *pb, C);
if (flag == 1) return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, C);
else return argv[6];
}
@@ -382,13 +382,13 @@ static VALUE rb_gsl_blas_zhemm(int argc, VALUE *argv, VALUE obj)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 7)", argc);
break;
}
- gsl_blas_zhemm(Side, Uplo, alpha, A, B, beta, C);
+ gsl_blas_zhemm(Side, Uplo, *pa, A, B, *pb, C);
if (flag == 1) return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, C);
else return argv[6];
}
-static VALUE rb_gsl_blas_dtrmm(VALUE obj, VALUE s, VALUE u, VALUE ta,
- VALUE d, VALUE a, VALUE aa, VALUE bb)
+static VALUE rb_gsl_blas_dtrmm(VALUE obj, VALUE s, VALUE u, VALUE ta,
+ VALUE d, VALUE a, VALUE aa, VALUE bb)
{
gsl_matrix *A = NULL, *B = NULL;
double alpha;
@@ -410,8 +410,8 @@ static VALUE rb_gsl_blas_dtrmm(VALUE obj, VALUE s, VALUE u, VALUE ta,
return bb;
}
-static VALUE rb_gsl_blas_dtrmm2(VALUE obj, VALUE s, VALUE u, VALUE ta,
- VALUE d, VALUE a, VALUE aa, VALUE bb)
+static VALUE rb_gsl_blas_dtrmm2(VALUE obj, VALUE s, VALUE u, VALUE ta,
+ VALUE d, VALUE a, VALUE aa, VALUE bb)
{
gsl_matrix *A = NULL, *B = NULL, *Bnew = NULL;
double alpha;
@@ -435,11 +435,11 @@ static VALUE rb_gsl_blas_dtrmm2(VALUE obj, VALUE s, VALUE u, VALUE ta,
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Bnew);
}
-static VALUE rb_gsl_blas_ztrmm(VALUE obj, VALUE s, VALUE u, VALUE ta,
- VALUE d, VALUE a, VALUE aa, VALUE bb)
+static VALUE rb_gsl_blas_ztrmm(VALUE obj, VALUE s, VALUE u, VALUE ta,
+ VALUE d, VALUE a, VALUE aa, VALUE bb)
{
gsl_matrix_complex *A = NULL, *B = NULL;
- gsl_complex alpha, *pa = α
+ gsl_complex *pa = NULL;
CBLAS_SIDE_t Side;
CBLAS_UPLO_t Uplo;
CBLAS_TRANSPOSE_t TransA;
@@ -455,15 +455,15 @@ static VALUE rb_gsl_blas_ztrmm(VALUE obj, VALUE s, VALUE u, VALUE ta,
Data_Get_Struct(a, gsl_complex, pa);
Data_Get_Struct(aa, gsl_matrix_complex, A);
Data_Get_Struct(bb, gsl_matrix_complex, B);
- gsl_blas_ztrmm(Side, Uplo, TransA, Diag, alpha, A, B);
+ gsl_blas_ztrmm(Side, Uplo, TransA, Diag, *pa, A, B);
return bb;
}
-static VALUE rb_gsl_blas_ztrmm2(VALUE obj, VALUE s, VALUE u, VALUE ta,
- VALUE d, VALUE a, VALUE aa, VALUE bb)
+static VALUE rb_gsl_blas_ztrmm2(VALUE obj, VALUE s, VALUE u, VALUE ta,
+ VALUE d, VALUE a, VALUE aa, VALUE bb)
{
gsl_matrix_complex *A = NULL, *B = NULL, *Bnew = NULL;
- gsl_complex alpha, *pa = α
+ gsl_complex *pa = NULL;
CBLAS_SIDE_t Side;
CBLAS_UPLO_t Uplo;
CBLAS_TRANSPOSE_t TransA;
@@ -480,12 +480,12 @@ static VALUE rb_gsl_blas_ztrmm2(VALUE obj, VALUE s, VALUE u, VALUE ta,
Data_Get_Struct(bb, gsl_matrix_complex, B);
Bnew = gsl_matrix_complex_alloc(B->size1, B->size2);
gsl_matrix_complex_memcpy(Bnew, B);
- gsl_blas_ztrmm(Side, Uplo, TransA, Diag, alpha, A, Bnew);
+ gsl_blas_ztrmm(Side, Uplo, TransA, Diag, *pa, A, Bnew);
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, Bnew);
}
-static VALUE rb_gsl_blas_dtrsm(VALUE obj, VALUE s, VALUE u, VALUE ta,
- VALUE d, VALUE a, VALUE aa, VALUE bb)
+static VALUE rb_gsl_blas_dtrsm(VALUE obj, VALUE s, VALUE u, VALUE ta,
+ VALUE d, VALUE a, VALUE aa, VALUE bb)
{
gsl_matrix *A = NULL, *B = NULL;
double alpha;
@@ -507,8 +507,8 @@ static VALUE rb_gsl_blas_dtrsm(VALUE obj, VALUE s, VALUE u, VALUE ta,
return bb;
}
-static VALUE rb_gsl_blas_dtrsm2(VALUE obj, VALUE s, VALUE u, VALUE ta,
- VALUE d, VALUE a, VALUE aa, VALUE bb)
+static VALUE rb_gsl_blas_dtrsm2(VALUE obj, VALUE s, VALUE u, VALUE ta,
+ VALUE d, VALUE a, VALUE aa, VALUE bb)
{
gsl_matrix *A = NULL, *B = NULL, *Bnew = NULL;
double alpha;
@@ -532,11 +532,11 @@ static VALUE rb_gsl_blas_dtrsm2(VALUE obj, VALUE s, VALUE u, VALUE ta,
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Bnew);
}
-static VALUE rb_gsl_blas_ztrsm(VALUE obj, VALUE s, VALUE u, VALUE ta,
- VALUE d, VALUE a, VALUE aa, VALUE bb)
+static VALUE rb_gsl_blas_ztrsm(VALUE obj, VALUE s, VALUE u, VALUE ta,
+ VALUE d, VALUE a, VALUE aa, VALUE bb)
{
gsl_matrix_complex *A = NULL, *B = NULL;
- gsl_complex alpha, *pa = α
+ gsl_complex *pa = NULL;
CBLAS_SIDE_t Side;
CBLAS_UPLO_t Uplo;
CBLAS_TRANSPOSE_t TransA;
@@ -552,15 +552,15 @@ static VALUE rb_gsl_blas_ztrsm(VALUE obj, VALUE s, VALUE u, VALUE ta,
Data_Get_Struct(a, gsl_complex, pa);
Data_Get_Struct(aa, gsl_matrix_complex, A);
Data_Get_Struct(bb, gsl_matrix_complex, B);
- gsl_blas_ztrsm(Side, Uplo, TransA, Diag, alpha, A, B);
+ gsl_blas_ztrsm(Side, Uplo, TransA, Diag, *pa, A, B);
return bb;
}
-static VALUE rb_gsl_blas_ztrsm2(VALUE obj, VALUE s, VALUE u, VALUE ta,
- VALUE d, VALUE a, VALUE aa, VALUE bb)
+static VALUE rb_gsl_blas_ztrsm2(VALUE obj, VALUE s, VALUE u, VALUE ta,
+ VALUE d, VALUE a, VALUE aa, VALUE bb)
{
gsl_matrix_complex *A = NULL, *B = NULL, *Bnew = NULL;
- gsl_complex alpha, *pa = α
+ gsl_complex *pa = NULL;
CBLAS_SIDE_t Side;
CBLAS_UPLO_t Uplo;
CBLAS_TRANSPOSE_t TransA;
@@ -578,12 +578,12 @@ static VALUE rb_gsl_blas_ztrsm2(VALUE obj, VALUE s, VALUE u, VALUE ta,
Data_Get_Struct(bb, gsl_matrix_complex, B);
Bnew = gsl_matrix_complex_alloc(B->size1, B->size2);
gsl_matrix_complex_memcpy(Bnew, B);
- gsl_blas_ztrsm(Side, Uplo, TransA, Diag, alpha, A, Bnew);
+ gsl_blas_ztrsm(Side, Uplo, TransA, Diag, *pa, A, Bnew);
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, Bnew);
}
static VALUE rb_gsl_blas_dsyrk(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
- VALUE b, VALUE cc)
+ VALUE b, VALUE cc)
{
gsl_matrix *A = NULL, *C = NULL;
double alpha, beta;
@@ -603,7 +603,7 @@ static VALUE rb_gsl_blas_dsyrk(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
}
static VALUE rb_gsl_blas_dsyrk2(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
- VALUE b, VALUE cc)
+ VALUE b, VALUE cc)
{
gsl_matrix *A = NULL, *C = NULL, *Cnew = NULL;
double alpha, beta;
@@ -625,10 +625,10 @@ static VALUE rb_gsl_blas_dsyrk2(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
}
static VALUE rb_gsl_blas_zsyrk(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
- VALUE b, VALUE cc)
+ VALUE b, VALUE cc)
{
gsl_matrix_complex *A = NULL, *C = NULL;
- gsl_complex alpha, beta, *pa = &alpha, *pb = β
+ gsl_complex *pa = NULL, *pb = NULL;
CBLAS_UPLO_t Uplo;
CBLAS_TRANSPOSE_t Trans;
CHECK_FIXNUM(u); CHECK_FIXNUM(t);
@@ -640,15 +640,15 @@ static VALUE rb_gsl_blas_zsyrk(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
Data_Get_Struct(b, gsl_complex, pb);
Data_Get_Struct(aa, gsl_matrix_complex, A);
Data_Get_Struct(cc, gsl_matrix_complex, C);
- gsl_blas_zsyrk(Uplo, Trans, alpha, A, beta, C);
+ gsl_blas_zsyrk(Uplo, Trans, *pa, A, *pb, C);
return cc;
}
static VALUE rb_gsl_blas_zsyrk2(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
- VALUE b, VALUE cc)
+ VALUE b, VALUE cc)
{
gsl_matrix_complex *A = NULL, *C = NULL, *Cnew = NULL;
- gsl_complex alpha, beta, *pa = &alpha, *pb = β
+ gsl_complex *pa = NULL, *pb = NULL;
CBLAS_UPLO_t Uplo;
CBLAS_TRANSPOSE_t Trans;
CHECK_FIXNUM(u); CHECK_FIXNUM(t);
@@ -662,12 +662,12 @@ static VALUE rb_gsl_blas_zsyrk2(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
Data_Get_Struct(cc, gsl_matrix_complex, C);
Cnew = gsl_matrix_complex_alloc(C->size1, C->size2);
gsl_matrix_complex_memcpy(Cnew, C);
- gsl_blas_zsyrk(Uplo, Trans, alpha, A, beta, Cnew);
+ gsl_blas_zsyrk(Uplo, Trans, *pa, A, *pb, Cnew);
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, Cnew);
}
static VALUE rb_gsl_blas_zherk(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
- VALUE b, VALUE cc)
+ VALUE b, VALUE cc)
{
gsl_matrix_complex *A = NULL, *C = NULL;
double alpha, beta;
@@ -688,7 +688,7 @@ static VALUE rb_gsl_blas_zherk(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
}
static VALUE rb_gsl_blas_zherk2(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
- VALUE b, VALUE cc)
+ VALUE b, VALUE cc)
{
gsl_matrix_complex *A = NULL, *C = NULL, *Cnew = NULL;
double alpha, beta;
@@ -710,7 +710,7 @@ static VALUE rb_gsl_blas_zherk2(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
}
static VALUE rb_gsl_blas_dsyr2k(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
- VALUE bb, VALUE b, VALUE cc)
+ VALUE bb, VALUE b, VALUE cc)
{
gsl_matrix *A = NULL, *B = NULL, *C = NULL;
double alpha, beta;
@@ -731,7 +731,7 @@ static VALUE rb_gsl_blas_dsyr2k(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
}
static VALUE rb_gsl_blas_dsyr2k2(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
- VALUE bb, VALUE b, VALUE cc)
+ VALUE bb, VALUE b, VALUE cc)
{
gsl_matrix *A = NULL, *B = NULL, *C = NULL, *Cnew = NULL;
double alpha, beta;
@@ -754,10 +754,10 @@ static VALUE rb_gsl_blas_dsyr2k2(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
}
static VALUE rb_gsl_blas_zsyr2k(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
- VALUE bb, VALUE b, VALUE cc)
+ VALUE bb, VALUE b, VALUE cc)
{
gsl_matrix_complex *A = NULL, *B = NULL, *C = NULL;
- gsl_complex alpha, beta, *pa = &alpha, *pb = β
+ gsl_complex *pa = NULL, *pb = NULL;
CBLAS_UPLO_t Uplo;
CBLAS_TRANSPOSE_t Trans;
CHECK_FIXNUM(u); CHECK_FIXNUM(t);
@@ -770,15 +770,15 @@ static VALUE rb_gsl_blas_zsyr2k(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
Data_Get_Struct(aa, gsl_matrix_complex, A);
Data_Get_Struct(bb, gsl_matrix_complex, B);
Data_Get_Struct(cc, gsl_matrix_complex, C);
- gsl_blas_zsyr2k(Uplo, Trans, alpha, A, B, beta, C);
+ gsl_blas_zsyr2k(Uplo, Trans, *pa, A, B, *pb, C);
return cc;
}
static VALUE rb_gsl_blas_zsyr2k2(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
- VALUE bb, VALUE b, VALUE cc)
+ VALUE bb, VALUE b, VALUE cc)
{
gsl_matrix_complex *A = NULL, *B = NULL, *C = NULL, *Cnew = NULL;
- gsl_complex alpha, beta, *pa = &alpha, *pb = β
+ gsl_complex *pa = NULL, *pb = NULL;
CBLAS_UPLO_t Uplo;
CBLAS_TRANSPOSE_t Trans;
CHECK_FIXNUM(u); CHECK_FIXNUM(t);
@@ -793,15 +793,15 @@ static VALUE rb_gsl_blas_zsyr2k2(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
Data_Get_Struct(cc, gsl_matrix_complex, C);
Cnew = gsl_matrix_complex_alloc(C->size1, C->size2);
gsl_matrix_complex_memcpy(Cnew, C);
- gsl_blas_zsyr2k(Uplo, Trans, alpha, A, B, beta, Cnew);
+ gsl_blas_zsyr2k(Uplo, Trans, *pa, A, B, *pb, Cnew);
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, Cnew);
}
static VALUE rb_gsl_blas_zher2k(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
- VALUE bb, VALUE b, VALUE cc)
+ VALUE bb, VALUE b, VALUE cc)
{
gsl_matrix_complex *A = NULL, *B = NULL, *C = NULL;
- gsl_complex alpha, *pa = α
+ gsl_complex *pa = NULL;
double beta;
CBLAS_UPLO_t Uplo;
CBLAS_TRANSPOSE_t Trans;
@@ -816,15 +816,15 @@ static VALUE rb_gsl_blas_zher2k(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
Data_Get_Struct(aa, gsl_matrix_complex, A);
Data_Get_Struct(bb, gsl_matrix_complex, B);
Data_Get_Struct(cc, gsl_matrix_complex, C);
- gsl_blas_zher2k(Uplo, Trans, alpha, A, B, beta, C);
+ gsl_blas_zher2k(Uplo, Trans, *pa, A, B, beta, C);
return cc;
}
static VALUE rb_gsl_blas_zher2k2(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
- VALUE bb, VALUE b, VALUE cc)
+ VALUE bb, VALUE b, VALUE cc)
{
gsl_matrix_complex *A = NULL, *B = NULL, *C = NULL, *Cnew = NULL;
- gsl_complex alpha, *pa = α
+ gsl_complex *pa = NULL;
double beta;
CBLAS_UPLO_t Uplo;
CBLAS_TRANSPOSE_t Trans;
@@ -841,7 +841,7 @@ static VALUE rb_gsl_blas_zher2k2(VALUE obj, VALUE u, VALUE t, VALUE a, VALUE aa,
Data_Get_Struct(cc, gsl_matrix_complex, C);
Cnew = gsl_matrix_complex_alloc(C->size1, C->size2);
gsl_matrix_complex_memcpy(Cnew, C);
- gsl_blas_zher2k(Uplo, Trans, alpha, A, B, beta, Cnew);
+ gsl_blas_zher2k(Uplo, Trans, *pa, A, B, beta, Cnew);
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, Cnew);
}
diff --git a/ext/gsl/block.c b/ext/gsl_native/block.c
similarity index 89%
rename from ext/gsl/block.c
rename to ext/gsl_native/block.c
index bd873c3..687f4b1 100644
--- a/ext/gsl/block.c
+++ b/ext/gsl_native/block.c
@@ -18,26 +18,23 @@
#include "include/rb_gsl_histogram.h"
#include "include/rb_gsl_complex.h"
#include "include/rb_gsl_poly.h"
-
-#ifdef HAVE_NARRAY_H
#include "include/rb_gsl_with_narray.h"
-#endif
#define BASE_DOUBLE
#include "include/templates_on.h"
-#include "block_source.c"
+#include "block_source.h"
#include "include/templates_off.h"
#undef BASE_DOUBLE
#define BASE_INT
#include "include/templates_on.h"
-#include "block_source.c"
+#include "block_source.h"
#include "include/templates_off.h"
#undef BASE_INT
#define BASE_UCHAR
#include "include/templates_on.h"
-#include "block_source.c"
+#include "block_source.h"
#include "include/templates_off.h"
#undef BASE_UCHAR
diff --git a/ext/gsl/block_source.c b/ext/gsl_native/block_source.h
similarity index 79%
rename from ext/gsl/block_source.c
rename to ext/gsl_native/block_source.h
index 9e9f107..7483c7c 100644
--- a/ext/gsl/block_source.c
+++ b/ext/gsl_native/block_source.h
@@ -82,9 +82,9 @@ static VALUE FUNCTION(rb_gsl_block,fprintf)(int argc, VALUE *argv, VALUE obj)
GSL_TYPE(gsl_block) *h = NULL;
FILE *fp = NULL;
int status, flag = 0;
- if (argc != 1 && argc != 2)
- rb_raise(rb_eArgError,
- "wrong number of arguments (%d for 1 or 2)", argc);
+ if (argc != 1 && argc != 2)
+ rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for 1 or 2)", argc);
Data_Get_Struct(obj, GSL_TYPE(gsl_block), h);
fp = rb_gsl_open_writefile(argv[0], &flag);
if (argc == 2) {
@@ -203,28 +203,27 @@ static VALUE FUNCTION(rb_gsl_block,get)(int argc, VALUE *argv, VALUE obj)
n = RARRAY_LEN(argv[0]);
bnew = FUNCTION(gsl_block,alloc)(n);
for (j = 0; j < n; j++) {
- i = FIX2INT(rb_ary_entry(argv[0], j));
- if (i < 0) k = b->size + i; else k = i;
- bnew->data[j] = b->data[k];
+ i = FIX2INT(rb_ary_entry(argv[0], j));
+ if (i < 0) k = b->size + i; else k = i;
+ bnew->data[j] = b->data[k];
}
return Data_Wrap_Struct(GSL_TYPE(cgsl_block), 0, FUNCTION(gsl_block,free), bnew);
break;
default:
if (PERMUTATION_P(argv[0])) {
- Data_Get_Struct(argv[0], gsl_index, p);
- bnew = FUNCTION(gsl_block,alloc)(p->size);
- for (j = 0; j < p->size; j++) bnew->data[j] = b->data[p->data[j]];
- return Data_Wrap_Struct(GSL_TYPE(cgsl_block), 0, FUNCTION(gsl_block,free), bnew);
+ Data_Get_Struct(argv[0], gsl_index, p);
+ bnew = FUNCTION(gsl_block,alloc)(p->size);
+ for (j = 0; j < p->size; j++) bnew->data[j] = b->data[p->data[j]];
+ return Data_Wrap_Struct(GSL_TYPE(cgsl_block), 0, FUNCTION(gsl_block,free), bnew);
} else if (CLASS_OF(argv[0]) == rb_cRange) {
- get_range_int_beg_en_n(argv[0], &beg, &en, &n, &step);
- bnew = FUNCTION(gsl_block,alloc)(n);
- for (j = 0; j < n; j++)
- bnew->data[j] = b->data[beg+j];
- return Data_Wrap_Struct(GSL_TYPE(cgsl_block), 0, FUNCTION(gsl_block,free),
- bnew);
+ get_range_int_beg_en_n(argv[0], &beg, &en, &n, &step);
+ bnew = FUNCTION(gsl_block,alloc)(n);
+ for (j = 0; j < n; j++)
+ bnew->data[j] = b->data[beg+j];
+ return Data_Wrap_Struct(GSL_TYPE(cgsl_block), 0, FUNCTION(gsl_block,free), bnew);
} else {
- rb_raise(rb_eArgError, "wrong argument type %s (Fixnum, Array, or Range expected)", rb_class2name(CLASS_OF(argv[0])));
- break;
+ rb_raise(rb_eArgError, "wrong argument type %s (Fixnum, Array, or Range expected)", rb_class2name(CLASS_OF(argv[0])));
+ break;
}
}
break;
@@ -237,7 +236,6 @@ static VALUE FUNCTION(rb_gsl_block,get)(int argc, VALUE *argv, VALUE obj)
}
return Data_Wrap_Struct(GSL_TYPE(cgsl_block), 0, FUNCTION(gsl_block,free), bnew);
-
break;
}
return Qnil;
@@ -257,9 +255,9 @@ static VALUE FUNCTION(rb_gsl_block,set)(VALUE obj, VALUE ii, VALUE xx)
}
-static int FUNCTION(gsl_block,eq)(const GSL_TYPE(gsl_block) *a,
- const GSL_TYPE(gsl_block) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,eq)(const GSL_TYPE(gsl_block) *a,
+ const GSL_TYPE(gsl_block) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -273,9 +271,9 @@ static int FUNCTION(gsl_block,eq)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,ne)(const GSL_TYPE(gsl_block) *a,
- const GSL_TYPE(gsl_block) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,ne)(const GSL_TYPE(gsl_block) *a,
+ const GSL_TYPE(gsl_block) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -289,9 +287,9 @@ static int FUNCTION(gsl_block,ne)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,gt)(const GSL_TYPE(gsl_block) *a,
- const GSL_TYPE(gsl_block) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,gt)(const GSL_TYPE(gsl_block) *a,
+ const GSL_TYPE(gsl_block) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -305,9 +303,9 @@ static int FUNCTION(gsl_block,gt)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,ge)(const GSL_TYPE(gsl_block) *a,
- const GSL_TYPE(gsl_block) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,ge)(const GSL_TYPE(gsl_block) *a,
+ const GSL_TYPE(gsl_block) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -321,9 +319,9 @@ static int FUNCTION(gsl_block,ge)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,lt)(const GSL_TYPE(gsl_block) *a,
- const GSL_TYPE(gsl_block) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,lt)(const GSL_TYPE(gsl_block) *a,
+ const GSL_TYPE(gsl_block) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -337,9 +335,9 @@ static int FUNCTION(gsl_block,lt)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,le)(const GSL_TYPE(gsl_block) *a,
- const GSL_TYPE(gsl_block) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,le)(const GSL_TYPE(gsl_block) *a,
+ const GSL_TYPE(gsl_block) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -353,9 +351,9 @@ static int FUNCTION(gsl_block,le)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,and)(const GSL_TYPE(gsl_block) *a,
- const GSL_TYPE(gsl_block) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,and)(const GSL_TYPE(gsl_block) *a,
+ const GSL_TYPE(gsl_block) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -369,9 +367,9 @@ static int FUNCTION(gsl_block,and)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,or)(const GSL_TYPE(gsl_block) *a,
- const GSL_TYPE(gsl_block) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,or)(const GSL_TYPE(gsl_block) *a,
+ const GSL_TYPE(gsl_block) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -385,9 +383,9 @@ static int FUNCTION(gsl_block,or)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,xor)(const GSL_TYPE(gsl_block) *a,
- const GSL_TYPE(gsl_block) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,xor)(const GSL_TYPE(gsl_block) *a,
+ const GSL_TYPE(gsl_block) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -401,8 +399,8 @@ static int FUNCTION(gsl_block,xor)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,eq2)(const GSL_TYPE(gsl_block) *a,
- BASE b, gsl_block_uchar *c)
+static int FUNCTION(gsl_block,eq2)(const GSL_TYPE(gsl_block) *a,
+ BASE b, gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -415,9 +413,9 @@ static int FUNCTION(gsl_block,eq2)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,ne2)(const GSL_TYPE(gsl_block) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,ne2)(const GSL_TYPE(gsl_block) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -430,9 +428,9 @@ static int FUNCTION(gsl_block,ne2)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,gt2)(const GSL_TYPE(gsl_block) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,gt2)(const GSL_TYPE(gsl_block) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -445,9 +443,9 @@ static int FUNCTION(gsl_block,gt2)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,ge2)(const GSL_TYPE(gsl_block) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,ge2)(const GSL_TYPE(gsl_block) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -460,9 +458,9 @@ static int FUNCTION(gsl_block,ge2)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,lt2)(const GSL_TYPE(gsl_block) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,lt2)(const GSL_TYPE(gsl_block) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -475,9 +473,9 @@ static int FUNCTION(gsl_block,lt2)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,le2)(const GSL_TYPE(gsl_block) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,le2)(const GSL_TYPE(gsl_block) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -490,9 +488,9 @@ static int FUNCTION(gsl_block,le2)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,and2)(const GSL_TYPE(gsl_block) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,and2)(const GSL_TYPE(gsl_block) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -505,9 +503,9 @@ static int FUNCTION(gsl_block,and2)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,or2)(const GSL_TYPE(gsl_block) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,or2)(const GSL_TYPE(gsl_block) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -520,9 +518,9 @@ static int FUNCTION(gsl_block,or2)(const GSL_TYPE(gsl_block) *a,
return 0;
}
-static int FUNCTION(gsl_block,xor2)(const GSL_TYPE(gsl_block) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_block,xor2)(const GSL_TYPE(gsl_block) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -537,12 +535,12 @@ static int FUNCTION(gsl_block,xor2)(const GSL_TYPE(gsl_block) *a,
static VALUE FUNCTION(rb_gsl_block,compare)(VALUE aa, VALUE bb,
- int (*cmp)(const GSL_TYPE(gsl_block)*,
- const GSL_TYPE(gsl_block)*,
- gsl_block_uchar*),
- int (*cmp2)(const GSL_TYPE(gsl_block)*,
- BASE,
- gsl_block_uchar*))
+ int (*cmp)(const GSL_TYPE (gsl_block)*,
+ const GSL_TYPE (gsl_block)*,
+ gsl_block_uchar*),
+ int (*cmp2)(const GSL_TYPE (gsl_block)*,
+ BASE,
+ gsl_block_uchar*))
{
GSL_TYPE(gsl_block) *a, *b;
/* gsl_block_int *c;*/
@@ -553,9 +551,9 @@ static VALUE FUNCTION(rb_gsl_block,compare)(VALUE aa, VALUE bb,
c = gsl_block_uchar_alloc(a->size);
if (BL_P(bb)) {
Data_Get_Struct(bb, GSL_TYPE(gsl_block), b);
- if (a->size != b->size)
- rb_raise(rb_eRuntimeError, "Block size mismatch, %d and %d", (int) a->size,
- (int) b->size);
+ if (a->size != b->size)
+ rb_raise(rb_eRuntimeError, "Block size mismatch, %d and %d", (int) a->size,
+ (int) b->size);
/*status =*/ (*cmp)(a, b, c);
} else {
/*status =*/ (*cmp2)(a, NUMCONV(bb), c);
@@ -566,55 +564,55 @@ static VALUE FUNCTION(rb_gsl_block,compare)(VALUE aa, VALUE bb,
static VALUE FUNCTION(rb_gsl_block,eq)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_block,compare)(aa, bb, FUNCTION(gsl_block,eq),
- FUNCTION(gsl_block,eq2));
+ FUNCTION(gsl_block,eq2));
}
static VALUE FUNCTION(rb_gsl_block,ne)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_block,compare)(aa, bb, FUNCTION(gsl_block,ne),
- FUNCTION(gsl_block,ne2));
+ FUNCTION(gsl_block,ne2));
}
static VALUE FUNCTION(rb_gsl_block,gt)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_block,compare)(aa, bb, FUNCTION(gsl_block,gt),
- FUNCTION(gsl_block,gt2));
+ FUNCTION(gsl_block,gt2));
}
static VALUE FUNCTION(rb_gsl_block,ge)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_block,compare)(aa, bb, FUNCTION(gsl_block,ge),
- FUNCTION(gsl_block,ge2));
+ FUNCTION(gsl_block,ge2));
}
static VALUE FUNCTION(rb_gsl_block,lt)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_block,compare)(aa, bb, FUNCTION(gsl_block,lt),
- FUNCTION(gsl_block,lt2));
+ FUNCTION(gsl_block,lt2));
}
static VALUE FUNCTION(rb_gsl_block,le)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_block,compare)(aa, bb, FUNCTION(gsl_block,le),
- FUNCTION(gsl_block,le2));
+ FUNCTION(gsl_block,le2));
}
static VALUE FUNCTION(rb_gsl_block,and)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_block,compare)(aa, bb, FUNCTION(gsl_block,and),
- FUNCTION(gsl_block,and2));
+ FUNCTION(gsl_block,and2));
}
static VALUE FUNCTION(rb_gsl_block,or)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_block,compare)(aa, bb, FUNCTION(gsl_block,or),
- FUNCTION(gsl_block,or2));
+ FUNCTION(gsl_block,or2));
}
static VALUE FUNCTION(rb_gsl_block,xor)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_block,compare)(aa, bb, FUNCTION(gsl_block,xor),
- FUNCTION(gsl_block,xor2));
+ FUNCTION(gsl_block,xor2));
}
static VALUE FUNCTION(rb_gsl_block,not)(VALUE obj)
@@ -669,11 +667,11 @@ static VALUE FUNCTION(rb_gsl_block,all)(VALUE obj)
Data_Get_Struct(obj, GSL_TYPE(gsl_block), v);
if (rb_block_given_p()) {
- for (i = 0; i < v->size; i++)
+ for (i = 0; i < v->size; i++)
if (!rb_yield(C_TO_VALUE(v->data[i]))) return Qfalse;
return Qtrue;
} else {
- for (i = 0; i < v->size; i++)
+ for (i = 0; i < v->size; i++)
if (!v->data[i]) return Qfalse;
return Qtrue;
}
@@ -686,11 +684,11 @@ static VALUE FUNCTION(rb_gsl_block,none)(VALUE obj)
Data_Get_Struct(obj, GSL_TYPE(gsl_block), v);
if (rb_block_given_p()) {
- for (i = 0; i < v->size; i++)
+ for (i = 0; i < v->size; i++)
if (rb_yield(C_TO_VALUE(v->data[i]))) return Qfalse;
return Qtrue;
} else {
- for (i = 0; i < v->size; i++)
+ for (i = 0; i < v->size; i++)
if (v->data[i]) return Qfalse;
return Qtrue;
}
@@ -708,10 +706,10 @@ static VALUE FUNCTION(rb_gsl_block,where)(VALUE obj)
btmp = gsl_block_uchar_alloc(v->size);
for (i = 0; i < v->size; i++) {
if (rb_yield(C_TO_VALUE(v->data[i]))) {
- btmp->data[i] = 1;
- n++;
+ btmp->data[i] = 1;
+ n++;
} else {
- btmp->data[i] = 0;
+ btmp->data[i] = 0;
}
} /* for */
} else { /* block is not given */
@@ -744,10 +742,10 @@ static VALUE FUNCTION(rb_gsl_block,where2)(VALUE obj)
btmp = gsl_block_uchar_alloc(v->size);
for (i = 0; i < v->size; i++) {
if (rb_yield(C_TO_VALUE(v->data[i]))) {
- btmp->data[i] = 1;
- n++;
+ btmp->data[i] = 1;
+ n++;
} else {
- btmp->data[i] = 0;
+ btmp->data[i] = 0;
}
} /* for */
} else { /* block is not given */
@@ -758,11 +756,11 @@ static VALUE FUNCTION(rb_gsl_block,where2)(VALUE obj)
v2 = gsl_permutation_calloc(v->size); /* calloc() initializes v2 */
vv1 = Qnil;
vv2 = Data_Wrap_Struct(cgsl_index, 0, gsl_permutation_free, v2);
- } else if (v->size-n == 0) {
+ } else if (v->size-n == 0) {
v1 = gsl_permutation_calloc(n); /* calloc() initializes v1 */
- vv1 = Data_Wrap_Struct(cgsl_index, 0, gsl_permutation_free, v1);
+ vv1 = Data_Wrap_Struct(cgsl_index, 0, gsl_permutation_free, v1);
vv2 = Qnil;
- } else {
+ } else {
/* same case as 'where' */
v1 = gsl_permutation_alloc(n);
v2 = gsl_permutation_alloc(v->size-n);
@@ -830,12 +828,12 @@ static VALUE FUNCTION(rb_gsl_block,collect_bang)(VALUE obj)
void FUNCTION(Init_gsl_block,init)(VALUE module)
{
- rb_define_singleton_method(GSL_TYPE(cgsl_block), "new",
- FUNCTION(rb_gsl_block,new), 1);
- rb_define_singleton_method(GSL_TYPE(cgsl_block), "alloc",
- FUNCTION(rb_gsl_block,new), 1);
- rb_define_singleton_method(GSL_TYPE(cgsl_block), "calloc",
- FUNCTION(rb_gsl_block,calloc), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_block), "new",
+ FUNCTION(rb_gsl_block,new), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_block), "alloc",
+ FUNCTION(rb_gsl_block,new), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_block), "calloc",
+ FUNCTION(rb_gsl_block,calloc), 1);
rb_define_method(GSL_TYPE(cgsl_block), "size", FUNCTION(rb_gsl_block,size), 0);
rb_define_alias(GSL_TYPE(cgsl_block), "length", "size");
@@ -871,9 +869,9 @@ void FUNCTION(Init_gsl_block,init)(VALUE module)
rb_define_method(GSL_TYPE(cgsl_block), "all?", FUNCTION(rb_gsl_block,all), 0);
rb_define_method(GSL_TYPE(cgsl_block), "none?", FUNCTION(rb_gsl_block,none), 0);
rb_define_method(GSL_TYPE(cgsl_block), "any",
- FUNCTION(rb_gsl_block,any), 0);
+ FUNCTION(rb_gsl_block,any), 0);
rb_define_method(GSL_TYPE(cgsl_block), "any?",
- FUNCTION(rb_gsl_block,any2), 0);
+ FUNCTION(rb_gsl_block,any2), 0);
rb_define_method(GSL_TYPE(cgsl_block), "where", FUNCTION(rb_gsl_block,where), 0);
rb_define_method(GSL_TYPE(cgsl_block), "where2", FUNCTION(rb_gsl_block,where2), 0);
diff --git a/ext/gsl_native/bspline.c b/ext/gsl_native/bspline.c
new file mode 100644
index 0000000..accc503
--- /dev/null
+++ b/ext/gsl_native/bspline.c
@@ -0,0 +1,122 @@
+#include "include/rb_gsl.h"
+#include "gsl/gsl_bspline.h"
+
+static VALUE cBSWS;
+
+static VALUE rb_gsl_bspline_alloc(VALUE klass, VALUE k, VALUE n)
+{
+ gsl_bspline_workspace *w;
+ w = gsl_bspline_alloc(FIX2INT(k), FIX2INT(n));
+ return Data_Wrap_Struct(klass, 0, gsl_bspline_free, w);
+}
+
+static VALUE rb_gsl_bspline_ncoeffs(VALUE obj)
+{
+ gsl_bspline_workspace *w;
+ Data_Get_Struct(obj, gsl_bspline_workspace, w);
+ return INT2FIX((int)gsl_bspline_ncoeffs(w));
+}
+static VALUE rb_gsl_bspline_order(VALUE obj)
+{
+ gsl_bspline_workspace *w;
+ Data_Get_Struct(obj, gsl_bspline_workspace, w);
+ return INT2FIX((int)gsl_bspline_order(w));
+}
+static VALUE rb_gsl_bspline_nbreak(VALUE obj)
+{
+ gsl_bspline_workspace *w;
+ Data_Get_Struct(obj, gsl_bspline_workspace, w);
+ return INT2FIX((int)gsl_bspline_nbreak(w));
+}
+static VALUE rb_gsl_bspline_breakpoint(VALUE obj, VALUE i)
+{
+ gsl_bspline_workspace *w;
+ Data_Get_Struct(obj, gsl_bspline_workspace, w);
+ return rb_float_new(gsl_bspline_breakpoint(FIX2INT(i), w));
+}
+static VALUE rb_gsl_bspline_knots(VALUE obj, VALUE b)
+{
+ gsl_bspline_workspace *w;
+ gsl_vector *bpts;
+ CHECK_VECTOR(b);
+ Data_Get_Struct(obj, gsl_bspline_workspace, w);
+ Data_Get_Struct(b, gsl_vector, bpts);
+ gsl_bspline_knots(bpts, w);
+ return Data_Wrap_Struct(cgsl_vector_view_ro, 0, NULL, w->knots);
+}
+static VALUE rb_gsl_bspline_knots_uniform(int argc, VALUE *argv, VALUE obj)
+{
+ gsl_bspline_workspace *w;
+ int argc2;
+ switch (TYPE(obj)) {
+ case T_MODULE:
+ case T_CLASS:
+ case T_OBJECT:
+ if (!rb_obj_is_kind_of(argv[argc-1], cBSWS)) {
+ rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::BSpline expected)",
+ rb_class2name(CLASS_OF(argv[argc-1])));
+ }
+ Data_Get_Struct(argv[argc-1], gsl_bspline_workspace, w);
+ argc2 = argc-1;
+ break;
+ default:
+ Data_Get_Struct(obj, gsl_bspline_workspace, w);
+ argc2 = argc;
+ }
+ if (argc2 != 2) rb_raise(rb_eArgError, "Wrong number of arguments.");
+ gsl_bspline_knots_uniform(NUM2DBL(argv[0]), NUM2DBL(argv[1]), w);
+ return Data_Wrap_Struct(cgsl_vector_view_ro, 0, NULL, w->knots);
+}
+static VALUE rb_gsl_bspline_eval(int argc, VALUE *argv, VALUE obj)
+{
+ gsl_bspline_workspace *w;
+ double x;
+ gsl_vector *B;
+ VALUE vB;
+
+ Data_Get_Struct(obj, gsl_bspline_workspace, w);
+
+ switch (argc) {
+ case 2:
+ CHECK_VECTOR(argv[1]);
+ Data_Get_Struct(argv[1], gsl_vector, B);
+ vB = argv[1];
+ x = NUM2DBL(argv[0]);
+ break;
+ case 1:
+ x = NUM2DBL(argv[0]);
+ B = gsl_vector_alloc(w->nbreak+w->k-2);
+ vB = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, B);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc);
+ }
+
+ gsl_bspline_eval(x, B, w);
+
+ return vB;
+}
+
+static VALUE rb_gsl_bspline_greville_abscissa(VALUE obj, VALUE i)
+{
+ gsl_bspline_workspace *w;
+ Data_Get_Struct(obj, gsl_bspline_workspace, w);
+ return rb_float_new(gsl_bspline_greville_abscissa(i, w));
+}
+
+void Init_bspline(VALUE module)
+{
+ cBSWS = rb_define_class_under(module, "BSpline", cGSL_Object);
+
+ rb_define_singleton_method(cBSWS, "alloc", rb_gsl_bspline_alloc, 2);
+
+ rb_define_method(cBSWS, "ncoeffs", rb_gsl_bspline_ncoeffs, 0);
+ rb_define_method(cBSWS, "order", rb_gsl_bspline_order, 0);
+ rb_define_method(cBSWS, "nbreak", rb_gsl_bspline_nbreak, 0);
+ rb_define_method(cBSWS, "breakpoint", rb_gsl_bspline_breakpoint, 1);
+ rb_define_method(cBSWS, "knots", rb_gsl_bspline_knots, 1);
+ rb_define_method(cBSWS, "knots_uniform", rb_gsl_bspline_knots_uniform, -1);
+ rb_define_singleton_method(cBSWS, "knots_uniform", rb_gsl_bspline_knots_uniform, -1);
+ rb_define_method(cBSWS, "eval", rb_gsl_bspline_eval, -1);
+ rb_define_method(cBSWS, "greville_abscissa", rb_gsl_bspline_greville_abscissa, 1);
+}
diff --git a/ext/gsl/bundle.c b/ext/gsl_native/bundle.c
similarity index 100%
rename from ext/gsl/bundle.c
rename to ext/gsl_native/bundle.c
diff --git a/ext/gsl/cdf.c b/ext/gsl_native/cdf.c
similarity index 96%
rename from ext/gsl/cdf.c
rename to ext/gsl_native/cdf.c
index 1756152..5188de6 100644
--- a/ext/gsl/cdf.c
+++ b/ext/gsl_native/cdf.c
@@ -9,7 +9,6 @@
WITHOUT ANY WARRANTY.
*/
-#ifdef GSL_1_4_LATER
#include "include/rb_gsl_array.h"
#include "include/rb_gsl_common.h"
#include "include/rb_gsl_rng.h"
@@ -18,10 +17,10 @@
VALUE rb_gsl_eval_pdf_cdf(VALUE xx, double (*f)(double));
VALUE rb_gsl_eval_pdf_cdf2(VALUE xx, VALUE aa, double (*f)(double, double));
-VALUE rb_gsl_eval_pdf_cdf3(VALUE xx, VALUE aa, VALUE bb,
- double (*f)(double, double, double));
-VALUE rb_gsl_eval_pdf_cdf2_uint(VALUE xx, VALUE aa,
- double (*f)(unsigned int, double));
+VALUE rb_gsl_eval_pdf_cdf3(VALUE xx, VALUE aa, VALUE bb,
+ double (*f)(double, double, double));
+VALUE rb_gsl_eval_pdf_cdf2_uint(VALUE xx, VALUE aa,
+ double (*f)(unsigned int, double));
static VALUE rb_gsl_cdf_gaussian_P(int argc, VALUE *argv, VALUE obj)
@@ -70,316 +69,313 @@ static VALUE rb_gsl_cdf_gaussian_Qinv(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_cdf_exponential_P(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_exponential_P);
-}
+}
static VALUE rb_gsl_cdf_exponential_Q(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_exponential_Q);
-}
+}
static VALUE rb_gsl_cdf_exponential_Pinv(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_exponential_Pinv);
-}
+}
static VALUE rb_gsl_cdf_exponential_Qinv(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_exponential_Qinv);
-}
+}
static VALUE rb_gsl_cdf_laplace_P(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_laplace_P);
-}
+}
static VALUE rb_gsl_cdf_laplace_Q(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_laplace_Q);
-}
+}
static VALUE rb_gsl_cdf_laplace_Pinv(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_laplace_Pinv);
-}
+}
static VALUE rb_gsl_cdf_laplace_Qinv(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_laplace_Qinv);
-}
+}
static VALUE rb_gsl_cdf_cauchy_P(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_cauchy_P);
-}
+}
static VALUE rb_gsl_cdf_cauchy_Q(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_cauchy_Q);
-}
+}
static VALUE rb_gsl_cdf_cauchy_Pinv(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_cauchy_Pinv);
-}
+}
static VALUE rb_gsl_cdf_cauchy_Qinv(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_cauchy_Qinv);
-}
+}
static VALUE rb_gsl_cdf_rayleigh_P(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_rayleigh_P);
-}
+}
static VALUE rb_gsl_cdf_rayleigh_Q(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_rayleigh_Q);
-}
+}
static VALUE rb_gsl_cdf_rayleigh_Pinv(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_rayleigh_Pinv);
-}
+}
static VALUE rb_gsl_cdf_rayleigh_Qinv(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_rayleigh_Qinv);
-}
+}
static VALUE rb_gsl_cdf_gamma_P(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_gamma_P);
-}
+}
static VALUE rb_gsl_cdf_gamma_Q(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_gamma_Q);
-}
+}
static VALUE rb_gsl_cdf_gamma_Pinv(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_gamma_Pinv);
-}
+}
static VALUE rb_gsl_cdf_gamma_Qinv(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_gamma_Qinv);
-}
+}
static VALUE rb_gsl_cdf_flat_P(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_flat_P);
-}
+}
static VALUE rb_gsl_cdf_flat_Q(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_flat_Q);
-}
+}
static VALUE rb_gsl_cdf_flat_Pinv(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_flat_Pinv);
-}
+}
static VALUE rb_gsl_cdf_flat_Qinv(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_flat_Qinv);
-}
+}
static VALUE rb_gsl_cdf_lognormal_P(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_lognormal_P);
-}
+}
static VALUE rb_gsl_cdf_lognormal_Q(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_lognormal_Q);
-}
+}
static VALUE rb_gsl_cdf_lognormal_Pinv(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_lognormal_Pinv);
-}
+}
static VALUE rb_gsl_cdf_lognormal_Qinv(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_lognormal_Qinv);
-}
+}
-#ifdef GSL_1_6_LATER
static VALUE rb_gsl_cdf_exppow_P(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_exppow_P);
-}
+}
static VALUE rb_gsl_cdf_exppow_Q(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_exppow_Q);
-}
-#endif
+}
static VALUE rb_gsl_cdf_chisq_P(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_chisq_P);
-}
+}
static VALUE rb_gsl_cdf_chisq_Q(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_chisq_Q);
-}
+}
static VALUE rb_gsl_cdf_chisq_Pinv(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_chisq_Pinv);
-}
+}
static VALUE rb_gsl_cdf_chisq_Qinv(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_chisq_Qinv);
-}
+}
static VALUE rb_gsl_cdf_fdist_P(VALUE obj, VALUE x, VALUE nu1, VALUE nu2)
{
return rb_gsl_eval_pdf_cdf3(x, nu1, nu2, gsl_cdf_fdist_P);
-}
+}
static VALUE rb_gsl_cdf_fdist_Q(VALUE obj, VALUE x, VALUE nu1, VALUE nu2)
{
return rb_gsl_eval_pdf_cdf3(x, nu1, nu2, gsl_cdf_fdist_Q);
-}
+}
static VALUE rb_gsl_cdf_tdist_P(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_tdist_P);
-}
+}
static VALUE rb_gsl_cdf_tdist_Q(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_tdist_Q);
-}
+}
static VALUE rb_gsl_cdf_tdist_Pinv(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_tdist_Pinv);
-}
+}
static VALUE rb_gsl_cdf_tdist_Qinv(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_tdist_Qinv);
-}
+}
static VALUE rb_gsl_cdf_beta_P(VALUE obj, VALUE x, VALUE nu1, VALUE nu2)
{
return rb_gsl_eval_pdf_cdf3(x, nu1, nu2, gsl_cdf_beta_P);
-}
+}
static VALUE rb_gsl_cdf_beta_Q(VALUE obj, VALUE x, VALUE nu1, VALUE nu2)
{
return rb_gsl_eval_pdf_cdf3(x, nu1, nu2, gsl_cdf_beta_Q);
-}
+}
static VALUE rb_gsl_cdf_logistic_P(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_logistic_P);
-}
+}
static VALUE rb_gsl_cdf_logistic_Q(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_logistic_Q);
-}
+}
static VALUE rb_gsl_cdf_logistic_Pinv(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_logistic_Pinv);
-}
+}
static VALUE rb_gsl_cdf_logistic_Qinv(VALUE obj, VALUE x, VALUE mu)
{
return rb_gsl_eval_pdf_cdf2(x, mu, gsl_cdf_logistic_Qinv);
-}
+}
static VALUE rb_gsl_cdf_pareto_P(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_pareto_P);
-}
+}
static VALUE rb_gsl_cdf_pareto_Q(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_pareto_Q);
-}
+}
static VALUE rb_gsl_cdf_pareto_Pinv(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_pareto_Pinv);
-}
+}
static VALUE rb_gsl_cdf_pareto_Qinv(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_pareto_Qinv);
-}
+}
static VALUE rb_gsl_cdf_weibull_P(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_weibull_P);
-}
+}
static VALUE rb_gsl_cdf_weibull_Q(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_weibull_Q);
-}
+}
static VALUE rb_gsl_cdf_weibull_Pinv(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_weibull_Pinv);
-}
+}
static VALUE rb_gsl_cdf_weibull_Qinv(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_weibull_Qinv);
-}
+}
static VALUE rb_gsl_cdf_gumbel1_P(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_gumbel1_P);
-}
+}
static VALUE rb_gsl_cdf_gumbel1_Q(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_gumbel1_Q);
-}
+}
static VALUE rb_gsl_cdf_gumbel1_Pinv(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_gumbel1_Pinv);
-}
+}
static VALUE rb_gsl_cdf_gumbel1_Qinv(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_gumbel1_Qinv);
-}
+}
static VALUE rb_gsl_cdf_gumbel2_P(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_gumbel2_P);
-}
+}
static VALUE rb_gsl_cdf_gumbel2_Q(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_gumbel2_Q);
-}
+}
static VALUE rb_gsl_cdf_gumbel2_Pinv(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_gumbel2_Pinv);
-}
+}
static VALUE rb_gsl_cdf_gumbel2_Qinv(VALUE obj, VALUE x, VALUE a, VALUE b)
{
return rb_gsl_eval_pdf_cdf3(x, a, b, gsl_cdf_gumbel2_Qinv);
-}
+}
-#ifdef GSL_1_8_LATER
static VALUE rb_gsl_cdf_binomial_P(VALUE obj, VALUE kk, VALUE pp, VALUE nn)
{
unsigned int k, n;
@@ -516,7 +512,6 @@ static VALUE rb_gsl_cdf_fdist_Qinv(VALUE obj, VALUE qq, VALUE aa, VALUE bb)
b = NUM2DBL(bb);
return rb_float_new(gsl_cdf_fdist_Qinv(Q, a, b));
}
-#endif
void Init_gsl_cdf(VALUE module)
{
@@ -535,7 +530,7 @@ void Init_gsl_cdf(VALUE module)
rb_define_module_function(module, "cdf_ugaussian_Qinv", rb_gsl_cdf_gaussian_Qinv, -1);
rb_define_module_function(module, "cdf_exponential_P", rb_gsl_cdf_exponential_P, 2);
- rb_define_module_function(module, "cdf_exponential_Q", rb_gsl_cdf_exponential_Q, 2);
+ rb_define_module_function(module, "cdf_exponential_Q", rb_gsl_cdf_exponential_Q, 2);
rb_define_module_function(module, "cdf_exponential_Pinv", rb_gsl_cdf_exponential_Pinv, 2);
rb_define_module_function(module, "cdf_exponential_Qinv", rb_gsl_cdf_exponential_Qinv, 2);
@@ -573,7 +568,7 @@ void Init_gsl_cdf(VALUE module)
rb_define_module_function(module, "cdf_chisq_Q", rb_gsl_cdf_chisq_Q, 2);
rb_define_module_function(module, "cdf_chisq_Pinv", rb_gsl_cdf_chisq_Pinv, 2);
rb_define_module_function(module, "cdf_chisq_Qinv", rb_gsl_cdf_chisq_Qinv, 2);
-
+
rb_define_module_function(module, "cdf_fdist_P", rb_gsl_cdf_fdist_P, 3);
rb_define_module_function(module, "cdf_fdist_Q", rb_gsl_cdf_fdist_Q, 3);
@@ -581,7 +576,7 @@ void Init_gsl_cdf(VALUE module)
rb_define_module_function(module, "cdf_tdist_Q", rb_gsl_cdf_tdist_Q, 2);
rb_define_module_function(module, "cdf_tdist_Pinv", rb_gsl_cdf_tdist_Pinv, 2);
rb_define_module_function(module, "cdf_tdist_Qinv", rb_gsl_cdf_tdist_Qinv, 2);
-
+
rb_define_module_function(module, "cdf_beta_P", rb_gsl_cdf_beta_P, 3);
rb_define_module_function(module, "cdf_beta_Q", rb_gsl_cdf_beta_Q, 3);
@@ -589,7 +584,7 @@ void Init_gsl_cdf(VALUE module)
rb_define_module_function(module, "cdf_logistic_Q", rb_gsl_cdf_logistic_Q, 2);
rb_define_module_function(module, "cdf_logistic_Pinv", rb_gsl_cdf_logistic_Pinv, 2);
rb_define_module_function(module, "cdf_logistic_Qinv", rb_gsl_cdf_logistic_Qinv, 2);
-
+
rb_define_module_function(module, "cdf_pareto_P", rb_gsl_cdf_pareto_P, 3);
rb_define_module_function(module, "cdf_pareto_Q", rb_gsl_cdf_pareto_Q, 3);
rb_define_module_function(module, "cdf_pareto_Pinv", rb_gsl_cdf_pareto_Pinv, 3);
@@ -622,12 +617,12 @@ void Init_gsl_cdf(VALUE module)
rb_define_module_function(mgsl_cdf, "ugaussian_Qinv", rb_gsl_cdf_gaussian_Qinv, -1);
rb_define_module_function(mgsl_cdf, "exponential_P", rb_gsl_cdf_exponential_P, 2);
- rb_define_module_function(mgsl_cdf, "exponential_Q", rb_gsl_cdf_exponential_Q, 2);
+ rb_define_module_function(mgsl_cdf, "exponential_Q", rb_gsl_cdf_exponential_Q, 2);
rb_define_module_function(mgsl_cdf, "exponential_Pinv", rb_gsl_cdf_exponential_Pinv, 2);
rb_define_module_function(mgsl_cdf, "exponential_Qinv", rb_gsl_cdf_exponential_Qinv, 2);
- rb_define_module_function(mgsl_cdf, "laplace_P", rb_gsl_cdf_laplace_P, 2);
- rb_define_module_function(mgsl_cdf, "laplace_Q", rb_gsl_cdf_laplace_Q, 2);
+ rb_define_module_function(mgsl_cdf, "laplace_P", rb_gsl_cdf_laplace_P, 2);
+ rb_define_module_function(mgsl_cdf, "laplace_Q", rb_gsl_cdf_laplace_Q, 2);
rb_define_module_function(mgsl_cdf, "laplace_Pinv", rb_gsl_cdf_laplace_Pinv, 2);
rb_define_module_function(mgsl_cdf, "laplace_Qinv", rb_gsl_cdf_laplace_Qinv, 2);
@@ -660,7 +655,7 @@ void Init_gsl_cdf(VALUE module)
rb_define_module_function(mgsl_cdf, "chisq_Q", rb_gsl_cdf_chisq_Q, 2);
rb_define_module_function(mgsl_cdf, "chisq_Pinv", rb_gsl_cdf_chisq_Pinv, 2);
rb_define_module_function(mgsl_cdf, "chisq_Qinv", rb_gsl_cdf_chisq_Qinv, 2);
-
+
rb_define_module_function(mgsl_cdf, "fdist_P", rb_gsl_cdf_fdist_P, 3);
rb_define_module_function(mgsl_cdf, "fdist_Q", rb_gsl_cdf_fdist_Q, 3);
@@ -668,7 +663,7 @@ void Init_gsl_cdf(VALUE module)
rb_define_module_function(mgsl_cdf, "tdist_Q", rb_gsl_cdf_tdist_Q, 2);
rb_define_module_function(mgsl_cdf, "tdist_Pinv", rb_gsl_cdf_tdist_Pinv, 2);
rb_define_module_function(mgsl_cdf, "tdist_Qinv", rb_gsl_cdf_tdist_Qinv, 2);
-
+
rb_define_module_function(mgsl_cdf, "beta_P", rb_gsl_cdf_beta_P, 3);
rb_define_module_function(mgsl_cdf, "beta_Q", rb_gsl_cdf_beta_Q, 3);
@@ -676,7 +671,7 @@ void Init_gsl_cdf(VALUE module)
rb_define_module_function(mgsl_cdf, "logistic_Q", rb_gsl_cdf_logistic_Q, 2);
rb_define_module_function(mgsl_cdf, "logistic_Pinv", rb_gsl_cdf_logistic_Pinv, 2);
rb_define_module_function(mgsl_cdf, "logistic_Qinv", rb_gsl_cdf_logistic_Qinv, 2);
-
+
rb_define_module_function(mgsl_cdf, "pareto_P", rb_gsl_cdf_pareto_P, 3);
rb_define_module_function(mgsl_cdf, "pareto_Q", rb_gsl_cdf_pareto_Q, 3);
rb_define_module_function(mgsl_cdf, "pareto_Pinv", rb_gsl_cdf_pareto_Pinv, 3);
@@ -697,16 +692,12 @@ void Init_gsl_cdf(VALUE module)
rb_define_module_function(mgsl_cdf, "gumbel2_Pinv", rb_gsl_cdf_gumbel2_Pinv, 3);
rb_define_module_function(mgsl_cdf, "gumbel2_Qinv", rb_gsl_cdf_gumbel2_Qinv, 3);
-
-#ifdef GSL_1_6_LATER
rb_define_module_function(module, "cdf_exppow_P", rb_gsl_cdf_exppow_P, 3);
rb_define_module_function(module, "cdf_exppow_Q", rb_gsl_cdf_exppow_Q, 3);
rb_define_module_function(mgsl_cdf, "exppow_P", rb_gsl_cdf_exppow_P, 3);
rb_define_module_function(mgsl_cdf, "exppow_Q", rb_gsl_cdf_exppow_Q, 3);
-#endif
-#ifdef GSL_1_8_LATER
rb_define_module_function(module, "cdf_binomial_P", rb_gsl_cdf_binomial_P, 3);
rb_define_module_function(module, "cdf_binomial_Q", rb_gsl_cdf_binomial_Q, 3);
rb_define_module_function(mgsl_cdf, "binomial_P", rb_gsl_cdf_binomial_P, 3);
@@ -746,7 +737,4 @@ void Init_gsl_cdf(VALUE module)
rb_define_module_function(mgsl_cdf, "fdist_Pinv", rb_gsl_cdf_fdist_Pinv, 3);
rb_define_module_function(module, "cdf_fdist_Qinv", rb_gsl_cdf_fdist_Qinv, 3);
rb_define_module_function(mgsl_cdf, "fdist_Qinv", rb_gsl_cdf_fdist_Qinv, 3);
-#endif
-
}
-#endif
diff --git a/ext/gsl/cheb.c b/ext/gsl_native/cheb.c
similarity index 77%
rename from ext/gsl/cheb.c
rename to ext/gsl_native/cheb.c
index c2e8caa..31cf868 100644
--- a/ext/gsl/cheb.c
+++ b/ext/gsl_native/cheb.c
@@ -15,9 +15,6 @@
#include "include/rb_gsl_function.h"
#include <gsl/gsl_math.h>
#include <gsl/gsl_chebyshev.h>
-#ifdef HAVE_NARRAY_H
-#include "narray.h"
-#endif
static VALUE cgsl_cheb;
@@ -98,10 +95,6 @@ static VALUE rb_gsl_cheb_eval(VALUE obj, VALUE xx)
size_t i, j, n;
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *m = NULL, *mnew = NULL;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- double *ptr1, *ptr2;
-#endif
Data_Get_Struct(obj, gsl_cheb_series, p);
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
switch (TYPE(xx)) {
@@ -124,6 +117,8 @@ static VALUE rb_gsl_cheb_eval(VALUE obj, VALUE xx)
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *na;
+ double *ptr1, *ptr2;
GetNArray(xx, na);
ptr1 = (double*) na->ptr;
n = na->total;
@@ -137,16 +132,16 @@ static VALUE rb_gsl_cheb_eval(VALUE obj, VALUE xx)
Data_Get_Struct(xx, gsl_vector, v);
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- gsl_vector_set(vnew, i, gsl_cheb_eval(p, gsl_vector_get(v, i)));
+ gsl_vector_set(vnew, i, gsl_cheb_eval(p, gsl_vector_get(v, i)));
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
} else if (MATRIX_P(xx)) {
Data_Get_Struct(xx, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- gsl_matrix_set(mnew, i, j, gsl_cheb_eval(p, gsl_matrix_get(m, i, j)));
- }
+ for (j = 0; j < m->size2; j++) {
+ gsl_matrix_set(mnew, i, j, gsl_cheb_eval(p, gsl_matrix_get(m, i, j)));
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -165,10 +160,6 @@ static VALUE rb_gsl_cheb_eval_err(VALUE obj, VALUE xx)
size_t n, i, j;
gsl_vector *v = NULL, *vnew = NULL, *verr = NULL;
gsl_matrix *m = NULL, *mnew = NULL, *merr = NULL;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- double *ptr1, *ptr2, *ptr3;
-#endif
Data_Get_Struct(obj, gsl_cheb_series, p);
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
switch (TYPE(xx)) {
@@ -195,6 +186,8 @@ static VALUE rb_gsl_cheb_eval_err(VALUE obj, VALUE xx)
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *na;
+ double *ptr1, *ptr2, *ptr3;
GetNArray(xx, na);
ptr1 = (double*) na->ptr;
n = na->total;
@@ -203,9 +196,9 @@ static VALUE rb_gsl_cheb_eval_err(VALUE obj, VALUE xx)
ptr2 = NA_PTR_TYPE(ary,double*);
ptr3 = NA_PTR_TYPE(aerr,double*);
for (i = 0; i < n; i++) {
- gsl_cheb_eval_err(p, ptr1[i], &result, &err);
- ptr2[i] = result;
- ptr3[i] = err;
+ gsl_cheb_eval_err(p, ptr1[i], &result, &err);
+ ptr2[i] = result;
+ ptr3[i] = err;
}
return rb_ary_new3(2, ary, aerr);
}
@@ -215,27 +208,27 @@ static VALUE rb_gsl_cheb_eval_err(VALUE obj, VALUE xx)
vnew = gsl_vector_alloc(v->size);
verr = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- gsl_cheb_eval_err(p, gsl_vector_get(v, i), &result, &err);
- gsl_vector_set(vnew, i, result);
- gsl_vector_set(verr, i, err);
+ gsl_cheb_eval_err(p, gsl_vector_get(v, i), &result, &err);
+ gsl_vector_set(vnew, i, result);
+ gsl_vector_set(verr, i, err);
}
- return rb_ary_new3(2,
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew),
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, verr));
+ return rb_ary_new3(2,
+ Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew),
+ Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, verr));
} else if (MATRIX_P(xx)) {
Data_Get_Struct(xx, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
merr = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- gsl_cheb_eval_err(p, gsl_matrix_get(m, i, j), &result, &err);
- gsl_matrix_set(mnew, i, j, result);
- gsl_matrix_set(merr, i, j, err);
- }
+ for (j = 0; j < m->size2; j++) {
+ gsl_cheb_eval_err(p, gsl_matrix_get(m, i, j), &result, &err);
+ gsl_matrix_set(mnew, i, j, result);
+ gsl_matrix_set(merr, i, j, err);
+ }
}
return rb_ary_new3(2,
- Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew),
- Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, merr));
+ Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew),
+ Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, merr));
} else {
rb_raise(rb_eTypeError, "wrong argument type");
}
@@ -251,10 +244,6 @@ static VALUE rb_gsl_cheb_eval_n(VALUE obj, VALUE nn, VALUE xx)
size_t n, order, i, j;
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *m = NULL, *mnew = NULL;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- double *ptr1, *ptr2;
-#endif
CHECK_FIXNUM(nn);
order = FIX2INT(nn);
Data_Get_Struct(obj, gsl_cheb_series, p);
@@ -279,6 +268,8 @@ static VALUE rb_gsl_cheb_eval_n(VALUE obj, VALUE nn, VALUE xx)
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *na;
+ double *ptr1, *ptr2;
GetNArray(xx, na);
ptr1 = (double*) na->ptr;
n = na->total;
@@ -292,17 +283,17 @@ static VALUE rb_gsl_cheb_eval_n(VALUE obj, VALUE nn, VALUE xx)
Data_Get_Struct(xx, gsl_vector, v);
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- gsl_vector_set(vnew, i, gsl_cheb_eval_n(p, order, gsl_vector_get(v, i)));
+ gsl_vector_set(vnew, i, gsl_cheb_eval_n(p, order, gsl_vector_get(v, i)));
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
} else if (MATRIX_P(xx)) {
Data_Get_Struct(xx, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- gsl_matrix_set(mnew, i, j,
- gsl_cheb_eval_n(p, order, gsl_matrix_get(m, i, j)));
- }
+ for (j = 0; j < m->size2; j++) {
+ gsl_matrix_set(mnew, i, j,
+ gsl_cheb_eval_n(p, order, gsl_matrix_get(m, i, j)));
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -321,11 +312,7 @@ static VALUE rb_gsl_cheb_eval_n_err(VALUE obj, VALUE nn, VALUE xx)
size_t n, order, i, j;
gsl_vector *v, *vnew, *verr;
gsl_matrix *m, *mnew, *merr;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- double *ptr1, *ptr2, *ptr3;
-#endif
- CHECK_FIXNUM(nn);
+ CHECK_FIXNUM(nn);
order = FIX2INT(nn);
Data_Get_Struct(obj, gsl_cheb_series, p);
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
@@ -353,6 +340,8 @@ static VALUE rb_gsl_cheb_eval_n_err(VALUE obj, VALUE nn, VALUE xx)
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *na;
+ double *ptr1, *ptr2, *ptr3;
GetNArray(xx, na);
ptr1 = (double*) na->ptr;
n = na->total;
@@ -361,9 +350,9 @@ static VALUE rb_gsl_cheb_eval_n_err(VALUE obj, VALUE nn, VALUE xx)
ptr2 = NA_PTR_TYPE(ary,double*);
ptr3 = NA_PTR_TYPE(aerr,double*);
for (i = 0; i < n; i++) {
- gsl_cheb_eval_n_err(p, order, ptr1[i], &result, &err);
- ptr2[i] = result;
- ptr3[i] = err;
+ gsl_cheb_eval_n_err(p, order, ptr1[i], &result, &err);
+ ptr2[i] = result;
+ ptr3[i] = err;
}
return rb_ary_new3(2, ary, aerr);
}
@@ -373,27 +362,27 @@ static VALUE rb_gsl_cheb_eval_n_err(VALUE obj, VALUE nn, VALUE xx)
vnew = gsl_vector_alloc(v->size);
verr = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- gsl_cheb_eval_n_err(p, order, gsl_vector_get(v, i), &result, &err);
- gsl_vector_set(vnew, i, result);
- gsl_vector_set(verr, i, err);
+ gsl_cheb_eval_n_err(p, order, gsl_vector_get(v, i), &result, &err);
+ gsl_vector_set(vnew, i, result);
+ gsl_vector_set(verr, i, err);
}
- return rb_ary_new3(2,
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew),
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, verr));
+ return rb_ary_new3(2,
+ Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew),
+ Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, verr));
} else if (MATRIX_P(xx)) {
Data_Get_Struct(xx, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
merr = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- gsl_cheb_eval_n_err(p, order, gsl_matrix_get(m, i, j), &result, &err);
- gsl_matrix_set(mnew, i, j, result);
- gsl_matrix_set(merr, i, j, err);
- }
+ for (j = 0; j < m->size2; j++) {
+ gsl_cheb_eval_n_err(p, order, gsl_matrix_get(m, i, j), &result, &err);
+ gsl_matrix_set(mnew, i, j, result);
+ gsl_matrix_set(merr, i, j, err);
+ }
}
return rb_ary_new3(2,
- Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew),
- Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, merr));
+ Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew),
+ Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, merr));
} else {
rb_raise(rb_eTypeError, "wrong argument type");
}
@@ -412,20 +401,20 @@ static VALUE rb_gsl_cheb_calc_deriv(int argc, VALUE *argv, VALUE obj)
case T_OBJECT:
switch (argc) {
case 1:
- if (!rb_obj_is_kind_of(argv[0], cgsl_cheb))
- rb_raise(rb_eTypeError, "wrong argument type %s (Cheb expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ if (!rb_obj_is_kind_of(argv[0], cgsl_cheb))
+ rb_raise(rb_eTypeError, "wrong argument type %s (Cheb expected)",
+ rb_class2name(CLASS_OF(argv[0])));
Data_Get_Struct(argv[0], gsl_cheb_series, cs);
deriv = gsl_cheb_alloc(cs->order);
retval = Data_Wrap_Struct(CLASS_OF(argv[0]), 0, gsl_cheb_free, deriv);
break;
case 2:
- if (!rb_obj_is_kind_of(argv[0], cgsl_cheb))
- rb_raise(rb_eTypeError, "argv[0] wrong argument type %s (Cheb expected)",
- rb_class2name(CLASS_OF(argv[0])));
- if (!rb_obj_is_kind_of(argv[1], cgsl_cheb))
- rb_raise(rb_eTypeError, "argv[1] wrong argument type %s (Cheb expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ if (!rb_obj_is_kind_of(argv[0], cgsl_cheb))
+ rb_raise(rb_eTypeError, "argv[0] wrong argument type %s (Cheb expected)",
+ rb_class2name(CLASS_OF(argv[0])));
+ if (!rb_obj_is_kind_of(argv[1], cgsl_cheb))
+ rb_raise(rb_eTypeError, "argv[1] wrong argument type %s (Cheb expected)",
+ rb_class2name(CLASS_OF(argv[1])));
Data_Get_Struct(argv[0], gsl_cheb_series, deriv);
Data_Get_Struct(argv[1], gsl_cheb_series, cs);
retval = argv[0];
@@ -443,9 +432,9 @@ static VALUE rb_gsl_cheb_calc_deriv(int argc, VALUE *argv, VALUE obj)
retval = Data_Wrap_Struct(CLASS_OF(obj), 0, gsl_cheb_free, deriv);
break;
case 1:
- if (!rb_obj_is_kind_of(argv[0], cgsl_cheb))
- rb_raise(rb_eTypeError, "argv[0] wrong argument type %s (Cheb expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ if (!rb_obj_is_kind_of(argv[0], cgsl_cheb))
+ rb_raise(rb_eTypeError, "argv[0] wrong argument type %s (Cheb expected)",
+ rb_class2name(CLASS_OF(argv[0])));
Data_Get_Struct(argv[0], gsl_cheb_series, deriv);
retval = argv[0];
break;
@@ -469,20 +458,20 @@ static VALUE rb_gsl_cheb_calc_integ(int argc, VALUE *argv, VALUE obj)
case T_OBJECT:
switch (argc) {
case 1:
- if (!rb_obj_is_kind_of(argv[0], cgsl_cheb))
- rb_raise(rb_eTypeError, "wrong argument type %s (Cheb expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ if (!rb_obj_is_kind_of(argv[0], cgsl_cheb))
+ rb_raise(rb_eTypeError, "wrong argument type %s (Cheb expected)",
+ rb_class2name(CLASS_OF(argv[0])));
Data_Get_Struct(argv[0], gsl_cheb_series, cs);
deriv = gsl_cheb_alloc(cs->order);
retval = Data_Wrap_Struct(CLASS_OF(argv[0]), 0, gsl_cheb_free, deriv);
break;
case 2:
- if (!rb_obj_is_kind_of(argv[0], cgsl_cheb))
- rb_raise(rb_eTypeError, "argv[0] wrong argument type %s (Cheb expected)",
- rb_class2name(CLASS_OF(argv[0])));
- if (!rb_obj_is_kind_of(argv[1], cgsl_cheb))
- rb_raise(rb_eTypeError, "argv[1] wrong argument type %s (Cheb expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ if (!rb_obj_is_kind_of(argv[0], cgsl_cheb))
+ rb_raise(rb_eTypeError, "argv[0] wrong argument type %s (Cheb expected)",
+ rb_class2name(CLASS_OF(argv[0])));
+ if (!rb_obj_is_kind_of(argv[1], cgsl_cheb))
+ rb_raise(rb_eTypeError, "argv[1] wrong argument type %s (Cheb expected)",
+ rb_class2name(CLASS_OF(argv[1])));
Data_Get_Struct(argv[0], gsl_cheb_series, deriv);
Data_Get_Struct(argv[1], gsl_cheb_series, cs);
retval = argv[0];
@@ -500,9 +489,9 @@ static VALUE rb_gsl_cheb_calc_integ(int argc, VALUE *argv, VALUE obj)
retval = Data_Wrap_Struct(CLASS_OF(obj), 0, gsl_cheb_free, deriv);
break;
case 1:
- if (!rb_obj_is_kind_of(argv[0], cgsl_cheb))
- rb_raise(rb_eTypeError, "argv[0] wrong argument type %s (Cheb expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ if (!rb_obj_is_kind_of(argv[0], cgsl_cheb))
+ rb_raise(rb_eTypeError, "argv[0] wrong argument type %s (Cheb expected)",
+ rb_class2name(CLASS_OF(argv[0])));
Data_Get_Struct(argv[0], gsl_cheb_series, deriv);
retval = argv[0];
break;
diff --git a/ext/gsl/combination.c b/ext/gsl_native/combination.c
similarity index 95%
rename from ext/gsl/combination.c
rename to ext/gsl_native/combination.c
index b95d781..c3b939c 100644
--- a/ext/gsl/combination.c
+++ b/ext/gsl_native/combination.c
@@ -9,7 +9,6 @@
WITHOUT ANY WARRANTY.
*/
-#ifdef GSL_1_1_LATER
#include "include/rb_gsl_common.h"
#include "include/rb_gsl_array.h"
@@ -18,7 +17,7 @@ static VALUE cgsl_combination_data;
static VALUE rb_gsl_combination_new(VALUE klass, VALUE n, VALUE k)
{
gsl_combination *c = NULL;
- CHECK_FIXNUM(n);CHECK_FIXNUM(k);
+ CHECK_FIXNUM(n); CHECK_FIXNUM(k);
c = gsl_combination_alloc(FIX2INT(n), FIX2INT(k));
return Data_Wrap_Struct(klass, 0, gsl_combination_free, c);
}
@@ -26,7 +25,7 @@ static VALUE rb_gsl_combination_new(VALUE klass, VALUE n, VALUE k)
static VALUE rb_gsl_combination_calloc(VALUE klass, VALUE n, VALUE k)
{
gsl_combination *c = NULL;
- CHECK_FIXNUM(n);CHECK_FIXNUM(k);
+ CHECK_FIXNUM(n); CHECK_FIXNUM(k);
c = gsl_combination_calloc(FIX2INT(n), FIX2INT(k));
return Data_Wrap_Struct(klass, 0, gsl_combination_free, c);
}
@@ -47,18 +46,16 @@ static VALUE rb_gsl_combination_init_last(VALUE obj)
return obj;
}
-#ifdef GSL_1_4_LATER
/* singleton */
static VALUE rb_gsl_combination_memcpy(VALUE klass, VALUE dst, VALUE src)
{
gsl_combination *c, *c2;
if (!rb_obj_is_kind_of(dst, klass))
rb_raise(rb_eTypeError, "wrong argument type %s (Combination expected)",
- rb_class2name(CLASS_OF(dst)));
+ rb_class2name(CLASS_OF(dst)));
if (!rb_obj_is_kind_of(src, klass))
rb_raise(rb_eTypeError, "wrong argument type %s (Combination expected)",
- rb_class2name(CLASS_OF(src)));
-
+ rb_class2name(CLASS_OF(src)));
Data_Get_Struct(dst, gsl_combination, c2);
Data_Get_Struct(src, gsl_combination, c);
gsl_combination_memcpy(c2, c);
@@ -73,7 +70,6 @@ static VALUE rb_gsl_combination_clone(VALUE obj)
gsl_combination_memcpy(c2, c);
return Data_Wrap_Struct(CLASS_OF(obj), 0, gsl_combination_free, c2);
}
-#endif
static VALUE rb_gsl_combination_get(VALUE obj, VALUE ii)
{
@@ -182,9 +178,8 @@ static VALUE rb_gsl_combination_fprintf(int argc, VALUE *argv, VALUE obj)
FILE *fp = NULL;
int status, flag = 0;
- if (argc != 1 && argc != 2) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for 1 or 2)", argc);
-
+ if (argc != 1 && argc != 2) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for 1 or 2)", argc);
Data_Get_Struct(obj, gsl_combination, h);
fp = rb_gsl_open_writefile(argv[0], &flag);
switch (argc) {
@@ -246,17 +241,15 @@ void Init_gsl_combination(VALUE module)
{
VALUE cgsl_combination;
cgsl_combination = rb_define_class_under(module, "Combination", cGSL_Object);
- cgsl_combination_data = rb_define_class_under(cgsl_combination, "Data",
- cgsl_permutation);
+ cgsl_combination_data = rb_define_class_under(cgsl_combination, "Data",
+ cgsl_permutation);
rb_define_singleton_method(cgsl_combination, "new", rb_gsl_combination_new, 2);
rb_define_singleton_method(cgsl_combination, "alloc", rb_gsl_combination_new, 2);
rb_define_singleton_method(cgsl_combination, "calloc", rb_gsl_combination_calloc, 2);
rb_define_method(cgsl_combination, "init_first", rb_gsl_combination_init_first, 0);
rb_define_method(cgsl_combination, "init_last", rb_gsl_combination_init_last, 0);
-#ifdef GSL_1_4_LATER
rb_define_singleton_method(cgsl_combination, "memcpy", rb_gsl_combination_memcpy, 2);
rb_define_method(cgsl_combination, "clone", rb_gsl_combination_clone, 0);
-#endif
rb_define_method(cgsl_combination, "get", rb_gsl_combination_get, 1);
rb_define_alias(cgsl_combination, "[]", "get");
rb_define_method(cgsl_combination, "set", rb_gsl_combination_set, 2);
@@ -279,4 +272,4 @@ void Init_gsl_combination(VALUE module)
rb_define_method(cgsl_combination, "equal?", rb_gsl_combination_equal, 1);
rb_define_alias(cgsl_combination, "==", "equal?");
}
-#endif
+
diff --git a/ext/gsl/common.c b/ext/gsl_native/common.c
similarity index 91%
rename from ext/gsl/common.c
rename to ext/gsl_native/common.c
index 572552c..5eea645 100644
--- a/ext/gsl/common.c
+++ b/ext/gsl_native/common.c
@@ -16,11 +16,7 @@
FILE* rb_gsl_open_writefile(VALUE io, int *flag)
{
-#ifdef HAVE_RUBY_IO_H
rb_io_t *fptr = NULL;
-#else
- OpenFile *fptr = NULL;
-#endif
FILE *fp = NULL;
char *name;
switch (TYPE(io)) {
@@ -31,19 +27,8 @@ FILE* rb_gsl_open_writefile(VALUE io, int *flag)
break;
case T_FILE:
GetOpenFile(io, fptr);
- /*
-#ifdef HAVE_RUBY_IO_H
- name = STR2CSTR(fptr->pathv);
-#else
- name = fptr->path;
-#endif
- */
rb_io_check_writable(fptr);
-#ifdef HAVE_RUBY_IO_H
fp = rb_io_stdio_file(fptr);
-#else
- fp = GetWriteFile(fptr);
-#endif
*flag = 0;
break;
default:
@@ -57,11 +42,7 @@ FILE* rb_gsl_open_writefile(VALUE io, int *flag)
FILE* rb_gsl_open_readfile(VALUE io, int *flag)
{
-#ifdef HAVE_RUBY_IO_H
rb_io_t *fptr = NULL;
-#else
- OpenFile *fptr = NULL;
-#endif
FILE *fp = NULL;
char *name;
switch (TYPE(io)) {
@@ -72,19 +53,8 @@ FILE* rb_gsl_open_readfile(VALUE io, int *flag)
break;
case T_FILE:
GetOpenFile(io, fptr);
- /*
-#ifdef HAVE_RUBY_IO_H
- name = STR2CSTR(fptr->pathv);
-#else
- name = fptr->path;
-#endif
- */
rb_io_check_readable(fptr);
-#ifdef HAVE_RUBY_IO_H
fp = rb_io_stdio_file(fptr);
-#else
- fp = fptr->f;
-#endif
*flag = 0;
break;
default:
@@ -136,8 +106,8 @@ size_t count_columns(const char *str)
flag = 1;
} else {
if (flag == 1) {
- flag = 0;
- n++;
+ flag = 0;
+ n++;
}
}
p++;
@@ -156,9 +126,9 @@ char* str_scan_double(const char *str, double *val)
do {
if (isspace(*p)) {
if (flag == 0) {
- /* do nothing */
+ /* do nothing */
} else {
- break;
+ break;
}
} else {
*q++ = *p;
@@ -192,9 +162,9 @@ char* str_scan_int(const char *str, int *val)
do {
if (isspace(*p)) {
if (flag == 0) {
- /* do nothing */
+ /* do nothing */
} else {
- break;
+ break;
}
} else {
*q++ = *p;
@@ -255,7 +225,7 @@ gsl_complex ary2complex(VALUE obj)
c = *z;
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Array or Complex expected)",
- rb_class2name(CLASS_OF(obj)));
+ rb_class2name(CLASS_OF(obj)));
}
break;
}
diff --git a/ext/gsl/complex.c b/ext/gsl_native/complex.c
similarity index 84%
rename from ext/gsl/complex.c
rename to ext/gsl_native/complex.c
index 6e78567..40b1ac5 100644
--- a/ext/gsl/complex.c
+++ b/ext/gsl_native/complex.c
@@ -31,11 +31,9 @@ gsl_complex rb_gsl_obj_to_gsl_complex(VALUE obj, gsl_complex *z)
z = &tmp;
GSL_SET_COMPLEX(z, 0.0, 0.0);
}
-
if(obj == Qnil) {
return *z;
}
-
switch(TYPE(obj)) {
case T_ARRAY:
vre = rb_ary_entry(obj,0);
@@ -54,8 +52,8 @@ gsl_complex rb_gsl_obj_to_gsl_complex(VALUE obj, gsl_complex *z)
*z = *zz;
} else {
rb_raise(rb_eTypeError,
- "wrong type %s, (nil, Array, Float, Integer, or GSL::Complex expected)",
- rb_class2name(CLASS_OF(obj)));
+ "wrong type %s, (nil, Array, Float, Integer, or GSL::Complex expected)",
+ rb_class2name(CLASS_OF(obj)));
}
break;
}
@@ -66,7 +64,7 @@ static VALUE rb_gsl_complex_new(int argc, VALUE *argv, VALUE klass)
{
gsl_complex *c = NULL;
VALUE obj;
- obj = Data_Make_Struct(klass, gsl_complex, 0, free, c);
+ obj = Data_Make_Struct(klass, gsl_complex, 0, free, c);
switch (argc) {
case 1:
switch (TYPE(argv[0])) {
@@ -80,8 +78,8 @@ static VALUE rb_gsl_complex_new(int argc, VALUE *argv, VALUE klass)
*c = gsl_complex_rect(NUM2DBL(argv[0]), 0.0);
break;
default:
- rb_raise(rb_eTypeError, "wrong argument type %s",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_raise(rb_eTypeError, "wrong argument type %s",
+ rb_class2name(CLASS_OF(argv[0])));
}
break;
case 2:
@@ -107,7 +105,7 @@ static VALUE rb_gsl_complex_polar(VALUE klass, VALUE r, VALUE theta)
VALUE obj;
gsl_complex *c = NULL;
Need_Float(r); Need_Float(theta);
- obj = Data_Make_Struct(klass, gsl_complex, 0, free, c);
+ obj = Data_Make_Struct(klass, gsl_complex, 0, free, c);
*c = gsl_complex_polar(NUM2DBL(r), NUM2DBL(theta));
return obj;
}
@@ -121,10 +119,10 @@ static VALUE rb_gsl_complex_get(VALUE obj, VALUE ii)
i = FIX2INT(ii);
switch (i) {
case 0:
- return rb_float_new(GSL_REAL(*c));
+ return rb_float_new(GSL_REAL(*c));
break;
case 1:
- return rb_float_new(GSL_IMAG(*c));
+ return rb_float_new(GSL_IMAG(*c));
break;
default:
rb_raise(rb_eArgError, "wrong argument (%d for 0 or 1)", i);
@@ -137,14 +135,14 @@ static VALUE rb_gsl_complex_real(VALUE obj)
{
gsl_complex *c = NULL;
Data_Get_Struct(obj, gsl_complex, c);
- return rb_float_new(GSL_REAL(*c));
+ return rb_float_new(GSL_REAL(*c));
}
static VALUE rb_gsl_complex_imag(VALUE obj)
{
gsl_complex *c = NULL;
Data_Get_Struct(obj, gsl_complex, c);
- return rb_float_new(GSL_IMAG(*c));
+ return rb_float_new(GSL_IMAG(*c));
}
static VALUE rb_gsl_complex_print(VALUE obj)
@@ -172,7 +170,7 @@ static VALUE rb_gsl_complex_return_double(double (*func)(gsl_complex), VALUE obj
{
gsl_complex *c = NULL;
Data_Get_Struct(obj, gsl_complex, c);
- return rb_float_new((*func)(*c));
+ return rb_float_new((*func)(*c));
}
static VALUE rb_gsl_complex_arg(VALUE obj)
@@ -196,10 +194,10 @@ static VALUE rb_gsl_complex_logabs(VALUE obj)
}
static VALUE rb_gsl_complex_arithmetics2(gsl_complex (*func)(gsl_complex, double),
- VALUE obj, VALUE xx);
+ VALUE obj, VALUE xx);
static VALUE rb_gsl_complex_arithmetics2(gsl_complex (*func)(gsl_complex, double),
- VALUE obj, VALUE xx)
+ VALUE obj, VALUE xx)
{
gsl_complex *a = NULL, *c = NULL, tmp;
VALUE obj2;
@@ -208,7 +206,7 @@ static VALUE rb_gsl_complex_arithmetics2(gsl_complex (*func)(gsl_complex, double
Data_Get_Struct(obj, gsl_complex, a);
x = NUM2DBL(xx);
tmp = (*func)(*a, x);
- obj2 = Data_Make_Struct(cgsl_complex, gsl_complex, 0, free, c);
+ obj2 = Data_Make_Struct(cgsl_complex, gsl_complex, 0, free, c);
*c = tmp;
return obj2;
}
@@ -262,7 +260,7 @@ static VALUE rb_gsl_complex_operate(gsl_complex (*func)(gsl_complex), VALUE obj)
Data_Get_Struct(obj, gsl_complex, c);
cnew = ALLOC(gsl_complex);
*cnew = (*func)(*c);
- return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
}
static VALUE rb_gsl_complex_operate2(gsl_complex (*func)(gsl_complex), int argc, VALUE *argv, VALUE obj)
@@ -279,33 +277,33 @@ static VALUE rb_gsl_complex_operate2(gsl_complex (*func)(gsl_complex), int argc,
case 1:
switch (TYPE(argv[0])) {
case T_ARRAY:
- tmp = ary2complex(argv[0]);
- c = &tmp;
- break;
+ tmp = ary2complex(argv[0]);
+ c = &tmp;
+ break;
default:
- if (VECTOR_COMPLEX_P(argv[0])) {
- Data_Get_Struct(argv[0], gsl_vector_complex, v);
- vnew = gsl_vector_complex_alloc(v->size);
- for (i = 0; i < v->size; i++) {
- c = GSL_COMPLEX_AT(v, i);
- gsl_vector_complex_set(vnew, i, (*func)(*c));
- }
- return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_free, vnew);
- } else if (MATRIX_COMPLEX_P(obj)) {
- Data_Get_Struct(obj, gsl_matrix_complex, m);
- mnew = gsl_matrix_complex_alloc(m->size1, m->size2);
- for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- gsl_matrix_complex_set(mnew, i, j,
- (*func)(gsl_matrix_complex_get(m, i, j)));
- }
- }
- return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, mnew);
- } else {
- CHECK_COMPLEX(argv[0]);
- Data_Get_Struct(argv[0], gsl_complex, c);
- }
- break;
+ if (VECTOR_COMPLEX_P(argv[0])) {
+ Data_Get_Struct(argv[0], gsl_vector_complex, v);
+ vnew = gsl_vector_complex_alloc(v->size);
+ for (i = 0; i < v->size; i++) {
+ c = GSL_COMPLEX_AT(v, i);
+ gsl_vector_complex_set(vnew, i, (*func)(*c));
+ }
+ return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_free, vnew);
+ } else if (MATRIX_COMPLEX_P(obj)) {
+ Data_Get_Struct(obj, gsl_matrix_complex, m);
+ mnew = gsl_matrix_complex_alloc(m->size1, m->size2);
+ for (i = 0; i < m->size1; i++) {
+ for (j = 0; j < m->size2; j++) {
+ gsl_matrix_complex_set(mnew, i, j,
+ (*func)(gsl_matrix_complex_get(m, i, j)));
+ }
+ }
+ return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, mnew);
+ } else {
+ CHECK_COMPLEX(argv[0]);
+ Data_Get_Struct(argv[0], gsl_complex, c);
+ }
+ break;
}
break;
case 2:
@@ -324,7 +322,7 @@ static VALUE rb_gsl_complex_operate2(gsl_complex (*func)(gsl_complex), int argc,
}
cnew = ALLOC(gsl_complex);
*cnew = (*func)(*c);
- return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
}
static VALUE rb_gsl_complex_conjugate(VALUE obj)
@@ -350,7 +348,7 @@ static VALUE rb_gsl_complex_sqrt_real(VALUE obj, VALUE x)
tmp = gsl_complex_sqrt_real(NUM2DBL(x));
cnew = ALLOC(gsl_complex);
*cnew = tmp;
- return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
}
static VALUE rb_gsl_complex_sqrt(int argc, VALUE *argv, VALUE obj)
@@ -362,22 +360,22 @@ static VALUE rb_gsl_complex_sqrt(int argc, VALUE *argv, VALUE obj)
case 1:
switch (TYPE(argv[0])) {
case T_FIXNUM: case T_FLOAT:
- return rb_gsl_complex_sqrt_real(obj, argv[0]);
- break;
+ return rb_gsl_complex_sqrt_real(obj, argv[0]);
+ break;
case T_ARRAY:
- tmp = ary2complex(argv[0]);
- z = ALLOC(gsl_complex);
- *z = gsl_complex_sqrt(tmp);
- return Data_Wrap_Struct(cgsl_complex, 0, free, z);
- break;
+ tmp = ary2complex(argv[0]);
+ z = ALLOC(gsl_complex);
+ *z = gsl_complex_sqrt(tmp);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, z);
+ break;
default:
- CHECK_COMPLEX(argv[0]);
- Data_Get_Struct(argv[0], gsl_complex, z);
- tmp = *z;
- z = ALLOC(gsl_complex);
- *z = gsl_complex_sqrt(tmp);
- return Data_Wrap_Struct(cgsl_complex, 0, free, z);
- break;
+ CHECK_COMPLEX(argv[0]);
+ Data_Get_Struct(argv[0], gsl_complex, z);
+ tmp = *z;
+ z = ALLOC(gsl_complex);
+ *z = gsl_complex_sqrt(tmp);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, z);
+ break;
}
break;
case 2:
@@ -385,7 +383,7 @@ static VALUE rb_gsl_complex_sqrt(int argc, VALUE *argv, VALUE obj)
GSL_SET_REAL(&tmp, NUM2DBL(argv[0]));
GSL_SET_IMAG(&tmp, NUM2DBL(argv[1]));
*z = gsl_complex_sqrt(tmp);
- return Data_Wrap_Struct(cgsl_complex, 0, free, z);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, z);
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 2)", argc);
@@ -408,14 +406,14 @@ VALUE rb_gsl_complex_pow(int argc, VALUE *argv, VALUE obj)
case T_MODULE:
case T_CLASS:
case T_OBJECT:
- if (argc != 2)
+ if (argc != 2)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
switch (TYPE(argv[1])) {
case T_ARRAY:
tmpa = ary2complex(argv[1]);
a = &tmpa;
break;
- case T_FLOAT: case T_FIXNUM:
+ case T_FLOAT: case T_FIXNUM:
return rb_gsl_complex_pow_real(argc, argv, obj);
break;
default:
@@ -431,24 +429,24 @@ VALUE rb_gsl_complex_pow(int argc, VALUE *argv, VALUE obj)
break;
default:
if (VECTOR_COMPLEX_P(argv[0])) {
- Data_Get_Struct(argv[0], gsl_vector_complex, v);
- vnew = gsl_vector_complex_alloc(v->size);
- for (i = 0; i < v->size; i++) {
- c = GSL_COMPLEX_AT(v, i);
- gsl_vector_complex_set(vnew, i, gsl_complex_pow(*c, *a));
- }
- return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vnew);
+ Data_Get_Struct(argv[0], gsl_vector_complex, v);
+ vnew = gsl_vector_complex_alloc(v->size);
+ for (i = 0; i < v->size; i++) {
+ c = GSL_COMPLEX_AT(v, i);
+ gsl_vector_complex_set(vnew, i, gsl_complex_pow(*c, *a));
+ }
+ return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vnew);
}
if (MATRIX_COMPLEX_P(argv[0])) {
- Data_Get_Struct(argv[0], gsl_matrix_complex, m);
- mnew = gsl_matrix_complex_alloc(m->size1, m->size2);
- for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- c = gsl_matrix_complex_ptr(m, i, j);
- gsl_matrix_complex_set(mnew, i, j, gsl_complex_pow(*c, *a));
- }
- }
- return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, mnew);
+ Data_Get_Struct(argv[0], gsl_matrix_complex, m);
+ mnew = gsl_matrix_complex_alloc(m->size1, m->size2);
+ for (i = 0; i < m->size1; i++) {
+ for (j = 0; j < m->size2; j++) {
+ c = gsl_matrix_complex_ptr(m, i, j);
+ gsl_matrix_complex_set(mnew, i, j, gsl_complex_pow(*c, *a));
+ }
+ }
+ return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, mnew);
}
CHECK_COMPLEX(argv[0]);
Data_Get_Struct(argv[0], gsl_complex, c);
@@ -457,7 +455,7 @@ VALUE rb_gsl_complex_pow(int argc, VALUE *argv, VALUE obj)
break;
default:
- if (argc != 1)
+ if (argc != 1)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
CHECK_COMPLEX(obj);
Data_Get_Struct(obj, gsl_complex, c);
@@ -466,7 +464,7 @@ VALUE rb_gsl_complex_pow(int argc, VALUE *argv, VALUE obj)
tmpa = ary2complex(argv[0]);
a = &tmpa;
break;
- case T_FLOAT: case T_FIXNUM:
+ case T_FLOAT: case T_FIXNUM:
return rb_gsl_complex_pow_real(argc, argv, obj);
break;
default:
@@ -478,7 +476,7 @@ VALUE rb_gsl_complex_pow(int argc, VALUE *argv, VALUE obj)
}
cnew = ALLOC(gsl_complex);
*cnew = gsl_complex_pow(*c, *a);
- return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
}
VALUE rb_gsl_complex_pow_real(int argc, VALUE *argv, VALUE obj)
@@ -492,7 +490,7 @@ VALUE rb_gsl_complex_pow_real(int argc, VALUE *argv, VALUE obj)
case T_MODULE:
case T_CLASS:
case T_OBJECT:
- if (argc != 2)
+ if (argc != 2)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
switch (TYPE(argv[0])) {
case T_ARRAY:
@@ -502,26 +500,26 @@ VALUE rb_gsl_complex_pow_real(int argc, VALUE *argv, VALUE obj)
break;
default:
if (VECTOR_COMPLEX_P(argv[0])) {
- Data_Get_Struct(argv[0], gsl_vector_complex, v);
- vnew = gsl_vector_complex_alloc(v->size);
- a = NUM2DBL(argv[1]);
- for (i = 0; i < v->size; i++) {
- c = GSL_COMPLEX_AT(v, i);
- tmpc = gsl_complex_pow_real(*c, a);
- gsl_vector_complex_set(vnew, i, tmpc);
- }
- return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_free, vnew);
+ Data_Get_Struct(argv[0], gsl_vector_complex, v);
+ vnew = gsl_vector_complex_alloc(v->size);
+ a = NUM2DBL(argv[1]);
+ for (i = 0; i < v->size; i++) {
+ c = GSL_COMPLEX_AT(v, i);
+ tmpc = gsl_complex_pow_real(*c, a);
+ gsl_vector_complex_set(vnew, i, tmpc);
+ }
+ return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_free, vnew);
}
if (MATRIX_COMPLEX_P(argv[0])) {
- Data_Get_Struct(argv[0], gsl_matrix_complex, m);
- mnew = gsl_matrix_complex_alloc(m->size1, m->size2);
- for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- tmpc = gsl_complex_pow_real(gsl_matrix_complex_get(m, i, j), a);
- gsl_matrix_complex_set(mnew, i, j, tmpc);
- }
- }
- return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, mnew);
+ Data_Get_Struct(argv[0], gsl_matrix_complex, m);
+ mnew = gsl_matrix_complex_alloc(m->size1, m->size2);
+ for (i = 0; i < m->size1; i++) {
+ for (j = 0; j < m->size2; j++) {
+ tmpc = gsl_complex_pow_real(gsl_matrix_complex_get(m, i, j), a);
+ gsl_matrix_complex_set(mnew, i, j, tmpc);
+ }
+ }
+ return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, mnew);
}
CHECK_COMPLEX(argv[0]);
Data_Get_Struct(argv[0], gsl_complex, c);
@@ -531,7 +529,7 @@ VALUE rb_gsl_complex_pow_real(int argc, VALUE *argv, VALUE obj)
a = NUM2DBL(argv[1]);
break;
default:
- if (argc != 1)
+ if (argc != 1)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
CHECK_COMPLEX(obj);
Need_Float(argv[0]);
@@ -541,7 +539,7 @@ VALUE rb_gsl_complex_pow_real(int argc, VALUE *argv, VALUE obj)
}
cnew = ALLOC(gsl_complex);
*cnew = gsl_complex_pow_real(*c, a);
- return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
}
static VALUE rb_gsl_complex_exp(int argc, VALUE *argv, VALUE obj)
@@ -566,7 +564,7 @@ static VALUE rb_gsl_complex_log_b(int argc, VALUE *argv, VALUE obj)
case T_MODULE:
case T_CLASS:
case T_OBJECT:
- if (argc != 2)
+ if (argc != 2)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
switch (TYPE(argv[1])) {
case T_ARRAY:
@@ -592,7 +590,7 @@ static VALUE rb_gsl_complex_log_b(int argc, VALUE *argv, VALUE obj)
break;
default:
- if (argc != 1)
+ if (argc != 1)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
CHECK_COMPLEX(obj);
Data_Get_Struct(obj, gsl_complex, c);
@@ -610,7 +608,7 @@ static VALUE rb_gsl_complex_log_b(int argc, VALUE *argv, VALUE obj)
}
cnew = ALLOC(gsl_complex);
*cnew = gsl_complex_log_b(*c, *a);
- return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
}
static VALUE rb_gsl_complex_sin(int argc, VALUE *argv, VALUE obj)
@@ -658,7 +656,7 @@ static VALUE rb_gsl_complex_arcsin_real(VALUE obj, VALUE xx)
tmp = gsl_complex_arcsin_real(x);
cnew = ALLOC(gsl_complex);
*cnew = tmp;
- return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
}
static VALUE rb_gsl_complex_arccos(int argc, VALUE *argv, VALUE obj)
@@ -675,7 +673,7 @@ static VALUE rb_gsl_complex_arccos_real(VALUE obj, VALUE xx)
tmp = gsl_complex_arccos_real(x);
cnew = ALLOC(gsl_complex);
*cnew = tmp;
- return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
}
static VALUE rb_gsl_complex_arctan(int argc, VALUE *argv, VALUE obj)
@@ -697,7 +695,7 @@ static VALUE rb_gsl_complex_arcsec_real(VALUE obj, VALUE xx)
tmp = gsl_complex_arcsec_real(x);
cnew = ALLOC(gsl_complex);
*cnew = tmp;
- return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
}
static VALUE rb_gsl_complex_arccsc(int argc, VALUE *argv, VALUE obj)
@@ -714,7 +712,7 @@ static VALUE rb_gsl_complex_arccsc_real(VALUE obj, VALUE xx)
tmp = gsl_complex_arccsc_real(x);
cnew = ALLOC(gsl_complex);
*cnew = tmp;
- return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
}
static VALUE rb_gsl_complex_arccot(int argc, VALUE *argv, VALUE obj)
@@ -766,7 +764,7 @@ static VALUE rb_gsl_complex_arccosh_real(VALUE obj, VALUE xx)
tmp = gsl_complex_arccosh_real(x);
cnew = ALLOC(gsl_complex);
*cnew = tmp;
- return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
}
static VALUE rb_gsl_complex_arccosh(int argc, VALUE *argv, VALUE obj)
@@ -788,7 +786,7 @@ static VALUE rb_gsl_complex_arctanh_real(VALUE obj, VALUE xx)
tmp = gsl_complex_arctanh_real(x);
cnew = ALLOC(gsl_complex);
*cnew = tmp;
- return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
+ return Data_Wrap_Struct(cgsl_complex, 0, free, cnew);
}
static VALUE rb_gsl_complex_arcsech(int argc, VALUE *argv, VALUE obj)
@@ -807,10 +805,10 @@ static VALUE rb_gsl_complex_arccoth(int argc, VALUE *argv, VALUE obj)
}
int rbgsl_complex_equal(const gsl_complex *z1, const gsl_complex *z2,
- double eps)
+ double eps)
{
if (gsl_fcmp(z1->dat[0], z2->dat[0], eps) != 0) return 0;
- if (gsl_fcmp(z1->dat[1], z2->dat[1], eps) != 0) return 0;
+ if (gsl_fcmp(z1->dat[1], z2->dat[1], eps) != 0) return 0;
return 1;
}
@@ -825,11 +823,11 @@ static VALUE rb_gsl_complex_equal(int argc, VALUE *argv, VALUE obj)
{
gsl_complex *z1 = NULL, *z2 = NULL;
double eps = 1e-8;
-
+
switch (argc) {
case 1:
CHECK_COMPLEX(argv[0]);
- Data_Get_Struct(argv[0], gsl_complex, z2);
+ Data_Get_Struct(argv[0], gsl_complex, z2);
break;
case 2:
CHECK_COMPLEX(argv[0]);
diff --git a/ext/gsl_native/const.c b/ext/gsl_native/const.c
new file mode 100644
index 0000000..6dd67d3
--- /dev/null
+++ b/ext/gsl_native/const.c
@@ -0,0 +1,331 @@
+/*
+ const.c
+ Ruby/GSL: Ruby extension library for GSL (GNU Scientific Library)
+ (C) Copyright 2001-2006 by Yoshiki Tsunesada
+
+ Ruby/GSL is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License.
+ This library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY.
+*/
+
+#include "include/rb_gsl_const.h"
+
+static void rb_gsl_const_mks(VALUE module);
+static void rb_gsl_const_cgs(VALUE module);
+static void rb_gsl_const_num(VALUE module);
+void Init_gsl_const_additional(VALUE mmks, VALUE mcgs, VALUE mnum);
+
+static void rb_gsl_const_mks(VALUE module)
+{
+ rb_define_const(module, "SPEED_OF_LIGHT",
+ rb_float_new(GSL_CONST_MKSA_SPEED_OF_LIGHT));
+ rb_define_const(module, "GRAVITATIONAL_CONSTANT",
+ rb_float_new(GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT));
+ rb_define_const(module, "PLANCKS_CONSTANT_H",
+ rb_float_new(GSL_CONST_MKSA_PLANCKS_CONSTANT_H));
+ rb_define_const(module, "PLANCKS_CONSTANT_HBAR",
+ rb_float_new(GSL_CONST_MKSA_PLANCKS_CONSTANT_HBAR));
+ rb_define_const(module, "VACUUM_PERMEABILITY",
+ rb_float_new(GSL_CONST_MKSA_VACUUM_PERMEABILITY));
+ rb_define_const(module, "VACUUM_PERMITTIVITY",
+ rb_float_new(GSL_CONST_MKSA_VACUUM_PERMITTIVITY));
+ rb_define_const(module, "ASTRONOMICAL_UNIT",
+ rb_float_new(GSL_CONST_MKSA_ASTRONOMICAL_UNIT));
+ rb_define_const(module, "LIGHT_YEAR", rb_float_new(GSL_CONST_MKSA_LIGHT_YEAR));
+ rb_define_const(module, "PARSEC", rb_float_new(GSL_CONST_MKSA_PARSEC));
+ rb_define_const(module, "GRAV_ACCEL", rb_float_new(GSL_CONST_MKSA_GRAV_ACCEL));
+ rb_define_const(module, "ELECTRON_VOLT",
+ rb_float_new(GSL_CONST_MKSA_ELECTRON_VOLT));
+ rb_define_const(module, "MASS_ELECTRON",
+ rb_float_new(GSL_CONST_MKSA_MASS_ELECTRON));
+ rb_define_const(module, "MASS_MUON", rb_float_new(GSL_CONST_MKSA_MASS_MUON));
+ rb_define_const(module, "MASS_PROTON", rb_float_new(GSL_CONST_MKSA_MASS_PROTON));
+ rb_define_const(module, "MASS_NEUTRON", rb_float_new(GSL_CONST_MKSA_MASS_NEUTRON));
+ rb_define_const(module, "RYDBERG", rb_float_new(GSL_CONST_MKSA_RYDBERG));
+ rb_define_const(module, "BOHR_MAGNETON",
+ rb_float_new(GSL_CONST_MKSA_BOHR_MAGNETON));
+ rb_define_const(module, "NUCLEAR_MAGNETON",
+ rb_float_new(GSL_CONST_MKSA_NUCLEAR_MAGNETON));
+ rb_define_const(module, "ELECTRON_MAGNETIC_MOMENT",
+ rb_float_new(GSL_CONST_MKSA_ELECTRON_MAGNETIC_MOMENT));
+ rb_define_const(module, "PROTON_MAGNETIC_MOMENT",
+ rb_float_new(GSL_CONST_MKSA_PROTON_MAGNETIC_MOMENT));
+ rb_define_const(module, "STANDARD_GAS_VOLUME",
+ rb_float_new(GSL_CONST_MKSA_STANDARD_GAS_VOLUME));
+
+ rb_define_const(module, "MINUTE", rb_float_new(GSL_CONST_MKSA_MINUTE));
+ rb_define_const(module, "HOUR", rb_float_new(GSL_CONST_MKSA_HOUR));
+ rb_define_const(module, "DAY", rb_float_new(GSL_CONST_MKSA_DAY));
+ rb_define_const(module, "WEEK", rb_float_new(GSL_CONST_MKSA_WEEK));
+ rb_define_const(module, "INCH", rb_float_new(GSL_CONST_MKSA_INCH));
+ rb_define_const(module, "FOOT", rb_float_new(GSL_CONST_MKSA_FOOT));
+ rb_define_const(module, "YARD", rb_float_new(GSL_CONST_MKSA_YARD));
+ rb_define_const(module, "MILE", rb_float_new(GSL_CONST_MKSA_MILE));
+ rb_define_const(module, "NAUTICAL_MILE",
+ rb_float_new(GSL_CONST_MKSA_NAUTICAL_MILE));
+ rb_define_const(module, "FATHOM", rb_float_new(GSL_CONST_MKSA_FATHOM));
+ rb_define_const(module, "MIL", rb_float_new(GSL_CONST_MKSA_MIL));
+ rb_define_const(module, "POINT", rb_float_new(GSL_CONST_MKSA_POINT));
+ rb_define_const(module, "TEXPOINT", rb_float_new(GSL_CONST_MKSA_TEXPOINT));
+ rb_define_const(module, "MICRON", rb_float_new(GSL_CONST_MKSA_MICRON));
+ rb_define_const(module, "ANGSTROM", rb_float_new(GSL_CONST_MKSA_ANGSTROM));
+ rb_define_const(module, "HECTARE", rb_float_new(GSL_CONST_MKSA_HECTARE));
+ rb_define_const(module, "ACRE", rb_float_new(GSL_CONST_MKSA_ACRE));
+ rb_define_const(module, "BARN", rb_float_new(GSL_CONST_MKSA_BARN));
+ rb_define_const(module, "LITER", rb_float_new(GSL_CONST_MKSA_LITER));
+ rb_define_const(module, "US_GALLON", rb_float_new(GSL_CONST_MKSA_US_GALLON));
+ rb_define_const(module, "QUART", rb_float_new(GSL_CONST_MKSA_QUART));
+ rb_define_const(module, "PINT", rb_float_new(GSL_CONST_MKSA_PINT));
+ rb_define_const(module, "CUP", rb_float_new(GSL_CONST_MKSA_CUP));
+ rb_define_const(module, "FLUID_OUNCE", rb_float_new(GSL_CONST_MKSA_FLUID_OUNCE));
+ rb_define_const(module, "TABLESPOON", rb_float_new(GSL_CONST_MKSA_TABLESPOON));
+ rb_define_const(module, "CANADIAN_GALLON",
+ rb_float_new(GSL_CONST_MKSA_CANADIAN_GALLON));
+
+ rb_define_const(module, "UK_GALLON", rb_float_new(GSL_CONST_MKSA_UK_GALLON));
+ rb_define_const(module, "KILOMETERS_PER_HOUR",
+ rb_float_new(GSL_CONST_MKSA_MILES_PER_HOUR));
+ rb_define_const(module, "MILES_PER_HOUR",
+ rb_float_new(GSL_CONST_MKSA_KILOMETERS_PER_HOUR));
+ rb_define_const(module, "KNOT", rb_float_new(GSL_CONST_MKSA_KNOT));
+ rb_define_const(module, "POUND_MASS", rb_float_new(GSL_CONST_MKSA_POUND_MASS));
+ rb_define_const(module, "POUND_OUNCE", rb_float_new(GSL_CONST_MKSA_OUNCE_MASS));
+ rb_define_const(module, "POUND_TON", rb_float_new(GSL_CONST_MKSA_TON));
+ rb_define_const(module, "POUND_METRIC_TON",
+ rb_float_new(GSL_CONST_MKSA_METRIC_TON));
+ rb_define_const(module, "POUND_UK_TON", rb_float_new(GSL_CONST_MKSA_UK_TON));
+ rb_define_const(module, "POUND_TROY_OUNCE",
+ rb_float_new(GSL_CONST_MKSA_TROY_OUNCE));
+ rb_define_const(module, "CARAT", rb_float_new(GSL_CONST_MKSA_CARAT));
+ rb_define_const(module, "UNIFIED_ATOMIC_MASS",
+ rb_float_new(GSL_CONST_MKSA_UNIFIED_ATOMIC_MASS));
+ rb_define_const(module, "GRAM_FORCE", rb_float_new(GSL_CONST_MKSA_GRAM_FORCE));
+ rb_define_const(module, "POUND_FORCE", rb_float_new(GSL_CONST_MKSA_POUND_FORCE));
+ rb_define_const(module, "KILOPOUND_FORCE",
+ rb_float_new(GSL_CONST_MKSA_KILOPOUND_FORCE));
+ rb_define_const(module, "POUNDAL", rb_float_new(GSL_CONST_MKSA_POUNDAL));
+ rb_define_const(module, "CALORIE", rb_float_new(GSL_CONST_MKSA_CALORIE));
+ rb_define_const(module, "BTU", rb_float_new(GSL_CONST_MKSA_BTU));
+ rb_define_const(module, "THERM", rb_float_new(GSL_CONST_MKSA_THERM));
+ rb_define_const(module, "HORSEPOWER", rb_float_new(GSL_CONST_MKSA_HORSEPOWER));
+ rb_define_const(module, "BAR", rb_float_new(GSL_CONST_MKSA_BAR));
+ rb_define_const(module, "STD_ATMOSPHERE",
+ rb_float_new(GSL_CONST_MKSA_STD_ATMOSPHERE));
+ rb_define_const(module, "TORR", rb_float_new(GSL_CONST_MKSA_TORR));
+ rb_define_const(module, "METER_OF_MERCURY",
+ rb_float_new(GSL_CONST_MKSA_METER_OF_MERCURY));
+ rb_define_const(module, "INCH_OF_MERCURY",
+ rb_float_new(GSL_CONST_MKSA_INCH_OF_MERCURY));
+ rb_define_const(module, "INCH_OF_WATER",
+ rb_float_new(GSL_CONST_MKSA_INCH_OF_WATER));
+ rb_define_const(module, "PSI", rb_float_new(GSL_CONST_MKSA_PSI));
+ rb_define_const(module, "POISE", rb_float_new(GSL_CONST_MKSA_POISE));
+ rb_define_const(module, "STOKES", rb_float_new(GSL_CONST_MKSA_STOKES));
+ rb_define_const(module, "FARADAY", rb_float_new(GSL_CONST_MKSA_FARADAY));
+ rb_define_const(module, "ELECTRON_CHARGE",
+ rb_float_new(GSL_CONST_MKSA_ELECTRON_CHARGE));
+ rb_define_const(module, "GAUSS", rb_float_new(GSL_CONST_MKSA_GAUSS));
+ rb_define_const(module, "STILB", rb_float_new(GSL_CONST_MKSA_STILB));
+ rb_define_const(module, "LUMEN", rb_float_new(GSL_CONST_MKSA_LUMEN));
+ rb_define_const(module, "LUX", rb_float_new(GSL_CONST_MKSA_LUX));
+ rb_define_const(module, "PHOT", rb_float_new(GSL_CONST_MKSA_PHOT));
+ rb_define_const(module, "FOOTCANDLE", rb_float_new(GSL_CONST_MKSA_FOOTCANDLE));
+ rb_define_const(module, "LAMBERT", rb_float_new(GSL_CONST_MKSA_LAMBERT));
+ rb_define_const(module, "CURIE", rb_float_new(GSL_CONST_MKSA_CURIE));
+ rb_define_const(module, "ROENTGEN", rb_float_new(GSL_CONST_MKSA_ROENTGEN));
+ rb_define_const(module, "RAD", rb_float_new(GSL_CONST_MKSA_RAD));
+ rb_define_const(module, "SOLAR_MASS", rb_float_new(GSL_CONST_MKSA_SOLAR_MASS));
+
+ rb_define_const(module, "BOLTZMANN", rb_float_new(GSL_CONST_MKSA_BOLTZMANN));
+ rb_define_const(module, "MOLAR_GAS", rb_float_new(GSL_CONST_MKSA_MOLAR_GAS));
+
+ rb_define_const(module, "BOHR_RADIUS", rb_float_new(GSL_CONST_MKSA_BOHR_RADIUS));
+ rb_define_const(module, "NEWTON", rb_float_new(GSL_CONST_MKSA_NEWTON));
+ rb_define_const(module, "DYNE", rb_float_new(GSL_CONST_MKSA_DYNE));
+ rb_define_const(module, "JOULE", rb_float_new(GSL_CONST_MKSA_JOULE));
+ rb_define_const(module, "ERG", rb_float_new(GSL_CONST_MKSA_ERG));
+
+ rb_define_const(module, "STEFAN_BOLTZMANN_CONSTANT",
+ rb_float_new(GSL_CONST_MKSA_STEFAN_BOLTZMANN_CONSTANT));
+ rb_define_const(module, "THOMSON_CROSS_SECTION",
+ rb_float_new(GSL_CONST_MKSA_THOMSON_CROSS_SECTION));
+ rb_define_const(module, "DEBYE", rb_float_new(GSL_CONST_MKSA_DEBYE));
+}
+
+
+static void rb_gsl_const_cgs(VALUE module)
+{
+ rb_define_const(module, "SPEED_OF_LIGHT",
+ rb_float_new(GSL_CONST_CGSM_SPEED_OF_LIGHT));
+ rb_define_const(module, "GRAVITATIONAL_CONSTANT",
+ rb_float_new(GSL_CONST_CGSM_GRAVITATIONAL_CONSTANT));
+ rb_define_const(module, "PLANCKS_CONSTANT_H",
+ rb_float_new(GSL_CONST_CGSM_PLANCKS_CONSTANT_H));
+ rb_define_const(module, "PLANCKS_CONSTANT_HBAR",
+ rb_float_new(GSL_CONST_CGSM_PLANCKS_CONSTANT_HBAR));
+ rb_define_const(module, "ASTRONOMICAL_UNIT",
+ rb_float_new(GSL_CONST_CGSM_ASTRONOMICAL_UNIT));
+ rb_define_const(module, "LIGHT_YEAR",
+ rb_float_new(GSL_CONST_CGSM_LIGHT_YEAR));
+ rb_define_const(module, "PARSEC",
+ rb_float_new(GSL_CONST_CGSM_PARSEC));
+ rb_define_const(module, "GRAV_ACCEL",
+ rb_float_new(GSL_CONST_CGSM_GRAV_ACCEL));
+ rb_define_const(module, "ELECTRON_VOLT",
+ rb_float_new(GSL_CONST_CGSM_ELECTRON_VOLT));
+ rb_define_const(module, "MASS_ELECTRON",
+ rb_float_new(GSL_CONST_CGSM_MASS_ELECTRON));
+ rb_define_const(module, "MASS_MUON", rb_float_new(GSL_CONST_CGSM_MASS_MUON));
+ rb_define_const(module, "MASS_PROTON", rb_float_new(GSL_CONST_CGSM_MASS_PROTON));
+ rb_define_const(module, "MASS_NEUTRON", rb_float_new(GSL_CONST_CGSM_MASS_NEUTRON));
+ rb_define_const(module, "RYDBERG", rb_float_new(GSL_CONST_CGSM_RYDBERG));
+
+ rb_define_const(module, "BOHR_MAGNETON",
+ rb_float_new(GSL_CONST_CGSM_BOHR_MAGNETON));
+
+ rb_define_const(module, "NUCLEAR_MAGNETON",
+ rb_float_new(GSL_CONST_CGSM_NUCLEAR_MAGNETON));
+ rb_define_const(module, "ELECTRON_MAGNETIC_MOMENT",
+ rb_float_new(GSL_CONST_CGSM_ELECTRON_MAGNETIC_MOMENT));
+ rb_define_const(module, "PROTON_MAGNETIC_MOMENT",
+ rb_float_new(GSL_CONST_CGSM_PROTON_MAGNETIC_MOMENT));
+ rb_define_const(module, "STANDARD_GAS_VOLUME",
+ rb_float_new(GSL_CONST_CGSM_STANDARD_GAS_VOLUME));
+
+ rb_define_const(module, "MINUTE", rb_float_new(GSL_CONST_CGSM_MINUTE));
+ rb_define_const(module, "HOUR", rb_float_new(GSL_CONST_CGSM_HOUR));
+ rb_define_const(module, "DAY", rb_float_new(GSL_CONST_CGSM_DAY));
+ rb_define_const(module, "WEEK", rb_float_new(GSL_CONST_CGSM_WEEK));
+ rb_define_const(module, "INCH", rb_float_new(GSL_CONST_CGSM_INCH));
+ rb_define_const(module, "FOOT", rb_float_new(GSL_CONST_CGSM_FOOT));
+ rb_define_const(module, "YARD", rb_float_new(GSL_CONST_CGSM_YARD));
+ rb_define_const(module, "MILE", rb_float_new(GSL_CONST_CGSM_MILE));
+ rb_define_const(module, "NAUTICAL_MILE",
+ rb_float_new(GSL_CONST_CGSM_NAUTICAL_MILE));
+ rb_define_const(module, "FATHOM", rb_float_new(GSL_CONST_CGSM_FATHOM));
+ rb_define_const(module, "MIL", rb_float_new(GSL_CONST_CGSM_MIL));
+ rb_define_const(module, "POINT", rb_float_new(GSL_CONST_CGSM_POINT));
+ rb_define_const(module, "TEXPOINT", rb_float_new(GSL_CONST_CGSM_TEXPOINT));
+ rb_define_const(module, "MICRON", rb_float_new(GSL_CONST_CGSM_MICRON));
+ rb_define_const(module, "ANGSTROM", rb_float_new(GSL_CONST_CGSM_ANGSTROM));
+ rb_define_const(module, "HECTARE", rb_float_new(GSL_CONST_CGSM_HECTARE));
+ rb_define_const(module, "ACRE", rb_float_new(GSL_CONST_CGSM_ACRE));
+ rb_define_const(module, "BARN", rb_float_new(GSL_CONST_CGSM_BARN));
+ rb_define_const(module, "LITER", rb_float_new(GSL_CONST_CGSM_LITER));
+ rb_define_const(module, "US_GALLON", rb_float_new(GSL_CONST_CGSM_US_GALLON));
+ rb_define_const(module, "QUART", rb_float_new(GSL_CONST_CGSM_QUART));
+ rb_define_const(module, "PINT", rb_float_new(GSL_CONST_CGSM_PINT));
+ rb_define_const(module, "CUP", rb_float_new(GSL_CONST_CGSM_CUP));
+ rb_define_const(module, "FLUID_OUNCE", rb_float_new(GSL_CONST_CGSM_FLUID_OUNCE));
+ rb_define_const(module, "TABLESPOON", rb_float_new(GSL_CONST_CGSM_TABLESPOON));
+ rb_define_const(module, "CANADIAN_GALLON",
+ rb_float_new(GSL_CONST_CGSM_CANADIAN_GALLON));
+
+ rb_define_const(module, "UK_GALLON", rb_float_new(GSL_CONST_CGSM_UK_GALLON));
+ rb_define_const(module, "KILOMETERS_PER_HOUR",
+ rb_float_new(GSL_CONST_CGSM_MILES_PER_HOUR));
+ rb_define_const(module, "MILES_PER_HOUR",
+ rb_float_new(GSL_CONST_CGSM_KILOMETERS_PER_HOUR));
+ rb_define_const(module, "KNOT", rb_float_new(GSL_CONST_CGSM_KNOT));
+ rb_define_const(module, "POUND_MASS", rb_float_new(GSL_CONST_CGSM_POUND_MASS));
+ rb_define_const(module, "POUND_OUNCE", rb_float_new(GSL_CONST_CGSM_OUNCE_MASS));
+ rb_define_const(module, "POUND_TON", rb_float_new(GSL_CONST_CGSM_TON));
+ rb_define_const(module, "POUND_METRIC_TON",
+ rb_float_new(GSL_CONST_CGSM_METRIC_TON));
+ rb_define_const(module, "POUND_UK_TON", rb_float_new(GSL_CONST_CGSM_UK_TON));
+ rb_define_const(module, "POUND_TROY_OUNCE",
+ rb_float_new(GSL_CONST_CGSM_TROY_OUNCE));
+ rb_define_const(module, "CARAT", rb_float_new(GSL_CONST_CGSM_CARAT));
+ rb_define_const(module, "UNIFIED_ATOMIC_MASS",
+ rb_float_new(GSL_CONST_CGSM_UNIFIED_ATOMIC_MASS));
+ rb_define_const(module, "GRAM_FORCE", rb_float_new(GSL_CONST_CGSM_GRAM_FORCE));
+ rb_define_const(module, "POUND_FORCE", rb_float_new(GSL_CONST_CGSM_POUND_FORCE));
+ rb_define_const(module, "KILOPOUND_FORCE",
+ rb_float_new(GSL_CONST_CGSM_KILOPOUND_FORCE));
+ rb_define_const(module, "POUNDAL", rb_float_new(GSL_CONST_CGSM_POUNDAL));
+ rb_define_const(module, "CALORIE", rb_float_new(GSL_CONST_CGSM_CALORIE));
+ rb_define_const(module, "BTU", rb_float_new(GSL_CONST_CGSM_BTU));
+ rb_define_const(module, "THERM", rb_float_new(GSL_CONST_CGSM_THERM));
+ rb_define_const(module, "HORSEPOWER", rb_float_new(GSL_CONST_CGSM_HORSEPOWER));
+ rb_define_const(module, "BAR", rb_float_new(GSL_CONST_CGSM_BAR));
+ rb_define_const(module, "STD_ATMOSPHERE",
+ rb_float_new(GSL_CONST_CGSM_STD_ATMOSPHERE));
+ rb_define_const(module, "TORR", rb_float_new(GSL_CONST_CGSM_TORR));
+ rb_define_const(module, "METER_OF_MERCURY",
+ rb_float_new(GSL_CONST_CGSM_METER_OF_MERCURY));
+ rb_define_const(module, "INCH_OF_MERCURY",
+ rb_float_new(GSL_CONST_CGSM_INCH_OF_MERCURY));
+ rb_define_const(module, "INCH_OF_WATER",
+ rb_float_new(GSL_CONST_CGSM_INCH_OF_WATER));
+ rb_define_const(module, "PSI", rb_float_new(GSL_CONST_CGSM_PSI));
+ rb_define_const(module, "POISE", rb_float_new(GSL_CONST_CGSM_POISE));
+ rb_define_const(module, "STOKES", rb_float_new(GSL_CONST_CGSM_STOKES));
+ rb_define_const(module, "FARADAY", rb_float_new(GSL_CONST_CGSM_FARADAY));
+ rb_define_const(module, "ELECTRON_CHARGE",
+ rb_float_new(GSL_CONST_CGSM_ELECTRON_CHARGE));
+ rb_define_const(module, "ELECTRON_CHARGE_ESU",
+ rb_float_new(GSL_CONST_CGSM_ELECTRON_CHARGE*GSL_CONST_CGSM_SPEED_OF_LIGHT));
+ rb_define_const(module, "STILB", rb_float_new(GSL_CONST_CGSM_STILB));
+ rb_define_const(module, "LUMEN", rb_float_new(GSL_CONST_CGSM_LUMEN));
+ rb_define_const(module, "LUX", rb_float_new(GSL_CONST_CGSM_LUX));
+ rb_define_const(module, "PHOT", rb_float_new(GSL_CONST_CGSM_PHOT));
+ rb_define_const(module, "FOOTCANDLE", rb_float_new(GSL_CONST_CGSM_FOOTCANDLE));
+ rb_define_const(module, "LAMBERT", rb_float_new(GSL_CONST_CGSM_LAMBERT));
+ rb_define_const(module, "CURIE", rb_float_new(GSL_CONST_CGSM_CURIE));
+ rb_define_const(module, "ROENTGEN", rb_float_new(GSL_CONST_CGSM_ROENTGEN));
+ rb_define_const(module, "RAD", rb_float_new(GSL_CONST_CGSM_RAD));
+ rb_define_const(module, "SOLAR_MASS", rb_float_new(GSL_CONST_CGSM_SOLAR_MASS));
+
+ rb_define_const(module, "BOLTZMANN", rb_float_new(GSL_CONST_CGSM_BOLTZMANN));
+ rb_define_const(module, "MOLAR_GAS", rb_float_new(GSL_CONST_CGSM_MOLAR_GAS));
+
+ rb_define_const(module, "BOHR_RADIUS", rb_float_new(GSL_CONST_CGSM_BOHR_RADIUS));
+ rb_define_const(module, "NEWTON", rb_float_new(GSL_CONST_CGSM_NEWTON));
+ rb_define_const(module, "DYNE", rb_float_new(GSL_CONST_CGSM_DYNE));
+ rb_define_const(module, "JOULE", rb_float_new(GSL_CONST_CGSM_JOULE));
+ rb_define_const(module, "ERG", rb_float_new(GSL_CONST_CGSM_ERG));
+
+ rb_define_const(module, "STEFAN_BOLTZMANN_CONSTANT",
+ rb_float_new(GSL_CONST_CGSM_STEFAN_BOLTZMANN_CONSTANT));
+ rb_define_const(module, "THOMSON_CROSS_SECTION",
+ rb_float_new(GSL_CONST_CGSM_THOMSON_CROSS_SECTION));
+}
+
+static void rb_gsl_const_num(VALUE module)
+{
+ rb_define_const(module, "AVOGADRO", rb_float_new(GSL_CONST_NUM_AVOGADRO));
+ rb_define_const(module, "FINE_STRUCTURE",
+ rb_float_new(GSL_CONST_NUM_FINE_STRUCTURE));
+ rb_define_const(module, "YOTTA", rb_float_new(GSL_CONST_NUM_YOTTA));
+ rb_define_const(module, "ZETTA", rb_float_new(GSL_CONST_NUM_ZETTA));
+ rb_define_const(module, "EXA", rb_float_new(GSL_CONST_NUM_EXA));
+ rb_define_const(module, "PETA", rb_float_new(GSL_CONST_NUM_PETA));
+ rb_define_const(module, "TERA", rb_float_new(GSL_CONST_NUM_TERA));
+ rb_define_const(module, "GIGA", rb_float_new(GSL_CONST_NUM_GIGA));
+ rb_define_const(module, "MEGA", rb_float_new(GSL_CONST_NUM_MEGA));
+ rb_define_const(module, "KILO", rb_float_new(GSL_CONST_NUM_KILO));
+ rb_define_const(module, "MILLI", rb_float_new(GSL_CONST_NUM_MILLI));
+ rb_define_const(module, "MICRO", rb_float_new(GSL_CONST_NUM_MICRO));
+ rb_define_const(module, "NANO", rb_float_new(GSL_CONST_NUM_NANO));
+ rb_define_const(module, "PICO", rb_float_new(GSL_CONST_NUM_PICO));
+ rb_define_const(module, "FEMTO", rb_float_new(GSL_CONST_NUM_FEMTO));
+ rb_define_const(module, "ATTO", rb_float_new(GSL_CONST_NUM_ATTO));
+ rb_define_const(module, "ZEPTO", rb_float_new(GSL_CONST_NUM_ZEPTO));
+ rb_define_const(module, "YOCTO", rb_float_new(GSL_CONST_NUM_YOCTO));
+}
+
+void Init_gsl_const(VALUE module)
+{
+ VALUE mgsl_const;
+ VALUE mgsl_const_mks, mgsl_const_cgs, mgsl_const_num;
+
+ mgsl_const = rb_define_module_under(module, "CONST");
+ mgsl_const_mks = rb_define_module_under(mgsl_const, "MKSA");
+ rb_gsl_const_mks(mgsl_const_mks);
+ mgsl_const_cgs = rb_define_module_under(mgsl_const, "CGSM");
+ rb_gsl_const_cgs(mgsl_const_cgs);
+ mgsl_const_num = rb_define_module_under(mgsl_const, "NUM");
+ rb_gsl_const_num(mgsl_const_num);
+ Init_gsl_const_additional(mgsl_const_mks, mgsl_const_cgs, mgsl_const_num);
+}
diff --git a/ext/gsl/const_additional.c b/ext/gsl_native/const_additional.c
similarity index 68%
rename from ext/gsl/const_additional.c
rename to ext/gsl_native/const_additional.c
index d633306..1895dbb 100644
--- a/ext/gsl/const_additional.c
+++ b/ext/gsl_native/const_additional.c
@@ -11,13 +11,6 @@
#include "include/rb_gsl_const.h"
-#ifndef GSL_1_4_9_LATER
-#define MKS_STEFAN_BOLTZMANN_CONSTANT (5.6703993443638e-08)
-#define MKS_THOMSON_CROSS_SECTION (6.65245852869236e-29)
-#define CGS_STEFAN_BOLTZMANN_CONSTANT (5.6703993443638e-05)
-#define CGS_THOMSON_CROSS_SECTION (6.65245852869236e-25)
-#endif
-
#define MKS_CLASSICAL_ELECTRON_RADIUS (2.81794028310825e-15)
#define MKS_RADIATION_DENSITY_CONSTANT (7.56576650685962e-16)
#define MKS_RADIATION_NUMBER_DENSITY_CONSTANT (20.2869161066108e-6)
@@ -43,47 +36,33 @@ static void rb_gsl_const_num(VALUE module);
static void rb_gsl_const_mks(VALUE module)
{
rb_define_const(module, "RADIATION_DENSITY_CONSTANT",
- rb_float_new(MKS_RADIATION_DENSITY_CONSTANT));
- rb_define_const(module, "RADIATION_NUMBER_DENSITY_CONSTANT",
- rb_float_new(MKS_RADIATION_NUMBER_DENSITY_CONSTANT));
+ rb_float_new(MKS_RADIATION_DENSITY_CONSTANT));
+ rb_define_const(module, "RADIATION_NUMBER_DENSITY_CONSTANT",
+ rb_float_new(MKS_RADIATION_NUMBER_DENSITY_CONSTANT));
rb_define_const(module, "CLASSICAL_ELECTRON_RADIUS",
- rb_float_new(MKS_CLASSICAL_ELECTRON_RADIUS));
+ rb_float_new(MKS_CLASSICAL_ELECTRON_RADIUS));
rb_define_const(module, "SOLAR_TIME", rb_float_new(MKS_SOLAR_TIME));
rb_define_const(module, "SOLAR_GM", rb_float_new(MKS_SOLAR_GM));
rb_define_const(module, "PLANCK_MASS", rb_float_new(MKS_PLANCK_MASS));
rb_define_const(module, "PLANCK_LENGTH", rb_float_new(MKS_PLANCK_LENGTH));
rb_define_const(module, "PLANCK_TIME", rb_float_new(MKS_PLANCK_TIME));
-
-#ifndef GSL_1_4_9_LATER
- rb_define_const(module, "STEFAN_BOLTZMANN_CONSTANT",
- rb_float_new(MKS_STEFAN_BOLTZMANN_CONSTANT));
- rb_define_const(module, "THOMSON_CROSS_SECTION",
- rb_float_new(MKS_THOMSON_CROSS_SECTION));
-#endif
}
static void rb_gsl_const_cgs(VALUE module)
{
- rb_define_const(module, "RADIATION_DENSITY_CONSTANT",
- rb_float_new(CGS_RADIATION_DENSITY_CONSTANT));
- rb_define_const(module, "RADIATION_NUMBER_DENSITY_CONSTANT",
- rb_float_new(CGS_RADIATION_NUMBER_DENSITY_CONSTANT));
- rb_define_const(module, "CLASSICAL_ELECTRON_RADIUS",
- rb_float_new(CGS_CLASSICAL_ELECTRON_RADIUS));
+ rb_define_const(module, "RADIATION_DENSITY_CONSTANT",
+ rb_float_new(CGS_RADIATION_DENSITY_CONSTANT));
+ rb_define_const(module, "RADIATION_NUMBER_DENSITY_CONSTANT",
+ rb_float_new(CGS_RADIATION_NUMBER_DENSITY_CONSTANT));
+ rb_define_const(module, "CLASSICAL_ELECTRON_RADIUS",
+ rb_float_new(CGS_CLASSICAL_ELECTRON_RADIUS));
rb_define_const(module, "SOLAR_TIME", rb_float_new(CGS_SOLAR_TIME));
rb_define_const(module, "SOLAR_GM", rb_float_new(CGS_SOLAR_GM));
rb_define_const(module, "PLANCK_MASS", rb_float_new(CGS_PLANCK_MASS));
rb_define_const(module, "PLANCK_LENGTH", rb_float_new(CGS_PLANCK_LENGTH));
rb_define_const(module, "PLANCK_TIME", rb_float_new(CGS_PLANCK_TIME));
-
-#ifndef GSL_1_4_9_LATER
- rb_define_const(module, "STEFAN_BOLTZMANN_CONSTANT",
- rb_float_new(CGS_STEFAN_BOLTZMANN_CONSTANT));
- rb_define_const(module, "THOMSON_CROSS_SECTION",
- rb_float_new(CGS_THOMSON_CROSS_SECTION));
-#endif
}
static void rb_gsl_const_num(VALUE module)
@@ -102,8 +81,8 @@ void Init_gsl_const_additional(VALUE mmks, VALUE mcgs, VALUE mnum)
#undef MKS_STEFAN_BOLTZMANN_CONSTANT
#undef MKS_RADIATION_DENSITY_CONSTANT
#undef MKS_RADIATION_NUMBER_DENSITY_CONSTANT
-#undef CGS_CLASSICAL_ELECTRON_RADIUS
-#undef CGS_STEFAN_BOLTZMANN_CONSTANT
+#undef CGS_CLASSICAL_ELECTRON_RADIUS
+#undef CGS_STEFAN_BOLTZMANN_CONSTANT
#undef CGS_RADIATION_DENSITY_CONSTANT
#undef CGS_RADIATION_NUMBER_DENSITY_CONSTANT
#undef CGS_THOMSON_CROSS_SECTION
diff --git a/ext/gsl_native/cqp.c b/ext/gsl_native/cqp.c
new file mode 100644
index 0000000..eb1a547
--- /dev/null
+++ b/ext/gsl_native/cqp.c
@@ -0,0 +1,283 @@
+#ifdef HAVE_GSL_GSL_CQP_H
+
+#include "include/rb_gsl.h"
+#include "gsl/gsl_cqp.h"
+
+static const gsl_cqpminimizer_type* type_by_string(VALUE t);
+static const gsl_cqpminimizer_type* get_type(VALUE t)
+{
+
+ switch (TYPE(t)) {
+ case T_STRING:
+ return type_by_string(t);
+ break;
+ default:
+ rb_raise(rb_eTypeError, "Wrong argument type %s.", rb_class2name(CLASS_OF(t)));
+ }
+}
+
+static const gsl_cqpminimizer_type* type_by_string(VALUE t)
+{
+ char *name;
+ name = STR2CSTR(t);
+ if (strcmp(name, "mg_pdip") == 0) {
+ return gsl_cqpminimizer_mg_pdip;
+ } else {
+ rb_raise(rb_eRuntimeError, "Unknown minimizer type %s.", name);
+ }
+ return NULL; /* never reach here */
+}
+
+static VALUE rb_cqpminimizer_alloc(VALUE klass, VALUE t, VALUE n, VALUE me, VALUE mi)
+{
+ gsl_cqpminimizer *m;
+ m = gsl_cqpminimizer_alloc(get_type(t), (size_t) FIX2INT(n), (size_t) FIX2INT(me), (size_t) FIX2INT(mi));
+ return Data_Wrap_Struct(klass, 0, gsl_cqpminimizer_free, m);
+}
+
+static VALUE rb_cqpminimizer_set(VALUE obj, VALUE data)
+{
+ gsl_cqpminimizer *m;
+ gsl_cqp_data *d;
+ Data_Get_Struct(obj, gsl_cqpminimizer, m);
+ Data_Get_Struct(data, gsl_cqp_data, d);
+ gsl_cqpminimizer_set(m, d);
+ return Qtrue;
+}
+
+static VALUE rb_cqpminimizer_name(VALUE obj)
+{
+ gsl_cqpminimizer *m;
+ Data_Get_Struct(obj, gsl_cqpminimizer, m);
+ return rb_str_new2(gsl_cqpminimizer_name(m));
+}
+
+static VALUE rb_cqpminimizer_iterate(VALUE obj)
+{
+ gsl_cqpminimizer *m;
+ Data_Get_Struct(obj, gsl_cqpminimizer, m);
+ return INT2FIX(gsl_cqpminimizer_iterate(m));
+}
+
+static VALUE rb_cqpminimizer_x(VALUE obj)
+{
+ gsl_cqpminimizer *m;
+ Data_Get_Struct(obj, gsl_cqpminimizer, m);
+ return Data_Wrap_Struct(cgsl_vector_view, 0, NULL, gsl_cqpminimizer_x(m));
+}
+
+static VALUE rb_cqpminimizer_lm_eq(VALUE obj)
+{
+ gsl_cqpminimizer *m;
+ Data_Get_Struct(obj, gsl_cqpminimizer, m);
+ return Data_Wrap_Struct(cgsl_vector_view, 0, NULL, gsl_cqpminimizer_lm_eq(m));
+}
+static VALUE rb_cqpminimizer_lm_ineq(VALUE obj)
+{
+ gsl_cqpminimizer *m;
+ Data_Get_Struct(obj, gsl_cqpminimizer, m);
+ return Data_Wrap_Struct(cgsl_vector_view, 0, NULL, gsl_cqpminimizer_lm_ineq(m));
+}
+static VALUE rb_cqpminimizer_f(VALUE obj)
+{
+ gsl_cqpminimizer *m;
+ Data_Get_Struct(obj, gsl_cqpminimizer, m);
+ return rb_float_new(gsl_cqpminimizer_f(m));
+}
+static VALUE rb_cqpminimizer_gap(VALUE obj)
+{
+ gsl_cqpminimizer *m;
+ Data_Get_Struct(obj, gsl_cqpminimizer, m);
+ return rb_float_new(gsl_cqpminimizer_gap(m));
+}
+static VALUE rb_cqpminimizer_residuals_norm(VALUE obj)
+{
+ gsl_cqpminimizer *m;
+ Data_Get_Struct(obj, gsl_cqpminimizer, m);
+ return rb_float_new(gsl_cqpminimizer_residuals_norm(m));
+}
+/*
+static VALUE rb_cqpminimizer_minimum(VALUE obj)
+{
+ gsl_cqpminimizer *m;
+ Data_Get_Struct(obj, gsl_cqpminimizer, m);
+ return rb_float_new(gsl_cqpminimizer_minimum(m));
+}
+*/
+static VALUE rb_cqpminimizer_test_convergence(VALUE obj, VALUE g, VALUE r)
+{
+ gsl_cqpminimizer *m;
+ Data_Get_Struct(obj, gsl_cqpminimizer, m);
+ return INT2FIX(gsl_cqpminimizer_test_convergence(m, NUM2DBL(g), NUM2DBL(r)));
+}
+static VALUE rb_cqpminimizer_test_infeasibility(VALUE obj, VALUE e)
+{
+ gsl_cqpminimizer *m;
+ Data_Get_Struct(obj, gsl_cqpminimizer, m);
+ return INT2FIX(gsl_cqp_minimizer_test_infeasibility(m, NUM2DBL(e)));
+}
+
+static VALUE rb_cqp_data_alloc(VALUE klass)
+{
+ gsl_cqp_data *d;
+ d = (gsl_cqp_data*) malloc(sizeof(gsl_cqp_data));
+ return Data_Wrap_Struct(klass, 0, free, d);
+}
+
+static VALUE rb_cqp_data_Q(VALUE obj)
+{
+ gsl_cqp_data *d;
+ Data_Get_Struct(obj, gsl_cqp_data, d);
+ return Data_Wrap_Struct(cgsl_matrix_view, 0, NULL, d->Q);
+}
+
+static VALUE rb_cqp_data_q(VALUE obj)
+{
+ gsl_cqp_data *d;
+ Data_Get_Struct(obj, gsl_cqp_data, d);
+ return Data_Wrap_Struct(cgsl_vector_view, 0, NULL, d->q);
+}
+
+static VALUE rb_cqp_data_A(VALUE obj)
+{
+ gsl_cqp_data *d;
+ Data_Get_Struct(obj, gsl_cqp_data, d);
+ return Data_Wrap_Struct(cgsl_matrix_view, 0, NULL, d->A);
+}
+
+static VALUE rb_cqp_data_b(VALUE obj)
+{
+ gsl_cqp_data *d;
+ Data_Get_Struct(obj, gsl_cqp_data, d);
+ return Data_Wrap_Struct(cgsl_vector_view, 0, NULL, d->b);
+}
+
+static VALUE rb_cqp_data_C(VALUE obj)
+{
+ gsl_cqp_data *d;
+ Data_Get_Struct(obj, gsl_cqp_data, d);
+ return Data_Wrap_Struct(cgsl_matrix_view, 0, NULL, d->C);
+}
+
+static VALUE rb_cqp_data_d(VALUE obj)
+{
+ gsl_cqp_data *d;
+ Data_Get_Struct(obj, gsl_cqp_data, d);
+ return Data_Wrap_Struct(cgsl_vector_view, 0, NULL, d->d);
+}
+
+static VALUE rb_cqp_data_set_Q(VALUE obj, VALUE mm)
+{
+ gsl_cqp_data *d;
+ gsl_matrix *m;
+ Data_Get_Struct(obj, gsl_cqp_data, d);
+ CHECK_MATRIX(mm);
+ Data_Get_Struct(mm, gsl_matrix, m);
+ d->Q = m;
+ return Qtrue;
+}
+
+static VALUE rb_cqp_data_set_q(VALUE obj, VALUE vv)
+{
+ gsl_cqp_data *d;
+ gsl_vector *v;
+ Data_Get_Struct(obj, gsl_cqp_data, d);
+ CHECK_VECTOR(vv);
+ Data_Get_Struct(vv, gsl_vector, v);
+ d->q = v;
+ return Qtrue;
+}
+
+static VALUE rb_cqp_data_set_A(VALUE obj, VALUE mm)
+{
+ gsl_cqp_data *d;
+ gsl_matrix *m;
+ Data_Get_Struct(obj, gsl_cqp_data, d);
+ CHECK_MATRIX(mm);
+ Data_Get_Struct(mm, gsl_matrix, m);
+ d->A = m;
+ return Qtrue;
+}
+
+static VALUE rb_cqp_data_set_b(VALUE obj, VALUE vv)
+{
+ gsl_cqp_data *d;
+ gsl_vector *v;
+ Data_Get_Struct(obj, gsl_cqp_data, d);
+ CHECK_VECTOR(vv);
+ Data_Get_Struct(vv, gsl_vector, v);
+ d->b = v;
+ return Qtrue;
+}
+
+static VALUE rb_cqp_data_set_C(VALUE obj, VALUE mm)
+{
+ gsl_cqp_data *d;
+ gsl_matrix *m;
+ Data_Get_Struct(obj, gsl_cqp_data, d);
+ CHECK_MATRIX(mm);
+ Data_Get_Struct(mm, gsl_matrix, m);
+ d->C = m;
+ return Qtrue;
+}
+
+static VALUE rb_cqp_data_set_d(VALUE obj, VALUE vv)
+{
+ gsl_cqp_data *d;
+ gsl_vector *v;
+ Data_Get_Struct(obj, gsl_cqp_data, d);
+ CHECK_VECTOR(vv);
+ Data_Get_Struct(vv, gsl_vector, v);
+ d->d = v;
+ return Qtrue;
+}
+
+void Init_cqp(VALUE module)
+{
+ VALUE mCQP, cMinimizer, cData;
+
+ mCQP = rb_define_module_under(module, "CQP");
+ cMinimizer = rb_define_class_under(mCQP, "Minimizer", cGSL_Object);
+ cData = rb_define_class_under(mCQP, "Data", cGSL_Object);
+
+ rb_define_singleton_method(cMinimizer, "alloc", rb_cqpminimizer_alloc, 4);
+
+ rb_define_method(cMinimizer, "set", rb_cqpminimizer_set, 1);
+ rb_define_method(cMinimizer, "name", rb_cqpminimizer_name, 0);
+ rb_define_method(cMinimizer, "iterate", rb_cqpminimizer_iterate, 0);
+ rb_define_method(cMinimizer, "x", rb_cqpminimizer_x, 0);
+ rb_define_method(cMinimizer, "lm_eq", rb_cqpminimizer_lm_eq, 0);
+ rb_define_method(cMinimizer, "lm_ineq", rb_cqpminimizer_lm_ineq, 0);
+ rb_define_method(cMinimizer, "f", rb_cqpminimizer_f, 0);
+ rb_define_method(cMinimizer, "gap", rb_cqpminimizer_gap, 0);
+ rb_define_method(cMinimizer, "residuals_norm", rb_cqpminimizer_residuals_norm, 0);
+/* rb_define_method(cMinimizer, "minimum", rb_cqpminimizer_minimum, 0); */
+ rb_define_method(cMinimizer, "test_convergence", rb_cqpminimizer_test_convergence, 2);
+ rb_define_method(cMinimizer, "test_infeasibility", rb_cqpminimizer_test_infeasibility, 1);
+
+ /*****/
+ rb_define_singleton_method(cData, "alloc", rb_cqp_data_alloc, 0);
+
+ rb_define_method(cData, "Q", rb_cqp_data_Q, 0);
+ rb_define_method(cData, "q", rb_cqp_data_q, 0);
+ rb_define_method(cData, "A", rb_cqp_data_A, 0);
+ rb_define_method(cData, "b", rb_cqp_data_b, 0);
+ rb_define_method(cData, "C", rb_cqp_data_C, 0);
+ rb_define_method(cData, "d", rb_cqp_data_d, 0);
+
+ rb_define_method(cData, "set_Q", rb_cqp_data_set_Q, 1);
+ rb_define_method(cData, "set_q", rb_cqp_data_set_q, 1);
+ rb_define_method(cData, "set_A", rb_cqp_data_set_A, 1);
+ rb_define_method(cData, "set_b", rb_cqp_data_set_b, 1);
+ rb_define_method(cData, "set_C", rb_cqp_data_set_C, 1);
+ rb_define_method(cData, "set_d", rb_cqp_data_set_d, 1);
+ rb_define_alias(cData, "Q=", "set_Q");
+ rb_define_alias(cData, "q=", "set_q");
+ rb_define_alias(cData, "A=", "set_A");
+ rb_define_alias(cData, "b=", "set_b");
+ rb_define_alias(cData, "C=", "set_C");
+ rb_define_alias(cData, "d=", "set_d");
+}
+
+#endif
+
diff --git a/ext/gsl/deriv.c b/ext/gsl_native/deriv.c
similarity index 80%
rename from ext/gsl/deriv.c
rename to ext/gsl_native/deriv.c
index f7af8c5..1332e7b 100644
--- a/ext/gsl/deriv.c
+++ b/ext/gsl_native/deriv.c
@@ -9,15 +9,11 @@
WITHOUT ANY WARRANTY.
*/
-#ifdef GSL_1_4_9_LATER
#include "include/rb_gsl_common.h"
#include "include/rb_gsl_function.h"
#include <gsl/gsl_math.h>
#include <gsl/gsl_deriv.h>
#define RB_GSL_DERIV_H_DEFAULT (1e-8)
-#ifdef HAVE_NARRAY_H
-#include "narray.h"
-#endif
static int get_func2(int argc, VALUE *argv, VALUE obj, VALUE *ff, VALUE *xx, VALUE *hh)
{
@@ -62,10 +58,10 @@ static int get_func2(int argc, VALUE *argv, VALUE obj, VALUE *ff, VALUE *xx, VAL
#undef RB_GSL_DERIV_H_DEFAULT
#endif
-static VALUE rb_gsl_deriv_eval(VALUE obj, VALUE xx, VALUE hh,
- int (*deriv)(const gsl_function *,
- double, double,
- double *, double *))
+static VALUE rb_gsl_deriv_eval(VALUE obj, VALUE xx, VALUE hh,
+ int (*deriv)(const gsl_function *,
+ double, double,
+ double *, double *))
{
gsl_function *f = NULL;
double result, abserr, h;
@@ -74,11 +70,6 @@ static VALUE rb_gsl_deriv_eval(VALUE obj, VALUE xx, VALUE hh,
gsl_matrix *m = NULL, *mnew = NULL, *merr = NULL;
size_t n, i, j;
int status;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- double *ptr1, *ptr2, *ptr3;
- VALUE ary2, ary3;
-#endif
Need_Float(hh);
Data_Get_Struct(obj, gsl_function, f);
h = NUM2DBL(hh);
@@ -107,6 +98,9 @@ static VALUE rb_gsl_deriv_eval(VALUE obj, VALUE xx, VALUE hh,
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *na;
+ double *ptr1, *ptr2, *ptr3;
+ VALUE ary2, ary3;
GetNArray(xx, na);
n = na->total;
ptr1 = (double*) na->ptr;
@@ -115,9 +109,9 @@ static VALUE rb_gsl_deriv_eval(VALUE obj, VALUE xx, VALUE hh,
ptr2 = NA_PTR_TYPE(ary2, double*);
ptr3 = NA_PTR_TYPE(ary3, double*);
for (i = 0; i < n; i++) {
- (*deriv)(f, ptr1[i], h, &result, &abserr);
- ptr2[i] = result;
- ptr3[i] = abserr;
+ (*deriv)(f, ptr1[i], h, &result, &abserr);
+ ptr2[i] = result;
+ ptr3[i] = abserr;
}
return rb_ary_new3(2, ary2, ary3);
}
@@ -127,27 +121,27 @@ static VALUE rb_gsl_deriv_eval(VALUE obj, VALUE xx, VALUE hh,
vnew = gsl_vector_alloc(v->size);
verr = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- (*deriv)(f, gsl_vector_get(v, i), h, &result, &abserr);
- gsl_vector_set(vnew, i, result);
- gsl_vector_set(verr, i, abserr);
+ (*deriv)(f, gsl_vector_get(v, i), h, &result, &abserr);
+ gsl_vector_set(vnew, i, result);
+ gsl_vector_set(verr, i, abserr);
}
return rb_ary_new3(2,
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew),
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, verr));
+ Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew),
+ Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, verr));
} else if (MATRIX_P(xx)) {
Data_Get_Struct(xx, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
merr = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- (*deriv)(f, gsl_matrix_get(m, i, j), h, &result, &abserr);
- gsl_matrix_set(mnew, i, j, result);
- gsl_matrix_set(merr, i, j, abserr);
- }
+ for (j = 0; j < m->size2; j++) {
+ (*deriv)(f, gsl_matrix_get(m, i, j), h, &result, &abserr);
+ gsl_matrix_set(mnew, i, j, result);
+ gsl_matrix_set(merr, i, j, abserr);
+ }
}
return rb_ary_new3(2,
- Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew),
- Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, merr));
+ Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew),
+ Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, merr));
} else {
rb_raise(rb_eTypeError, "wrong argument type");
}
@@ -191,5 +185,3 @@ void Init_gsl_deriv(VALUE module)
rb_define_singleton_method(mgsl_deriv, "forward", rb_gsl_deriv_forward, -1);
rb_define_singleton_method(mgsl_deriv, "backward", rb_gsl_deriv_backward, -1);
}
-
-#endif
diff --git a/ext/gsl/dht.c b/ext/gsl_native/dht.c
similarity index 91%
rename from ext/gsl/dht.c
rename to ext/gsl_native/dht.c
index 2356639..55dae39 100644
--- a/ext/gsl/dht.c
+++ b/ext/gsl_native/dht.c
@@ -13,9 +13,6 @@
#include "include/rb_gsl_array.h"
#include "include/rb_gsl_common.h"
#include <gsl/gsl_dht.h>
-#ifdef HAVE_NARRAY_H
-#include "narray.h"
-#endif
static VALUE rb_gsl_dht_alloc(int argc, VALUE *argv, VALUE klass)
{
@@ -29,7 +26,7 @@ static VALUE rb_gsl_dht_alloc(int argc, VALUE *argv, VALUE klass)
CHECK_FIXNUM(argv[0]);
Need_Float(argv[1]); Need_Float(argv[2]);
t = gsl_dht_new(FIX2INT(argv[0]), NUM2DBL(argv[1]), NUM2DBL(argv[2]));
- break;
+ break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 3)", argc);
break;
@@ -52,9 +49,6 @@ static VALUE rb_gsl_dht_apply(int argc, VALUE *argv, VALUE obj)
double *ptr1, *ptr2;
gsl_vector *vin, *vout;
size_t size, stride;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
-#endif
VALUE ary;
switch (argc) {
case 2:
@@ -73,6 +67,7 @@ static VALUE rb_gsl_dht_apply(int argc, VALUE *argv, VALUE obj)
ary = Data_Wrap_Struct(VECTOR_ROW_COL(argv[0]), 0, gsl_vector_free, vout);
#ifdef HAVE_NARRAY_H
} else if (NA_IsNArray(argv[0])) {
+ struct NARRAY *na;
GetNArray(argv[0], na);
ptr1 = (double*)na->ptr;
ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(argv[0]));
@@ -80,7 +75,7 @@ static VALUE rb_gsl_dht_apply(int argc, VALUE *argv, VALUE obj)
#endif
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Vector expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
}
gsl_dht_apply(t, ptr1, ptr2);
return ary;
@@ -92,8 +87,8 @@ static VALUE rb_gsl_dht_apply(int argc, VALUE *argv, VALUE obj)
return Qnil; /* never reach here */
}
-static VALUE rb_gsl_dht_xk_sample(VALUE obj, VALUE n,
- double (*sample)(const gsl_dht*, int))
+static VALUE rb_gsl_dht_xk_sample(VALUE obj, VALUE n,
+ double (*sample)(const gsl_dht*, int))
{
gsl_dht *t = NULL;
gsl_vector_int *vi;
@@ -102,11 +97,6 @@ static VALUE rb_gsl_dht_xk_sample(VALUE obj, VALUE n,
int nn;
VALUE ary;
double val;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- int *ptr;
- double *ptr2;
-#endif
Data_Get_Struct(obj, gsl_dht, t);
if (CLASS_OF(n) == rb_cRange) n = rb_gsl_range2ary(n);
switch (TYPE(n)) {
@@ -129,28 +119,30 @@ static VALUE rb_gsl_dht_xk_sample(VALUE obj, VALUE n,
Data_Get_Struct(n, gsl_vector_int, vi);
v = gsl_vector_alloc(vi->size);
for (i = 0; i < v->size; i++) {
- nn = gsl_vector_int_get(vi, i);
- val = (*sample)(t, nn);
- gsl_vector_set(v, i, val);
+ nn = gsl_vector_int_get(vi, i);
+ val = (*sample)(t, nn);
+ gsl_vector_set(v, i, val);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
#ifdef HAVE_NARRAY_H
} else if (NA_IsNArray(n)) {
+ struct NARRAY *na;
+ int *ptr;
+ double *ptr2;
GetNArray(n, na);
ptr = (int*) na->ptr;
size = na->total;
ary = na_make_object(NA_DFLOAT, na->rank, na->shape, cNArray);
ptr2 = NA_PTR_TYPE(ary, double*);
for (i = 0; i < size; i++) {
- ptr2[i] = (*sample)(t, ptr[i]);
+ ptr2[i] = (*sample)(t, ptr[i]);
}
return ary;
#endif
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Vector::Int expected)",
- rb_class2name(CLASS_OF(n)));
+ rb_class2name(CLASS_OF(n)));
}
-
}
return Qnil;
}
@@ -204,8 +196,8 @@ static VALUE rb_gsl_dht_sample(int argc, VALUE *argv, VALUE obj)
mm = gsl_matrix_alloc(t->size, t->size);
for (n = 0; n < t->size; n++) {
for (m = 0; m < t->size; m++) {
- val = t->j[n+1]*gsl_dht_x_sample(t, m)/t->xmax;
- gsl_matrix_set(mm, n, m, val);
+ val = t->j[n+1]*gsl_dht_x_sample(t, m)/t->xmax;
+ gsl_matrix_set(mm, n, m, val);
}
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mm);
@@ -235,8 +227,8 @@ static VALUE rb_gsl_dht_num(int argc, VALUE *argv, VALUE obj)
mm = gsl_matrix_alloc(t->size, t->size);
for (n = 0; n < t->size; n++) {
for (m = 0; m < t->size; m++) {
- val = gsl_sf_bessel_Jnu(t->nu, t->j[n+1]*gsl_dht_x_sample(t, m)/t->xmax);
- gsl_matrix_set(mm, n, m, val);
+ val = gsl_sf_bessel_Jnu(t->nu, t->j[n+1]*gsl_dht_x_sample(t, m)/t->xmax);
+ gsl_matrix_set(mm, n, m, val);
}
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mm);
@@ -312,9 +304,9 @@ static VALUE rb_gsl_dht_coef(int argc, VALUE *argv, VALUE obj)
mm = gsl_matrix_alloc(t->size, t->size);
for (n = 0; n < t->size; n++) {
for (m = 0; m < t->size; m++) {
- val = gsl_sf_bessel_Jnu(t->nu, t->j[n+1]*gsl_dht_x_sample(t, m)/t->xmax);
- val *= (2.0/t->xmax/t->xmax)/t->J2[m+1];
- gsl_matrix_set(mm, n, m, val);
+ val = gsl_sf_bessel_Jnu(t->nu, t->j[n+1]*gsl_dht_x_sample(t, m)/t->xmax);
+ val *= (2.0/t->xmax/t->xmax)/t->J2[m+1];
+ gsl_matrix_set(mm, n, m, val);
}
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mm);
diff --git a/ext/gsl/diff.c b/ext/gsl_native/diff.c
similarity index 79%
rename from ext/gsl/diff.c
rename to ext/gsl_native/diff.c
index aa68f55..7fb0ded 100644
--- a/ext/gsl/diff.c
+++ b/ext/gsl_native/diff.c
@@ -18,19 +18,19 @@ static int get_func(int argc, VALUE *argv, VALUE obj, VALUE *ff, VALUE *xx);
static int get_func(int argc, VALUE *argv, VALUE obj, VALUE *ff, VALUE *xx)
{
- switch (TYPE(obj)) {
+ switch (TYPE(obj)) {
case T_MODULE:
case T_CLASS:
case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
CHECK_FUNCTION(argv[0]);
*ff = argv[0];
*xx = argv[1];
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
*ff = obj;
*xx = argv[0];
break;
@@ -39,7 +39,7 @@ static int get_func(int argc, VALUE *argv, VALUE obj, VALUE *ff, VALUE *xx)
}
static VALUE rb_gsl_diff_eval(VALUE obj, VALUE xx,
- int (*diff)(const gsl_function *, double, double *, double *))
+ int (*diff)(const gsl_function *, double, double *, double *))
{
gsl_function *f = NULL;
double result, abserr;
@@ -48,11 +48,6 @@ static VALUE rb_gsl_diff_eval(VALUE obj, VALUE xx,
gsl_matrix *m = NULL, *mnew = NULL, *merr = NULL;
size_t n, i, j;
int status;
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2, *ptr3;
- struct NARRAY *na;
- VALUE ary2, ary3;
-#endif
Data_Get_Struct(obj, gsl_function, f);
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
switch (TYPE(xx)) {
@@ -79,6 +74,9 @@ static VALUE rb_gsl_diff_eval(VALUE obj, VALUE xx,
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ double *ptr1, *ptr2, *ptr3;
+ struct NARRAY *na;
+ VALUE ary2, ary3;
GetNArray(xx, na);
n = na->total;
ptr1 = (double*) na->ptr;
@@ -87,9 +85,9 @@ static VALUE rb_gsl_diff_eval(VALUE obj, VALUE xx,
ptr2 = NA_PTR_TYPE(ary2, double*);
ptr3 = NA_PTR_TYPE(ary3, double*);
for (i = 0; i < n; i++) {
- (*diff)(f, ptr1[i], &result, &abserr);
- ptr2[i] = result;
- ptr3[i] = abserr;
+ (*diff)(f, ptr1[i], &result, &abserr);
+ ptr2[i] = result;
+ ptr3[i] = abserr;
}
return rb_ary_new3(2, ary2, ary3);
}
@@ -99,27 +97,27 @@ static VALUE rb_gsl_diff_eval(VALUE obj, VALUE xx,
vnew = gsl_vector_alloc(v->size);
verr = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- (*diff)(f, gsl_vector_get(v, i), &result, &abserr);
- gsl_vector_set(vnew, i, result);
- gsl_vector_set(verr, i, abserr);
+ (*diff)(f, gsl_vector_get(v, i), &result, &abserr);
+ gsl_vector_set(vnew, i, result);
+ gsl_vector_set(verr, i, abserr);
}
return rb_ary_new3(2,
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew),
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, verr));
+ Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew),
+ Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, verr));
} else if (MATRIX_P(xx)) {
Data_Get_Struct(xx, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
merr = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- (*diff)(f, gsl_matrix_get(m, i, j), &result, &abserr);
- gsl_matrix_set(mnew, i, j, result);
- gsl_matrix_set(merr, i, j, abserr);
- }
+ for (j = 0; j < m->size2; j++) {
+ (*diff)(f, gsl_matrix_get(m, i, j), &result, &abserr);
+ gsl_matrix_set(mnew, i, j, result);
+ gsl_matrix_set(merr, i, j, abserr);
+ }
}
- return rb_ary_new3(2,
- Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew),
- Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, merr));
+ return rb_ary_new3(2,
+ Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew),
+ Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, merr));
} else {
rb_raise(rb_eTypeError, "wrong argument type");
}
diff --git a/ext/gsl/dirac.c b/ext/gsl_native/dirac.c
similarity index 81%
rename from ext/gsl/dirac.c
rename to ext/gsl_native/dirac.c
index b9459cc..7c5dfc4 100644
--- a/ext/gsl/dirac.c
+++ b/ext/gsl_native/dirac.c
@@ -43,8 +43,8 @@ static VALUE rb_dirac_commute(VALUE obj, VALUE mm1, VALUE mm2)
gsl_matrix_complex_mul(mnew2, m2, m1);
gsl_matrix_complex_sub(mnew1, mnew2);
gsl_matrix_complex_free(mnew2);
- return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free,
- mnew1);
+ return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free,
+ mnew1);
}
static VALUE rb_dirac_anticommute(VALUE obj, VALUE mm1, VALUE mm2)
@@ -61,8 +61,8 @@ static VALUE rb_dirac_anticommute(VALUE obj, VALUE mm1, VALUE mm2)
gsl_matrix_complex_mul(mnew2, m2, m1);
gsl_matrix_complex_add(mnew1, mnew2);
gsl_matrix_complex_free(mnew2);
- return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free,
- mnew1);
+ return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free,
+ mnew1);
}
static void Init_gsl_dirac_common(VALUE module)
@@ -72,7 +72,7 @@ static void Init_gsl_dirac_common(VALUE module)
rb_define_singleton_method(module, "anticommute", rb_dirac_anticommute, 2);
cgsl_matrix_complex_const = rb_define_class_under(module, "Const",
- cgsl_matrix_complex);
+ cgsl_matrix_complex);
rb_define_method(cgsl_matrix_complex_const, "set", rb_dirac_refuse_set, -1);
cPauli = rb_define_class_under(module, "Pauli", cgsl_matrix_complex_const);
@@ -88,16 +88,16 @@ static void define_eye(VALUE module)
gsl_complex z;
Eye2 = gsl_matrix_complex_calloc(2, 2);
- VEye2 = Data_Wrap_Struct(cgsl_matrix_complex_const, 0,
- gsl_matrix_complex_free, Eye2);
+ VEye2 = Data_Wrap_Struct(cgsl_matrix_complex_const, 0,
+ gsl_matrix_complex_free, Eye2);
z.dat[0] = 1; z.dat[1] = 0;
gsl_matrix_complex_set(Eye2, 0, 0, z);
gsl_matrix_complex_set(Eye2, 1, 1, z);
rb_define_const(module, "Eye2", VEye2);
Eye4 = gsl_matrix_complex_calloc(4, 4);
- VEye4 = Data_Wrap_Struct(cgsl_matrix_complex_const, 0,
- gsl_matrix_complex_free, Eye4);
+ VEye4 = Data_Wrap_Struct(cgsl_matrix_complex_const, 0,
+ gsl_matrix_complex_free, Eye4);
z.dat[0] = 1; z.dat[1] = 0;
gsl_matrix_complex_set(Eye4, 0, 0, z);
gsl_matrix_complex_set(Eye4, 1, 1, z);
@@ -106,16 +106,16 @@ static void define_eye(VALUE module)
rb_define_const(module, "Eye4", VEye4);
IEye2 = gsl_matrix_complex_calloc(2, 2);
- VIEye2 = Data_Wrap_Struct(cgsl_matrix_complex_const, 0,
- gsl_matrix_complex_free, IEye2);
+ VIEye2 = Data_Wrap_Struct(cgsl_matrix_complex_const, 0,
+ gsl_matrix_complex_free, IEye2);
z.dat[0] = 0; z.dat[1] = 1;
gsl_matrix_complex_set(IEye2, 0, 0, z);
gsl_matrix_complex_set(IEye2, 1, 1, z);
rb_define_const(module, "IEye2", VIEye2);
IEye4 = gsl_matrix_complex_calloc(4, 4);
- VIEye4 = Data_Wrap_Struct(cgsl_matrix_complex_const, 0,
- gsl_matrix_complex_free, IEye4);
+ VIEye4 = Data_Wrap_Struct(cgsl_matrix_complex_const, 0,
+ gsl_matrix_complex_free, IEye4);
gsl_matrix_complex_set(IEye4, 0, 0, z);
gsl_matrix_complex_set(IEye4, 1, 1, z);
gsl_matrix_complex_set(IEye4, 2, 2, z);
@@ -128,16 +128,16 @@ static void define_pauli(VALUE module)
gsl_complex z;
Pauli[0] = gsl_matrix_complex_calloc(2, 2);
- VPauli[0] = Data_Wrap_Struct(cPauli, 0,
- gsl_matrix_complex_free, Pauli[0]);
+ VPauli[0] = Data_Wrap_Struct(cPauli, 0,
+ gsl_matrix_complex_free, Pauli[0]);
z.dat[0] = 1; z.dat[1] = 0;
gsl_matrix_complex_set(Pauli[0], 0, 1, z);
gsl_matrix_complex_set(Pauli[0], 1, 0, z);
rb_define_const(module, "Pauli1", VPauli[0]);
Pauli[1] = gsl_matrix_complex_calloc(2, 2);
- VPauli[1] = Data_Wrap_Struct(cPauli, 0,
- gsl_matrix_complex_free, Pauli[1]);
+ VPauli[1] = Data_Wrap_Struct(cPauli, 0,
+ gsl_matrix_complex_free, Pauli[1]);
z.dat[0] = 0; z.dat[1] = -1;
gsl_matrix_complex_set(Pauli[1], 0, 1, z);
z.dat[0] = 0; z.dat[1] = 1;
@@ -145,8 +145,8 @@ static void define_pauli(VALUE module)
rb_define_const(module, "Pauli2", VPauli[1]);
Pauli[2] = gsl_matrix_complex_calloc(2, 2);
- VPauli[2] = Data_Wrap_Struct(cPauli, 0,
- gsl_matrix_complex_free, Pauli[2]);
+ VPauli[2] = Data_Wrap_Struct(cPauli, 0,
+ gsl_matrix_complex_free, Pauli[2]);
z.dat[0] = 1; z.dat[1] = 0;
gsl_matrix_complex_set(Pauli[2], 0, 0, z);
z.dat[0] = -1; z.dat[1] = 0;
@@ -159,8 +159,8 @@ static void define_beta(VALUE module)
gsl_complex z;
Beta = gsl_matrix_complex_calloc(4, 4);
- VGamma[0] = Data_Wrap_Struct(cGamma, 0,
- gsl_matrix_complex_free, Beta);
+ VGamma[0] = Data_Wrap_Struct(cGamma, 0,
+ gsl_matrix_complex_free, Beta);
z.dat[0] = 1; z.dat[1] = 0;
gsl_matrix_complex_set(Beta, 0, 0, z);
gsl_matrix_complex_set(Beta, 1, 1, z);
@@ -180,22 +180,21 @@ static void define_alpha(VALUE module)
for (j = 2; j < 4; j++) {
for (k = 0; k < 2; k++) {
- gsl_matrix_complex_set(Alpha[i], j, k,
- gsl_matrix_complex_get(Pauli[i], j-2, k));
+ gsl_matrix_complex_set(Alpha[i], j, k,
+ gsl_matrix_complex_get(Pauli[i], j-2, k));
}
}
for (j = 0; j < 2; j++) {
for (k = 2; k < 4; k++) {
- gsl_matrix_complex_set(Alpha[i], j, k,
- gsl_matrix_complex_get(Pauli[i], j, k-2));
+ gsl_matrix_complex_set(Alpha[i], j, k,
+ gsl_matrix_complex_get(Pauli[i], j, k-2));
}
}
- VAlpha[i] = Data_Wrap_Struct(cAlpha, 0,
- gsl_matrix_complex_free, Alpha[i]);
+ VAlpha[i] = Data_Wrap_Struct(cAlpha, 0,
+ gsl_matrix_complex_free, Alpha[i]);
sprintf(name, "Alpha%d", (int) i+1);
rb_define_const(module, name, VAlpha[i]);
}
-
}
static void define_gamma(VALUE module)
@@ -206,8 +205,8 @@ static void define_gamma(VALUE module)
for (i = 1; i <= 3; i++) {
Gamma[i] = gsl_matrix_complex_calloc(4, 4);
gsl_matrix_complex_mul(Gamma[i], Beta, Alpha[i-1]);
- VGamma[i] = Data_Wrap_Struct(cGamma, 0,
- gsl_matrix_complex_free, Gamma[i]);
+ VGamma[i] = Data_Wrap_Struct(cGamma, 0,
+ gsl_matrix_complex_free, Gamma[i]);
sprintf(name, "Gamma%d", (int) i);
rb_define_const(module, name, VGamma[i]);
}
@@ -217,8 +216,8 @@ static void define_gamma(VALUE module)
gsl_matrix_complex_set(Gamma[4], 1, 3, z);
gsl_matrix_complex_set(Gamma[4], 2, 0, z);
gsl_matrix_complex_set(Gamma[4], 3, 1, z);
- VGamma[4] = Data_Wrap_Struct(cGamma, 0,
- gsl_matrix_complex_free, Gamma[4]);
+ VGamma[4] = Data_Wrap_Struct(cGamma, 0,
+ gsl_matrix_complex_free, Gamma[4]);
rb_define_const(module, "Gamma5", VGamma[4]);
}
@@ -234,8 +233,8 @@ static void define_lambda(VALUE module)
zmi.dat[0] = 0; zmi.dat[1] = -1;
for (i = 0; i < 8; i++) {
Lambda[i] = gsl_matrix_complex_calloc(3, 3);
- VLambda[i] = Data_Wrap_Struct(cLambda, 0,
- gsl_matrix_complex_free, Lambda[i]);
+ VLambda[i] = Data_Wrap_Struct(cLambda, 0,
+ gsl_matrix_complex_free, Lambda[i]);
sprintf(name, "Lambda%d", (int) i+1);
rb_define_const(module, name, VLambda[i]);
}
@@ -332,17 +331,17 @@ static VALUE rb_Dirac_matrix_is_equal(int argc, VALUE *argv, VALUE obj)
#define NUM 20
static VALUE rb_Dirac_matrix_whoami(int argc, VALUE *argv, VALUE obj)
{
- VALUE array[NUM] = {VPauli[0], VPauli[1], VPauli[2],
- VGamma[0], VGamma[1], VGamma[2], VGamma[3],
- VGamma[4], VEye2, VEye4, VIEye2, VIEye4,
- VLambda[0], VLambda[1], VLambda[2], VLambda[3],
- VLambda[4], VLambda[5], VLambda[6], VLambda[7]};
-
- const char *name[NUM] = {"Pauli1", "Pauli2", "Pauli3",
- "Gamma0", "Gamma1", "Gamma2", "Gamma3", "Gamma5",
- "Eye2", "Eye4", "IEye2", "IEye4", "Lambda1", "Lambda2",
- "Lambda3", "Lambda4", "Lambda5", "Lambda6",
- "Lambda7", "Lambda8"};
+ VALUE array[NUM] = {VPauli[0], VPauli[1], VPauli[2],
+ VGamma[0], VGamma[1], VGamma[2], VGamma[3],
+ VGamma[4], VEye2, VEye4, VIEye2, VIEye4,
+ VLambda[0], VLambda[1], VLambda[2], VLambda[3],
+ VLambda[4], VLambda[5], VLambda[6], VLambda[7]};
+
+ const char *name[NUM] = {"Pauli1", "Pauli2", "Pauli3",
+ "Gamma0", "Gamma1", "Gamma2", "Gamma3", "Gamma5",
+ "Eye2", "Eye4", "IEye2", "IEye4", "Lambda1", "Lambda2",
+ "Lambda3", "Lambda4", "Lambda5", "Lambda6",
+ "Lambda7", "Lambda8"};
gsl_matrix_complex *m1, *m2;
VALUE vz;
gsl_complex ztmp, *z;
diff --git a/ext/gsl/eigen.c b/ext/gsl_native/eigen.c
similarity index 64%
rename from ext/gsl/eigen.c
rename to ext/gsl_native/eigen.c
index 218af14..6e00056 100644
--- a/ext/gsl/eigen.c
+++ b/ext/gsl_native/eigen.c
@@ -33,12 +33,9 @@ static VALUE cgsl_eigen_herm_vectors;
static VALUE cgsl_eigen_francis_workspace;
#endif
-#ifdef GSL_1_9_LATER
static VALUE cgsl_eigen_nonsymm_workspace;
static VALUE cgsl_eigen_nonsymmv_workspace;
-#endif
-#ifdef GSL_1_10_LATER
static VALUE cgensymm, mgensymm;
static VALUE cgensymmv, mgensymmv;
static VALUE cgenherm, mgenherm;
@@ -46,15 +43,14 @@ static VALUE cgenhermv, mgenhermv;
static VALUE mgen, mgenv;
static VALUE cgenw, cgenvw;
-#endif
static VALUE rb_gsl_eigen_symm_alloc(VALUE klass, VALUE nn)
{
gsl_eigen_symm_workspace *w = NULL;
CHECK_FIXNUM(nn);
w = gsl_eigen_symm_alloc(FIX2INT(nn));
- return Data_Wrap_Struct(cgsl_eigen_symm_workspace, 0,
- gsl_eigen_symm_free, w);
+ return Data_Wrap_Struct(cgsl_eigen_symm_workspace, 0,
+ gsl_eigen_symm_free, w);
}
static VALUE rb_gsl_eigen_symmv_alloc(VALUE klass, VALUE nn)
@@ -70,8 +66,8 @@ static VALUE rb_gsl_eigen_herm_alloc(VALUE klass, VALUE nn)
gsl_eigen_herm_workspace *w = NULL;
CHECK_FIXNUM(nn);
w = gsl_eigen_herm_alloc(FIX2INT(nn));
- return Data_Wrap_Struct(cgsl_eigen_herm_workspace, 0,
- gsl_eigen_herm_free, w);
+ return Data_Wrap_Struct(cgsl_eigen_herm_workspace, 0,
+ gsl_eigen_herm_free, w);
}
static VALUE rb_gsl_eigen_hermv_alloc(VALUE klass, VALUE nn)
@@ -79,12 +75,64 @@ static VALUE rb_gsl_eigen_hermv_alloc(VALUE klass, VALUE nn)
gsl_eigen_hermv_workspace *w = NULL;
CHECK_FIXNUM(nn);
w = gsl_eigen_hermv_alloc(FIX2INT(nn));
- return Data_Wrap_Struct(cgsl_eigen_hermv_workspace, 0,
- gsl_eigen_hermv_free, w);
+ return Data_Wrap_Struct(cgsl_eigen_hermv_workspace, 0,
+ gsl_eigen_hermv_free, w);
}
#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_eigen_symm_narray(int argc, VALUE *argv, VALUE obj);
+static VALUE rb_gsl_eigen_symm_narray(int argc, VALUE *argv, VALUE obj)
+{
+ struct NARRAY *na;
+ VALUE nary;
+ gsl_matrix *A = NULL;
+ gsl_eigen_symm_workspace *w = NULL;
+ gsl_vector_view vv;
+ int shape[1];
+ int flagw = 0;
+ switch (argc) {
+ case 2:
+ if (!NA_IsNArray(argv[0]))
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
+ rb_class2name(CLASS_OF(argv[0])));
+ GetNArray(argv[0], na);
+ if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
+ if (na->shape[0] != na->shape[1])
+ rb_raise(rb_eRuntimeError, "square matrix required");
+ A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
+ memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
+ if (CLASS_OF(argv[1]) != cgsl_eigen_symm_workspace)
+ rb_raise(rb_eTypeError,
+ "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
+ rb_class2name(CLASS_OF(argv[1])));
+ Data_Get_Struct(argv[1], gsl_eigen_symm_workspace, w);
+ flagw = 0;
+ break;
+ case 1:
+ if (!NA_IsNArray(argv[0]))
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
+ rb_class2name(CLASS_OF(argv[0])));
+ GetNArray(argv[0], na);
+ if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
+ if (na->shape[0] != na->shape[1])
+ rb_raise(rb_eRuntimeError, "square matrix required");
+ A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
+ memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
+ w = gsl_eigen_symm_alloc(A->size1);
+ flagw = 1;
+ break;
+ default:
+ rb_raise(rb_eArgError, "matrix not given");
+ break;
+ }
+ shape[0] = A->size1;
+ nary = na_make_object(NA_DFLOAT, 1, shape, cNVector);
+ vv = gsl_vector_view_array(NA_PTR_TYPE(nary,double*), A->size1);
+ gsl_eigen_symm(A, &vv.vector, w);
+ /* gsl_sort_vector(v);*/
+ gsl_matrix_free(A);
+ if (flagw == 1) gsl_eigen_symm_free(w);
+ return nary;
+}
#endif
static VALUE rb_gsl_eigen_symm(int argc, VALUE *argv, VALUE obj)
@@ -100,19 +148,19 @@ static VALUE rb_gsl_eigen_symm(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 2:
#ifdef HAVE_NARRAY_H
- if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symm_narray(argc, argv, obj);
+ if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symm_narray(argc, argv, obj);
#endif
CHECK_MATRIX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix, Atmp);
if (CLASS_OF(argv[1]) != cgsl_eigen_symm_workspace)
- rb_raise(rb_eTypeError,
- "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_raise(rb_eTypeError,
+ "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected)",
+ rb_class2name(CLASS_OF(argv[1])));
Data_Get_Struct(argv[1], gsl_eigen_symm_workspace, w);
break;
case 1:
#ifdef HAVE_NARRAY_H
- if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symm_narray(argc, argv, obj);
+ if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symm_narray(argc, argv, obj);
#endif
CHECK_MATRIX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix, Atmp);
@@ -130,10 +178,9 @@ static VALUE rb_gsl_eigen_symm(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 1:
if (CLASS_OF(argv[0]) != cgsl_eigen_symm_workspace)
- rb_raise(rb_eTypeError,
- "argv[0]: wrong argument type %s (Eigen::Symm::Workspace expected",
- rb_class2name(CLASS_OF(argv[0])));
-
+ rb_raise(rb_eTypeError,
+ "argv[0]: wrong argument type %s (Eigen::Symm::Workspace expected",
+ rb_class2name(CLASS_OF(argv[0])));
Data_Get_Struct(argv[0], gsl_eigen_symm_workspace, w);
break;
case 0:
@@ -154,65 +201,66 @@ static VALUE rb_gsl_eigen_symm(int argc, VALUE *argv, VALUE obj)
}
#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_eigen_symm_narray(int argc, VALUE *argv, VALUE obj)
+static VALUE rb_gsl_eigen_symmv_narray(int argc, VALUE *argv, VALUE obj)
{
struct NARRAY *na;
- VALUE nary;
+ VALUE eval, evec;
gsl_matrix *A = NULL;
- gsl_eigen_symm_workspace *w = NULL;
+ gsl_eigen_symmv_workspace *w = NULL;
+ gsl_matrix_view mv;
gsl_vector_view vv;
- int shape[1];
+ int shape1[1], shape2[2];
int flagw = 0;
switch (argc) {
case 2:
- if (!NA_IsNArray(argv[0]))
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ if (!NA_IsNArray(argv[0]))
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
+ rb_class2name(CLASS_OF(argv[0])));
GetNArray(argv[0], na);
if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
if (na->shape[0] != na->shape[1])
rb_raise(rb_eRuntimeError, "square matrix required");
A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
- if (CLASS_OF(argv[1]) != cgsl_eigen_symm_workspace)
- rb_raise(rb_eTypeError,
- "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
- rb_class2name(CLASS_OF(argv[1])));
- Data_Get_Struct(argv[1], gsl_eigen_symm_workspace, w);
+ if (CLASS_OF(argv[1]) != cgsl_eigen_symmv_workspace)
+ rb_raise(rb_eTypeError,
+ "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
+ rb_class2name(CLASS_OF(argv[1])));
+ Data_Get_Struct(argv[1], gsl_eigen_symmv_workspace, w);
flagw = 0;
break;
case 1:
- if (!NA_IsNArray(argv[0]))
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ if (!NA_IsNArray(argv[0]))
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
+ rb_class2name(CLASS_OF(argv[0])));
GetNArray(argv[0], na);
if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
if (na->shape[0] != na->shape[1])
rb_raise(rb_eRuntimeError, "square matrix required");
A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
- w = gsl_eigen_symm_alloc(A->size1);
+ w = gsl_eigen_symmv_alloc(A->size1);
flagw = 1;
break;
default:
rb_raise(rb_eArgError, "matrix not given");
break;
}
- shape[0] = A->size1;
- nary = na_make_object(NA_DFLOAT, 1, shape, cNVector);
- vv = gsl_vector_view_array(NA_PTR_TYPE(nary,double*), A->size1);
- gsl_eigen_symm(A, &vv.vector, w);
+ shape1[0] = A->size1;
+ shape2[0] = A->size1;
+ shape2[1] = A->size1;
+ eval = na_make_object(NA_DFLOAT, 1, shape1, cNVector);
+ evec = na_make_object(NA_DFLOAT, 2, shape2, CLASS_OF(argv[0]));
+ vv = gsl_vector_view_array(NA_PTR_TYPE(eval,double*), A->size1);
+ mv = gsl_matrix_view_array(NA_PTR_TYPE(evec,double*), A->size1, A->size2);
+ gsl_eigen_symmv(A, &vv.vector, &mv.matrix, w);
/* gsl_sort_vector(v);*/
gsl_matrix_free(A);
- if (flagw == 1) gsl_eigen_symm_free(w);
- return nary;
+ if (flagw == 1) gsl_eigen_symmv_free(w);
+ return rb_ary_new3(2, eval, evec);
}
#endif
-#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_eigen_symmv_narray(int argc, VALUE *argv, VALUE obj);
-#endif
-
static VALUE rb_gsl_eigen_symmv(int argc, VALUE *argv, VALUE obj)
{
gsl_matrix *Atmp = NULL, *A = NULL, *em = NULL;
@@ -227,19 +275,19 @@ static VALUE rb_gsl_eigen_symmv(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 2:
#ifdef HAVE_NARRAY_H
- if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symmv_narray(argc, argv, obj);
+ if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symmv_narray(argc, argv, obj);
#endif
CHECK_MATRIX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix, Atmp);
if (CLASS_OF(argv[1]) != cgsl_eigen_symmv_workspace)
- rb_raise(rb_eTypeError,
- "argv[1]: wrong argument type %s (Eigen::Symmv::Workspace expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_raise(rb_eTypeError,
+ "argv[1]: wrong argument type %s (Eigen::Symmv::Workspace expected)",
+ rb_class2name(CLASS_OF(argv[1])));
Data_Get_Struct(argv[1], gsl_eigen_symmv_workspace, w);
break;
case 1:
#ifdef HAVE_NARRAY_H
- if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symmv_narray(argc, argv, obj);
+ if (NA_IsNArray(argv[0])) return rb_gsl_eigen_symmv_narray(argc, argv, obj);
#endif
CHECK_MATRIX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix, Atmp);
@@ -256,10 +304,9 @@ static VALUE rb_gsl_eigen_symmv(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 1:
if (CLASS_OF(argv[0]) != cgsl_eigen_symmv_workspace)
- rb_raise(rb_eTypeError,
- "argv[0]: wrong argument type %s (Eigen::Symmv::Workspace expected)",
- rb_class2name(CLASS_OF(argv[0])));
-
+ rb_raise(rb_eTypeError,
+ "argv[0]: wrong argument type %s (Eigen::Symmv::Workspace expected)",
+ rb_class2name(CLASS_OF(argv[0])));
Data_Get_Struct(argv[0], gsl_eigen_symmv_workspace, w);
break;
case 0:
@@ -283,67 +330,6 @@ static VALUE rb_gsl_eigen_symmv(int argc, VALUE *argv, VALUE obj)
return rb_ary_new3(2, vval, vvec);
}
-#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_eigen_symmv_narray(int argc, VALUE *argv, VALUE obj)
-{
- struct NARRAY *na;
- VALUE eval, evec;
- gsl_matrix *A = NULL;
- gsl_eigen_symmv_workspace *w = NULL;
- gsl_matrix_view mv;
- gsl_vector_view vv;
- int shape1[1], shape2[2];
- int flagw = 0;
- switch (argc) {
- case 2:
- if (!NA_IsNArray(argv[0]))
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
- rb_class2name(CLASS_OF(argv[0])));
- GetNArray(argv[0], na);
- if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
- if (na->shape[0] != na->shape[1])
- rb_raise(rb_eRuntimeError, "square matrix required");
- A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
- memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
- if (CLASS_OF(argv[1]) != cgsl_eigen_symmv_workspace)
- rb_raise(rb_eTypeError,
- "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
- rb_class2name(CLASS_OF(argv[1])));
- Data_Get_Struct(argv[1], gsl_eigen_symmv_workspace, w);
- flagw = 0;
- break;
- case 1:
- if (!NA_IsNArray(argv[0]))
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
- rb_class2name(CLASS_OF(argv[0])));
- GetNArray(argv[0], na);
- if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
- if (na->shape[0] != na->shape[1])
- rb_raise(rb_eRuntimeError, "square matrix required");
- A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
- memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
- w = gsl_eigen_symmv_alloc(A->size1);
- flagw = 1;
- break;
- default:
- rb_raise(rb_eArgError, "matrix not given");
- break;
- }
- shape1[0] = A->size1;
- shape2[0] = A->size1;
- shape2[1] = A->size1;
- eval = na_make_object(NA_DFLOAT, 1, shape1, cNVector);
- evec = na_make_object(NA_DFLOAT, 2, shape2, CLASS_OF(argv[0]));
- vv = gsl_vector_view_array(NA_PTR_TYPE(eval,double*), A->size1);
- mv = gsl_matrix_view_array(NA_PTR_TYPE(evec,double*), A->size1, A->size2);
- gsl_eigen_symmv(A, &vv.vector, &mv.matrix, w);
- /* gsl_sort_vector(v);*/
- gsl_matrix_free(A);
- if (flagw == 1) gsl_eigen_symmv_free(w);
- return rb_ary_new3(2, eval, evec);
-}
-#endif
-
static VALUE rb_gsl_eigen_herm(int argc, VALUE *argv, VALUE obj)
{
gsl_matrix_complex *Atmp = NULL, *A = NULL;
@@ -360,9 +346,9 @@ static VALUE rb_gsl_eigen_herm(int argc, VALUE *argv, VALUE obj)
CHECK_MATRIX_COMPLEX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix_complex, Atmp);
if (CLASS_OF(argv[1]) != cgsl_eigen_herm_workspace)
- rb_raise(rb_eTypeError,
- "argv[1]: wrong argument type %s (Eigen::Herm::Workspace expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_raise(rb_eTypeError,
+ "argv[1]: wrong argument type %s (Eigen::Herm::Workspace expected)",
+ rb_class2name(CLASS_OF(argv[1])));
Data_Get_Struct(argv[1], gsl_eigen_herm_workspace, w);
break;
case 1:
@@ -381,10 +367,9 @@ static VALUE rb_gsl_eigen_herm(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 1:
if (CLASS_OF(argv[0]) != cgsl_eigen_herm_workspace)
- rb_raise(rb_eTypeError,
- "argv[0]: wrong argument type %s (Eigen::Herm::Workspace expected)",
- rb_class2name(CLASS_OF(argv[0])));
-
+ rb_raise(rb_eTypeError,
+ "argv[0]: wrong argument type %s (Eigen::Herm::Workspace expected)",
+ rb_class2name(CLASS_OF(argv[0])));
Data_Get_Struct(argv[0], gsl_eigen_herm_workspace, w);
break;
case 0:
@@ -420,9 +405,9 @@ static VALUE rb_gsl_eigen_hermv(int argc, VALUE *argv, VALUE obj)
CHECK_MATRIX_COMPLEX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix_complex, Atmp);
if (CLASS_OF(argv[1]) != cgsl_eigen_hermv_workspace)
- rb_raise(rb_eTypeError,
- "argv[1]: wrong argument type %s (Eigen::Hermv::Workspace expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_raise(rb_eTypeError,
+ "argv[1]: wrong argument type %s (Eigen::Hermv::Workspace expected)",
+ rb_class2name(CLASS_OF(argv[1])));
Data_Get_Struct(argv[1], gsl_eigen_hermv_workspace, w);
break;
case 1:
@@ -441,10 +426,9 @@ static VALUE rb_gsl_eigen_hermv(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 1:
if (CLASS_OF(argv[0]) != cgsl_eigen_hermv_workspace)
- rb_raise(rb_eTypeError,
- "argv[0]: wrong argument type %s (Eigen::Hermv::Workspace expected)",
- rb_class2name(CLASS_OF(argv[0])));
-
+ rb_raise(rb_eTypeError,
+ "argv[0]: wrong argument type %s (Eigen::Hermv::Workspace expected)",
+ rb_class2name(CLASS_OF(argv[0])));
Data_Get_Struct(argv[0], gsl_eigen_hermv_workspace, w);
break;
case 0:
@@ -500,7 +484,7 @@ static VALUE rb_gsl_eigen_vectors_complex_unpack(VALUE obj)
for (i = 0; i < m->size1; i++) {
v = gsl_vector_complex_alloc(m->size2);
for (j = 0; j < m->size2; j++) {
- z= gsl_matrix_complex_get(m, j, i);
+ z = gsl_matrix_complex_get(m, j, i);
gsl_vector_complex_set(v, j, z);
}
tmp = Data_Wrap_Struct(cgsl_eigen_vector_complex, 0, gsl_vector_complex_free, v);
@@ -515,7 +499,7 @@ static void rb_gsl_eigen_define_const(VALUE topmodule, VALUE module)
rb_define_const(topmodule, "EIGEN_SORT_VAL_DESC", INT2FIX(GSL_EIGEN_SORT_VAL_DESC));
rb_define_const(topmodule, "EIGEN_SORT_ABS_ASC", INT2FIX(GSL_EIGEN_SORT_ABS_ASC));
rb_define_const(topmodule, "EIGEN_SORT_ABS_DESC", INT2FIX(GSL_EIGEN_SORT_ABS_DESC));
-
+
rb_define_const(module, "SORT_VAL_ASC", INT2FIX(GSL_EIGEN_SORT_VAL_ASC));
rb_define_const(module, "SORT_VAL_DESC", INT2FIX(GSL_EIGEN_SORT_VAL_DESC));
rb_define_const(module, "SORT_ABS_ASC", INT2FIX(GSL_EIGEN_SORT_ABS_ASC));
@@ -528,7 +512,7 @@ static void rb_gsl_eigen_define_const(VALUE topmodule, VALUE module)
}
static VALUE rb_gsl_eigen_real_sort(int argc, VALUE *argv, VALUE obj,
- int (*sortfunc)(gsl_vector*, gsl_matrix*, gsl_eigen_sort_t))
+ int (*sortfunc)(gsl_vector*, gsl_matrix*, gsl_eigen_sort_t))
{
gsl_vector *v = NULL;
gsl_matrix *m = NULL;
@@ -537,10 +521,10 @@ static VALUE rb_gsl_eigen_real_sort(int argc, VALUE *argv, VALUE obj,
case 3:
CHECK_FIXNUM(argv[2]);
type = FIX2INT(argv[2]);
- /* no break, do next */
+ /* no break, do next */
case 2:
if (argv[0] == Qnil) {
- v = NULL;
+ v = NULL;
} else {
CHECK_VECTOR(argv[0]);
Data_Get_Struct(argv[0], gsl_vector, v);
@@ -560,7 +544,7 @@ static VALUE rb_gsl_eigen_real_sort(int argc, VALUE *argv, VALUE obj,
static VALUE rb_gsl_eigen_complex_sort(int argc, VALUE *argv, VALUE obj,
- int (*sortfunc)(gsl_vector*, gsl_matrix_complex*, gsl_eigen_sort_t))
+ int (*sortfunc)(gsl_vector*, gsl_matrix_complex*, gsl_eigen_sort_t))
{
gsl_vector *v = NULL;
gsl_matrix_complex *m = NULL;
@@ -570,7 +554,7 @@ static VALUE rb_gsl_eigen_complex_sort(int argc, VALUE *argv, VALUE obj,
case 3:
CHECK_FIXNUM(argv[2]);
type = FIX2INT(argv[2]);
- /* no break, do next */
+ /* no break, do next */
case 2:
if (argv[0] == Qnil) {
v = NULL;
@@ -582,7 +566,7 @@ static VALUE rb_gsl_eigen_complex_sort(int argc, VALUE *argv, VALUE obj,
m = NULL;
} else {
CHECK_MATRIX_COMPLEX(argv[1]);
- Data_Get_Struct(argv[1], gsl_matrix_complex, m);
+ Data_Get_Struct(argv[1], gsl_matrix_complex, m);
}
break;
default:
@@ -596,7 +580,7 @@ static VALUE rb_gsl_eigen_symmv_sort(int argc, VALUE *argv, VALUE obj)
}
static VALUE rb_gsl_eigen_hermv_sort(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_eigen_complex_sort(argc, argv, obj, gsl_eigen_hermv_sort);
+ return rb_gsl_eigen_complex_sort(argc, argv, obj, gsl_eigen_hermv_sort);
}
@@ -626,7 +610,59 @@ static VALUE rb_gsl_eigen_francis_T(int argc, VALUE *argv, VALUE obj)
}
#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_eigen_francis_narray(int argc, VALUE *argv, VALUE obj);
+static VALUE rb_gsl_eigen_francis_narray(int argc, VALUE *argv, VALUE obj)
+{
+ struct NARRAY *na;
+ VALUE nary;
+ gsl_matrix *A = NULL;
+ gsl_eigen_francis_workspace *w = NULL;
+ gsl_vector_complex_view vv;
+ int shape[1];
+ int flagw = 0;
+ switch (argc) {
+ case 2:
+ if (!NA_IsNArray(argv[0]))
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
+ rb_class2name(CLASS_OF(argv[0])));
+ GetNArray(argv[0], na);
+ if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
+ if (na->shape[0] != na->shape[1])
+ rb_raise(rb_eRuntimeError, "square matrix required");
+ A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
+ memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
+ if (CLASS_OF(argv[1]) != cgsl_eigen_francis_workspace)
+ rb_raise(rb_eTypeError,
+ "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
+ rb_class2name(CLASS_OF(argv[1])));
+ Data_Get_Struct(argv[1], gsl_eigen_francis_workspace, w);
+ flagw = 0;
+ break;
+ case 1:
+ if (!NA_IsNArray(argv[0]))
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
+ rb_class2name(CLASS_OF(argv[0])));
+ GetNArray(argv[0], na);
+ if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
+ if (na->shape[0] != na->shape[1])
+ rb_raise(rb_eRuntimeError, "square matrix required");
+ A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
+ memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
+ w = gsl_eigen_francis_alloc();
+ flagw = 1;
+ break;
+ default:
+ rb_raise(rb_eArgError, "matrix not given");
+ break;
+ }
+ shape[0] = A->size1;
+ nary = na_make_object(NA_DCOMPLEX, 1, shape, cNVector);
+ vv = gsl_vector_complex_view_array(NA_PTR_TYPE(nary,double*), A->size1);
+ gsl_eigen_francis(A, &vv.vector, w);
+ /* gsl_sort_vector(v);*/
+ gsl_matrix_free(A);
+ if (flagw == 1) gsl_eigen_francis_free(w);
+ return nary;
+}
#endif
static VALUE rb_gsl_eigen_francis(int argc, VALUE *argv, VALUE obj)
@@ -640,7 +676,7 @@ static VALUE rb_gsl_eigen_francis(int argc, VALUE *argv, VALUE obj)
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(obj)) return rb_gsl_eigen_francis_narray(argc, argv, obj);
- if (argc >= 1 && NA_IsNArray(argv[0]))
+ if (argc >= 1 && NA_IsNArray(argv[0]))
return rb_gsl_eigen_francis_narray(argc, argv, obj);
#endif
@@ -654,7 +690,6 @@ static VALUE rb_gsl_eigen_francis(int argc, VALUE *argv, VALUE obj)
istart = 1;
argv2 = argv + 1;
}
-
switch (argc-istart) {
case 0:
v = gsl_vector_complex_alloc(m->size1);
@@ -666,7 +701,7 @@ static VALUE rb_gsl_eigen_francis(int argc, VALUE *argv, VALUE obj)
if (CLASS_OF(argv2[0]) == cgsl_vector_complex) {
Data_Get_Struct(argv2[0], gsl_vector_complex, v);
w = gsl_eigen_francis_alloc();
- wflag = 1;
+ wflag = 1;
} else if (CLASS_OF(argv2[0]) == cgsl_eigen_francis_workspace) {
v = gsl_vector_complex_alloc(m->size1);
vflag = 1;
@@ -696,62 +731,6 @@ static VALUE rb_gsl_eigen_francis(int argc, VALUE *argv, VALUE obj)
return argv2[0];
}
-#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_eigen_francis_narray(int argc, VALUE *argv, VALUE obj)
-{
- struct NARRAY *na;
- VALUE nary;
- gsl_matrix *A = NULL;
- gsl_eigen_francis_workspace *w = NULL;
- gsl_vector_complex_view vv;
- int shape[1];
- int flagw = 0;
- switch (argc) {
- case 2:
- if (!NA_IsNArray(argv[0]))
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
- rb_class2name(CLASS_OF(argv[0])));
- GetNArray(argv[0], na);
- if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
- if (na->shape[0] != na->shape[1])
- rb_raise(rb_eRuntimeError, "square matrix required");
- A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
- memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
- if (CLASS_OF(argv[1]) != cgsl_eigen_francis_workspace)
- rb_raise(rb_eTypeError,
- "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
- rb_class2name(CLASS_OF(argv[1])));
- Data_Get_Struct(argv[1], gsl_eigen_francis_workspace, w);
- flagw = 0;
- break;
- case 1:
- if (!NA_IsNArray(argv[0]))
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
- rb_class2name(CLASS_OF(argv[0])));
- GetNArray(argv[0], na);
- if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
- if (na->shape[0] != na->shape[1])
- rb_raise(rb_eRuntimeError, "square matrix required");
- A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
- memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
- w = gsl_eigen_francis_alloc();
- flagw = 1;
- break;
- default:
- rb_raise(rb_eArgError, "matrix not given");
- break;
- }
- shape[0] = A->size1;
- nary = na_make_object(NA_DCOMPLEX, 1, shape, cNVector);
- vv = gsl_vector_complex_view_array(NA_PTR_TYPE(nary,double*), A->size1);
- gsl_eigen_francis(A, &vv.vector, w);
- /* gsl_sort_vector(v);*/
- gsl_matrix_free(A);
- if (flagw == 1) gsl_eigen_francis_free(w);
- return nary;
-}
-#endif
-
static VALUE rb_gsl_eigen_francis_Z(int argc, VALUE *argv, VALUE obj)
{
gsl_matrix *m, *mtmp, *Z;
@@ -771,7 +750,6 @@ static VALUE rb_gsl_eigen_francis_Z(int argc, VALUE *argv, VALUE obj)
istart = 1;
argv2 = argv + 1;
}
-
switch (argc-istart) {
case 0:
v = gsl_vector_complex_alloc(m->size1);
@@ -819,7 +797,6 @@ static VALUE rb_gsl_eigen_francis_Z(int argc, VALUE *argv, VALUE obj)
}
#endif
-#ifdef GSL_1_9_LATER
static VALUE rb_gsl_eigen_nonsymm_alloc(VALUE klass, VALUE nn)
{
size_t n;
@@ -852,78 +829,7 @@ static VALUE rb_gsl_eigen_nonsymm_params(int argc, VALUE *argv, VALUE obj)
}
#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_eigen_nonsymm_narray(int argc, VALUE *argv, VALUE obj);
-#endif
-
-static VALUE rb_gsl_eigen_nonsymm(int argc, VALUE *argv, VALUE obj)
-{
- gsl_matrix *m;
- gsl_vector_complex *v;
- gsl_eigen_nonsymm_workspace *w;
- int vflag = 0, wflag = 0;
- int istart = 0;
- VALUE *argv2;
-
-#ifdef HAVE_NARRAY_H
- if (NA_IsNArray(obj)) return rb_gsl_eigen_nonsymm_narray(argc, argv, obj);
- if (argc >= 1 && NA_IsNArray(argv[0]))
- return rb_gsl_eigen_nonsymm_narray(argc, argv, obj);
-#endif
-
- if (MATRIX_P(obj)) {
- Data_Get_Struct(obj, gsl_matrix, m);
- argv2 = argv;
- istart = 0;
- } else {
- if (argc < 1) rb_raise(rb_eArgError, "Wrong number of arguments.\n");
- Data_Get_Struct(argv[0], gsl_matrix, m);
- istart = 1;
- argv2 = argv + 1;
- }
-
- switch (argc-istart) {
- case 0:
- v = gsl_vector_complex_alloc(m->size1);
- w = gsl_eigen_nonsymm_alloc(m->size1);
- vflag = 1;
- wflag = 1;
- break;
- case 1:
- if (CLASS_OF(argv2[0]) == cgsl_vector_complex) {
- Data_Get_Struct(argv2[0], gsl_vector_complex, v);
- w = gsl_eigen_nonsymm_alloc(m->size1);
- wflag = 1;
- } else if (CLASS_OF(argv2[0]) == cgsl_eigen_nonsymm_workspace) {
- v = gsl_vector_complex_alloc(m->size1);
- vflag = 1;
- Data_Get_Struct(argv2[0], gsl_eigen_nonsymm_workspace, w);
- } else {
- rb_raise(rb_eArgError, "Wrong argument type.\n");
- }
- break;
- case 2:
- CHECK_VECTOR_COMPLEX(argv2[0]);
- if (CLASS_OF(argv2[1]) != cgsl_eigen_nonsymm_workspace) {
- rb_raise(rb_eArgError, "argv[1] must be a GSL::Eigen::Nonsymm::Workspace.\n");
- }
- Data_Get_Struct(argv2[0], gsl_vector_complex, v);
- Data_Get_Struct(argv2[1], gsl_eigen_nonsymm_workspace, w);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments (%d for 0-2).\n", argc);
- }
-// mtmp = make_matrix_clone(m);
- gsl_eigen_nonsymm(m, v, w);
-// gsl_matrix_free(mtmp);
- if (wflag == 1) gsl_eigen_nonsymm_free(w);
- if (vflag == 1)
- return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, v);
- else
- return argv2[0];
-}
-
-#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_eigen_nonsymm_narray(int argc, VALUE *argv, VALUE obj)
+static VALUE rb_gsl_eigen_nonsymm_narray(int argc, VALUE *argv, VALUE obj)
{
struct NARRAY *na;
VALUE nary;
@@ -934,9 +840,9 @@ static VALUE rb_gsl_eigen_nonsymm_narray(int argc, VALUE *argv, VALUE obj)
int flagw = 0;
switch (argc) {
case 2:
- if (!NA_IsNArray(argv[0]))
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ if (!NA_IsNArray(argv[0]))
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
+ rb_class2name(CLASS_OF(argv[0])));
GetNArray(argv[0], na);
if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
if (na->shape[0] != na->shape[1])
@@ -944,16 +850,16 @@ static VALUE rb_gsl_eigen_nonsymm_narray(int argc, VALUE *argv, VALUE obj)
A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
if (CLASS_OF(argv[1]) != cgsl_eigen_nonsymm_workspace)
- rb_raise(rb_eTypeError,
- "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_raise(rb_eTypeError,
+ "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
+ rb_class2name(CLASS_OF(argv[1])));
Data_Get_Struct(argv[1], gsl_eigen_nonsymm_workspace, w);
flagw = 0;
break;
case 1:
- if (!NA_IsNArray(argv[0]))
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ if (!NA_IsNArray(argv[0]))
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
+ rb_class2name(CLASS_OF(argv[0])));
GetNArray(argv[0], na);
if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
if (na->shape[0] != na->shape[1])
@@ -978,6 +884,72 @@ static VALUE rb_gsl_eigen_nonsymm_narray(int argc, VALUE *argv, VALUE obj)
}
#endif
+static VALUE rb_gsl_eigen_nonsymm(int argc, VALUE *argv, VALUE obj)
+{
+ gsl_matrix *m;
+ gsl_vector_complex *v;
+ gsl_eigen_nonsymm_workspace *w;
+ int vflag = 0, wflag = 0;
+ int istart = 0;
+ VALUE *argv2;
+
+#ifdef HAVE_NARRAY_H
+ if (NA_IsNArray(obj)) return rb_gsl_eigen_nonsymm_narray(argc, argv, obj);
+ if (argc >= 1 && NA_IsNArray(argv[0]))
+ return rb_gsl_eigen_nonsymm_narray(argc, argv, obj);
+#endif
+
+ if (MATRIX_P(obj)) {
+ Data_Get_Struct(obj, gsl_matrix, m);
+ argv2 = argv;
+ istart = 0;
+ } else {
+ if (argc < 1) rb_raise(rb_eArgError, "Wrong number of arguments.\n");
+ Data_Get_Struct(argv[0], gsl_matrix, m);
+ istart = 1;
+ argv2 = argv + 1;
+ }
+ switch (argc-istart) {
+ case 0:
+ v = gsl_vector_complex_alloc(m->size1);
+ w = gsl_eigen_nonsymm_alloc(m->size1);
+ vflag = 1;
+ wflag = 1;
+ break;
+ case 1:
+ if (CLASS_OF(argv2[0]) == cgsl_vector_complex) {
+ Data_Get_Struct(argv2[0], gsl_vector_complex, v);
+ w = gsl_eigen_nonsymm_alloc(m->size1);
+ wflag = 1;
+ } else if (CLASS_OF(argv2[0]) == cgsl_eigen_nonsymm_workspace) {
+ v = gsl_vector_complex_alloc(m->size1);
+ vflag = 1;
+ Data_Get_Struct(argv2[0], gsl_eigen_nonsymm_workspace, w);
+ } else {
+ rb_raise(rb_eArgError, "Wrong argument type.\n");
+ }
+ break;
+ case 2:
+ CHECK_VECTOR_COMPLEX(argv2[0]);
+ if (CLASS_OF(argv2[1]) != cgsl_eigen_nonsymm_workspace) {
+ rb_raise(rb_eArgError, "argv[1] must be a GSL::Eigen::Nonsymm::Workspace.\n");
+ }
+ Data_Get_Struct(argv2[0], gsl_vector_complex, v);
+ Data_Get_Struct(argv2[1], gsl_eigen_nonsymm_workspace, w);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 0-2).\n", argc);
+ }
+// mtmp = make_matrix_clone(m);
+ gsl_eigen_nonsymm(m, v, w);
+// gsl_matrix_free(mtmp);
+ if (wflag == 1) gsl_eigen_nonsymm_free(w);
+ if (vflag == 1)
+ return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, v);
+ else
+ return argv2[0];
+}
+
static VALUE rb_gsl_eigen_nonsymm_Z(int argc, VALUE *argv, VALUE obj)
{
gsl_matrix *m, *Z;
@@ -997,7 +969,6 @@ static VALUE rb_gsl_eigen_nonsymm_Z(int argc, VALUE *argv, VALUE obj)
istart = 1;
argv2 = argv + 1;
}
-
switch (argc-istart) {
case 0:
v = gsl_vector_complex_alloc(m->size1);
@@ -1054,7 +1025,62 @@ static VALUE rb_gsl_eigen_nonsymmv_alloc(VALUE klass, VALUE nn)
}
#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_eigen_nonsymmv_narray(int argc, VALUE *argv, VALUE obj);
+static VALUE rb_gsl_eigen_nonsymmv_narray(int argc, VALUE *argv, VALUE obj)
+{
+ struct NARRAY *na;
+ VALUE nary, nvec;
+ gsl_matrix *A = NULL;
+ gsl_eigen_nonsymmv_workspace *w = NULL;
+ gsl_vector_complex_view vv;
+ gsl_matrix_complex_view mm;
+ int shape[1], shape2[2];
+ int flagw = 0;
+ switch (argc) {
+ case 2:
+ if (!NA_IsNArray(argv[0]))
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
+ rb_class2name(CLASS_OF(argv[0])));
+ GetNArray(argv[0], na);
+ if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
+ if (na->shape[0] != na->shape[1])
+ rb_raise(rb_eRuntimeError, "square matrix required");
+ A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
+ memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
+ if (CLASS_OF(argv[1]) != cgsl_eigen_nonsymmv_workspace)
+ rb_raise(rb_eTypeError,
+ "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
+ rb_class2name(CLASS_OF(argv[1])));
+ Data_Get_Struct(argv[1], gsl_eigen_nonsymmv_workspace, w);
+ flagw = 0;
+ break;
+ case 1:
+ if (!NA_IsNArray(argv[0]))
+ rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
+ rb_class2name(CLASS_OF(argv[0])));
+ GetNArray(argv[0], na);
+ if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
+ if (na->shape[0] != na->shape[1])
+ rb_raise(rb_eRuntimeError, "square matrix required");
+ A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
+ memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
+ w = gsl_eigen_nonsymmv_alloc(A->size1);
+ flagw = 1;
+ break;
+ default:
+ rb_raise(rb_eArgError, "matrix not given");
+ break;
+ }
+ shape[0] = A->size1; shape2[0] = A->size1; shape2[1] = A->size2;
+ nary = na_make_object(NA_DCOMPLEX, 1, shape, cNVector);
+ vv = gsl_vector_complex_view_array(NA_PTR_TYPE(nary,double*), A->size1);
+ nvec = na_make_object(NA_DCOMPLEX, 2, shape2, CLASS_OF(argv[0]));
+ mm = gsl_matrix_complex_view_array(NA_PTR_TYPE(nvec,double*), A->size1, A->size2);
+ gsl_eigen_nonsymmv(A, &vv.vector, &mm.matrix, w);
+ /* gsl_sort_vector(v);*/
+ gsl_matrix_free(A);
+ if (flagw == 1) gsl_eigen_nonsymmv_free(w);
+ return rb_ary_new3(2, nary, nvec);
+}
#endif
static VALUE rb_gsl_eigen_nonsymmv(int argc, VALUE *argv, VALUE obj)
@@ -1069,7 +1095,7 @@ static VALUE rb_gsl_eigen_nonsymmv(int argc, VALUE *argv, VALUE obj)
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(obj)) return rb_gsl_eigen_nonsymmv_narray(argc, argv, obj);
- if (argc >= 1 && NA_IsNArray(argv[0]))
+ if (argc >= 1 && NA_IsNArray(argv[0]))
return rb_gsl_eigen_nonsymmv_narray(argc, argv, obj);
#endif
@@ -1083,7 +1109,6 @@ static VALUE rb_gsl_eigen_nonsymmv(int argc, VALUE *argv, VALUE obj)
istart = 1;
argv2 = argv + 1;
}
-
switch (argc-istart) {
case 0:
v = gsl_vector_complex_alloc(m->size1);
@@ -1127,73 +1152,14 @@ static VALUE rb_gsl_eigen_nonsymmv(int argc, VALUE *argv, VALUE obj)
if (wflag == 1) gsl_eigen_nonsymmv_free(w);
if (vflag == 1) {
- return rb_ary_new3(2,
- Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, v),
- Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, evec));
+ return rb_ary_new3(2,
+ Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, v),
+ Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, evec));
} else {
return rb_ary_new3(2, argv2[0], argv2[1]);
}
}
-#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_eigen_nonsymmv_narray(int argc, VALUE *argv, VALUE obj)
-{
- struct NARRAY *na;
- VALUE nary, nvec;
- gsl_matrix *A = NULL;
- gsl_eigen_nonsymmv_workspace *w = NULL;
- gsl_vector_complex_view vv;
- gsl_matrix_complex_view mm;
- int shape[1], shape2[2];
- int flagw = 0;
- switch (argc) {
- case 2:
- if (!NA_IsNArray(argv[0]))
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
- rb_class2name(CLASS_OF(argv[0])));
- GetNArray(argv[0], na);
- if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
- if (na->shape[0] != na->shape[1])
- rb_raise(rb_eRuntimeError, "square matrix required");
- A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
- memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
- if (CLASS_OF(argv[1]) != cgsl_eigen_nonsymmv_workspace)
- rb_raise(rb_eTypeError,
- "argv[1]: wrong argument type %s (Eigen::Symm::Workspace expected",
- rb_class2name(CLASS_OF(argv[1])));
- Data_Get_Struct(argv[1], gsl_eigen_nonsymmv_workspace, w);
- flagw = 0;
- break;
- case 1:
- if (!NA_IsNArray(argv[0]))
- rb_raise(rb_eTypeError, "wrong argument type %s (NArray expected)",
- rb_class2name(CLASS_OF(argv[0])));
- GetNArray(argv[0], na);
- if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
- if (na->shape[0] != na->shape[1])
- rb_raise(rb_eRuntimeError, "square matrix required");
- A = gsl_matrix_alloc(na->shape[1], na->shape[0]);
- memcpy(A->data, (double*) na->ptr, sizeof(double)*A->size1*A->size2);
- w = gsl_eigen_nonsymmv_alloc(A->size1);
- flagw = 1;
- break;
- default:
- rb_raise(rb_eArgError, "matrix not given");
- break;
- }
- shape[0] = A->size1; shape2[0] = A->size1; shape2[1] = A->size2;
- nary = na_make_object(NA_DCOMPLEX, 1, shape, cNVector);
- vv = gsl_vector_complex_view_array(NA_PTR_TYPE(nary,double*), A->size1);
- nvec = na_make_object(NA_DCOMPLEX, 2, shape2, CLASS_OF(argv[0]));
- mm = gsl_matrix_complex_view_array(NA_PTR_TYPE(nvec,double*), A->size1, A->size2);
- gsl_eigen_nonsymmv(A, &vv.vector, &mm.matrix, w);
- /* gsl_sort_vector(v);*/
- gsl_matrix_free(A);
- if (flagw == 1) gsl_eigen_nonsymmv_free(w);
- return rb_ary_new3(2, nary, nvec);
-}
-#endif
-
static VALUE rb_gsl_eigen_nonsymmv_Z(int argc, VALUE *argv, VALUE obj)
{
gsl_matrix *m, *Z = NULL;
@@ -1214,7 +1180,6 @@ static VALUE rb_gsl_eigen_nonsymmv_Z(int argc, VALUE *argv, VALUE obj)
istart = 1;
argv2 = argv + 1;
}
-
switch (argc-istart) {
case 0:
v = gsl_vector_complex_alloc(m->size1);
@@ -1262,17 +1227,17 @@ static VALUE rb_gsl_eigen_nonsymmv_Z(int argc, VALUE *argv, VALUE obj)
if (wflag == 1) gsl_eigen_nonsymmv_free(w);
if (vflag == 1) {
- return rb_ary_new3(3,
- Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, v),
- Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, evec),
-Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Z));
+ return rb_ary_new3(3,
+ Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, v),
+ Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, evec),
+ Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Z));
} else {
return rb_ary_new3(2, argv2[0], argv2[1], argv2[2]);
}
}
static VALUE rb_gsl_eigen_complex_sort2(int argc, VALUE *argv, VALUE obj,
- int (*sortfunc)(gsl_vector_complex*, gsl_matrix_complex*, gsl_eigen_sort_t))
+ int (*sortfunc)(gsl_vector_complex*, gsl_matrix_complex*, gsl_eigen_sort_t))
{
gsl_vector_complex *v = NULL;
gsl_matrix_complex *m = NULL;
@@ -1282,19 +1247,19 @@ static VALUE rb_gsl_eigen_complex_sort2(int argc, VALUE *argv, VALUE obj,
case 3:
CHECK_FIXNUM(argv[2]);
type = FIX2INT(argv[2]);
- /* no break, do next */
+ /* no break, do next */
case 2:
if (argv[0] == Qnil) {
v = NULL;
} else {
CHECK_VECTOR_COMPLEX(argv[0]);
- Data_Get_Struct(argv[0], gsl_vector_complex, v);
+ Data_Get_Struct(argv[0], gsl_vector_complex, v);
}
if (argv[1] == Qnil) {
m = NULL;
} else {
CHECK_MATRIX_COMPLEX(argv[1]);
- Data_Get_Struct(argv[1], gsl_matrix_complex, m);
+ Data_Get_Struct(argv[1], gsl_matrix_complex, m);
}
break;
default:
@@ -1306,13 +1271,9 @@ static VALUE rb_gsl_eigen_complex_sort2(int argc, VALUE *argv, VALUE obj,
static VALUE rb_gsl_eigen_nonsymmv_sort(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_eigen_complex_sort2(argc, argv, obj, gsl_eigen_nonsymmv_sort);
+ return rb_gsl_eigen_complex_sort2(argc, argv, obj, gsl_eigen_nonsymmv_sort);
}
-#endif
-
-#ifdef GSL_1_10_LATER
-
static VALUE rb_gsl_eigen_gensymm_alloc(VALUE klass, VALUE nn)
{
gsl_eigen_gensymm_workspace *w = NULL;
@@ -1343,373 +1304,371 @@ static VALUE rb_gsl_eigen_genhermv_alloc(VALUE klass, VALUE nn)
}
static int check_argv_gensymm(int argc, VALUE *argv, VALUE obj, gsl_matrix **A, gsl_matrix **B,
- gsl_vector **eval, gsl_eigen_gensymm_workspace **w)
+ gsl_vector **eval, gsl_eigen_gensymm_workspace **w)
{
- int argc2 = argc;
- int flag = 0;
- if (CLASS_OF(obj) == cgensymm) {
- Data_Get_Struct(obj, gsl_eigen_gensymm_workspace, *w);
- } else {
- if (rb_obj_is_kind_of(argv[argc-1], cgensymm)) {
- Data_Get_Struct(argv[argc-1], gsl_eigen_gensymm_workspace, *w);
- argc2 = argc-1;
- } else {
- /* workspace is not given */
- }
- }
- switch (argc2) {
- case 2:
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix, *A);
- Data_Get_Struct(argv[1], gsl_matrix, *B);
- break;
- case 3:
- if (rb_obj_is_kind_of(argv[2], cgensymm)) {
- Data_Get_Struct(argv[2], gsl_eigen_gensymm_workspace, *w);
- } else {
- CHECK_VECTOR(argv[2]);
- Data_Get_Struct(argv[2], gsl_vector, *eval);
- }
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix, *A);
- Data_Get_Struct(argv[1], gsl_matrix, *B);
- break;
- default:
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
- }
- if (*eval == NULL) {
- *eval = gsl_vector_alloc((*A)->size1);
- flag += 1;
- }
- if (*w == NULL) {
- *w = gsl_eigen_gensymm_alloc((*A)->size1);
- flag += 2;
- }
- return flag;
+ int argc2 = argc;
+ int flag = 0;
+ if (CLASS_OF(obj) == cgensymm) {
+ Data_Get_Struct(obj, gsl_eigen_gensymm_workspace, *w);
+ } else {
+ if (rb_obj_is_kind_of(argv[argc-1], cgensymm)) {
+ Data_Get_Struct(argv[argc-1], gsl_eigen_gensymm_workspace, *w);
+ argc2 = argc-1;
+ } else {
+ /* workspace is not given */
+ }
+ }
+ switch (argc2) {
+ case 2:
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
+ break;
+ case 3:
+ if (rb_obj_is_kind_of(argv[2], cgensymm)) {
+ Data_Get_Struct(argv[2], gsl_eigen_gensymm_workspace, *w);
+ } else {
+ CHECK_VECTOR(argv[2]);
+ Data_Get_Struct(argv[2], gsl_vector, *eval);
+ }
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
+ break;
+ default:
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
+ }
+ if (*eval == NULL) {
+ *eval = gsl_vector_alloc((*A)->size1);
+ flag += 1;
+ }
+ if (*w == NULL) {
+ *w = gsl_eigen_gensymm_alloc((*A)->size1);
+ flag += 2;
+ }
+ return flag;
}
static int check_argv_gensymmv(int argc, VALUE *argv, VALUE obj, gsl_matrix **A, gsl_matrix **B,
- gsl_vector **eval, gsl_matrix **evec, gsl_eigen_gensymmv_workspace **w)
+ gsl_vector **eval, gsl_matrix **evec, gsl_eigen_gensymmv_workspace **w)
{
- int argc2 = argc;
- int flag = 0;
- if (CLASS_OF(obj) == cgensymmv) {
- Data_Get_Struct(obj, gsl_eigen_gensymmv_workspace, *w);
- } else {
- if (rb_obj_is_kind_of(argv[argc-1], cgensymmv)) {
- Data_Get_Struct(argv[argc-1], gsl_eigen_gensymmv_workspace, *w);
- argc2 = argc-1;
- } else {
-
- /* workspace is not given */
- }
- }
-
- switch (argc2) {
- case 2:
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix, *A);
- Data_Get_Struct(argv[1], gsl_matrix, *B);
- break;
- case 3:
- if (rb_obj_is_kind_of(argv[2], cgensymmv)) {
- Data_Get_Struct(argv[2], gsl_eigen_gensymmv_workspace, *w);
- } else {
+ int argc2 = argc;
+ int flag = 0;
+ if (CLASS_OF(obj) == cgensymmv) {
+ Data_Get_Struct(obj, gsl_eigen_gensymmv_workspace, *w);
+ } else {
+ if (rb_obj_is_kind_of(argv[argc-1], cgensymmv)) {
+ Data_Get_Struct(argv[argc-1], gsl_eigen_gensymmv_workspace, *w);
+ argc2 = argc-1;
+ } else {
+
+ /* workspace is not given */
+ }
+ }
+ switch (argc2) {
+ case 2:
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
+ break;
+ case 3:
+ if (rb_obj_is_kind_of(argv[2], cgensymmv)) {
+ Data_Get_Struct(argv[2], gsl_eigen_gensymmv_workspace, *w);
+ } else {
rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigen::Gensymmv::Workspace expected)",
- rb_class2name(CLASS_OF(argv[2])));
- }
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix, *A);
- Data_Get_Struct(argv[1], gsl_matrix, *B);
-
- break;
- case 5:
- if (rb_obj_is_kind_of(argv[4], cgensymmv)) {
- Data_Get_Struct(argv[4], gsl_eigen_gensymmv_workspace, *w);
- } else {
+ rb_class2name(CLASS_OF(argv[2])));
+ }
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
+
+ break;
+ case 5:
+ if (rb_obj_is_kind_of(argv[4], cgensymmv)) {
+ Data_Get_Struct(argv[4], gsl_eigen_gensymmv_workspace, *w);
+ } else {
rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigen::Gensymmv::Workspace expected)",
- rb_class2name(CLASS_OF(argv[4])));
+ rb_class2name(CLASS_OF(argv[4])));
}
- CHECK_VECTOR(argv[2]);
- Data_Get_Struct(argv[2], gsl_vector, *eval);
- CHECK_MATRIX(argv[3]);
- Data_Get_Struct(argv[3], gsl_matrix, *evec);
-
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix, *A);
- Data_Get_Struct(argv[1], gsl_matrix, *B);
- break;
- default:
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 5)", argc);
- }
- if (*eval == NULL && *evec == NULL) {
- *eval = gsl_vector_alloc((*A)->size1);
- *evec = gsl_matrix_alloc((*A)->size1, (*A)->size2);
- flag += 1;
- }
- if (*w == NULL) {
- *w = gsl_eigen_gensymmv_alloc((*A)->size1);
- flag += 2;
- }
- return flag;
+ CHECK_VECTOR(argv[2]);
+ Data_Get_Struct(argv[2], gsl_vector, *eval);
+ CHECK_MATRIX(argv[3]);
+ Data_Get_Struct(argv[3], gsl_matrix, *evec);
+
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
+ break;
+ default:
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 5)", argc);
+ }
+ if (*eval == NULL && *evec == NULL) {
+ *eval = gsl_vector_alloc((*A)->size1);
+ *evec = gsl_matrix_alloc((*A)->size1, (*A)->size2);
+ flag += 1;
+ }
+ if (*w == NULL) {
+ *w = gsl_eigen_gensymmv_alloc((*A)->size1);
+ flag += 2;
+ }
+ return flag;
}
static int check_argv_genherm(int argc, VALUE *argv, VALUE obj, gsl_matrix_complex **A, gsl_matrix_complex **B,
- gsl_vector **eval, gsl_eigen_genherm_workspace **w)
+ gsl_vector **eval, gsl_eigen_genherm_workspace **w)
{
- int argc2 = argc;
- int flag = 0;
- if (CLASS_OF(obj) == cgenherm) {
- Data_Get_Struct(obj, gsl_eigen_genherm_workspace, *w);
- } else {
- if (rb_obj_is_kind_of(argv[argc-1], cgenherm)) {
- Data_Get_Struct(argv[argc-1], gsl_eigen_genherm_workspace, *w);
- argc2 = argc-1;
- } else {
- /* workspace is not given */
- }
- }
- switch (argc2) {
- case 2:
- CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
- Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
- break;
- case 3:
- if (rb_obj_is_kind_of(argv[2], cgenherm)) {
- Data_Get_Struct(argv[2], gsl_eigen_genherm_workspace, *w);
- } else {
- CHECK_VECTOR(argv[2]);
- Data_Get_Struct(argv[2], gsl_vector, *eval);
- }
- CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
- Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
- break;
- default:
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
- }
- if (*eval == NULL) {
- *eval = gsl_vector_alloc((*A)->size1);
- flag += 1;
- }
- if (*w == NULL) {
- *w = gsl_eigen_genherm_alloc((*A)->size1);
- flag += 2;
- }
- return flag;
+ int argc2 = argc;
+ int flag = 0;
+ if (CLASS_OF(obj) == cgenherm) {
+ Data_Get_Struct(obj, gsl_eigen_genherm_workspace, *w);
+ } else {
+ if (rb_obj_is_kind_of(argv[argc-1], cgenherm)) {
+ Data_Get_Struct(argv[argc-1], gsl_eigen_genherm_workspace, *w);
+ argc2 = argc-1;
+ } else {
+ /* workspace is not given */
+ }
+ }
+ switch (argc2) {
+ case 2:
+ CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
+ Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
+ break;
+ case 3:
+ if (rb_obj_is_kind_of(argv[2], cgenherm)) {
+ Data_Get_Struct(argv[2], gsl_eigen_genherm_workspace, *w);
+ } else {
+ CHECK_VECTOR(argv[2]);
+ Data_Get_Struct(argv[2], gsl_vector, *eval);
+ }
+ CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
+ Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
+ break;
+ default:
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
+ }
+ if (*eval == NULL) {
+ *eval = gsl_vector_alloc((*A)->size1);
+ flag += 1;
+ }
+ if (*w == NULL) {
+ *w = gsl_eigen_genherm_alloc((*A)->size1);
+ flag += 2;
+ }
+ return flag;
}
static int check_argv_genhermv(int argc, VALUE *argv, VALUE obj, gsl_matrix_complex **A, gsl_matrix_complex **B,
- gsl_vector **eval, gsl_matrix_complex **evec, gsl_eigen_genhermv_workspace **w)
+ gsl_vector **eval, gsl_matrix_complex **evec, gsl_eigen_genhermv_workspace **w)
{
- int argc2 = argc;
- int flag = 0;
- if (CLASS_OF(obj) == cgenhermv) {
- Data_Get_Struct(obj, gsl_eigen_genhermv_workspace, *w);
- } else {
- if (rb_obj_is_kind_of(argv[argc-1], cgenhermv)) {
- Data_Get_Struct(argv[argc-1], gsl_eigen_genhermv_workspace, *w);
- argc2 = argc-1;
- } else {
-
- /* workspace is not given */
- }
- }
-
- switch (argc2) {
- case 2:
- CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
- Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
- break;
- case 3:
- if (rb_obj_is_kind_of(argv[2], cgenhermv)) {
- Data_Get_Struct(argv[2], gsl_eigen_genhermv_workspace, *w);
- } else {
+ int argc2 = argc;
+ int flag = 0;
+ if (CLASS_OF(obj) == cgenhermv) {
+ Data_Get_Struct(obj, gsl_eigen_genhermv_workspace, *w);
+ } else {
+ if (rb_obj_is_kind_of(argv[argc-1], cgenhermv)) {
+ Data_Get_Struct(argv[argc-1], gsl_eigen_genhermv_workspace, *w);
+ argc2 = argc-1;
+ } else {
+
+ /* workspace is not given */
+ }
+ }
+ switch (argc2) {
+ case 2:
+ CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
+ Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
+ break;
+ case 3:
+ if (rb_obj_is_kind_of(argv[2], cgenhermv)) {
+ Data_Get_Struct(argv[2], gsl_eigen_genhermv_workspace, *w);
+ } else {
rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigen::Genhermv::Workspace expected)",
- rb_class2name(CLASS_OF(argv[2])));
- }
- CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
- Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
-
- break;
- case 5:
- if (rb_obj_is_kind_of(argv[4], cgenhermv)) {
- Data_Get_Struct(argv[4], gsl_eigen_genhermv_workspace, *w);
- } else {
+ rb_class2name(CLASS_OF(argv[2])));
+ }
+ CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
+ Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
+
+ break;
+ case 5:
+ if (rb_obj_is_kind_of(argv[4], cgenhermv)) {
+ Data_Get_Struct(argv[4], gsl_eigen_genhermv_workspace, *w);
+ } else {
rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigen::Genhermv::Workspace expected)",
- rb_class2name(CLASS_OF(argv[4])));
+ rb_class2name(CLASS_OF(argv[4])));
}
- CHECK_VECTOR(argv[2]);
- Data_Get_Struct(argv[2], gsl_vector, *eval);
- CHECK_MATRIX_COMPLEX(argv[3]);
- Data_Get_Struct(argv[3], gsl_matrix_complex, *evec);
-
- CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
- Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
- break;
- default:
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 5)", argc);
- }
- if (*eval == NULL && *evec == NULL) {
- *eval = gsl_vector_alloc((*A)->size1);
- *evec = gsl_matrix_complex_alloc((*A)->size1, (*A)->size2);
- flag += 1;
- }
- if (*w == NULL) {
- *w = gsl_eigen_genhermv_alloc((*A)->size1);
- flag += 2;
- }
- return flag;
+ CHECK_VECTOR(argv[2]);
+ Data_Get_Struct(argv[2], gsl_vector, *eval);
+ CHECK_MATRIX_COMPLEX(argv[3]);
+ Data_Get_Struct(argv[3], gsl_matrix_complex, *evec);
+
+ CHECK_MATRIX_COMPLEX(argv[0]); CHECK_MATRIX_COMPLEX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix_complex, *A);
+ Data_Get_Struct(argv[1], gsl_matrix_complex, *B);
+ break;
+ default:
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 5)", argc);
+ }
+ if (*eval == NULL && *evec == NULL) {
+ *eval = gsl_vector_alloc((*A)->size1);
+ *evec = gsl_matrix_complex_alloc((*A)->size1, (*A)->size2);
+ flag += 1;
+ }
+ if (*w == NULL) {
+ *w = gsl_eigen_genhermv_alloc((*A)->size1);
+ flag += 2;
+ }
+ return flag;
}
static VALUE rb_gsl_eigen_gensymm(int argc, VALUE *argv, VALUE obj)
{
- gsl_matrix *A = NULL, *B = NULL;
- gsl_matrix *Atmp = NULL;
- gsl_vector *eval = NULL;
- gsl_eigen_gensymm_workspace *w = NULL;
- int flag;
- VALUE veval = Qnil;
- flag = check_argv_gensymm(argc, argv, obj, &A, &B, &eval, &w);
+ gsl_matrix *A = NULL, *B = NULL;
+ gsl_matrix *Atmp = NULL;
+ gsl_vector *eval = NULL;
+ gsl_eigen_gensymm_workspace *w = NULL;
+ int flag;
+ VALUE veval = Qnil;
+ flag = check_argv_gensymm(argc, argv, obj, &A, &B, &eval, &w);
Atmp = make_matrix_clone(A);
-// Btmp = make_matrix_clone(B);
- gsl_eigen_gensymm(Atmp, B, eval, w);
+// Btmp = make_matrix_clone(B);
+ gsl_eigen_gensymm(Atmp, B, eval, w);
gsl_matrix_free(Atmp);
-// gsl_matrix_free(Btmp);
- switch (flag) {
- case 0:
- veval = argv[2];
- break;
- case 1:
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
- break;
- case 2:
- veval = argv[2];
- gsl_eigen_gensymm_free(w);
- break;
- case 3:
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
- gsl_eigen_gensymm_free(w);
- break;
- }
-
- return veval;
+// gsl_matrix_free(Btmp);
+ switch (flag) {
+ case 0:
+ veval = argv[2];
+ break;
+ case 1:
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
+ break;
+ case 2:
+ veval = argv[2];
+ gsl_eigen_gensymm_free(w);
+ break;
+ case 3:
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
+ gsl_eigen_gensymm_free(w);
+ break;
+ }
+
+ return veval;
}
static VALUE rb_gsl_eigen_gensymmv(int argc, VALUE *argv, VALUE obj)
{
- gsl_matrix *A = NULL, *B = NULL;
- gsl_matrix *Atmp = NULL;
- gsl_vector *eval = NULL;
- gsl_matrix *evec = NULL;
- gsl_eigen_gensymmv_workspace *w = NULL;
- int flag;
- VALUE veval = Qnil, vevec = Qnil;
- flag = check_argv_gensymmv(argc, argv, obj, &A, &B, &eval, &evec, &w);
+ gsl_matrix *A = NULL, *B = NULL;
+ gsl_matrix *Atmp = NULL;
+ gsl_vector *eval = NULL;
+ gsl_matrix *evec = NULL;
+ gsl_eigen_gensymmv_workspace *w = NULL;
+ int flag;
+ VALUE veval = Qnil, vevec = Qnil;
+ flag = check_argv_gensymmv(argc, argv, obj, &A, &B, &eval, &evec, &w);
Atmp = make_matrix_clone(A);
-// Btmp = make_matrix_clone(B);
- gsl_eigen_gensymmv(Atmp, B, eval, evec, w);
+// Btmp = make_matrix_clone(B);
+ gsl_eigen_gensymmv(Atmp, B, eval, evec, w);
gsl_matrix_free(Atmp);
-// gsl_matrix_free(Btmp);
-
- switch (flag) {
- case 0:
- veval = argv[2];
- vevec = argv[3];
- break;
- case 1:
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
- vevec = Data_Wrap_Struct(cgsl_eigen_vectors, 0, gsl_matrix_free, evec);
- break;
- case 2:
- veval = argv[2];
- vevec = argv[3];
- gsl_eigen_gensymmv_free(w);
- break;
- case 3:
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
- vevec = Data_Wrap_Struct(cgsl_eigen_vectors, 0, gsl_matrix_free, evec);
- gsl_eigen_gensymmv_free(w);
- break;
- }
-
- return rb_ary_new3(2, veval, vevec);
+// gsl_matrix_free(Btmp);
+
+ switch (flag) {
+ case 0:
+ veval = argv[2];
+ vevec = argv[3];
+ break;
+ case 1:
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
+ vevec = Data_Wrap_Struct(cgsl_eigen_vectors, 0, gsl_matrix_free, evec);
+ break;
+ case 2:
+ veval = argv[2];
+ vevec = argv[3];
+ gsl_eigen_gensymmv_free(w);
+ break;
+ case 3:
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
+ vevec = Data_Wrap_Struct(cgsl_eigen_vectors, 0, gsl_matrix_free, evec);
+ gsl_eigen_gensymmv_free(w);
+ break;
+ }
+
+ return rb_ary_new3(2, veval, vevec);
}
static VALUE rb_gsl_eigen_genherm(int argc, VALUE *argv, VALUE obj)
{
- gsl_matrix_complex *A = NULL, *B = NULL;
- gsl_matrix_complex *Atmp = NULL, *Btmp = NULL;
- gsl_vector *eval = NULL;
- gsl_eigen_genherm_workspace *w = NULL;
- int flag;
- VALUE veval = Qnil;
- flag = check_argv_genherm(argc, argv, obj, &A, &B, &eval, &w);
+ gsl_matrix_complex *A = NULL, *B = NULL;
+ gsl_matrix_complex *Atmp = NULL, *Btmp = NULL;
+ gsl_vector *eval = NULL;
+ gsl_eigen_genherm_workspace *w = NULL;
+ int flag;
+ VALUE veval = Qnil;
+ flag = check_argv_genherm(argc, argv, obj, &A, &B, &eval, &w);
Atmp = make_matrix_complex_clone(A);
- Btmp = make_matrix_complex_clone(B);
- gsl_eigen_genherm(Atmp, Btmp, eval, w);
+ Btmp = make_matrix_complex_clone(B);
+ gsl_eigen_genherm(Atmp, Btmp, eval, w);
gsl_matrix_complex_free(Atmp);
- gsl_matrix_complex_free(Btmp);
- switch (flag) {
- case 0:
- veval = argv[2];
- break;
- case 1:
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
- break;
- case 2:
- veval = argv[2];
- gsl_eigen_genherm_free(w);
- break;
- case 3:
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
- gsl_eigen_genherm_free(w);
- break;
- }
-
- return veval;
+ gsl_matrix_complex_free(Btmp);
+ switch (flag) {
+ case 0:
+ veval = argv[2];
+ break;
+ case 1:
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
+ break;
+ case 2:
+ veval = argv[2];
+ gsl_eigen_genherm_free(w);
+ break;
+ case 3:
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
+ gsl_eigen_genherm_free(w);
+ break;
+ }
+
+ return veval;
}
static VALUE rb_gsl_eigen_genhermv(int argc, VALUE *argv, VALUE obj)
{
- gsl_matrix_complex *A = NULL, *B = NULL;
- gsl_matrix_complex *Atmp = NULL, *Btmp = NULL;
- gsl_vector *eval = NULL;
- gsl_matrix_complex *evec = NULL;
- gsl_eigen_genhermv_workspace *w = NULL;
- int flag;
- VALUE veval = Qnil, vevec = Qnil;
- flag = check_argv_genhermv(argc, argv, obj, &A, &B, &eval, &evec, &w);
+ gsl_matrix_complex *A = NULL, *B = NULL;
+ gsl_matrix_complex *Atmp = NULL, *Btmp = NULL;
+ gsl_vector *eval = NULL;
+ gsl_matrix_complex *evec = NULL;
+ gsl_eigen_genhermv_workspace *w = NULL;
+ int flag;
+ VALUE veval = Qnil, vevec = Qnil;
+ flag = check_argv_genhermv(argc, argv, obj, &A, &B, &eval, &evec, &w);
Atmp = make_matrix_complex_clone(A);
- Btmp = make_matrix_complex_clone(B);
- gsl_eigen_genhermv(Atmp, Btmp, eval, evec, w);
+ Btmp = make_matrix_complex_clone(B);
+ gsl_eigen_genhermv(Atmp, Btmp, eval, evec, w);
gsl_matrix_complex_free(Atmp);
- gsl_matrix_complex_free(Btmp);
-
- switch (flag) {
- case 0:
- veval = argv[2];
- vevec = argv[3];
- break;
- case 1:
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
- vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
- break;
- case 2:
- veval = argv[2];
- vevec = argv[3];
- gsl_eigen_genhermv_free(w);
- break;
- case 3:
- veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
- vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
- gsl_eigen_genhermv_free(w);
- break;
- }
-
- return rb_ary_new3(2, veval, vevec);
+ gsl_matrix_complex_free(Btmp);
+
+ switch (flag) {
+ case 0:
+ veval = argv[2];
+ vevec = argv[3];
+ break;
+ case 1:
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
+ vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
+ break;
+ case 2:
+ veval = argv[2];
+ vevec = argv[3];
+ gsl_eigen_genhermv_free(w);
+ break;
+ case 3:
+ veval = Data_Wrap_Struct(cgsl_eigen_values, 0, gsl_vector_free, eval);
+ vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
+ gsl_eigen_genhermv_free(w);
+ break;
+ }
+
+ return rb_ary_new3(2, veval, vevec);
}
static VALUE rb_gsl_eigen_gensymmv_sort(int argc, VALUE *argv, VALUE obj)
@@ -1718,7 +1677,7 @@ static VALUE rb_gsl_eigen_gensymmv_sort(int argc, VALUE *argv, VALUE obj)
}
static VALUE rb_gsl_eigen_genhermv_sort(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_eigen_complex_sort(argc, argv, obj, gsl_eigen_genhermv_sort);
+ return rb_gsl_eigen_complex_sort(argc, argv, obj, gsl_eigen_genhermv_sort);
}
static VALUE rb_gsl_eigen_gen_alloc(VALUE klass, VALUE n)
@@ -1744,9 +1703,9 @@ static VALUE rb_gsl_eigen_gen_params(int argc, VALUE *argv, VALUE obj)
istart = 0;
} else {
if (argc != 4) rb_raise(rb_eArgError, "too few arguments (%d for 3)\n", argc);
- if (CLASS_OF(argv[3]) != cgenw)
+ if (CLASS_OF(argv[3]) != cgenw)
rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigen::Gen::Workspace expected)",
- rb_class2name(CLASS_OF(argv[3])));
+ rb_class2name(CLASS_OF(argv[3])));
Data_Get_Struct(argv[3], gsl_eigen_gen_workspace, w);
istart = 1;
}
@@ -1761,318 +1720,316 @@ static VALUE rb_gsl_eigen_gen_params(int argc, VALUE *argv, VALUE obj)
}
static int check_argv_gen(int argc, VALUE *argv, VALUE obj, gsl_matrix **A, gsl_matrix **B,
- gsl_vector_complex **alpha, gsl_vector **beta, gsl_eigen_gen_workspace **w)
+ gsl_vector_complex **alpha, gsl_vector **beta, gsl_eigen_gen_workspace **w)
{
- int argc2 = argc;
- int flag = 0;
- if (CLASS_OF(obj) == cgenw) {
- Data_Get_Struct(obj, gsl_eigen_gen_workspace, *w);
- } else {
- if (rb_obj_is_kind_of(argv[argc-1], cgenw)) {
- Data_Get_Struct(argv[argc-1], gsl_eigen_gen_workspace, *w);
- argc2 = argc-1;
- } else {
-
- /* workspace is not given */
- }
- }
-
- switch (argc2) {
- case 2:
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix, *A);
- Data_Get_Struct(argv[1], gsl_matrix, *B);
- break;
- case 3:
- if (rb_obj_is_kind_of(argv[2], cgenw)) {
- Data_Get_Struct(argv[2], gsl_eigen_gen_workspace, *w);
- } else {
+ int argc2 = argc;
+ int flag = 0;
+ if (CLASS_OF(obj) == cgenw) {
+ Data_Get_Struct(obj, gsl_eigen_gen_workspace, *w);
+ } else {
+ if (rb_obj_is_kind_of(argv[argc-1], cgenw)) {
+ Data_Get_Struct(argv[argc-1], gsl_eigen_gen_workspace, *w);
+ argc2 = argc-1;
+ } else {
+
+ /* workspace is not given */
+ }
+ }
+ switch (argc2) {
+ case 2:
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
+ break;
+ case 3:
+ if (rb_obj_is_kind_of(argv[2], cgenw)) {
+ Data_Get_Struct(argv[2], gsl_eigen_gen_workspace, *w);
+ } else {
rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigen::Gen::Workspace expected)",
- rb_class2name(CLASS_OF(argv[2])));
- }
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix, *A);
- Data_Get_Struct(argv[1], gsl_matrix, *B);
- break;
- case 5:
- if (rb_obj_is_kind_of(argv[4], cgenw)) {
- Data_Get_Struct(argv[4], gsl_eigen_gen_workspace, *w);
- } else {
+ rb_class2name(CLASS_OF(argv[2])));
+ }
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
+ break;
+ case 5:
+ if (rb_obj_is_kind_of(argv[4], cgenw)) {
+ Data_Get_Struct(argv[4], gsl_eigen_gen_workspace, *w);
+ } else {
rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigen::Gen::Workspace expected)",
- rb_class2name(CLASS_OF(argv[4])));
+ rb_class2name(CLASS_OF(argv[4])));
}
- CHECK_VECTOR_COMPLEX(argv[2]);
- Data_Get_Struct(argv[2], gsl_vector_complex, *alpha);
- CHECK_VECTOR(argv[3]);
- Data_Get_Struct(argv[3], gsl_vector, *beta);
-
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix, *A);
- Data_Get_Struct(argv[1], gsl_matrix, *B);
- break;
- default:
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 5)", argc);
- }
- if (*alpha == NULL && *beta == NULL) {
- *alpha = gsl_vector_complex_alloc((*A)->size1);
- *beta = gsl_vector_alloc((*A)->size1);
- flag += 1;
- }
- if (*w == NULL) {
- *w = gsl_eigen_gen_alloc((*A)->size1);
- flag += 2;
- }
- return flag;
+ CHECK_VECTOR_COMPLEX(argv[2]);
+ Data_Get_Struct(argv[2], gsl_vector_complex, *alpha);
+ CHECK_VECTOR(argv[3]);
+ Data_Get_Struct(argv[3], gsl_vector, *beta);
+
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
+ break;
+ default:
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 5)", argc);
+ }
+ if (*alpha == NULL && *beta == NULL) {
+ *alpha = gsl_vector_complex_alloc((*A)->size1);
+ *beta = gsl_vector_alloc((*A)->size1);
+ flag += 1;
+ }
+ if (*w == NULL) {
+ *w = gsl_eigen_gen_alloc((*A)->size1);
+ flag += 2;
+ }
+ return flag;
}
static VALUE rb_gsl_eigen_gen(int argc, VALUE *argv, VALUE obj)
{
- gsl_matrix *A = NULL, *B = NULL;
-// gsl_matrix *Atmp = NULL, *Btmp = NULL;
- gsl_vector_complex *alpha = NULL;
- gsl_vector *beta = NULL;
- gsl_eigen_gen_workspace *w = NULL;
- int flag;
- VALUE valpha = Qnil, vbeta = Qnil;
- flag = check_argv_gen(argc, argv, obj, &A, &B, &alpha, &beta, &w);
+ gsl_matrix *A = NULL, *B = NULL;
+// gsl_matrix *Atmp = NULL, *Btmp = NULL;
+ gsl_vector_complex *alpha = NULL;
+ gsl_vector *beta = NULL;
+ gsl_eigen_gen_workspace *w = NULL;
+ int flag;
+ VALUE valpha = Qnil, vbeta = Qnil;
+ flag = check_argv_gen(argc, argv, obj, &A, &B, &alpha, &beta, &w);
// Atmp = make_matrix_clone(A);
-// Btmp = make_matrix_clone(B);
- gsl_eigen_gen(A, B, alpha, beta, w);
+// Btmp = make_matrix_clone(B);
+ gsl_eigen_gen(A, B, alpha, beta, w);
// gsl_matrix_free(Atmp);
-// gsl_matrix_free(Btmp);
-
- switch (flag) {
- case 0:
- valpha = argv[2];
- vbeta = argv[3];
- break;
- case 1:
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
- break;
- case 2:
- valpha = argv[2];
- vbeta = argv[3];
- gsl_eigen_gen_free(w);
- break;
- case 3:
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
- gsl_eigen_gen_free(w);
- break;
- }
-
- return rb_ary_new3(2, valpha, vbeta);
+// gsl_matrix_free(Btmp);
+
+ switch (flag) {
+ case 0:
+ valpha = argv[2];
+ vbeta = argv[3];
+ break;
+ case 1:
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
+ break;
+ case 2:
+ valpha = argv[2];
+ vbeta = argv[3];
+ gsl_eigen_gen_free(w);
+ break;
+ case 3:
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
+ gsl_eigen_gen_free(w);
+ break;
+ }
+
+ return rb_ary_new3(2, valpha, vbeta);
}
static VALUE rb_gsl_eigen_gen_QZ(int argc, VALUE *argv, VALUE obj)
{
- gsl_matrix *A = NULL, *B = NULL;
-// gsl_matrix *Atmp = NULL, *Btmp = NULL;
- gsl_vector_complex *alpha = NULL;
- gsl_vector *beta = NULL;
- gsl_matrix *Q, *Z;
- gsl_eigen_gen_workspace *w = NULL;
- int flag;
- VALUE valpha = Qnil, vbeta = Qnil, vQ, vZ;
- flag = check_argv_gen(argc, argv, obj, &A, &B, &alpha, &beta, &w);
+ gsl_matrix *A = NULL, *B = NULL;
+// gsl_matrix *Atmp = NULL, *Btmp = NULL;
+ gsl_vector_complex *alpha = NULL;
+ gsl_vector *beta = NULL;
+ gsl_matrix *Q, *Z;
+ gsl_eigen_gen_workspace *w = NULL;
+ int flag;
+ VALUE valpha = Qnil, vbeta = Qnil, vQ, vZ;
+ flag = check_argv_gen(argc, argv, obj, &A, &B, &alpha, &beta, &w);
/* Atmp = make_matrix_clone(A);
- Btmp = make_matrix_clone(B); */
+ Btmp = make_matrix_clone(B); */
Q = gsl_matrix_alloc(A->size1, A->size2);
- Z = gsl_matrix_alloc(A->size1, A->size2);
-// gsl_eigen_gen_QZ(Atmp, Btmp, alpha, beta, Q, Z, w);
- gsl_eigen_gen_QZ(A, B, alpha, beta, Q, Z, w);
+ Z = gsl_matrix_alloc(A->size1, A->size2);
+// gsl_eigen_gen_QZ(Atmp, Btmp, alpha, beta, Q, Z, w);
+ gsl_eigen_gen_QZ(A, B, alpha, beta, Q, Z, w);
/* gsl_matrix_free(Atmp);
gsl_matrix_free(Btmp); */
-
- switch (flag) {
- case 0:
- valpha = argv[2];
- vbeta = argv[3];
- break;
- case 1:
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
- break;
- case 2:
- valpha = argv[2];
- vbeta = argv[3];
- gsl_eigen_gen_free(w);
- break;
- case 3:
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
- gsl_eigen_gen_free(w);
- break;
- }
+
+ switch (flag) {
+ case 0:
+ valpha = argv[2];
+ vbeta = argv[3];
+ break;
+ case 1:
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
+ break;
+ case 2:
+ valpha = argv[2];
+ vbeta = argv[3];
+ gsl_eigen_gen_free(w);
+ break;
+ case 3:
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
+ gsl_eigen_gen_free(w);
+ break;
+ }
vQ = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Q);
- vZ = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Z);
- return rb_ary_new3(4, valpha, vbeta, vQ, vZ);
+ vZ = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Z);
+ return rb_ary_new3(4, valpha, vbeta, vQ, vZ);
}
static int check_argv_genv(int argc, VALUE *argv, VALUE obj, gsl_matrix **A, gsl_matrix **B,
- gsl_vector_complex **alpha, gsl_vector **beta, gsl_matrix_complex **evec, gsl_eigen_genv_workspace **w)
+ gsl_vector_complex **alpha, gsl_vector **beta, gsl_matrix_complex **evec, gsl_eigen_genv_workspace **w)
{
- int argc2 = argc;
- int flag = 0;
- if (CLASS_OF(obj) == cgenvw) {
- Data_Get_Struct(obj, gsl_eigen_genv_workspace, *w);
- } else {
- if (rb_obj_is_kind_of(argv[argc-1], cgenvw)) {
- Data_Get_Struct(argv[argc-1], gsl_eigen_genv_workspace, *w);
- argc2 = argc-1;
- } else {
-
- /* workspace is not given */
- }
- }
-
- switch (argc2) {
- case 2:
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix, *A);
- Data_Get_Struct(argv[1], gsl_matrix, *B);
- break;
- case 3:
- if (rb_obj_is_kind_of(argv[2], cgenvw)) {
- Data_Get_Struct(argv[2], gsl_eigen_genv_workspace, *w);
- } else {
+ int argc2 = argc;
+ int flag = 0;
+ if (CLASS_OF(obj) == cgenvw) {
+ Data_Get_Struct(obj, gsl_eigen_genv_workspace, *w);
+ } else {
+ if (rb_obj_is_kind_of(argv[argc-1], cgenvw)) {
+ Data_Get_Struct(argv[argc-1], gsl_eigen_genv_workspace, *w);
+ argc2 = argc-1;
+ } else {
+
+ /* workspace is not given */
+ }
+ }
+ switch (argc2) {
+ case 2:
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
+ break;
+ case 3:
+ if (rb_obj_is_kind_of(argv[2], cgenvw)) {
+ Data_Get_Struct(argv[2], gsl_eigen_genv_workspace, *w);
+ } else {
rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigenv::Gen::Workspace expected)",
- rb_class2name(CLASS_OF(argv[2])));
- }
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix, *A);
- Data_Get_Struct(argv[1], gsl_matrix, *B);
- break;
- case 6:
- if (rb_obj_is_kind_of(argv[4], cgenvw)) {
- Data_Get_Struct(argv[4], gsl_eigen_genv_workspace, *w);
- } else {
+ rb_class2name(CLASS_OF(argv[2])));
+ }
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
+ break;
+ case 6:
+ if (rb_obj_is_kind_of(argv[4], cgenvw)) {
+ Data_Get_Struct(argv[4], gsl_eigen_genv_workspace, *w);
+ } else {
rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::Eigenv::Gen::Workspace expected)",
- rb_class2name(CLASS_OF(argv[4])));
+ rb_class2name(CLASS_OF(argv[4])));
}
- CHECK_VECTOR_COMPLEX(argv[2]);
- Data_Get_Struct(argv[2], gsl_vector_complex, *alpha);
- CHECK_VECTOR(argv[3]);
- Data_Get_Struct(argv[3], gsl_vector, *beta);
- CHECK_MATRIX_COMPLEX(argv[3]);
- Data_Get_Struct(argv[4], gsl_matrix_complex, *evec);
-
- CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix, *A);
- Data_Get_Struct(argv[1], gsl_matrix, *B);
- break;
- default:
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 6)", argc);
- }
- if (*alpha == NULL && *beta == NULL) {
- *alpha = gsl_vector_complex_alloc((*A)->size1);
- *beta = gsl_vector_alloc((*A)->size1);
- *evec = gsl_matrix_complex_alloc((*A)->size1, (*A)->size2);
- flag += 1;
- }
- if (*w == NULL) {
- *w = gsl_eigen_genv_alloc((*A)->size1);
- flag += 2;
- }
- return flag;
+ CHECK_VECTOR_COMPLEX(argv[2]);
+ Data_Get_Struct(argv[2], gsl_vector_complex, *alpha);
+ CHECK_VECTOR(argv[3]);
+ Data_Get_Struct(argv[3], gsl_vector, *beta);
+ CHECK_MATRIX_COMPLEX(argv[3]);
+ Data_Get_Struct(argv[4], gsl_matrix_complex, *evec);
+
+ CHECK_MATRIX(argv[0]); CHECK_MATRIX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix, *A);
+ Data_Get_Struct(argv[1], gsl_matrix, *B);
+ break;
+ default:
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, 3 or 6)", argc);
+ }
+ if (*alpha == NULL && *beta == NULL) {
+ *alpha = gsl_vector_complex_alloc((*A)->size1);
+ *beta = gsl_vector_alloc((*A)->size1);
+ *evec = gsl_matrix_complex_alloc((*A)->size1, (*A)->size2);
+ flag += 1;
+ }
+ if (*w == NULL) {
+ *w = gsl_eigen_genv_alloc((*A)->size1);
+ flag += 2;
+ }
+ return flag;
}
static VALUE rb_gsl_eigen_genv(int argc, VALUE *argv, VALUE obj)
{
- gsl_matrix *A = NULL, *B = NULL;
-// gsl_matrix *Atmp = NULL, *Btmp = NULL;
- gsl_vector_complex *alpha = NULL;
- gsl_vector *beta = NULL;
- gsl_matrix_complex *evec = NULL;
- gsl_eigen_genv_workspace *w = NULL;
- int flag;
- VALUE valpha = Qnil, vbeta = Qnil, vevec = Qnil;
- flag = check_argv_genv(argc, argv, obj, &A, &B, &alpha, &beta, &evec, &w);
+ gsl_matrix *A = NULL, *B = NULL;
+// gsl_matrix *Atmp = NULL, *Btmp = NULL;
+ gsl_vector_complex *alpha = NULL;
+ gsl_vector *beta = NULL;
+ gsl_matrix_complex *evec = NULL;
+ gsl_eigen_genv_workspace *w = NULL;
+ int flag;
+ VALUE valpha = Qnil, vbeta = Qnil, vevec = Qnil;
+ flag = check_argv_genv(argc, argv, obj, &A, &B, &alpha, &beta, &evec, &w);
// Atmp = make_matrix_clone(A);
-// Btmp = make_matrix_clone(B);
-// gsl_eigen_genv(Atmp, Btmp, alpha, beta, evec, w);
- gsl_eigen_genv(A, B, alpha, beta, evec, w);
+// Btmp = make_matrix_clone(B);
+// gsl_eigen_genv(Atmp, Btmp, alpha, beta, evec, w);
+ gsl_eigen_genv(A, B, alpha, beta, evec, w);
// gsl_matrix_free(Atmp);
-// gsl_matrix_free(Btmp);
-
- switch (flag) {
- case 0:
- valpha = argv[2];
- vbeta = argv[3];
- vevec = argv[4];
- break;
- case 1:
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
- vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
- break;
- case 2:
- valpha = argv[2];
- vbeta = argv[3];
- vevec = argv[4];
- gsl_eigen_genv_free(w);
- break;
- case 3:
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
- vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
- gsl_eigen_genv_free(w);
- break;
- }
-
- return rb_ary_new3(3, valpha, vbeta, vevec);
+// gsl_matrix_free(Btmp);
+
+ switch (flag) {
+ case 0:
+ valpha = argv[2];
+ vbeta = argv[3];
+ vevec = argv[4];
+ break;
+ case 1:
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
+ vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
+ break;
+ case 2:
+ valpha = argv[2];
+ vbeta = argv[3];
+ vevec = argv[4];
+ gsl_eigen_genv_free(w);
+ break;
+ case 3:
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
+ vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
+ gsl_eigen_genv_free(w);
+ break;
+ }
+
+ return rb_ary_new3(3, valpha, vbeta, vevec);
}
static VALUE rb_gsl_eigen_genv_QZ(int argc, VALUE *argv, VALUE obj)
{
- gsl_matrix *A = NULL, *B = NULL;
-// gsl_matrix *Atmp = NULL, *Btmp = NULL;
- gsl_vector_complex *alpha = NULL;
- gsl_vector *beta = NULL;
- gsl_matrix_complex *evec = NULL;
- gsl_matrix *Q, *Z;
- gsl_eigen_genv_workspace *w = NULL;
- int flag;
- VALUE valpha = Qnil, vbeta = Qnil, vevec = Qnil, vQ, vZ;
- flag = check_argv_genv(argc, argv, obj, &A, &B, &alpha, &beta, &evec, &w);
+ gsl_matrix *A = NULL, *B = NULL;
+// gsl_matrix *Atmp = NULL, *Btmp = NULL;
+ gsl_vector_complex *alpha = NULL;
+ gsl_vector *beta = NULL;
+ gsl_matrix_complex *evec = NULL;
+ gsl_matrix *Q, *Z;
+ gsl_eigen_genv_workspace *w = NULL;
+ int flag;
+ VALUE valpha = Qnil, vbeta = Qnil, vevec = Qnil, vQ, vZ;
+ flag = check_argv_genv(argc, argv, obj, &A, &B, &alpha, &beta, &evec, &w);
/* Atmp = make_matrix_clone(A);
- Btmp = make_matrix_clone(B); */
+ Btmp = make_matrix_clone(B); */
Q = gsl_matrix_alloc(A->size1, A->size2);
- Z = gsl_matrix_alloc(A->size1, A->size2);
-// gsl_eigen_genv_QZ(Atmp, Btmp, alpha, beta, evec, Q, Z, w);
- gsl_eigen_genv_QZ(A, B, alpha, beta, evec, Q, Z, w);
+ Z = gsl_matrix_alloc(A->size1, A->size2);
+// gsl_eigen_genv_QZ(Atmp, Btmp, alpha, beta, evec, Q, Z, w);
+ gsl_eigen_genv_QZ(A, B, alpha, beta, evec, Q, Z, w);
/* gsl_matrix_free(Atmp);
gsl_matrix_free(Btmp); */
-
- switch (flag) {
- case 0:
- valpha = argv[2];
- vbeta = argv[3];
- vevec = argv[4];
- break;
- case 1:
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
- vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
- break;
- case 2:
- valpha = argv[2];
- vbeta = argv[3];
- vevec = argv[4];
- gsl_eigen_genv_free(w);
- break;
- case 3:
- valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
- vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
- vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
- gsl_eigen_genv_free(w);
- break;
- }
+
+ switch (flag) {
+ case 0:
+ valpha = argv[2];
+ vbeta = argv[3];
+ vevec = argv[4];
+ break;
+ case 1:
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
+ vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
+ break;
+ case 2:
+ valpha = argv[2];
+ vbeta = argv[3];
+ vevec = argv[4];
+ gsl_eigen_genv_free(w);
+ break;
+ case 3:
+ valpha = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, alpha);
+ vbeta = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, beta);
+ vevec = Data_Wrap_Struct(cgsl_eigen_herm_vectors, 0, gsl_matrix_complex_free, evec);
+ gsl_eigen_genv_free(w);
+ break;
+ }
vQ = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Q);
- vZ = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Z);
- return rb_ary_new3(5, valpha, vbeta, vevec, vQ, vZ);
+ vZ = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Z);
+ return rb_ary_new3(5, valpha, vbeta, vevec, vQ, vZ);
}
static VALUE rb_gsl_eigen_genv_sort(int argc, VALUE *argv, VALUE obj)
@@ -2086,7 +2043,7 @@ static VALUE rb_gsl_eigen_genv_sort(int argc, VALUE *argv, VALUE obj)
case 4:
CHECK_FIXNUM(argv[3]);
type = FIX2INT(argv[3]);
- /* no break, do next */
+ /* no break, do next */
case 3:
if (argv[0] == Qnil) {
alpha = NULL;
@@ -2098,21 +2055,20 @@ static VALUE rb_gsl_eigen_genv_sort(int argc, VALUE *argv, VALUE obj)
beta = NULL;
} else {
CHECK_VECTOR(argv[1]);
- Data_Get_Struct(argv[1], gsl_vector, beta);
+ Data_Get_Struct(argv[1], gsl_vector, beta);
}
- if (argv[2] == Qnil) {
+ if (argv[2] == Qnil) {
evec = NULL;
} else {
CHECK_MATRIX_COMPLEX(argv[2]);
- Data_Get_Struct(argv[2], gsl_matrix_complex, evec);
- }
+ Data_Get_Struct(argv[2], gsl_matrix_complex, evec);
+ }
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3 or 4)", argc);
}
return INT2FIX(gsl_eigen_genv_sort(alpha, beta, evec, type));
}
-#endif
void Init_gsl_eigen(VALUE module)
{
@@ -2124,10 +2080,8 @@ void Init_gsl_eigen(VALUE module)
#ifdef HAVE_GSL_EIGEN_FRANCIS
VALUE mgsl_eigen_francis;
#endif
-#ifdef GSL_1_9_LATER
VALUE mgsl_eigen_nonsymmv;
VALUE mgsl_eigen_nonsymm;
-#endif
mgsl_eigen = rb_define_module_under(module, "Eigen");
mgsl_eigen_symm = rb_define_module_under(mgsl_eigen, "Symm");
@@ -2137,60 +2091,60 @@ void Init_gsl_eigen(VALUE module)
mgsl_eigen_hermv = rb_define_module_under(mgsl_eigen, "Hermv");
cgsl_eigen_values = rb_define_class_under(mgsl_eigen, "EigenValues",
- cgsl_vector);
+ cgsl_vector);
cgsl_eigen_vectors = rb_define_class_under(mgsl_eigen, "EigenVectors",
- cgsl_matrix);
+ cgsl_matrix);
cgsl_eigen_vector = rb_define_class_under(mgsl_eigen, "EigenVector",
- cgsl_vector);
+ cgsl_vector);
cgsl_eigen_herm_vectors = rb_define_class_under(mgsl_eigen, "ComplexEigenVectors",
- cgsl_matrix_complex);
+ cgsl_matrix_complex);
cgsl_eigen_vector_complex = rb_define_class_under(mgsl_eigen, "ComplexEigenVector",
- cgsl_vector_complex);
- cgsl_eigen_symm_workspace = rb_define_class_under(mgsl_eigen_symm,
- "Workspace", cGSL_Object);
- cgsl_eigen_symmv_workspace = rb_define_class_under(mgsl_eigen_symmv,
- "Workspace", cGSL_Object);
- cgsl_eigen_herm_workspace = rb_define_class_under(mgsl_eigen_herm,
- "Workspace", cGSL_Object);
-
- cgsl_eigen_hermv_workspace = rb_define_class_under(mgsl_eigen_hermv,
- "Workspace", cGSL_Object);
-
- rb_define_singleton_method(cgsl_eigen_symm_workspace, "alloc",
- rb_gsl_eigen_symm_alloc, 1);
- rb_define_singleton_method(cgsl_eigen_symmv_workspace, "alloc",
- rb_gsl_eigen_symmv_alloc, 1);
- rb_define_singleton_method(cgsl_eigen_herm_workspace, "alloc",
- rb_gsl_eigen_herm_alloc, 1);
- rb_define_singleton_method(cgsl_eigen_hermv_workspace, "alloc",
- rb_gsl_eigen_hermv_alloc, 1);
-
- rb_define_singleton_method(mgsl_eigen_symm, "alloc",
- rb_gsl_eigen_symm_alloc, 1);
- rb_define_singleton_method(mgsl_eigen_symmv, "alloc",
- rb_gsl_eigen_symmv_alloc, 1);
- rb_define_singleton_method(mgsl_eigen_herm, "alloc",
- rb_gsl_eigen_herm_alloc, 1);
- rb_define_singleton_method(mgsl_eigen_hermv, "alloc",
- rb_gsl_eigen_hermv_alloc, 1);
-
+ cgsl_vector_complex);
+ cgsl_eigen_symm_workspace = rb_define_class_under(mgsl_eigen_symm,
+ "Workspace", cGSL_Object);
+ cgsl_eigen_symmv_workspace = rb_define_class_under(mgsl_eigen_symmv,
+ "Workspace", cGSL_Object);
+ cgsl_eigen_herm_workspace = rb_define_class_under(mgsl_eigen_herm,
+ "Workspace", cGSL_Object);
+
+ cgsl_eigen_hermv_workspace = rb_define_class_under(mgsl_eigen_hermv,
+ "Workspace", cGSL_Object);
+
+ rb_define_singleton_method(cgsl_eigen_symm_workspace, "alloc",
+ rb_gsl_eigen_symm_alloc, 1);
+ rb_define_singleton_method(cgsl_eigen_symmv_workspace, "alloc",
+ rb_gsl_eigen_symmv_alloc, 1);
+ rb_define_singleton_method(cgsl_eigen_herm_workspace, "alloc",
+ rb_gsl_eigen_herm_alloc, 1);
+ rb_define_singleton_method(cgsl_eigen_hermv_workspace, "alloc",
+ rb_gsl_eigen_hermv_alloc, 1);
+
+ rb_define_singleton_method(mgsl_eigen_symm, "alloc",
+ rb_gsl_eigen_symm_alloc, 1);
+ rb_define_singleton_method(mgsl_eigen_symmv, "alloc",
+ rb_gsl_eigen_symmv_alloc, 1);
+ rb_define_singleton_method(mgsl_eigen_herm, "alloc",
+ rb_gsl_eigen_herm_alloc, 1);
+ rb_define_singleton_method(mgsl_eigen_hermv, "alloc",
+ rb_gsl_eigen_hermv_alloc, 1);
+
rb_define_module_function(mgsl_eigen, "symm",
- rb_gsl_eigen_symm, -1);
+ rb_gsl_eigen_symm, -1);
rb_define_module_function(mgsl_eigen, "symmv",
- rb_gsl_eigen_symmv, -1);
+ rb_gsl_eigen_symmv, -1);
rb_define_module_function(mgsl_eigen, "herm",
- rb_gsl_eigen_herm, -1);
+ rb_gsl_eigen_herm, -1);
rb_define_module_function(mgsl_eigen, "hermv",
- rb_gsl_eigen_hermv, -1);
+ rb_gsl_eigen_hermv, -1);
rb_define_module_function(module, "eigen_symm",
- rb_gsl_eigen_symm, -1);
+ rb_gsl_eigen_symm, -1);
rb_define_module_function(module, "eigen_symmv",
- rb_gsl_eigen_symmv, -1);
+ rb_gsl_eigen_symmv, -1);
rb_define_module_function(module, "eigen_herm",
- rb_gsl_eigen_herm, -1);
+ rb_gsl_eigen_herm, -1);
rb_define_module_function(module, "eigen_hermv",
- rb_gsl_eigen_hermv, -1);
+ rb_gsl_eigen_hermv, -1);
rb_define_method(cgsl_matrix, "eigen_symm", rb_gsl_eigen_symm, -1);
rb_define_method(cgsl_matrix, "eigen_symmv", rb_gsl_eigen_symmv, -1);
@@ -2202,21 +2156,21 @@ void Init_gsl_eigen(VALUE module)
rb_gsl_eigen_define_const(module, mgsl_eigen);
- rb_define_module_function(mgsl_eigen, "symmv_sort",
- rb_gsl_eigen_symmv_sort, -1);
- rb_define_module_function(mgsl_eigen, "hermv_sort",
- rb_gsl_eigen_hermv_sort, -1);
- rb_define_module_function(mgsl_eigen_symmv, "sort",
- rb_gsl_eigen_symmv_sort, -1);
- rb_define_module_function(mgsl_eigen_hermv, "sort",
- rb_gsl_eigen_hermv_sort, -1);
+ rb_define_module_function(mgsl_eigen, "symmv_sort",
+ rb_gsl_eigen_symmv_sort, -1);
+ rb_define_module_function(mgsl_eigen, "hermv_sort",
+ rb_gsl_eigen_hermv_sort, -1);
+ rb_define_module_function(mgsl_eigen_symmv, "sort",
+ rb_gsl_eigen_symmv_sort, -1);
+ rb_define_module_function(mgsl_eigen_hermv, "sort",
+ rb_gsl_eigen_hermv_sort, -1);
#ifdef HAVE_GSL_EIGEN_FRANCIS
mgsl_eigen_francis = rb_define_module_under(mgsl_eigen, "francis");
- cgsl_eigen_francis_workspace = rb_define_class_under(mgsl_eigen_francis,
- "Workspace", cGSL_Object);
+ cgsl_eigen_francis_workspace = rb_define_class_under(mgsl_eigen_francis,
+ "Workspace", cGSL_Object);
rb_define_singleton_method(cgsl_eigen_francis_workspace, "alloc",
- rb_gsl_eigen_francis_alloc, 0);
+ rb_gsl_eigen_francis_alloc, 0);
rb_define_method(cgsl_matrix, "eigen_francis", rb_gsl_eigen_francis, -1);
rb_define_module_function(mgsl_eigen, "francis", rb_gsl_eigen_francis, -1);
@@ -2230,16 +2184,15 @@ void Init_gsl_eigen(VALUE module)
#endif
-#ifdef GSL_1_9_LATER
mgsl_eigen_nonsymm = rb_define_module_under(mgsl_eigen, "Nonsymm");
mgsl_eigen_nonsymmv = rb_define_module_under(mgsl_eigen, "Nonsymmv");
- cgsl_eigen_nonsymm_workspace = rb_define_class_under(mgsl_eigen_nonsymm,
- "Workspace", cGSL_Object);
+ cgsl_eigen_nonsymm_workspace = rb_define_class_under(mgsl_eigen_nonsymm,
+ "Workspace", cGSL_Object);
rb_define_singleton_method(cgsl_eigen_nonsymm_workspace, "alloc",
- rb_gsl_eigen_nonsymm_alloc, 1);
+ rb_gsl_eigen_nonsymm_alloc, 1);
rb_define_singleton_method(mgsl_eigen_nonsymm, "alloc",
- rb_gsl_eigen_nonsymm_alloc, 1);
-
+ rb_gsl_eigen_nonsymm_alloc, 1);
+
rb_define_method(cgsl_matrix, "eigen_nonsymm", rb_gsl_eigen_nonsymm, -1);
rb_define_module_function(mgsl_eigen, "nonsymm", rb_gsl_eigen_nonsymm, -1);
rb_define_module_function(module, "eigen_nonsymm", rb_gsl_eigen_nonsymm, -1);
@@ -2250,12 +2203,12 @@ void Init_gsl_eigen(VALUE module)
rb_define_method(cgsl_eigen_nonsymm_workspace, "params", rb_gsl_eigen_nonsymm_params, -1);
rb_define_module_function(mgsl_eigen_nonsymm, "params", rb_gsl_eigen_nonsymm_params, -1);
- cgsl_eigen_nonsymmv_workspace = rb_define_class_under(mgsl_eigen_nonsymmv,
- "Workspace", cGSL_Object);
+ cgsl_eigen_nonsymmv_workspace = rb_define_class_under(mgsl_eigen_nonsymmv,
+ "Workspace", cGSL_Object);
rb_define_singleton_method(cgsl_eigen_nonsymmv_workspace, "alloc",
- rb_gsl_eigen_nonsymmv_alloc, 1);
+ rb_gsl_eigen_nonsymmv_alloc, 1);
rb_define_singleton_method(mgsl_eigen_nonsymmv, "alloc",
- rb_gsl_eigen_nonsymmv_alloc, 1);
+ rb_gsl_eigen_nonsymmv_alloc, 1);
rb_define_method(cgsl_matrix, "eigen_nonsymmv", rb_gsl_eigen_nonsymmv, -1);
rb_define_module_function(mgsl_eigen, "nonsymmv", rb_gsl_eigen_nonsymmv, -1);
rb_define_module_function(module, "eigen_nonsymmv", rb_gsl_eigen_nonsymmv, -1);
@@ -2265,15 +2218,13 @@ void Init_gsl_eigen(VALUE module)
rb_define_module_function(mgsl_eigen, "nonsymmv_Z", rb_gsl_eigen_nonsymmv_Z, -1);
rb_define_module_function(module, "eigen_nonsymmv_Z", rb_gsl_eigen_nonsymmv_Z, -1);
- rb_define_module_function(mgsl_eigen, "nonsymmv_sort",
- rb_gsl_eigen_nonsymmv_sort, -1);
- rb_define_module_function(mgsl_eigen_nonsymmv, "sort",
- rb_gsl_eigen_nonsymmv_sort, -1);
- rb_define_module_function(module, "eigen_nonsymmv_sort",
- rb_gsl_eigen_nonsymmv_sort, -1);
-#endif
+ rb_define_module_function(mgsl_eigen, "nonsymmv_sort",
+ rb_gsl_eigen_nonsymmv_sort, -1);
+ rb_define_module_function(mgsl_eigen_nonsymmv, "sort",
+ rb_gsl_eigen_nonsymmv_sort, -1);
+ rb_define_module_function(module, "eigen_nonsymmv_sort",
+ rb_gsl_eigen_nonsymmv_sort, -1);
-#ifdef GSL_1_10_LATER
/** gensymm, gensymmv **/
mgensymm = rb_define_module_under(mgsl_eigen, "Gensymm");
cgensymm = rb_define_class_under(mgensymm, "Workspace", cGSL_Object);
@@ -2287,27 +2238,27 @@ void Init_gsl_eigen(VALUE module)
rb_define_method(cgensymm, "gensymm", rb_gsl_eigen_gensymm, -1);
rb_define_module_function(module, "eigen_gensymm", rb_gsl_eigen_gensymm, -1);
- rb_define_module_function(mgsl_eigen, "gensymm", rb_gsl_eigen_gensymm, -1);
- rb_define_module_function(mgensymm, "gensymm", rb_gsl_eigen_gensymm, -1);
+ rb_define_module_function(mgsl_eigen, "gensymm", rb_gsl_eigen_gensymm, -1);
+ rb_define_module_function(mgensymm, "gensymm", rb_gsl_eigen_gensymm, -1);
rb_define_method(cgensymmv, "gensymmv", rb_gsl_eigen_gensymmv, -1);
rb_define_module_function(module, "eigen_gensymmv", rb_gsl_eigen_gensymmv, -1);
- rb_define_module_function(mgsl_eigen, "gensymmv", rb_gsl_eigen_gensymmv, -1);
+ rb_define_module_function(mgsl_eigen, "gensymmv", rb_gsl_eigen_gensymmv, -1);
rb_define_module_function(mgensymmv, "gensymmv", rb_gsl_eigen_gensymmv, -1);
- rb_define_module_function(mgsl_eigen, "gensymmv_sort",
- rb_gsl_eigen_gensymmv_sort, -1);
- rb_define_module_function(mgensymmv, "sort",
- rb_gsl_eigen_gensymmv_sort, -1);
- rb_define_module_function(module, "eigen_gensymmv_sort",
- rb_gsl_eigen_gensymmv_sort, -1);
+ rb_define_module_function(mgsl_eigen, "gensymmv_sort",
+ rb_gsl_eigen_gensymmv_sort, -1);
+ rb_define_module_function(mgensymmv, "sort",
+ rb_gsl_eigen_gensymmv_sort, -1);
+ rb_define_module_function(module, "eigen_gensymmv_sort",
+ rb_gsl_eigen_gensymmv_sort, -1);
/** genherm, genhermv **/
mgenherm = rb_define_module_under(mgsl_eigen, "Genherm");
cgenherm = rb_define_class_under(mgenherm, "Workspace", cGSL_Object);
mgenhermv = rb_define_module_under(mgsl_eigen, "Genhermv");
cgenhermv = rb_define_class_under(mgenhermv, "Workspace", cGSL_Object);
-
+
rb_define_singleton_method(cgenherm, "alloc", rb_gsl_eigen_genherm_alloc, 1);
rb_define_singleton_method(cgenhermv, "alloc", rb_gsl_eigen_genhermv_alloc, 1);
rb_define_singleton_method(mgenherm, "alloc", rb_gsl_eigen_genherm_alloc, 1);
@@ -2315,59 +2266,57 @@ void Init_gsl_eigen(VALUE module)
rb_define_method(cgenherm, "genherm", rb_gsl_eigen_genherm, -1);
rb_define_module_function(module, "eigen_genherm", rb_gsl_eigen_genherm, -1);
- rb_define_module_function(mgsl_eigen, "genherm", rb_gsl_eigen_genherm, -1);
- rb_define_module_function(mgenherm, "genherm", rb_gsl_eigen_genherm, -1);
+ rb_define_module_function(mgsl_eigen, "genherm", rb_gsl_eigen_genherm, -1);
+ rb_define_module_function(mgenherm, "genherm", rb_gsl_eigen_genherm, -1);
rb_define_method(cgenhermv, "genhermv", rb_gsl_eigen_genhermv, -1);
rb_define_module_function(module, "eigen_genhermv", rb_gsl_eigen_genhermv, -1);
- rb_define_module_function(mgsl_eigen, "genhermv", rb_gsl_eigen_genhermv, -1);
+ rb_define_module_function(mgsl_eigen, "genhermv", rb_gsl_eigen_genhermv, -1);
rb_define_module_function(mgenhermv, "genhermv", rb_gsl_eigen_genhermv, -1);
-
- rb_define_module_function(mgsl_eigen, "genhermv_sort",
- rb_gsl_eigen_genhermv_sort, -1);
- rb_define_module_function(mgenhermv, "sort",
- rb_gsl_eigen_genhermv_sort, -1);
- rb_define_module_function(module, "eigen_genhermv_sort",
- rb_gsl_eigen_genhermv_sort, -1);
-
+
+ rb_define_module_function(mgsl_eigen, "genhermv_sort",
+ rb_gsl_eigen_genhermv_sort, -1);
+ rb_define_module_function(mgenhermv, "sort",
+ rb_gsl_eigen_genhermv_sort, -1);
+ rb_define_module_function(module, "eigen_genhermv_sort",
+ rb_gsl_eigen_genhermv_sort, -1);
+
/* gen */
mgen = rb_define_module_under(mgsl_eigen, "Gen");
- mgenv = rb_define_module_under(mgsl_eigen, "Genv");
+ mgenv = rb_define_module_under(mgsl_eigen, "Genv");
cgenw = rb_define_class_under(mgen, "Workspace", cGSL_Object);
cgenvw = rb_define_class_under(mgenv, "Workspace", cGSL_Object);
rb_define_singleton_method(mgen, "alloc", rb_gsl_eigen_gen_alloc, 1);
- rb_define_singleton_method(cgenw, "alloc", rb_gsl_eigen_gen_alloc, 1);
+ rb_define_singleton_method(cgenw, "alloc", rb_gsl_eigen_gen_alloc, 1);
rb_define_singleton_method(mgenv, "alloc", rb_gsl_eigen_genv_alloc, 1);
rb_define_singleton_method(cgenvw, "alloc", rb_gsl_eigen_genv_alloc, 1);
-
+
rb_define_module_function(mgen, "params", rb_gsl_eigen_gen_params, -1);
rb_define_method(cgenw, "params", rb_gsl_eigen_gen_params, -1);
rb_define_module_function(mgsl_eigen, "gen_params", rb_gsl_eigen_gen_params, -1);
-
-
+
+
rb_define_module_function(mgen, "gen", rb_gsl_eigen_gen, -1);
- rb_define_module_function(mgsl_eigen, "gen", rb_gsl_eigen_gen, -1);
+ rb_define_module_function(mgsl_eigen, "gen", rb_gsl_eigen_gen, -1);
rb_define_method(cgenw, "gen", rb_gsl_eigen_gen, -1);
-
+
rb_define_module_function(mgenv, "genv", rb_gsl_eigen_genv, -1);
- rb_define_module_function(mgsl_eigen, "genv", rb_gsl_eigen_genv, -1);
+ rb_define_module_function(mgsl_eigen, "genv", rb_gsl_eigen_genv, -1);
rb_define_method(cgenvw, "genv", rb_gsl_eigen_genv, -1);
-
+
rb_define_module_function(mgen, "gen_QZ", rb_gsl_eigen_gen_QZ, -1);
- rb_define_module_function(mgsl_eigen, "gen_QZ", rb_gsl_eigen_gen_QZ, -1);
+ rb_define_module_function(mgsl_eigen, "gen_QZ", rb_gsl_eigen_gen_QZ, -1);
rb_define_method(cgenw, "gen_QZ", rb_gsl_eigen_gen_QZ, -1);
-
- rb_define_module_function(mgenv, "genv_QZ", rb_gsl_eigen_genv_QZ, -1);
- rb_define_module_function(mgsl_eigen, "genv_QZ", rb_gsl_eigen_genv_QZ, -1);
- rb_define_method(cgenvw, "genv_QZ", rb_gsl_eigen_genv_QZ, -1);
-
- rb_define_module_function(mgsl_eigen, "genv_sort",
- rb_gsl_eigen_genv_sort, -1);
- rb_define_module_function(mgenv, "sort",
- rb_gsl_eigen_genv_sort, -1);
- rb_define_module_function(module, "eigen_genv_sort",
- rb_gsl_eigen_genv_sort, -1);
-#endif
+ rb_define_module_function(mgenv, "genv_QZ", rb_gsl_eigen_genv_QZ, -1);
+ rb_define_module_function(mgsl_eigen, "genv_QZ", rb_gsl_eigen_genv_QZ, -1);
+ rb_define_method(cgenvw, "genv_QZ", rb_gsl_eigen_genv_QZ, -1);
+
+ rb_define_module_function(mgsl_eigen, "genv_sort",
+ rb_gsl_eigen_genv_sort, -1);
+ rb_define_module_function(mgenv, "sort",
+ rb_gsl_eigen_genv_sort, -1);
+ rb_define_module_function(module, "eigen_genv_sort",
+ rb_gsl_eigen_genv_sort, -1);
}
diff --git a/ext/gsl/error.c b/ext/gsl_native/error.c
similarity index 91%
rename from ext/gsl/error.c
rename to ext/gsl_native/error.c
index 996e7ae..39a92a2 100644
--- a/ext/gsl/error.c
+++ b/ext/gsl_native/error.c
@@ -20,21 +20,21 @@ static VALUE *pgsl_error;
static void Init_rb_gsl_define_GSL_CONST(VALUE module);
void rb_gsl_error_handler(const char *reason, const char *file,
- int line, int gsl_errno);
+ int line, int gsl_errno);
static void rb_gsl_my_error_handler(const char *reason, const char *file,
- int line, int gsl_errno);
+ int line, int gsl_errno);
void rb_gsl_error_handler(const char *reason, const char *file,
- int line, int gsl_errno)
+ int line, int gsl_errno)
{
const char *emessage = gsl_strerror(gsl_errno);
- rb_raise(pgsl_error[gsl_errno],
- "Ruby/GSL error code %d, %s (file %s, line %d), %s",
- gsl_errno, reason, file, line, emessage);
+ rb_raise(pgsl_error[gsl_errno],
+ "Ruby/GSL error code %d, %s (file %s, line %d), %s",
+ gsl_errno, reason, file, line, emessage);
}
static void rb_gsl_my_error_handler(const char *reason, const char *file,
- int line, int gsl_errno)
+ int line, int gsl_errno)
{
VALUE vreason, vfile;
VALUE vline, verrno;
@@ -166,14 +166,14 @@ static void define_module_functions(VALUE module);
static VALUE rb_gsl_strerror(VALUE obj, VALUE errn);
static void define_module_functions(VALUE module)
{
- rb_define_module_function(module, "set_error_handler_off",
- rb_gsl_set_error_handler_off, 0);
- rb_define_module_function(module, "strerror",
- rb_gsl_strerror, 1);
+ rb_define_module_function(module, "set_error_handler_off",
+ rb_gsl_set_error_handler_off, 0);
+ rb_define_module_function(module, "strerror",
+ rb_gsl_strerror, 1);
rb_define_module_function(module, "set_error_handler",
- rb_gsl_set_error_handler, -1);
+ rb_gsl_set_error_handler, -1);
rb_define_module_function(module, "set_default_error_handler",
- rb_gsl_set_default_error_handler, 0);
+ rb_gsl_set_default_error_handler, 0);
}
static VALUE rb_gsl_strerror(VALUE obj, VALUE errn)
diff --git a/ext/gsl/extconf.rb b/ext/gsl_native/extconf.rb
similarity index 85%
rename from ext/gsl/extconf.rb
rename to ext/gsl_native/extconf.rb
index 6b11f4d..a966a45 100644
--- a/ext/gsl/extconf.rb
+++ b/ext/gsl_native/extconf.rb
@@ -10,7 +10,8 @@ rescue => err
end
def gsl_def(const, value = nil)
- $defs << "-D#{const}#{"=#{value}" if value}"
+ value = "=#{value}" if value
+ $defs << "-D#{const}#{value}"
end
def gsl_have_header(library, header)
@@ -63,14 +64,9 @@ gsl_config_arg(:version) { |version, check|
gte && gsl_def("GSL_#{ary.join('_')}_LATER")
}
- raise 'Ruby/GSL requires gsl-0.9.4 or later.' unless later['0.9.4']
+ raise 'Ruby/GSL requires gsl-1.15 or later.' unless later['1.15']
- gsl_def(:GSL_1_4_9_LATER) if later['1.4.90']
-
- %w[
- 1.0 1.1 1.1.1 1.2 1.3 1.4 1.5.90 1.7.90
- 1.8.90 1.9.90 1.11 1.12.90 1.14 1.15
- ].each { |v| later[v] }
+ %w[1.15 1.16].each { |v| later[v] }
}
gsl_config_arg(:cflags) { |cflags, check|
@@ -92,7 +88,6 @@ gsl_config_arg(:libs) { |libs, check|
$LOCAL_LIBS += ' ' + check[libs]
}
-have_header('ruby/io.h')
have_func('round')
%w[alf qrngextra rngextra tensor].each { |library|
@@ -120,7 +115,4 @@ unless arg_config('--disable-tamu-anova')
gsl_have_header('tamuanova', 'tamu_anova/tamu_anova.h')
end
-$objs = Dir["#{File.dirname(__FILE__)}/*.c"].map { |f| File.basename(f, '.c') << '.o' }.
- sort - %w[block matrix poly tensor vector].map { |f| "#{f}_source.o" }
-
-create_makefile('gsl/gsl_native')
+create_makefile('gsl_native')
diff --git a/ext/gsl/fft.c b/ext/gsl_native/fft.c
similarity index 72%
rename from ext/gsl/fft.c
rename to ext/gsl_native/fft.c
index 1f3d7ef..95a3f1f 100644
--- a/ext/gsl/fft.c
+++ b/ext/gsl_native/fft.c
@@ -25,24 +25,24 @@ static void GSL_FFT_Workspace_free(GSL_FFT_Workspace *space);
static VALUE rb_gsl_fft_complex_wavetable_new(VALUE klass, VALUE n)
{
CHECK_FIXNUM(n);
- return Data_Wrap_Struct(cgsl_fft_complex_wavetable, 0,
- gsl_fft_complex_wavetable_free,
- gsl_fft_complex_wavetable_alloc(FIX2INT(n)));
+ return Data_Wrap_Struct(cgsl_fft_complex_wavetable, 0,
+ gsl_fft_complex_wavetable_free,
+ gsl_fft_complex_wavetable_alloc(FIX2INT(n)));
}
static VALUE rb_gsl_fft_real_wavetable_new(VALUE klass, VALUE n)
{
CHECK_FIXNUM(n);
return Data_Wrap_Struct(klass, 0, gsl_fft_real_wavetable_free,
- gsl_fft_real_wavetable_alloc(FIX2INT(n)));
+ gsl_fft_real_wavetable_alloc(FIX2INT(n)));
}
static VALUE rb_gsl_fft_halfcomplex_wavetable_new(VALUE klass, VALUE n)
{
CHECK_FIXNUM(n);
return Data_Wrap_Struct(klass, 0, gsl_fft_halfcomplex_wavetable_free,
- gsl_fft_halfcomplex_wavetable_alloc(FIX2INT(n)));
-
+ gsl_fft_halfcomplex_wavetable_alloc(FIX2INT(n)));
+
}
static void GSL_FFT_Wavetable_free(GSL_FFT_Wavetable *table)
@@ -54,21 +54,21 @@ static VALUE rb_gsl_fft_complex_workspace_new(VALUE klass, VALUE n)
{
CHECK_FIXNUM(n);
return Data_Wrap_Struct(klass, 0, gsl_fft_complex_workspace_free,
- gsl_fft_complex_workspace_alloc(FIX2INT(n)));
+ gsl_fft_complex_workspace_alloc(FIX2INT(n)));
}
static VALUE rb_gsl_fft_real_workspace_new(VALUE klass, VALUE n)
{
CHECK_FIXNUM(n);
return Data_Wrap_Struct(klass, 0, gsl_fft_real_workspace_free,
- gsl_fft_real_workspace_alloc(FIX2INT(n)));
+ gsl_fft_real_workspace_alloc(FIX2INT(n)));
}
static void GSL_FFT_Workspace_free(GSL_FFT_Workspace *space)
{
gsl_fft_complex_workspace_free((gsl_fft_complex_workspace *) space);
}
-
+
// The FFT methods used to allow passing stride and n values as optional
// parameters to control which elements get transformed. This created problems
// for Views which can have their own stride, so support for stride and n
@@ -79,8 +79,8 @@ static void GSL_FFT_Workspace_free(GSL_FFT_Workspace *space)
// refactoring, it has been left in place for the time being. Eventually it
// can be refactored away completely.
static VALUE get_complex_stride_n(VALUE obj,
- gsl_vector_complex **vin,
- gsl_complex_packed_array *data, size_t *stride, size_t *n)
+ gsl_vector_complex **vin,
+ gsl_complex_packed_array *data, size_t *stride, size_t *n)
{
gsl_vector_complex *v = NULL;
@@ -96,8 +96,8 @@ static VALUE get_complex_stride_n(VALUE obj,
}
static VALUE rb_fft_complex_radix2(VALUE obj,
- int (*trans)(gsl_complex_packed_array,
- size_t, size_t), int flag)
+ int (*trans)(gsl_complex_packed_array,
+ size_t, size_t), int flag)
{
size_t stride, n;
gsl_complex_packed_array data;
@@ -106,7 +106,7 @@ static VALUE rb_fft_complex_radix2(VALUE obj,
ary = get_complex_stride_n(obj, &vin, &data, &stride, &n);
if (flag == RB_GSL_FFT_COPY) {
vout = gsl_vector_complex_alloc(n);
- gsl_vector_complex_memcpy(vout, vin);
+ gsl_vector_complex_memcpy(vout, vin);
(*trans)(vout->data, vout->stride /*1*/, vout->size /*n*/);
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vout);
} else { /* in-place */
@@ -118,13 +118,13 @@ static VALUE rb_fft_complex_radix2(VALUE obj,
static VALUE rb_gsl_fft_complex_radix2_forward(VALUE obj)
{
return rb_fft_complex_radix2(obj, gsl_fft_complex_radix2_forward,
- RB_GSL_FFT_COPY);
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_complex_radix2_forward2(VALUE obj)
{
return rb_fft_complex_radix2(obj, gsl_fft_complex_radix2_forward,
- RB_GSL_FFT_INPLACE);
+ RB_GSL_FFT_INPLACE);
}
static VALUE rb_gsl_fft_complex_radix2_transform(VALUE obj, VALUE val_sign)
@@ -136,7 +136,7 @@ static VALUE rb_gsl_fft_complex_radix2_transform(VALUE obj, VALUE val_sign)
sign = NUM2INT(val_sign);
get_complex_stride_n(obj, &vin, &data, &stride, &n);
vout = gsl_vector_complex_alloc(n);
- gsl_vector_complex_memcpy(vout, vin);
+ gsl_vector_complex_memcpy(vout, vin);
gsl_fft_complex_radix2_transform(vout->data, vout->stride /*1*/, vout->size /*n*/, sign);
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vout);
}
@@ -156,40 +156,40 @@ static VALUE rb_gsl_fft_complex_radix2_transform2(VALUE obj, VALUE val_sign)
static VALUE rb_gsl_fft_complex_radix2_backward(VALUE obj)
{
return rb_fft_complex_radix2(obj, gsl_fft_complex_radix2_backward,
- RB_GSL_FFT_COPY);
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_complex_radix2_inverse(VALUE obj)
{
return rb_fft_complex_radix2(obj, gsl_fft_complex_radix2_inverse,
- RB_GSL_FFT_COPY);
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_complex_radix2_dif_forward(VALUE obj)
{
- return rb_fft_complex_radix2(obj,
- gsl_fft_complex_radix2_dif_forward,
- RB_GSL_FFT_COPY);
+ return rb_fft_complex_radix2(obj,
+ gsl_fft_complex_radix2_dif_forward,
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_complex_radix2_backward2(VALUE obj)
{
return rb_fft_complex_radix2(obj, gsl_fft_complex_radix2_backward,
- RB_GSL_FFT_INPLACE);
+ RB_GSL_FFT_INPLACE);
}
static VALUE rb_gsl_fft_complex_radix2_inverse2(VALUE obj)
{
return rb_fft_complex_radix2(obj, gsl_fft_complex_radix2_inverse,
- RB_GSL_FFT_INPLACE);
+ RB_GSL_FFT_INPLACE);
}
static VALUE rb_gsl_fft_complex_radix2_dif_forward2(VALUE obj)
{
- return rb_fft_complex_radix2(obj,
- gsl_fft_complex_radix2_dif_forward,
- RB_GSL_FFT_INPLACE);
+ return rb_fft_complex_radix2(obj,
+ gsl_fft_complex_radix2_dif_forward,
+ RB_GSL_FFT_INPLACE);
}
static VALUE rb_gsl_fft_complex_radix2_dif_transform(VALUE obj, VALUE val_sign)
@@ -201,7 +201,7 @@ static VALUE rb_gsl_fft_complex_radix2_dif_transform(VALUE obj, VALUE val_sign)
sign = NUM2INT(val_sign);
get_complex_stride_n(obj, &vin, &data, &stride, &n);
vout = gsl_vector_complex_alloc(n);
- gsl_vector_complex_memcpy(vout, vin);
+ gsl_vector_complex_memcpy(vout, vin);
gsl_fft_complex_radix2_dif_transform(vout->data, vout->stride /*1*/, vout->size /*n*/, sign);
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vout);
}
@@ -221,28 +221,28 @@ static VALUE rb_gsl_fft_complex_radix2_dif_transform2(VALUE obj, VALUE val_sign)
static VALUE rb_gsl_fft_complex_radix2_dif_backward(VALUE obj)
{
- return rb_fft_complex_radix2(obj,
- gsl_fft_complex_radix2_dif_backward,
- RB_GSL_FFT_COPY);
+ return rb_fft_complex_radix2(obj,
+ gsl_fft_complex_radix2_dif_backward,
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_complex_radix2_dif_inverse(VALUE obj)
{
- return rb_fft_complex_radix2(obj,
- gsl_fft_complex_radix2_dif_inverse,
- RB_GSL_FFT_COPY);
+ return rb_fft_complex_radix2(obj,
+ gsl_fft_complex_radix2_dif_inverse,
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_complex_radix2_dif_backward2(VALUE obj)
{
- return rb_fft_complex_radix2(obj,
- gsl_fft_complex_radix2_dif_backward,
- RB_GSL_FFT_INPLACE);
+ return rb_fft_complex_radix2(obj,
+ gsl_fft_complex_radix2_dif_backward,
+ RB_GSL_FFT_INPLACE);
}
static VALUE rb_gsl_fft_complex_radix2_dif_inverse2(VALUE obj)
{
- return rb_fft_complex_radix2(obj,
- gsl_fft_complex_radix2_dif_inverse,
- RB_GSL_FFT_INPLACE);
+ return rb_fft_complex_radix2(obj,
+ gsl_fft_complex_radix2_dif_inverse,
+ RB_GSL_FFT_INPLACE);
}
static VALUE rb_GSL_FFT_Wavetable_n(VALUE obj)
@@ -278,16 +278,16 @@ enum {
} FFTComplexStructAllocFlag;
static void gsl_fft_free(int flag, GSL_FFT_Wavetable *table,
- GSL_FFT_Workspace *space);
+ GSL_FFT_Workspace *space);
// Parse argc, argv. obj must be GSL::Vector::Complex.
// This can be simplified at some point.
// See comments preceding get_complex_stride_n()
static int gsl_fft_get_argv_complex(int argc, VALUE *argv, VALUE obj,
- gsl_vector_complex ** vin,
- gsl_complex_packed_array *data, size_t *stride,
- size_t *n, gsl_fft_complex_wavetable **table,
- gsl_fft_complex_workspace **space)
+ gsl_vector_complex ** vin,
+ gsl_complex_packed_array *data, size_t *stride,
+ size_t *n, gsl_fft_complex_wavetable **table,
+ gsl_fft_complex_workspace **space)
{
int flag = NONE_OF_TWO, flagtmp, i, itmp = argc, itmp2 = 0, ccc;
int flagw = 0;
@@ -336,9 +336,9 @@ static int gsl_fft_get_argv_complex(int argc, VALUE *argv, VALUE obj,
// Parse argc, argv. obj must be GSL::Vector of real data
static int gsl_fft_get_argv_real(int argc, VALUE *argv, VALUE obj,
- double **ptr, size_t *stride,
- size_t *n, gsl_fft_real_wavetable **table,
- gsl_fft_real_workspace **space, int *naflag)
+ double **ptr, size_t *stride,
+ size_t *n, gsl_fft_real_wavetable **table,
+ gsl_fft_real_workspace **space, int *naflag)
{
int flag = NONE_OF_TWO, flagtmp, i, itmp = argc, itmp2 = 0, ccc;
int flagw = 0;
@@ -387,9 +387,9 @@ static int gsl_fft_get_argv_real(int argc, VALUE *argv, VALUE obj,
// Parse argc, argv. obj must be GSL::Vector of halfcomplex data
static int gsl_fft_get_argv_halfcomplex(int argc, VALUE *argv, VALUE obj,
- double **ptr, size_t *stride,
- size_t *n, gsl_fft_halfcomplex_wavetable **table,
- gsl_fft_real_workspace **space, int *naflag)
+ double **ptr, size_t *stride,
+ size_t *n, gsl_fft_halfcomplex_wavetable **table,
+ gsl_fft_real_workspace **space, int *naflag)
{
int flag = NONE_OF_TWO, flagtmp, i, itmp = argc, itmp2 = 0, ccc;
int flagw = 0;
@@ -436,7 +436,7 @@ static int gsl_fft_get_argv_halfcomplex(int argc, VALUE *argv, VALUE obj,
}
static void gsl_fft_free(int flag, GSL_FFT_Wavetable *table,
- GSL_FFT_Workspace *space)
+ GSL_FFT_Workspace *space)
{
switch (flag) {
case ALLOC_TABLE:
@@ -456,11 +456,11 @@ static void gsl_fft_free(int flag, GSL_FFT_Wavetable *table,
}
static VALUE rb_fft_complex_trans(int argc, VALUE *argv, VALUE obj,
- int (*transform)(gsl_complex_packed_array,
- size_t, size_t,
- const gsl_fft_complex_wavetable *,
- gsl_fft_complex_workspace *),
- int sss)
+ int (*transform)(gsl_complex_packed_array,
+ size_t, size_t,
+ const gsl_fft_complex_wavetable *,
+ gsl_fft_complex_workspace *),
+ int sss)
{
int flag = 0;
// local variable "status" was defined and set, but never used
@@ -487,13 +487,13 @@ static VALUE rb_fft_complex_trans(int argc, VALUE *argv, VALUE obj,
static VALUE rb_gsl_fft_complex_forward(int argc, VALUE *argv, VALUE obj)
{
return rb_fft_complex_trans(argc, argv, obj, gsl_fft_complex_forward,
- RB_GSL_FFT_COPY);
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_complex_forward2(int argc, VALUE *argv, VALUE obj)
{
return rb_fft_complex_trans(argc, argv, obj, gsl_fft_complex_forward,
- RB_GSL_FFT_INPLACE);
+ RB_GSL_FFT_INPLACE);
}
static VALUE rb_gsl_fft_complex_transform(int argc, VALUE *argv, VALUE obj)
@@ -539,25 +539,25 @@ static VALUE rb_gsl_fft_complex_transform2(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_fft_complex_backward(int argc, VALUE *argv, VALUE obj)
{
return rb_fft_complex_trans(argc, argv, obj, gsl_fft_complex_backward,
- RB_GSL_FFT_COPY);
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_complex_backward2(int argc, VALUE *argv, VALUE obj)
{
return rb_fft_complex_trans(argc, argv, obj, gsl_fft_complex_backward,
- RB_GSL_FFT_INPLACE);
+ RB_GSL_FFT_INPLACE);
}
static VALUE rb_gsl_fft_complex_inverse(int argc, VALUE *argv, VALUE obj)
{
return rb_fft_complex_trans(argc, argv, obj, gsl_fft_complex_inverse,
- RB_GSL_FFT_COPY);
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_complex_inverse2(int argc, VALUE *argv, VALUE obj)
{
return rb_fft_complex_trans(argc, argv, obj, gsl_fft_complex_inverse,
- RB_GSL_FFT_INPLACE);
+ RB_GSL_FFT_INPLACE);
}
// The FFT methods used to allow passing stride and n values as optional
@@ -572,7 +572,7 @@ static VALUE rb_gsl_fft_complex_inverse2(int argc, VALUE *argv, VALUE obj)
//
// obj must be GSL::Vector of real or halfcomplex data
static VALUE get_ptr_stride_n(VALUE obj,
- double **ptr, size_t *stride, size_t *n, int *flag)
+ double **ptr, size_t *stride, size_t *n, int *flag)
{
*flag = 0;
*ptr = get_ptr_double3(obj, n, stride, flag);
@@ -580,17 +580,14 @@ static VALUE get_ptr_stride_n(VALUE obj,
}
static VALUE rb_fft_radix2(VALUE obj,
- int (*trans)(double [], size_t, size_t),
- int sss)
+ int (*trans)(double [], size_t, size_t),
+ int sss)
{
size_t stride, n;
gsl_vector *vnew;
gsl_vector_view vv;
double *ptr1, *ptr2;
int flag;
-#ifdef HAVE_NARRAY_H
- int shape[1];
-#endif
VALUE ary;
get_ptr_stride_n(obj, &ptr1, &stride, &n, &flag);
if (flag == 0) {
@@ -610,6 +607,7 @@ static VALUE rb_fft_radix2(VALUE obj,
#ifdef HAVE_NARRAY_H
} else if (flag == 1) {
if (sss == RB_GSL_FFT_COPY) {
+ int shape[1];
shape[0] = n;
ary = na_make_object(NA_DFLOAT, 1, shape, cNArray);
ptr2 = NA_PTR_TYPE(ary, double*);
@@ -630,46 +628,46 @@ static VALUE rb_fft_radix2(VALUE obj,
static VALUE rb_gsl_fft_real_radix2_transform(VALUE obj)
{
return rb_fft_radix2(obj, gsl_fft_real_radix2_transform,
- RB_GSL_FFT_COPY);
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_real_radix2_transform2(VALUE obj)
{
return rb_fft_radix2(obj, gsl_fft_real_radix2_transform,
- RB_GSL_FFT_INPLACE);
+ RB_GSL_FFT_INPLACE);
}
static VALUE rb_gsl_fft_halfcomplex_radix2_inverse(VALUE obj)
{
return rb_fft_radix2(obj, gsl_fft_halfcomplex_radix2_inverse,
- RB_GSL_FFT_COPY);
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_halfcomplex_radix2_inverse2(VALUE obj)
{
return rb_fft_radix2(obj, gsl_fft_halfcomplex_radix2_inverse,
- RB_GSL_FFT_INPLACE);
+ RB_GSL_FFT_INPLACE);
}
static VALUE rb_gsl_fft_halfcomplex_radix2_backward(VALUE obj)
{
return rb_fft_radix2(obj, gsl_fft_halfcomplex_radix2_backward,
- RB_GSL_FFT_COPY);
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_halfcomplex_radix2_backward2(VALUE obj)
{
return rb_fft_radix2(obj, gsl_fft_halfcomplex_radix2_backward,
- RB_GSL_FFT_INPLACE);
+ RB_GSL_FFT_INPLACE);
}
/*****/
static VALUE rb_fft_real_trans(int argc, VALUE *argv, VALUE obj,
- int (*trans)(double [], size_t, size_t,
- const gsl_fft_real_wavetable *,
- gsl_fft_real_workspace *),
- int sss)
+ int (*trans)(double [], size_t, size_t,
+ const gsl_fft_real_wavetable *,
+ gsl_fft_real_workspace *),
+ int sss)
{
int flag = 0, naflag = 0;
// local variable "status" was defined and set, but never used
@@ -678,9 +676,6 @@ static VALUE rb_fft_real_trans(int argc, VALUE *argv, VALUE obj,
gsl_vector *vnew;
gsl_vector_view vv;
double *ptr1, *ptr2;
-#ifdef HAVE_NARRAY_H
- int shape[1];
-#endif
gsl_fft_real_wavetable *table = NULL;
gsl_fft_real_workspace *space = NULL;
VALUE ary;
@@ -702,6 +697,7 @@ static VALUE rb_fft_real_trans(int argc, VALUE *argv, VALUE obj,
#ifdef HAVE_NARRAY_H
} else if (naflag == 1) {
if (sss == RB_GSL_FFT_COPY) {
+ int shape[1];
shape[0] = n;
ary = na_make_object(NA_DFLOAT, 1, shape, cNArray);
ptr2 = NA_PTR_TYPE(ary, double*);
@@ -723,19 +719,19 @@ static VALUE rb_fft_real_trans(int argc, VALUE *argv, VALUE obj,
static VALUE rb_gsl_fft_real_transform(int argc, VALUE *argv, VALUE obj)
{
return rb_fft_real_trans(argc, argv, obj, gsl_fft_real_transform,
- RB_GSL_FFT_COPY);
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_real_transform2(int argc, VALUE *argv, VALUE obj)
{
return rb_fft_real_trans(argc, argv, obj, gsl_fft_real_transform,
- RB_GSL_FFT_INPLACE);
+ RB_GSL_FFT_INPLACE);
}
static VALUE rb_fft_halfcomplex_trans(int argc, VALUE *argv, VALUE obj,
- int (*trans)(double [], size_t, size_t,
- const gsl_fft_halfcomplex_wavetable *, gsl_fft_real_workspace *),
- int sss)
+ int (*trans)(double [], size_t, size_t,
+ const gsl_fft_halfcomplex_wavetable *, gsl_fft_real_workspace *),
+ int sss)
{
int flag = 0, naflag = 0;
// local variable "status" was defined and set, but never used
@@ -744,14 +740,11 @@ static VALUE rb_fft_halfcomplex_trans(int argc, VALUE *argv, VALUE obj,
gsl_vector *vnew;
gsl_vector_view vv;
double *ptr1, *ptr2;
-#ifdef HAVE_NARRAY_H
- int shape[1];
-#endif
gsl_fft_halfcomplex_wavetable *table = NULL;
gsl_fft_real_workspace *space = NULL;
VALUE ary;
- flag = gsl_fft_get_argv_halfcomplex(argc, argv, obj, &ptr1, &stride, &n,
- &table, &space, &naflag);
+ flag = gsl_fft_get_argv_halfcomplex(argc, argv, obj, &ptr1, &stride, &n,
+ &table, &space, &naflag);
if (naflag == 0) {
if (sss == RB_GSL_FFT_COPY) {
vnew = gsl_vector_alloc(n);
@@ -769,6 +762,7 @@ static VALUE rb_fft_halfcomplex_trans(int argc, VALUE *argv, VALUE obj,
#ifdef HAVE_NARRAY_H
} else if (naflag == 1) {
if (sss == RB_GSL_FFT_COPY) {
+ int shape[1];
shape[0] = n;
ary = na_make_object(NA_DFLOAT, 1, shape, cNArray);
ptr2 = NA_PTR_TYPE(ary, double*);
@@ -789,44 +783,44 @@ static VALUE rb_fft_halfcomplex_trans(int argc, VALUE *argv, VALUE obj,
static VALUE rb_gsl_fft_halfcomplex_transform(int argc, VALUE *argv, VALUE obj)
{
- return rb_fft_halfcomplex_trans(argc, argv, obj,
- gsl_fft_halfcomplex_transform,
- RB_GSL_FFT_COPY);
+ return rb_fft_halfcomplex_trans(argc, argv, obj,
+ gsl_fft_halfcomplex_transform,
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_halfcomplex_transform2(int argc, VALUE *argv, VALUE obj)
{
- return rb_fft_halfcomplex_trans(argc, argv, obj,
- gsl_fft_halfcomplex_transform,
- RB_GSL_FFT_INPLACE);
+ return rb_fft_halfcomplex_trans(argc, argv, obj,
+ gsl_fft_halfcomplex_transform,
+ RB_GSL_FFT_INPLACE);
}
static VALUE rb_gsl_fft_halfcomplex_backward(int argc, VALUE *argv, VALUE obj)
{
- return rb_fft_halfcomplex_trans(argc, argv, obj,
- gsl_fft_halfcomplex_backward,
- RB_GSL_FFT_COPY);
+ return rb_fft_halfcomplex_trans(argc, argv, obj,
+ gsl_fft_halfcomplex_backward,
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_halfcomplex_backward2(int argc, VALUE *argv, VALUE obj)
{
- return rb_fft_halfcomplex_trans(argc, argv, obj,
- gsl_fft_halfcomplex_backward,
- RB_GSL_FFT_INPLACE);
+ return rb_fft_halfcomplex_trans(argc, argv, obj,
+ gsl_fft_halfcomplex_backward,
+ RB_GSL_FFT_INPLACE);
}
static VALUE rb_gsl_fft_halfcomplex_inverse(int argc, VALUE *argv, VALUE obj)
{
- return rb_fft_halfcomplex_trans(argc, argv, obj,
- gsl_fft_halfcomplex_inverse,
- RB_GSL_FFT_COPY);
+ return rb_fft_halfcomplex_trans(argc, argv, obj,
+ gsl_fft_halfcomplex_inverse,
+ RB_GSL_FFT_COPY);
}
static VALUE rb_gsl_fft_halfcomplex_inverse2(int argc, VALUE *argv, VALUE obj)
{
- return rb_fft_halfcomplex_trans(argc, argv, obj,
- gsl_fft_halfcomplex_inverse,
- RB_GSL_FFT_INPLACE);
+ return rb_fft_halfcomplex_trans(argc, argv, obj,
+ gsl_fft_halfcomplex_inverse,
+ RB_GSL_FFT_INPLACE);
}
static VALUE rb_gsl_fft_real_unpack(VALUE obj)
@@ -867,7 +861,7 @@ static VALUE rb_gsl_fft_halfcomplex_to_nrc(VALUE obj)
vnew = gsl_vector_alloc(v->size);
gsl_vector_set(vnew, 0, gsl_vector_get(v, 0)); /* DC */
gsl_vector_set(vnew, 1, gsl_vector_get(v, v->size/2)); /* Nyquist freq */
- for (i = 2, k = 1; i < vnew->size; i+=2, k++) {
+ for (i = 2, k = 1; i < vnew->size; i += 2, k++) {
gsl_vector_set(vnew, i, gsl_vector_get(v, k));
gsl_vector_set(vnew, i+1, -gsl_vector_get(v, v->size-k));
}
@@ -886,12 +880,12 @@ static VALUE rb_gsl_fft_halfcomplex_amp_phase(VALUE obj)
amp = gsl_vector_alloc(v->size/2);
phase = gsl_vector_alloc(v->size/2);
gsl_vector_set(amp, 0, gsl_vector_get(v, 0));
- gsl_vector_set(phase, 0, 0);
+ gsl_vector_set(phase, 0, 0);
gsl_vector_set(amp, amp->size-1, gsl_vector_get(v, v->size-1));
- gsl_vector_set(phase, phase->size-1, 0);
- for (i = 1; i < v->size-1; i+=2) {
+ gsl_vector_set(phase, phase->size-1, 0);
+ for (i = 1; i < v->size-1; i += 2) {
re = gsl_vector_get(v, i);
- im = gsl_vector_get(v, i+1);
+ im = gsl_vector_get(v, i+1);
gsl_vector_set(amp, i/2+1, sqrt(re*re + im*im));
gsl_vector_set(phase, i/2+1, atan2(im, re));
}
@@ -912,40 +906,40 @@ void Init_gsl_fft(VALUE module)
rb_define_const(mgsl_fft, "BACKWARD", INT2FIX(gsl_fft_backward));
/* Transforms for complex vectors */
- rb_define_method(cgsl_vector_complex, "radix2_forward",
- rb_gsl_fft_complex_radix2_forward, 0);
- rb_define_method(cgsl_vector_complex, "radix2_transform",
- rb_gsl_fft_complex_radix2_transform, 1);
- rb_define_method(cgsl_vector_complex, "radix2_backward",
- rb_gsl_fft_complex_radix2_backward, 0);
- rb_define_method(cgsl_vector_complex, "radix2_inverse",
- rb_gsl_fft_complex_radix2_inverse, 0);
- rb_define_method(cgsl_vector_complex, "radix2_dif_forward",
- rb_gsl_fft_complex_radix2_dif_forward, 0);
- rb_define_method(cgsl_vector_complex, "radix2_dif_transform",
- rb_gsl_fft_complex_radix2_dif_transform, 1);
- rb_define_method(cgsl_vector_complex, "radix2_dif_backward",
- rb_gsl_fft_complex_radix2_dif_backward, 0);
- rb_define_method(cgsl_vector_complex, "radix2_dif_inverse",
- rb_gsl_fft_complex_radix2_dif_inverse, 0);
+ rb_define_method(cgsl_vector_complex, "radix2_forward",
+ rb_gsl_fft_complex_radix2_forward, 0);
+ rb_define_method(cgsl_vector_complex, "radix2_transform",
+ rb_gsl_fft_complex_radix2_transform, 1);
+ rb_define_method(cgsl_vector_complex, "radix2_backward",
+ rb_gsl_fft_complex_radix2_backward, 0);
+ rb_define_method(cgsl_vector_complex, "radix2_inverse",
+ rb_gsl_fft_complex_radix2_inverse, 0);
+ rb_define_method(cgsl_vector_complex, "radix2_dif_forward",
+ rb_gsl_fft_complex_radix2_dif_forward, 0);
+ rb_define_method(cgsl_vector_complex, "radix2_dif_transform",
+ rb_gsl_fft_complex_radix2_dif_transform, 1);
+ rb_define_method(cgsl_vector_complex, "radix2_dif_backward",
+ rb_gsl_fft_complex_radix2_dif_backward, 0);
+ rb_define_method(cgsl_vector_complex, "radix2_dif_inverse",
+ rb_gsl_fft_complex_radix2_dif_inverse, 0);
/* In-place radix-2 transforms for complex vectors */
- rb_define_method(cgsl_vector_complex, "radix2_forward!",
- rb_gsl_fft_complex_radix2_forward2, 0);
+ rb_define_method(cgsl_vector_complex, "radix2_forward!",
+ rb_gsl_fft_complex_radix2_forward2, 0);
rb_define_method(cgsl_vector_complex, "radix2_transform!",
- rb_gsl_fft_complex_radix2_transform2, 1);
- rb_define_method(cgsl_vector_complex, "radix2_backward!",
- rb_gsl_fft_complex_radix2_backward2, 0);
- rb_define_method(cgsl_vector_complex, "radix2_inverse!",
- rb_gsl_fft_complex_radix2_inverse2, 0);
- rb_define_method(cgsl_vector_complex, "radix2_dif_forward!",
- rb_gsl_fft_complex_radix2_dif_forward2, 0);
+ rb_gsl_fft_complex_radix2_transform2, 1);
+ rb_define_method(cgsl_vector_complex, "radix2_backward!",
+ rb_gsl_fft_complex_radix2_backward2, 0);
+ rb_define_method(cgsl_vector_complex, "radix2_inverse!",
+ rb_gsl_fft_complex_radix2_inverse2, 0);
+ rb_define_method(cgsl_vector_complex, "radix2_dif_forward!",
+ rb_gsl_fft_complex_radix2_dif_forward2, 0);
rb_define_method(cgsl_vector_complex, "radix2_dif_transform!",
- rb_gsl_fft_complex_radix2_dif_transform2, 1);
- rb_define_method(cgsl_vector_complex, "radix2_dif_backward!",
- rb_gsl_fft_complex_radix2_dif_backward2, 0);
- rb_define_method(cgsl_vector_complex, "radix2_dif_inverse!",
- rb_gsl_fft_complex_radix2_dif_inverse2, 0);
+ rb_gsl_fft_complex_radix2_dif_transform2, 1);
+ rb_define_method(cgsl_vector_complex, "radix2_dif_backward!",
+ rb_gsl_fft_complex_radix2_dif_backward2, 0);
+ rb_define_method(cgsl_vector_complex, "radix2_dif_inverse!",
+ rb_gsl_fft_complex_radix2_dif_inverse2, 0);
// class GSL::FFT::Wavetable < GSL::Object
//
@@ -957,23 +951,23 @@ void Init_gsl_fft(VALUE module)
// No alloc
// TODO Make GSL::FFT::Wavetable#initialize private?
rb_define_method(cgsl_fft_wavetable, "n",
- rb_GSL_FFT_Wavetable_n, 0);
+ rb_GSL_FFT_Wavetable_n, 0);
rb_define_method(cgsl_fft_wavetable, "nf",
- rb_GSL_FFT_Wavetable_nf, 0);
+ rb_GSL_FFT_Wavetable_nf, 0);
rb_define_method(cgsl_fft_wavetable, "factor",
- rb_GSL_FFT_Wavetable_factor, 0);
+ rb_GSL_FFT_Wavetable_factor, 0);
// class GSL::FFT::ComplexWavetable < GSL::FFT::Wavetable
cgsl_fft_complex_wavetable = rb_define_class_under(mgsl_fft, "ComplexWavetable",
- cgsl_fft_wavetable);
+ cgsl_fft_wavetable);
rb_define_singleton_method(cgsl_fft_complex_wavetable, "alloc",
- rb_gsl_fft_complex_wavetable_new, 1);
+ rb_gsl_fft_complex_wavetable_new, 1);
// class GSL::FFT::ComplexWorkspace < GSL::Object
- cgsl_fft_complex_workspace = rb_define_class_under(mgsl_fft, "ComplexWorkspace",
- cGSL_Object);
+ cgsl_fft_complex_workspace = rb_define_class_under(mgsl_fft, "ComplexWorkspace",
+ cGSL_Object);
rb_define_singleton_method(cgsl_fft_complex_workspace, "alloc",
- rb_gsl_fft_complex_workspace_new, 1);
+ rb_gsl_fft_complex_workspace_new, 1);
rb_define_method(cgsl_vector_complex, "forward", rb_gsl_fft_complex_forward, -1);
rb_define_method(cgsl_vector_complex, "transform", rb_gsl_fft_complex_transform, -1);
@@ -988,58 +982,58 @@ void Init_gsl_fft(VALUE module)
/*****/
// TODO Do these method names need the "real_" and "halfcomplex_" prefixes?
- rb_define_method(cgsl_vector, "real_radix2_transform",
- rb_gsl_fft_real_radix2_transform, 0);
+ rb_define_method(cgsl_vector, "real_radix2_transform",
+ rb_gsl_fft_real_radix2_transform, 0);
rb_define_alias(cgsl_vector, "radix2_transform", "real_radix2_transform");
rb_define_alias(cgsl_vector, "radix2_forward", "real_radix2_transform");
- rb_define_method(cgsl_vector, "real_radix2_inverse",
- rb_gsl_fft_halfcomplex_radix2_inverse, 0);
+ rb_define_method(cgsl_vector, "real_radix2_inverse",
+ rb_gsl_fft_halfcomplex_radix2_inverse, 0);
rb_define_alias(cgsl_vector, "radix2_inverse", "real_radix2_inverse");
- rb_define_alias(cgsl_vector, "halfcomplex_radix2_inverse",
- "real_radix2_inverse");
- rb_define_method(cgsl_vector, "real_radix2_backward",
- rb_gsl_fft_halfcomplex_radix2_backward, 0);
+ rb_define_alias(cgsl_vector, "halfcomplex_radix2_inverse",
+ "real_radix2_inverse");
+ rb_define_method(cgsl_vector, "real_radix2_backward",
+ rb_gsl_fft_halfcomplex_radix2_backward, 0);
rb_define_alias(cgsl_vector, "radix2_backward", "real_radix2_backward");
- rb_define_alias(cgsl_vector, "halfcomplex_radix2_backward",
- "real_radix2_backward");
+ rb_define_alias(cgsl_vector, "halfcomplex_radix2_backward",
+ "real_radix2_backward");
// TODO Do these method names need the "real_" and "halfcomplex_" prefixes?
- rb_define_method(cgsl_vector, "real_radix2_transform!",
- rb_gsl_fft_real_radix2_transform2, 0);
+ rb_define_method(cgsl_vector, "real_radix2_transform!",
+ rb_gsl_fft_real_radix2_transform2, 0);
rb_define_alias(cgsl_vector, "radix2_transform!", "real_radix2_transform!");
rb_define_alias(cgsl_vector, "radix2_forward!", "real_radix2_transform!");
- rb_define_method(cgsl_vector, "real_radix2_inverse!",
- rb_gsl_fft_halfcomplex_radix2_inverse2, 0);
+ rb_define_method(cgsl_vector, "real_radix2_inverse!",
+ rb_gsl_fft_halfcomplex_radix2_inverse2, 0);
rb_define_alias(cgsl_vector, "radix2_inverse!", "real_radix2_inverse!");
- rb_define_alias(cgsl_vector, "halfcomplex_radix2_inverse!",
- "real_radix2_inverse!");
- rb_define_method(cgsl_vector, "real_radix2_backward!",
- rb_gsl_fft_halfcomplex_radix2_backward2, 0);
+ rb_define_alias(cgsl_vector, "halfcomplex_radix2_inverse!",
+ "real_radix2_inverse!");
+ rb_define_method(cgsl_vector, "real_radix2_backward!",
+ rb_gsl_fft_halfcomplex_radix2_backward2, 0);
rb_define_alias(cgsl_vector, "radix2_backward!", "real_radix2_backward!");
- rb_define_alias(cgsl_vector, "halfcomplex_radix2_backward!",
- "real_radix2_backward!");
+ rb_define_alias(cgsl_vector, "halfcomplex_radix2_backward!",
+ "real_radix2_backward!");
/*****/
// class GSL::FFT::RealWavetable < GSL::FFT::Wavetable
- cgsl_fft_real_wavetable = rb_define_class_under(mgsl_fft, "RealWavetable",
- cgsl_fft_wavetable);
+ cgsl_fft_real_wavetable = rb_define_class_under(mgsl_fft, "RealWavetable",
+ cgsl_fft_wavetable);
rb_define_singleton_method(cgsl_fft_real_wavetable, "alloc",
- rb_gsl_fft_real_wavetable_new, 1);
+ rb_gsl_fft_real_wavetable_new, 1);
// class GSL::FFT::HalfComplexWavetable < GSL::FFT::Wavetable
- cgsl_fft_halfcomplex_wavetable = rb_define_class_under(mgsl_fft,
- "HalfComplexWavetable", cgsl_fft_wavetable);
+ cgsl_fft_halfcomplex_wavetable = rb_define_class_under(mgsl_fft,
+ "HalfComplexWavetable", cgsl_fft_wavetable);
rb_define_singleton_method(cgsl_fft_halfcomplex_wavetable, "alloc",
- rb_gsl_fft_halfcomplex_wavetable_new, 1);
+ rb_gsl_fft_halfcomplex_wavetable_new, 1);
/*****/
// class GSL::FFT::RealWorkspace < GSL::Object
- cgsl_fft_real_workspace = rb_define_class_under(mgsl_fft, "RealWorkspace",
- cGSL_Object);
+ cgsl_fft_real_workspace = rb_define_class_under(mgsl_fft, "RealWorkspace",
+ cGSL_Object);
rb_define_singleton_method(cgsl_fft_real_workspace, "alloc",
- rb_gsl_fft_real_workspace_new, 1);
+ rb_gsl_fft_real_workspace_new, 1);
/*****/
@@ -1049,14 +1043,14 @@ void Init_gsl_fft(VALUE module)
rb_define_alias(cgsl_vector, "forward", "real_transform");
rb_define_alias(cgsl_vector, "fft_forward", "real_transform");
rb_define_alias(cgsl_vector, "fft", "real_transform");
- rb_define_method(cgsl_vector, "halfcomplex_transform",
- rb_gsl_fft_halfcomplex_transform, -1);
- rb_define_method(cgsl_vector, "halfcomplex_backward",
- rb_gsl_fft_halfcomplex_backward, -1);
+ rb_define_method(cgsl_vector, "halfcomplex_transform",
+ rb_gsl_fft_halfcomplex_transform, -1);
+ rb_define_method(cgsl_vector, "halfcomplex_backward",
+ rb_gsl_fft_halfcomplex_backward, -1);
rb_define_alias(cgsl_vector, "backward", "halfcomplex_backward");
rb_define_alias(cgsl_vector, "fft_backward", "halfcomplex_backward");
- rb_define_method(cgsl_vector, "halfcomplex_inverse",
- rb_gsl_fft_halfcomplex_inverse, -1);
+ rb_define_method(cgsl_vector, "halfcomplex_inverse",
+ rb_gsl_fft_halfcomplex_inverse, -1);
rb_define_alias(cgsl_vector, "fft_inverse", "halfcomplex_inverse");
rb_define_alias(cgsl_vector, "ifft", "halfcomplex_inverse");
rb_define_alias(cgsl_vector, "inverse", "halfcomplex_inverse");
@@ -1066,14 +1060,14 @@ void Init_gsl_fft(VALUE module)
rb_define_alias(cgsl_vector, "forward!", "real_transform!");
rb_define_alias(cgsl_vector, "fft_forward!", "real_transform!");
rb_define_alias(cgsl_vector, "fft!", "real_transform!");
- rb_define_method(cgsl_vector, "halfcomplex_transform!",
- rb_gsl_fft_halfcomplex_transform2, -1);
+ rb_define_method(cgsl_vector, "halfcomplex_transform!",
+ rb_gsl_fft_halfcomplex_transform2, -1);
rb_define_method(cgsl_vector, "halfcomplex_backward!",
- rb_gsl_fft_halfcomplex_backward2, -1);
+ rb_gsl_fft_halfcomplex_backward2, -1);
rb_define_alias(cgsl_vector, "backward!", "halfcomplex_backward!");
rb_define_alias(cgsl_vector, "fft_backward!", "halfcomplex_backward!");
- rb_define_method(cgsl_vector, "halfcomplex_inverse!",
- rb_gsl_fft_halfcomplex_inverse2, -1);
+ rb_define_method(cgsl_vector, "halfcomplex_inverse!",
+ rb_gsl_fft_halfcomplex_inverse2, -1);
rb_define_alias(cgsl_vector, "fft_inverse!", "halfcomplex_inverse!");
rb_define_alias(cgsl_vector, "ifft!", "halfcomplex_inverse!");
rb_define_alias(cgsl_vector, "inverse!", "halfcomplex_inverse!");
@@ -1084,8 +1078,8 @@ void Init_gsl_fft(VALUE module)
rb_define_alias(cgsl_vector, "real_to_complex", "fft_real_unpack");
rb_define_alias(cgsl_vector, "r_to_c", "fft_real_unpack");
- rb_define_method(cgsl_vector, "fft_halfcomplex_unpack",
- rb_gsl_fft_halfcomplex_unpack, 0);
+ rb_define_method(cgsl_vector, "fft_halfcomplex_unpack",
+ rb_gsl_fft_halfcomplex_unpack, 0);
rb_define_alias(cgsl_vector, "halfcomplex_unpack", "fft_halfcomplex_unpack");
rb_define_alias(cgsl_vector, "halfcomplex_to_complex", "fft_halfcomplex_unpack");
rb_define_alias(cgsl_vector, "hc_to_c", "fft_halfcomplex_unpack");
@@ -1093,9 +1087,9 @@ void Init_gsl_fft(VALUE module)
/*****/
rb_define_method(cgsl_vector, "to_nrc_order",
- rb_gsl_fft_halfcomplex_to_nrc, 0);
-
+ rb_gsl_fft_halfcomplex_to_nrc, 0);
+
rb_define_method(cgsl_vector, "halfcomplex_amp_phase",
- rb_gsl_fft_halfcomplex_amp_phase, 0);
+ rb_gsl_fft_halfcomplex_amp_phase, 0);
rb_define_alias(cgsl_vector, "hc_amp_phase", "halfcomplex_amp_phase");
}
diff --git a/ext/gsl/fit.c b/ext/gsl_native/fit.c
similarity index 88%
rename from ext/gsl/fit.c
rename to ext/gsl_native/fit.c
index e5c86b8..26d6d6a 100644
--- a/ext/gsl/fit.c
+++ b/ext/gsl_native/fit.c
@@ -35,10 +35,10 @@ static VALUE rb_gsl_fit_linear(int argc, VALUE *argv, VALUE obj)
break;
}
status = gsl_fit_linear(ptrx, stridex, ptry, stridey, n, &c0, &c1, &cov00,
- &cov01, &cov11, &sumsq);
+ &cov01, &cov11, &sumsq);
return rb_ary_new3(7, rb_float_new(c0), rb_float_new(c1), rb_float_new(cov00),
- rb_float_new(cov01), rb_float_new(cov11), rb_float_new(sumsq),
- INT2FIX(status));
+ rb_float_new(cov01), rb_float_new(cov11), rb_float_new(sumsq),
+ INT2FIX(status));
}
/* linear fit with weights: y = c0 + c1 x */
@@ -54,7 +54,7 @@ static VALUE rb_gsl_fit_wlinear(int argc, VALUE *argv, VALUE obj)
ptrw = get_vector_ptr(argv[1], &stridew, &n);
ptry = get_vector_ptr(argv[2], &stridey, &n);
break;
- case 4:
+ case 4:
CHECK_FIXNUM(argv[3]);
ptrx = get_vector_ptr(argv[0], &stridex, &n);
ptrw = get_vector_ptr(argv[1], &stridew, &n);
@@ -66,11 +66,11 @@ static VALUE rb_gsl_fit_wlinear(int argc, VALUE *argv, VALUE obj)
break;
}
status = gsl_fit_wlinear(ptrx, stridex, ptrw, stridew, ptry, stridey,
- n,
- &c0, &c1, &cov00, &cov01, &cov11, &sumsq);
+ n,
+ &c0, &c1, &cov00, &cov01, &cov11, &sumsq);
return rb_ary_new3(7, rb_float_new(c0), rb_float_new(c1), rb_float_new(cov00),
- rb_float_new(cov01), rb_float_new(cov11), rb_float_new(sumsq),
- INT2FIX(status));
+ rb_float_new(cov01), rb_float_new(cov11), rb_float_new(sumsq),
+ INT2FIX(status));
}
static VALUE rb_gsl_fit_linear_est(int argc, VALUE *argv, VALUE obj)
@@ -129,8 +129,8 @@ static VALUE rb_gsl_fit_mul(int argc, VALUE *argv, VALUE obj)
break;
}
status = gsl_fit_mul(ptrx, stridex, ptry, stridey, n, &c1, &cov11, &sumsq);
- return rb_ary_new3(4, rb_float_new(c1),
- rb_float_new(cov11), rb_float_new(sumsq), INT2FIX(status));
+ return rb_ary_new3(4, rb_float_new(c1),
+ rb_float_new(cov11), rb_float_new(sumsq), INT2FIX(status));
}
static VALUE rb_gsl_fit_wmul(int argc, VALUE *argv, VALUE obj)
@@ -145,7 +145,7 @@ static VALUE rb_gsl_fit_wmul(int argc, VALUE *argv, VALUE obj)
ptrw = get_vector_ptr(argv[1], &stridew, &n);
ptry = get_vector_ptr(argv[2], &stridey, &n);
break;
- case 4:
+ case 4:
CHECK_FIXNUM(argv[3]);
ptrx = get_vector_ptr(argv[0], &stridex, &n);
ptrw = get_vector_ptr(argv[1], &stridew, &n);
@@ -156,10 +156,10 @@ static VALUE rb_gsl_fit_wmul(int argc, VALUE *argv, VALUE obj)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
break;
}
- status = gsl_fit_wmul(ptrx, stridex, ptrw, stridew, ptry, stridey,
- n, &c1, &cov11, &sumsq);
- return rb_ary_new3(4, rb_float_new(c1),
- rb_float_new(cov11), rb_float_new(sumsq), INT2FIX(status));
+ status = gsl_fit_wmul(ptrx, stridex, ptrw, stridew, ptry, stridey,
+ n, &c1, &cov11, &sumsq);
+ return rb_ary_new3(4, rb_float_new(c1),
+ rb_float_new(cov11), rb_float_new(sumsq), INT2FIX(status));
}
static VALUE rb_gsl_fit_mul_est(int argc, VALUE *argv, VALUE obj)
@@ -194,7 +194,7 @@ static VALUE rb_gsl_fit_mul_est(int argc, VALUE *argv, VALUE obj)
void Init_gsl_fit(VALUE module)
{
VALUE mgsl_fit;
- mgsl_fit = rb_define_module_under(module, "Fit");
+ mgsl_fit = rb_define_module_under(module, "Fit");
rb_define_module_function(mgsl_fit, "linear", rb_gsl_fit_linear, -1);
rb_define_module_function(mgsl_fit, "wlinear", rb_gsl_fit_wlinear, -1);
rb_define_module_function(mgsl_fit, "linear_est", rb_gsl_fit_linear_est, -1);
diff --git a/ext/gsl_native/fresnel.c b/ext/gsl_native/fresnel.c
new file mode 100644
index 0000000..a785194
--- /dev/null
+++ b/ext/gsl_native/fresnel.c
@@ -0,0 +1,312 @@
+/****************************************************************************
+ * fresnel.c -
+ * Calculation of Fresnel integrals by expansion to Chebyshev series
+ * Expansions are taken from the book
+ * Y.L. Luke. Mathematical functions and their approximations.
+ * Moscow, "Mir", 1980. PP. 145-149 (Russian edition)
+ ****************************************************************************
+ */
+/*
+ Modified for Ruby bindings
+ 2006/Dec/24 Y. TSUNESADA
+*/
+#include <math.h>
+#include "include/rb_gsl.h"
+#include "include/rb_gsl_sf.h"
+
+static const double sqrt_pi_2 = 1.2533141373155002512078826424; /* sqrt(pi/2) */
+static const double sqrt_2_pi = 0.7978845608028653558798921199; /* sqrt(2/pi) */
+static const double _1_sqrt_2pi = 0.3989422804014326779399460599; /* 1/sqrt(2*pi) */
+static const double pi_2 = 1.5707963267948966192313216916; /* pi/2 */
+
+static double f_data_a[18] =
+{
+ 0.76435138664186000189,
+ -0.43135547547660179313,
+ 0.43288199979726653054,
+ -0.26973310338387111029,
+ 0.08416045320876935378,
+ -0.01546524484461381958,
+ 0.00187855423439822018,
+ -0.00016264977618887547,
+ 0.00001057397656383260,
+ -0.00000053609339889243,
+ 0.00000002181658454933,
+ -0.00000000072901621186,
+ 0.00000000002037332546,
+ -0.00000000000048344033,
+ 0.00000000000000986533,
+ -0.00000000000000017502,
+ 0.00000000000000000272,
+ -0.00000000000000000004
+};
+
+static double f_data_b[17] =
+{
+ 0.63041404314570539241,
+ -0.42344511405705333544,
+ 0.37617172643343656625,
+ -0.16249489154509567415,
+ 0.03822255778633008694,
+ -0.00564563477132190899,
+ 0.00057454951976897367,
+ -0.00004287071532102004,
+ 0.00000245120749923299,
+ -0.00000011098841840868,
+ 0.00000000408249731696,
+ -0.00000000012449830219,
+ 0.00000000000320048425,
+ -0.00000000000007032416,
+ 0.00000000000000133638,
+ -0.00000000000000002219,
+ 0.00000000000000000032
+};
+
+static double fresnel_cos_0_8(double x)
+{
+ double x_8 = x/8.0;
+ double xx = 2.0*x_8*x_8 - 1.0;
+
+ double t0 = 1.0;
+ double t1 = xx;
+ double sumC = f_data_a[0] + f_data_a[1]*t1;
+ double t2;
+ int n;
+ for (n = 2; n < 18; n++)
+ {
+ t2 = 2.0*xx*t1 - t0;
+ sumC += f_data_a[n]*t2;
+ t0 = t1; t1 = t2;
+ }
+ return _1_sqrt_2pi*sqrt(x)*sumC;
+}
+
+static double fresnel_sin_0_8(double x)
+{
+ double x_8 = x/8.0;
+ double xx = 2.0*x_8*x_8 - 1.0;
+ double t0 = 1.;
+ double t1 = xx;
+ double ot1 = x_8;
+ double ot2 = 2.0*x_8*t1 - ot1;
+ double sumS = f_data_b[0]*ot1 + f_data_b[1]*ot2;
+ int n;
+ double t2;
+ for (n = 2; n < 17; n++)
+ {
+ t2 = 2.0*xx*t1 - t0;
+ ot1 = ot2;
+ ot2 = 2.0*x_8*t2 - ot1;
+ sumS += f_data_b[n]*ot2;
+ t0 = t1; t1 = t2;
+ }
+ return _1_sqrt_2pi*sqrt(x)*sumS;
+}
+
+static double f_data_e[41] =
+{
+ 0.97462779093296822410,
+ -0.02424701873969321371,
+ 0.00103400906842977317,
+ -0.00008052450246908016,
+ 0.00000905962481966582,
+ -0.00000131016996757743,
+ 0.00000022770820391497,
+ -0.00000004558623552026,
+ 0.00000001021567537083,
+ -0.00000000251114508133,
+ 0.00000000066704761275,
+ -0.00000000018931512852,
+ 0.00000000005689898935,
+ -0.00000000001798219359,
+ 0.00000000000594162963,
+ -0.00000000000204285065,
+ 0.00000000000072797580,
+ -0.00000000000026797428,
+ 0.00000000000010160694,
+ -0.00000000000003958559,
+ 0.00000000000001581262,
+ -0.00000000000000646411,
+ 0.00000000000000269981,
+ -0.00000000000000115038,
+ 0.00000000000000049942,
+ -0.00000000000000022064,
+ 0.00000000000000009910,
+ -0.00000000000000004520,
+ 0.00000000000000002092,
+ -0.00000000000000000982,
+ 0.00000000000000000467,
+ -0.00000000000000000225,
+ 0.00000000000000000110,
+ -0.00000000000000000054,
+ 0.00000000000000000027,
+ -0.00000000000000000014,
+ 0.00000000000000000007,
+ -0.00000000000000000004,
+ 0.00000000000000000002,
+ -0.00000000000000000001,
+ 0.00000000000000000001
+};
+
+static double f_data_f[35] =
+{
+ 0.99461545179407928910,
+ -0.00524276766084297210,
+ 0.00013325864229883909,
+ -0.00000770856452642713,
+ 0.00000070848077032045,
+ -0.00000008812517411602,
+ 0.00000001359784717148,
+ -0.00000000246858295747,
+ 0.00000000050925789921,
+ -0.00000000011653400634,
+ 0.00000000002906578309,
+ -0.00000000000779847361,
+ 0.00000000000222802542,
+ -0.00000000000067239338,
+ 0.00000000000021296411,
+ -0.00000000000007041482,
+ 0.00000000000002419805,
+ -0.00000000000000861080,
+ 0.00000000000000316287,
+ -0.00000000000000119596,
+ 0.00000000000000046444,
+ -0.00000000000000018485,
+ 0.00000000000000007527,
+ -0.00000000000000003131,
+ 0.00000000000000001328,
+ -0.00000000000000000574,
+ 0.00000000000000000252,
+ -0.00000000000000000113,
+ 0.00000000000000000051,
+ -0.00000000000000000024,
+ 0.00000000000000000011,
+ -0.00000000000000000005,
+ 0.00000000000000000002,
+ -0.00000000000000000001,
+ 0.00000000000000000001
+};
+
+static double fresnel_cos_8_inf(double x)
+{
+ double xx = 128.0/(x*x) - 1.0; /* 2.0*(8/x)^2 - 1 */
+ double t0 = 1.0;
+ double t1 = xx;
+ double sumP = f_data_e[0] + f_data_e[1]*t1;
+ double sumQ = f_data_f[0] + f_data_f[1]*t1;
+ double t2;
+ int n;
+ for(n = 2; n < 35; n++)
+ {
+ t2 = 2.0*xx*t1 - t0;
+ sumP += f_data_e[n]*t2; /* sumP += f_data_e[n]*ChebyshevT(n,xx) */
+ sumQ += f_data_f[n]*t2; /* sumQ += f_data_f[n]*ChebyshevT(n,xx) */
+ t0 = t1; t1 = t2;
+ }
+ for(n = 35; n < 41; n++)
+ {
+ t2 = 2.0*xx*t1 - t0;
+ sumP += f_data_e[n]*t2; /* sumP += f_data_e[n]*ChebyshevT(n,xx) */
+ t0 = t1; t1 = t2;
+ }
+ return 0.5 - _1_sqrt_2pi*(0.5*sumP*cos(x)/x - sumQ*sin(x))/sqrt(x);
+}
+
+static double fresnel_sin_8_inf(double x)
+{
+ double xx = 128.0/(x*x) - 1.0; /* 2.0*(8/x)^2 - 1 */
+ double t0 = 1.0;
+ double t1 = xx;
+ double sumP = f_data_e[0] + f_data_e[1]*t1;
+ double sumQ = f_data_f[0] + f_data_f[1]*t1;
+ double t2;
+ int n;
+ for(n = 2; n < 35; n++)
+ {
+ t2 = 2.0*xx*t1 - t0;
+ sumP += f_data_e[n]*t2; /* sumP += f_data_e[n]*ChebyshevT(n,xx) */
+ sumQ += f_data_f[n]*t2; /* sumQ += f_data_f[n]*ChebyshevT(n,xx) */
+ t0 = t1; t1 = t2;
+ }
+ for(n = 35; n < 41; n++)
+ {
+ t2 = 2.0*xx*t1 - t0;
+ sumP += f_data_e[n]*t2; /* sumQ += f_data_f[n]*ChebyshevT(n,xx) */
+ t0 = t1; t1 = t2;
+ }
+ return 0.5 - _1_sqrt_2pi*(0.5*sumP*sin(x)/x + sumQ*cos(x))/sqrt(x);
+}
+
+
+double fresnel_c(double x)
+{
+ double xx = x*x*pi_2;
+ double ret_val;
+ if(xx<=8.0)
+ ret_val = fresnel_cos_0_8(xx);
+ else
+ ret_val = fresnel_cos_8_inf(xx);
+ return (x<0.0) ? -ret_val : ret_val;
+}
+
+double fresnel_s(double x)
+{
+ double xx = x*x*pi_2;
+ double ret_val;
+ if(xx<=8.0)
+ ret_val = fresnel_sin_0_8(xx);
+ else
+ ret_val = fresnel_sin_8_inf(xx);
+ return (x<0.0) ? -ret_val : ret_val;
+}
+
+double fresnel_c1(double x)
+{
+ return fresnel_c(x*sqrt_2_pi);
+}
+
+double fresnel_s1(double x)
+{
+ return fresnel_s(x*sqrt_2_pi);
+}
+
+static VALUE rb_fresnel_c(VALUE obj, VALUE x)
+{
+ return rb_gsl_sf_eval1(fresnel_c, x);
+}
+static VALUE rb_fresnel_s(VALUE obj, VALUE x)
+{
+ return rb_gsl_sf_eval1(fresnel_s, x);
+}
+static VALUE rb_fresnel_c1(VALUE obj, VALUE x)
+{
+ return rb_gsl_sf_eval1(fresnel_c1, x);
+}
+static VALUE rb_fresnel_s1(VALUE obj, VALUE x)
+{
+ return rb_gsl_sf_eval1(fresnel_s1, x);
+}
+void Init_fresnel(VALUE module)
+{
+ VALUE mfresnel;
+ mfresnel = rb_define_module_under(module, "Fresnel");
+ rb_define_module_function(module, "fresnel_c", rb_fresnel_c, 1);
+ rb_define_module_function(module, "fresnel_s", rb_fresnel_s, 1);
+ rb_define_module_function(module, "fresnel_c1", rb_fresnel_c1, 1);
+ rb_define_module_function(module, "fresnel_s1", rb_fresnel_s1, 1);
+ rb_define_module_function(mfresnel, "c", rb_fresnel_c, 1);
+ rb_define_module_function(mfresnel, "s", rb_fresnel_s, 1);
+ rb_define_module_function(mfresnel, "c1", rb_fresnel_c1, 1);
+ rb_define_module_function(mfresnel, "s1", rb_fresnel_s1, 1);
+}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ext/gsl/function.c b/ext/gsl_native/function.c
similarity index 91%
rename from ext/gsl/function.c
rename to ext/gsl_native/function.c
index 1c9dd4f..7f52a36 100644
--- a/ext/gsl/function.c
+++ b/ext/gsl_native/function.c
@@ -10,15 +10,12 @@
*/
#include "include/rb_gsl_function.h"
-#ifdef HAVE_NARRAY_H
-#include "narray.h"
-#endif
VALUE cgsl_function;
VALUE cgsl_function_fdf;
void gsl_function_free(gsl_function *f);
-double rb_gsl_function_f(double x, void *p);
+double rb_gsl_function_f(double x, void *p);
ID RBGSL_ID_call, RBGSL_ID_arity;
static VALUE rb_gsl_function_set_f(int argc, VALUE *argv, VALUE obj)
@@ -85,7 +82,7 @@ static VALUE rb_gsl_function_alloc(int argc, VALUE *argv, VALUE klass)
obj = Data_Wrap_Struct(klass, gsl_function_mark, gsl_function_free, f);
rb_gsl_function_set_f(argc, argv, obj);
return obj;
-}
+}
double rb_gsl_function_f(double x, void *p)
{
@@ -108,10 +105,6 @@ static VALUE rb_gsl_function_eval(VALUE obj, VALUE x)
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *m = NULL, *mnew = NULL;
size_t i, j, n;
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
Data_Get_Struct(obj, gsl_function, F);
ary = (VALUE) F->params;
proc = rb_ary_entry(ary, 0);
@@ -141,16 +134,18 @@ static VALUE rb_gsl_function_eval(VALUE obj, VALUE x)
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(x)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
GetNArray(x, na);
ptr1 = (double *) na->ptr;
n = na->total;
ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(x));
ptr2 = NA_PTR_TYPE(ary, double*);
for (i = 0; i < n; i++) {
- x2 = rb_float_new(ptr1[i]);
- if (NIL_P(params)) result = rb_funcall(proc, RBGSL_ID_call, 1, x2);
- else result = rb_funcall(proc, RBGSL_ID_call, 2, x2, params);
- ptr2[i] = NUM2DBL(result);
+ x2 = rb_float_new(ptr1[i]);
+ if (NIL_P(params)) result = rb_funcall(proc, RBGSL_ID_call, 1, x2);
+ else result = rb_funcall(proc, RBGSL_ID_call, 2, x2, params);
+ ptr2[i] = NUM2DBL(result);
}
return ary;
}
@@ -159,22 +154,22 @@ static VALUE rb_gsl_function_eval(VALUE obj, VALUE x)
Data_Get_Struct(x, gsl_vector, v);
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- x2 = rb_float_new(gsl_vector_get(v, i));
- if (NIL_P(params)) result = rb_funcall(proc, RBGSL_ID_call, 1, x2);
- else result = rb_funcall(proc, RBGSL_ID_call, 2, x2, params);
- gsl_vector_set(vnew, i, NUM2DBL(result));
+ x2 = rb_float_new(gsl_vector_get(v, i));
+ if (NIL_P(params)) result = rb_funcall(proc, RBGSL_ID_call, 1, x2);
+ else result = rb_funcall(proc, RBGSL_ID_call, 2, x2, params);
+ gsl_vector_set(vnew, i, NUM2DBL(result));
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
} else if (MATRIX_P(x)) {
Data_Get_Struct(x, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- x2 = rb_float_new(gsl_matrix_get(m, i, j));
- if (NIL_P(params)) result = rb_funcall(proc, RBGSL_ID_call, 1, x2);
- else result = rb_funcall(proc, RBGSL_ID_call, 2, x2, params);
- gsl_matrix_set(mnew, i, j, NUM2DBL(result));
- }
+ for (j = 0; j < m->size2; j++) {
+ x2 = rb_float_new(gsl_matrix_get(m, i, j));
+ if (NIL_P(params)) result = rb_funcall(proc, RBGSL_ID_call, 1, x2);
+ else result = rb_funcall(proc, RBGSL_ID_call, 2, x2, params);
+ gsl_matrix_set(mnew, i, j, NUM2DBL(result));
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -242,7 +237,7 @@ static VALUE rb_gsl_function_graph(int argc, VALUE *argv, VALUE obj)
case 2:
Check_Type(argv[1], T_STRING);
strcpy(opt, STR2CSTR(argv[1]));
- /* no break, do next */
+ /* no break, do next */
case 1:
if (CLASS_OF(argv[0]) == rb_cRange) argv[0] = rb_gsl_range2ary(argv[0]);
if (TYPE(argv[0]) == T_ARRAY) {
@@ -250,16 +245,16 @@ static VALUE rb_gsl_function_graph(int argc, VALUE *argv, VALUE obj)
n = RARRAY_LEN(argv[0]);
v = gsl_vector_alloc(n);
flag = 1;
- for (i = 0; i < n; i++)
- gsl_vector_set(v, i, NUM2DBL(rb_ary_entry(argv[0], i)));
+ for (i = 0; i < n; i++)
+ gsl_vector_set(v, i, NUM2DBL(rb_ary_entry(argv[0], i)));
} else if (rb_obj_is_kind_of(argv[0], cgsl_vector)) {
Data_Get_Struct(argv[0], gsl_vector, v);
n = v->size;
flag = 0;
} else {
- rb_raise(rb_eTypeError,
- "wrong argument type %s (Array or GSL::Vector expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s (Array or GSL::Vector expected)",
+ rb_class2name(CLASS_OF(argv[0])));
}
break;
default:
@@ -281,7 +276,7 @@ static VALUE rb_gsl_function_graph(int argc, VALUE *argv, VALUE obj)
fprintf(fp, "%e %e\n", x, y);
}
fflush(fp);
- pclose(fp);
+ pclose(fp);
fp = NULL;
if (flag == 1) gsl_vector_free(v);
return Qtrue;
@@ -310,15 +305,14 @@ static void setfunc(int i, VALUE *argv, gsl_function_fdf *F)
} else {
ary = (VALUE) F->params;
}
-
if (rb_obj_is_kind_of(argv[i], rb_cProc)) {
rb_ary_store(ary, i, argv[i]);
- } else if (TYPE(argv[i]) == T_ARRAY || rb_obj_is_kind_of(argv[i], cgsl_vector)
- || TYPE(argv[i]) == T_FIXNUM || TYPE(argv[i]) == T_FLOAT) {
+ } else if (TYPE(argv[i]) == T_ARRAY || rb_obj_is_kind_of(argv[i], cgsl_vector)
+ || TYPE(argv[i]) == T_FIXNUM || TYPE(argv[i]) == T_FLOAT) {
rb_ary_store(ary, 3, argv[i]);
} else {
- rb_raise(rb_eArgError,
- "wrong type argument (Proc, Array, GSL::Vector or a number)");
+ rb_raise(rb_eArgError,
+ "wrong type argument (Proc, Array, GSL::Vector or a number)");
}
}
diff --git a/ext/gsl/geometry.c b/ext/gsl_native/geometry.c
similarity index 80%
rename from ext/gsl/geometry.c
rename to ext/gsl_native/geometry.c
index 3d9b4cf..0996a7e 100644
--- a/ext/gsl/geometry.c
+++ b/ext/gsl_native/geometry.c
@@ -1,20 +1,20 @@
#include "include/rb_gsl.h"
/*!
- Counter-clockwise rotation around the X-axis
+ Counter-clockwise rotation around the X-axis
/ x' \ / 1 0 0 \ / x \
| y' | = | 0 cos_th -sin_th | | y |
\ z' / \ 0 sin_th cos_th / \ z /
*/
-void vector3_rotateX(const double x[3] /*!< Input */,
- double theta /*!< Rotation angle */,
- double xout[3] /*!< Output */)
+void vector3_rotateX(const double x[3] /*!< Input */,
+ double theta /*!< Rotation angle */,
+ double xout[3] /*!< Output */)
{
double a, b, c;
double costheta, sintheta;
-
+
costheta = cos(theta);
sintheta = sin(theta);
@@ -28,7 +28,7 @@ void vector3_rotateX(const double x[3] /*!< Input */,
}
/*!
- Counter-clockwise rotation around the Y-axis
+ Counter-clockwise rotation around the Y-axis
(Note the sign of the matrix element.)
/ x' \ / cos_th 0 sin_th \ / x \
@@ -36,9 +36,9 @@ void vector3_rotateX(const double x[3] /*!< Input */,
\ z' / \ -sin_th 0 cos_th / \ z /
*/
-void vector3_rotateY(const double x[3] /*!< Input */,
- double theta /*!< Rotation angle */,
- double xout[3] /*!< Output */)
+void vector3_rotateY(const double x[3] /*!< Input */,
+ double theta /*!< Rotation angle */,
+ double xout[3] /*!< Output */)
{
double a, b, c;
double costheta, sintheta;
@@ -56,16 +56,16 @@ void vector3_rotateY(const double x[3] /*!< Input */,
}
/*!
- Counter-clockwise rotation around the Z-axis
+ Counter-clockwise rotation around the Z-axis
/ x' \ / cos_th -sin_th 0 \ / x \
| y' | = | sin_th cos_th 0 | | y |
\ z' / \ 0 0 1 / \ z /
*/
-void vector3_rotateZ(const double x[3] /*!< Input */,
- double theta /*!< Rotation angle */,
- double xout[3] /*!< Output */)
+void vector3_rotateZ(const double x[3] /*!< Input */,
+ double theta /*!< Rotation angle */,
+ double xout[3] /*!< Output */)
{
double a, b, c;
double costheta, sintheta;
@@ -85,7 +85,7 @@ void vector3_rotateZ(const double x[3] /*!< Input */,
/*!
Rotate a 3-vector.
- If flag != 1, cos/sin values stored in the static variables are used
+ If flag != 1, cos/sin values stored in the static variables are used
for efficiency.
The input and the output vectors (x, xout) can be the same pointer.
@@ -95,7 +95,7 @@ void vector3_rotateZ(const double x[3] /*!< Input */,
*/
void vector3_rotate(const double x[3], double theta, double phi,
- double xout[3])
+ double xout[3])
{
vector3_rotateY(x, theta,xout);
vector3_rotateZ(xout, phi, xout);
diff --git a/ext/gsl/graph.c b/ext/gsl_native/graph.c
similarity index 96%
rename from ext/gsl/graph.c
rename to ext/gsl_native/graph.c
index 328b636..b014a70 100644
--- a/ext/gsl/graph.c
+++ b/ext/gsl_native/graph.c
@@ -18,25 +18,21 @@ void make_graphcommand(char *command, VALUE hash)
sprintf(command, "graph -T X -g 3 %s", STR2CSTR(hash));
return;
}
-
strcpy(command, "graph");
- if (TYPE(hash) != T_HASH) rb_raise(rb_eTypeError,
- "wrong argument type %s (Hash expected)",
- rb_class2name(CLASS_OF(hash)));
+ if (TYPE(hash) != T_HASH) rb_raise(rb_eTypeError,
+ "wrong argument type %s (Hash expected)",
+ rb_class2name(CLASS_OF(hash)));
if ((val = rb_hash_aref(hash, rb_str_new2("T"))) != Qnil)
sprintf(command, "%s -T %s", command, STR2CSTR(val));
else
sprintf(command, "%s -T X", command);
-
val = rb_hash_aref(hash, rb_str_new2("C"));
if (val == Qtrue)
sprintf(command, "%s -C", command);
-
if ((val = rb_hash_aref(hash, rb_str_new2("g"))) != Qnil)
sprintf(command, "%s -g %d", command, (int) FIX2INT(val));
else
sprintf(command, "%s -g 3", command);
-
if ((val = rb_hash_aref(hash, rb_str_new2("B"))) == Qtrue)
sprintf(command, "%s -B", command);
if ((val = rb_hash_aref(hash, rb_str_new2("E"))) != Qnil)
@@ -45,7 +41,6 @@ void make_graphcommand(char *command, VALUE hash)
sprintf(command, "%s -f %f", command, NUM2DBL(val));
if ((val = rb_hash_aref(hash, rb_str_new2("F"))) != Qnil)
sprintf(command, "%s -F %s", command, STR2CSTR(val));
-
if ((val = rb_hash_aref(hash, rb_str_new2("h"))) != Qnil)
sprintf(command, "%s -h %f", command, NUM2DBL(val));
if ((val = rb_hash_aref(hash, rb_str_new2("k"))) != Qnil)
@@ -58,7 +53,6 @@ void make_graphcommand(char *command, VALUE hash)
else
sprintf(command, "%s -l %s", command, STR2CSTR(val));
}
-
if ((val = rb_hash_aref(hash, rb_str_new2("L"))) != Qnil)
sprintf(command, "%s -L \"%s\"", command, STR2CSTR(val));
if ((val = rb_hash_aref(hash, rb_str_new2("N"))) != Qnil)
@@ -103,10 +97,8 @@ void make_graphcommand(char *command, VALUE hash)
sprintf(command, "%s --title-font-name %s", command, STR2CSTR(val));
if ((val = rb_hash_aref(hash, rb_str_new2("title-font-size"))) != Qnil)
sprintf(command, "%s --title-font-size %f", command, NUM2DBL(val));
-
if ((val = rb_hash_aref(hash, rb_str_new2("toggle-rotate-y-label"))) == Qtrue)
sprintf(command, "%s --toggle-rotate-y-label", command);
-
if ((val = rb_hash_aref(hash, rb_str_new2("m"))) != Qnil)
sprintf(command, "%s -m %d", command, (int) FIX2INT(val));
if ((val = rb_hash_aref(hash, rb_str_new2("S"))) != Qnil)
@@ -115,15 +107,12 @@ void make_graphcommand(char *command, VALUE hash)
sprintf(command, "%s -W %f", command, NUM2DBL(val));
if ((val = rb_hash_aref(hash, rb_str_new2("q"))) != Qnil)
sprintf(command, "%s -q %f", command, NUM2DBL(val));
-
if ((val = rb_hash_aref(hash, rb_str_new2("symbol-font-name"))) != Qnil)
sprintf(command, "%s --symbol-font-name %s", command, STR2CSTR(val));
-
if ((val = rb_hash_aref(hash, rb_str_new2("reposition"))) != Qnil)
sprintf(command, "%s --reposition %s", command, STR2CSTR(val));
if ((val = rb_hash_aref(hash, rb_str_new2("blankout"))) != Qnil)
sprintf(command, "%s --blankout %s", command, STR2CSTR(val));
-
if ((val = rb_hash_aref(hash, rb_str_new2("O"))) == Qtrue)
sprintf(command, "%s -O", command);
}
@@ -982,7 +971,6 @@ static void gsl_graph_set_command(gsl_graph *g, char *command)
sprintf(command, "%s -T X", command);
else
sprintf(command, "%s -T %s", command, STR2CSTR(g->T));
-
if (TYPE(g->E) == T_STRING) {
strcpy(str, STR2CSTR(g->E));
if (strcmp(str, "x") == 0)
@@ -991,28 +979,21 @@ static void gsl_graph_set_command(gsl_graph *g, char *command)
sprintf(command, "%s -E y", command);
else if (strcmp(str, "xy")*strcmp(str, "x/y") == 0)
sprintf(command, "%s -E x -E y", command);
- else
+ else
rb_raise(rb_eRuntimeError, "unrecognized -E option %s", str);
}
-
if (g->f != Qnil)
sprintf(command, "%s -f %f", command, NUM2DBL(g->f));
-
if (TYPE(g->F) == T_STRING)
sprintf(command, "%s -F %s", command, STR2CSTR(g->F));
-
if (TYPE(g->g) == T_FIXNUM)
sprintf(command, "%s -g %d", command, (int) FIX2INT(g->g));
-
if (g->h != Qnil)
sprintf(command, "%s -h %f", command, NUM2DBL(g->h));
-
if (g->k != Qnil)
sprintf(command, "%s -k %f", command, NUM2DBL(g->k));
-
if (TYPE(g->K) == T_FIXNUM)
sprintf(command, "%s -K %d", command, (int) FIX2INT(g->K));
-
if (TYPE(g->l) == T_STRING) {
strcpy(str, STR2CSTR(g->l));
if (strcmp(str, "x") == 0)
@@ -1021,13 +1002,11 @@ static void gsl_graph_set_command(gsl_graph *g, char *command)
sprintf(command, "%s -l y", command);
else if (strcmp(str, "xy")*strcmp(str, "x/y") == 0)
sprintf(command, "%s -l x -l y", command);
- else
+ else
rb_raise(rb_eRuntimeError, "unrecognized -l option %s", str);
}
-
if (TYPE(g->L) == T_STRING)
sprintf(command, "%s -L \"%s\"", command, STR2CSTR(g->L));
-
if (TYPE(g->N) == T_STRING) {
strcpy(str, STR2CSTR(g->N));
if (strcmp(str, "x") == 0)
@@ -1036,13 +1015,11 @@ static void gsl_graph_set_command(gsl_graph *g, char *command)
sprintf(command, "%s -N y", command);
else if (strcmp(str, "xy")*strcmp(str, "x/y") == 0)
sprintf(command, "%s -N x -N y", command);
- else
+ else
rb_raise(rb_eRuntimeError, "unrecognized -N option %s", str);
}
-
if (g->r != Qnil)
sprintf(command, "%s -r %f", command, NUM2DBL(g->r));
-
if (TYPE(g->R) == T_STRING) {
strcpy(str, STR2CSTR(g->R));
if (strcmp(str, "x") == 0)
@@ -1051,16 +1028,13 @@ static void gsl_graph_set_command(gsl_graph *g, char *command)
sprintf(command, "%s -R y", command);
else if (strcmp(str, "xy")*strcmp(str, "x/y") == 0)
sprintf(command, "%s -R x -R y", command);
- else
+ else
rb_raise(rb_eRuntimeError, "unrecognized -R option %s", str);
}
-
if (g->u != Qnil)
sprintf(command, "%s -u %f", command, NUM2DBL(g->u));
-
if (g->w != Qnil)
sprintf(command, "%s -w %f", command, NUM2DBL(g->w));
-
switch (TYPE(g->x)) {
case T_STRING:
sprintf(command, "%s -x %s", command, STR2CSTR(g->x));
@@ -1103,61 +1077,47 @@ static void gsl_graph_set_command(gsl_graph *g, char *command)
sprintf(command, "%s -X \"%s\"", command, STR2CSTR(g->X));
if (g->Y != Qnil)
sprintf(command, "%s -Y \"%s\"", command, STR2CSTR(g->Y));
-
if (TYPE(g->bg) == T_STRING)
sprintf(command, "%s --bg-color %s", command, STR2CSTR(g->bg));
-
if (TYPE(g->bitmap_size) == T_STRING)
sprintf(command, "%s --bitmap-size %s", command, STR2CSTR(g->bitmap_size));
-
if (TYPE(g->frame) == T_STRING)
sprintf(command, "%s --frame-color %s", command, STR2CSTR(g->frame));
-
if (g->frame_line_width != Qnil)
sprintf(command, "%s --frame-line-width %f", command, NUM2DBL(g->frame_line_width));
-
- if (g->max_line_length != Qnil)
- sprintf(command, "%s --max_line_length %d", command,
- (int) FIX2INT(g->max_line_length));
-
+ if (g->max_line_length != Qnil)
+ sprintf(command, "%s --max_line_length %d", command,
+ (int) FIX2INT(g->max_line_length));
if (g->page_size != Qnil)
sprintf(command, "%s --page-size %s", command, STR2CSTR(g->page_size));
-
if (g->pen_colors != Qnil)
sprintf(command, "%s --pen-colors %s", command, STR2CSTR(g->pen_colors));
-
if (g->rotation != Qnil)
sprintf(command, "%s --rotation %d", command, (int) FIX2INT(g->rotation));
-
if (g->title_font_name != Qnil)
sprintf(command, "%s --title-font-name %s", command, STR2CSTR(g->title_font_name)); if (g->title_font_size != Qnil)
sprintf(command, "%s --title-font-size %f", command, NUM2DBL(g->title_font_size));
-
if (g->rotate_y_label == Qtrue)
sprintf(command, "%s --toggle-rotate-y-label", command);
-
if (g->I != Qnil)
sprintf(command, "%s -I %s", command, STR2CSTR(g->I));
-
if (g->s == Qtrue)
sprintf(command, "%s -s", command);
if (g->t == Qtrue)
sprintf(command, "%s -t", command);
if (g->B == Qtrue)
sprintf(command, "%s -B", command);
-
if (g->m != Qnil)
sprintf(command, "%s -m %d", command, (int) FIX2INT(g->m));
-
switch (TYPE(g->S)) {
case T_STRING:
sprintf(command, "%s -S %s", command, STR2CSTR(g->S));
break;
case T_ARRAY:
- // if (RARRAY(g->S)->len == 2)
- if (RARRAY_LEN(g->S) == 2)
+ // if (RARRAY(g->S)->len == 2)
+ if (RARRAY_LEN(g->S) == 2)
sprintf(command, "%s -S %d %f", command, (int) FIX2INT(rb_ary_entry(g->S, 0)),
- NUM2DBL(rb_ary_entry(g->S, 1)));
+ NUM2DBL(rb_ary_entry(g->S, 1)));
break;
default:
/* do nothing */
@@ -1166,16 +1126,12 @@ static void gsl_graph_set_command(gsl_graph *g, char *command)
if (g->W != Qnil)
sprintf(command, "%s -W %f", command, NUM2DBL(g->W));
-
if (g->q != Qnil)
sprintf(command, "%s -q %f", command, NUM2DBL(g->q));
-
if (g->C == Qtrue)
sprintf(command, "%s -C", command);
-
if (g->symbol_font_name != Qnil)
sprintf(command, "%s --symbol_font_name %s", command, STR2CSTR(g->symbol_font_name));
-
switch (TYPE(g->reposition)) {
case T_STRING:
sprintf(command, "%s --reposition %s", command, STR2CSTR(g->reposition));
@@ -1197,7 +1153,6 @@ static void gsl_graph_set_command(gsl_graph *g, char *command)
if (g->blankout != Qnil)
sprintf(command, "%s --blankout %f", command, NUM2DBL(g->blankout));
-
if (g->O == Qtrue)
sprintf(command, "%s -O", command);
}
@@ -1219,7 +1174,7 @@ static VALUE rb_gsl_graph_graph(int argc, VALUE *argv, VALUE obj)
case 3:
Check_Type(argv[2], T_STRING);
sprintf(command, "%s %s", command, STR2CSTR(argv[2]));
- /* no break */
+ /* no break */
case 2:
if (TYPE(argv[1]) == T_STRING) {
sprintf(command, "%s %s", command, STR2CSTR(argv[1]));
@@ -1227,19 +1182,19 @@ static VALUE rb_gsl_graph_graph(int argc, VALUE *argv, VALUE obj)
g->ydata = argv[1];
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Vector or String expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_class2name(CLASS_OF(argv[1])));
}
- /* no break */
+ /* no break */
case 1:
if (TYPE(argv[0]) == T_STRING) {
sprintf(command, "%s %s", command, STR2CSTR(argv[0]));
} else if (VECTOR_P(argv[0])) {
- g->xdata = argv[0];
+ g->xdata = argv[0];
} else if (HISTOGRAM_P(argv[0])) {
Data_Get_Struct(argv[0], gsl_histogram, h);
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Vector or String expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
}
break;
default:
@@ -1248,19 +1203,16 @@ static VALUE rb_gsl_graph_graph(int argc, VALUE *argv, VALUE obj)
}
if (VECTOR_P(g->xdata)) Data_Get_Struct(g->xdata, gsl_vector, x);
if (VECTOR_P(g->ydata)) Data_Get_Struct(g->ydata, gsl_vector, y);
-
if (x == NULL && h == NULL)
rb_raise(rb_eRuntimeError, "data is not given");
-
if (h) size = h->n;
else size = x->size;
-
fp = popen(command, "w");
if (fp == NULL) rb_raise(rb_eIOError, "GNU graph not found.");
for (i = 0; i < size; i++) {
- if (h)
+ if (h)
fprintf(fp, "%g %g\n%g %g\n", h->range[i], h->bin[i], h->range[i+1], h->bin[i]);
- else if (y == NULL)
+ else if (y == NULL)
fprintf(fp, "%d %g\n", (int) i, gsl_vector_get(x, i));
else
fprintf(fp, "%g %g\n", gsl_vector_get(x, i), gsl_vector_get(y, i));
@@ -1290,7 +1242,7 @@ static VALUE rb_gsl_graph_step(int argc, VALUE *argv, VALUE obj)
case 3:
Check_Type(argv[2], T_STRING);
sprintf(command, "%s %s", command, STR2CSTR(argv[2]));
- /* no break */
+ /* no break */
case 2:
if (TYPE(argv[1]) == T_STRING) {
sprintf(command, "%s %s", command, STR2CSTR(argv[1]));
@@ -1298,17 +1250,17 @@ static VALUE rb_gsl_graph_step(int argc, VALUE *argv, VALUE obj)
g->ydata = argv[1];
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Vector or String expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_class2name(CLASS_OF(argv[1])));
}
- /* no break */
+ /* no break */
case 1:
if (TYPE(argv[0]) == T_STRING) {
sprintf(command, "%s %s", command, STR2CSTR(argv[0]));
} else if (VECTOR_P(argv[0])) {
- g->xdata = argv[0];
+ g->xdata = argv[0];
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Vector or String expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
}
break;
default:
@@ -1317,10 +1269,8 @@ static VALUE rb_gsl_graph_step(int argc, VALUE *argv, VALUE obj)
}
if (VECTOR_P(g->xdata)) Data_Get_Struct(g->xdata, gsl_vector, x);
if (VECTOR_P(g->ydata)) Data_Get_Struct(g->ydata, gsl_vector, y);
-
if (x == NULL)
rb_raise(rb_eRuntimeError, "data is not given");
-
size = x->size;
fp = popen(command, "w");
@@ -1328,14 +1278,14 @@ static VALUE rb_gsl_graph_step(int argc, VALUE *argv, VALUE obj)
for (i = 0; i < size; i++) {
if (y == NULL) {
fprintf(fp, "%d %g\n%d %g\n", (int) i, gsl_vector_get(x, i),
- (int) (i+1), gsl_vector_get(x, i));
+ (int) (i+1), gsl_vector_get(x, i));
} else {
if (i != size-1)
- fprintf(fp, "%g %g\n%g %g\n", gsl_vector_get(x, i), gsl_vector_get(y, i),
- gsl_vector_get(x, i+1), gsl_vector_get(y, i));
- else
- fprintf(fp, "%g %g\n%g %g", gsl_vector_get(x, i), gsl_vector_get(y, i),
- 2.0*gsl_vector_get(x, i)-gsl_vector_get(x, i-1), gsl_vector_get(y, i));
+ fprintf(fp, "%g %g\n%g %g\n", gsl_vector_get(x, i), gsl_vector_get(y, i),
+ gsl_vector_get(x, i+1), gsl_vector_get(y, i));
+ else
+ fprintf(fp, "%g %g\n%g %g", gsl_vector_get(x, i), gsl_vector_get(y, i),
+ 2.0*gsl_vector_get(x, i)-gsl_vector_get(x, i-1), gsl_vector_get(y, i));
}
}
fflush(fp);
@@ -1617,18 +1567,18 @@ void Init_gsl_graph(VALUE module)
rb_define_alias(cgsl_graph, "use_color", "C");
rb_define_alias(cgsl_graph, "toggle_use_color", "C");
- rb_define_method(cgsl_graph, "set_symbol_font_name",
- rb_gsl_graph_set_symbol_font_name, 1);
+ rb_define_method(cgsl_graph, "set_symbol_font_name",
+ rb_gsl_graph_set_symbol_font_name, 1);
rb_define_alias(cgsl_graph, "symbol_font_name=", "set_symbol_font_name");
rb_define_method(cgsl_graph, "symbol_font_name", rb_gsl_graph_symbol_font_name, 0);
- rb_define_method(cgsl_graph, "set_reposition",
- rb_gsl_graph_set_reposition, 1);
+ rb_define_method(cgsl_graph, "set_reposition",
+ rb_gsl_graph_set_reposition, 1);
rb_define_alias(cgsl_graph, "reposition=", "set_reposition");
rb_define_method(cgsl_graph, "reposition", rb_gsl_graph_reposition, 0);
- rb_define_method(cgsl_graph, "set_blankout",
- rb_gsl_graph_set_blankout, 1);
+ rb_define_method(cgsl_graph, "set_blankout",
+ rb_gsl_graph_set_blankout, 1);
rb_define_alias(cgsl_graph, "blankout=", "set_blankout");
rb_define_method(cgsl_graph, "blankout", rb_gsl_graph_blankout, 0);
diff --git a/ext/gsl/gsl.c b/ext/gsl_native/gsl.c
similarity index 95%
rename from ext/gsl/gsl.c
rename to ext/gsl_native/gsl.c
index 4ed836a..4c326cd 100644
--- a/ext/gsl/gsl.c
+++ b/ext/gsl_native/gsl.c
@@ -98,16 +98,14 @@ void Init_gsl_native()
Init_gsl_eigen(mgsl);
Init_gsl_fft(mgsl);
- Init_gsl_signal(mgsl);
+ Init_gsl_signal(mgsl);
Init_gsl_function(mgsl);
Init_gsl_integration(mgsl);
Init_gsl_rng(mgsl);
Init_gsl_qrng(mgsl);
Init_gsl_ran(mgsl);
-#ifdef GSL_1_4_LATER
Init_gsl_cdf(mgsl);
-#endif
Init_gsl_stats(mgsl);
Init_gsl_histogram(mgsl);
@@ -121,9 +119,7 @@ void Init_gsl_native()
Init_gsl_interp(mgsl);
Init_gsl_spline(mgsl);
Init_gsl_diff(mgsl);
-#ifdef GSL_1_4_9_LATER
Init_gsl_deriv(mgsl);
-#endif
Init_gsl_cheb(mgsl);
Init_gsl_sum(mgsl);
@@ -161,32 +157,28 @@ void Init_gsl_native()
#endif
#ifdef HAVE_OOL_OOL_VERSION_H
- Init_ool(mgsl);
+ Init_ool(mgsl);
#endif
#ifdef HAVE_JACOBI_H
- Init_jacobi(mgsl);
+ Init_jacobi(mgsl);
#endif
#ifdef HAVE_GSL_GSL_CQP_H
- Init_cqp(mgsl);
+ Init_cqp(mgsl);
#endif
- Init_fresnel(mgsl);
-
-#ifdef GSL_1_9_LATER
- Init_bspline(mgsl);
-#endif
+ Init_fresnel(mgsl);
+
+ Init_bspline(mgsl);
#ifdef HAVE_ALF_ALF_H
- Init_alf(mgsl);
+ Init_alf(mgsl);
#endif
- Init_geometry(mgsl);
+ Init_geometry(mgsl);
-#ifdef GSL_1_14_LATER
- Init_multiset(mgsl);
-#endif
+ Init_multiset(mgsl);
rb_gsl_define_methods(mgsl);
}
@@ -209,10 +201,8 @@ static void rb_gsl_define_const(VALUE module)
rb_define_const(module, "PREC_DOUBLE", INT2FIX(GSL_PREC_DOUBLE));
rb_define_const(module, "PREC_SINGLE", INT2FIX(GSL_PREC_SINGLE));
rb_define_const(module, "PREC_APPROX", INT2FIX(GSL_PREC_APPROX));
-#ifdef GSL_VERSION
rb_define_const(module, "VERSION", rb_str_new2(GSL_VERSION));
rb_define_const(module, "GSL_VERSION", rb_str_new2(GSL_VERSION));
-#endif
rb_define_const(module, "DBL_EPSILON", rb_float_new(GSL_DBL_EPSILON));
rb_define_const(module, "FLT_EPSILON", rb_float_new(GSL_FLT_EPSILON));
@@ -240,11 +230,8 @@ static void rb_gsl_define_const(VALUE module)
rb_define_const(module, "ROOT6_DBL_MIN", rb_float_new(GSL_ROOT6_DBL_MIN));
rb_define_const(module, "LOG_DBL_MIN", rb_float_new(GSL_LOG_DBL_MIN));
-#ifdef GSL_1_14_LATER
rb_define_const(module, "MAJOR_VERSION", INT2FIX(GSL_MAJOR_VERSION));
rb_define_const(module, "MINOR_VERSION", INT2FIX(GSL_MINOR_VERSION));
-#endif
-
}
static VALUE rb_gsl_have_tensor(VALUE module)
diff --git a/ext/gsl/gsl_narray.c b/ext/gsl_native/gsl_narray.c
similarity index 97%
rename from ext/gsl/gsl_narray.c
rename to ext/gsl_native/gsl_narray.c
index 4acd8c6..ba895e6 100644
--- a/ext/gsl/gsl_narray.c
+++ b/ext/gsl_native/gsl_narray.c
@@ -7,7 +7,6 @@
#ifdef HAVE_NARRAY_H
#include "include/rb_gsl_array.h"
-#include "narray.h"
#include "include/rb_gsl_with_narray.h"
static VALUE rb_gsl_na_to_gsl_matrix_method(VALUE nna);
@@ -30,7 +29,7 @@ static VALUE rb_gsl_vector_to_narray(VALUE obj, VALUE klass)
memcpy(NA_PTR_TYPE(nary,double*), v->data, shape[0]*sizeof(double));
} else {
int i;
- for(i=0; i < (int) v->size; i++) {
+ for(i = 0; i < (int) v->size; i++) {
(NA_PTR_TYPE(nary,double*))[i] = gsl_vector_get(v, i);
}
}
@@ -49,7 +48,7 @@ static VALUE rb_gsl_vector_complex_to_narray(VALUE obj, VALUE klass)
memcpy(NA_PTR_TYPE(nary,double*), v->data, shape[0]*2*sizeof(double));
} else {
int i;
- for(i=0; i < (int) (2*v->size); i++) {
+ for(i = 0; i < (int) (2*v->size); i++) {
(NA_PTR_TYPE(nary,gsl_complex*))[i] = gsl_vector_complex_get(v, i);
}
}
@@ -66,8 +65,7 @@ static VALUE rb_gsl_vector_to_na(VALUE obj)
na = rb_gsl_vector_complex_to_narray(obj, cNArray);
else
rb_raise(rb_eRuntimeError, "unexpected type '%s'",
- rb_obj_classname(obj));
-
+ rb_obj_classname(obj));
return na;
}
@@ -141,7 +139,7 @@ static VALUE rb_gsl_vector_to_narray_ref(VALUE obj, VALUE klass)
na->ptr = (char *) vc->data;
} else {
rb_raise(rb_eRuntimeError, "cannot convert %s to NArray reference object",
- rb_obj_classname(obj));
+ rb_obj_classname(obj));
}
nary = Data_Wrap_Struct(klass, 0, rb_gsl_na_view_free, na);
return nary;
@@ -169,7 +167,7 @@ static VALUE rb_gsl_vector_int_to_narray(VALUE obj, VALUE klass)
memcpy(NA_PTR_TYPE(nary,int*), v->data, shape[0]*sizeof(int));
} else {
int i;
- for(i=0; i < (int) v->size; i++) {
+ for(i = 0; i < (int) v->size; i++) {
(NA_PTR_TYPE(nary,int*))[i] = gsl_vector_int_get(v, i);
}
}
@@ -229,11 +227,10 @@ static VALUE rb_gsl_na_to_gsl_vector_method(VALUE na)
if(NA_TYPE(na) == NA_SCOMPLEX || NA_TYPE(na) == NA_DCOMPLEX)
v = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free,
- na_to_gv_complex(na));
+ na_to_gv_complex(na));
else
v = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free,
- na_to_gv(na));
-
+ na_to_gv(na));
return v;
}
@@ -243,11 +240,10 @@ VALUE rb_gsl_na_to_gsl_vector_view_method(VALUE na)
if(NA_TYPE(na) == NA_SCOMPLEX || NA_TYPE(na) == NA_DCOMPLEX)
v = Data_Wrap_Struct(cgsl_vector_complex_view, 0, gsl_vector_complex_view_free,
- na_to_gv_complex_view(na));
+ na_to_gv_complex_view(na));
else
v = Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free,
- na_to_gv_view(na));
-
+ na_to_gv_view(na));
return v;
}
@@ -282,7 +278,6 @@ gsl_vector_view* na_to_gv_view(VALUE na)
// Raise exception if na's type is not NA_DFLOAT.
if(NA_TYPE(na) != NA_DFLOAT)
rb_raise(rb_eTypeError, "GSL::Vector::View requires NArray be DFLOAT");
-
v = gsl_vector_view_alloc();
v->vector.data = NA_PTR_TYPE(na,double*);
v->vector.size = NA_TOTAL(na);
@@ -310,7 +305,6 @@ gsl_vector_complex_view* na_to_gv_complex_view(VALUE na)
// Raise exception if na's type is not NA_DCOMPLEX
if(NA_TYPE(na) != NA_DCOMPLEX)
rb_raise(rb_eTypeError, "GSL::Vector::Complex::View requires NArray be DCOMPLEX");
-
v = gsl_vector_complex_view_alloc();
v->vector.data = NA_PTR_TYPE(na,double*);
v->vector.size = NA_TOTAL(na);
@@ -357,7 +351,7 @@ static VALUE rb_gsl_matrix_to_narray(VALUE obj, VALUE klass)
shape[1] = m->size1;
nary = na_make_object(NA_DFLOAT, 2, shape, klass);
for (i = 0; (int) i < shape[1]; i++) {
- memcpy(NA_PTR_TYPE(nary,double*)+(i*shape[0]), m->data+(i*m->tda),
+ memcpy(NA_PTR_TYPE(nary,double*)+(i*shape[0]), m->data+(i*m->tda),
shape[0]*sizeof(double));
}
return nary;
@@ -384,7 +378,7 @@ static VALUE rb_gsl_matrix_int_to_narray(VALUE obj, VALUE klass)
shape[1] = m->size1;
nary = na_make_object(NA_LINT, 2, shape, klass);
for (i = 0; (int) i < shape[1]; i++) {
- memcpy(NA_PTR_TYPE(nary,int*)+(i*shape[0]), m->data+(i*m->tda),
+ memcpy(NA_PTR_TYPE(nary,int*)+(i*shape[0]), m->data+(i*m->tda),
shape[0]*sizeof(int));
}
return nary;
@@ -538,7 +532,7 @@ gsl_matrix_view* na_to_gm_view(VALUE nna)
m->matrix.data = NA_PTR_TYPE(ary2,double*);
m->matrix.size1 = na->shape[1];
m->matrix.size2 = na->shape[0];
- m->matrix.tda = m->matrix.size2;
+ m->matrix.tda = m->matrix.size2;
m->matrix.owner = 0;
return m;
}
@@ -570,13 +564,11 @@ gsl_matrix_int_view* na_to_gm_int_view(VALUE nna)
m->matrix.data = NA_PTR_TYPE(ary2,int*);
m->matrix.size1 = na->shape[1];
m->matrix.size2 = na->shape[0];
- m->matrix.tda = m->matrix.size2;
+ m->matrix.tda = m->matrix.size2;
m->matrix.owner = 0;
return m;
}
-#ifdef HAVE_NARRAY_H
-#include "narray.h"
#include <gsl/gsl_histogram.h>
EXTERN VALUE cgsl_histogram;
static VALUE rb_gsl_narray_histogram(int argc, VALUE *argv, VALUE obj)
@@ -593,7 +585,7 @@ static VALUE rb_gsl_narray_histogram(int argc, VALUE *argv, VALUE obj)
v.vector.size = stride;
switch (argc) {
case 1:
- if (rb_obj_is_kind_of(argv[0], rb_cRange))
+ if (rb_obj_is_kind_of(argv[0], rb_cRange))
argv[0] = rb_gsl_range2ary(argv[0]);
switch (TYPE(argv[0])) {
case T_FIXNUM:
@@ -652,7 +644,6 @@ static VALUE rb_gsl_narray_histogram(int argc, VALUE *argv, VALUE obj)
gsl_histogram_increment(h, ptr[i*stride]);
return Data_Wrap_Struct(cgsl_histogram, 0, gsl_histogram_free, h);
}
-#endif
/*void rb_gsl_with_narray_define_methods()*/
void Init_gsl_narray(VALUE module)
@@ -765,7 +756,7 @@ void Init_gsl_narray(VALUE module)
rb_define_method(cNArray, "to_gslm", rb_gsl_na_to_gsl_matrix_method, 0);
rb_define_alias(cNArray, "to_gm", "to_gslm");
rb_define_method(cNArray, "to_gslm_view", rb_gsl_na_to_gsl_matrix_view_method, 0);
- rb_define_alias(cNArray, "to_gm_view", "to_gslm_view");
+ rb_define_alias(cNArray, "to_gm_view", "to_gslm_view");
/*****/
// TODO Complex matrix
diff --git a/ext/gsl/histogram.c b/ext/gsl_native/histogram.c
similarity index 90%
rename from ext/gsl/histogram.c
rename to ext/gsl_native/histogram.c
index 3d4e852..9324bf8 100644
--- a/ext/gsl/histogram.c
+++ b/ext/gsl_native/histogram.c
@@ -21,7 +21,6 @@ VALUE cgsl_histogram_bin;
static VALUE cgsl_histogram_integ;
static VALUE rb_gsl_histogram_alloc_from_file(VALUE klass, VALUE name);
-#ifdef GSL_0_9_4_LATER
static VALUE rb_gsl_histogram_alloc(int argc, VALUE *argv, VALUE klass)
{
gsl_histogram *h = NULL;
@@ -68,8 +67,8 @@ static VALUE rb_gsl_histogram_alloc(int argc, VALUE *argv, VALUE klass)
case T_FIXNUM:
CHECK_FIXNUM(argv[0]);
if (TYPE(argv[1]) != T_ARRAY) {
- rb_raise(rb_eTypeError, "wrong argument type %s (Array expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_raise(rb_eTypeError, "wrong argument type %s (Array expected)",
+ rb_class2name(CLASS_OF(argv[1])));
}
n = FIX2INT(argv[0]);
min = NUM2DBL(rb_ary_entry(argv[1], 0));
@@ -133,7 +132,7 @@ static VALUE rb_gsl_histogram_alloc_from_file(VALUE klass, VALUE name)
h->range[n] = upper;
fclose(fp);
return Data_Wrap_Struct(klass, 0, gsl_histogram_free, h);
-
+
}
/* initialization + set uniform ranges (equal spacing from min to max) */
@@ -172,8 +171,8 @@ static VALUE rb_gsl_histogram_alloc_uniform(int argc, VALUE *argv, VALUE klass)
}
/* initialization + set ranges with a given spacing from min to max */
-static VALUE rb_gsl_histogram_alloc_with_min_max_step(VALUE klass, VALUE vmin,
- VALUE vmax, VALUE ss)
+static VALUE rb_gsl_histogram_alloc_with_min_max_step(VALUE klass, VALUE vmin,
+ VALUE vmax, VALUE ss)
{
gsl_histogram *h = NULL;
gsl_vector *v = NULL;
@@ -196,7 +195,6 @@ static VALUE rb_gsl_histogram_alloc_with_min_max_step(VALUE klass, VALUE vmin,
gsl_vector_free(v);
return Data_Wrap_Struct(klass, 0, gsl_histogram_free, h);
}
-#endif
static VALUE rb_gsl_histogram_calloc(VALUE klass, VALUE nn)
{
@@ -244,7 +242,7 @@ static VALUE rb_gsl_histogram_set_ranges(int argc, VALUE *argv, VALUE obj)
gsl_vector *v = NULL;
size_t size;
Data_Get_Struct(obj, gsl_histogram, h);
- if (argc != 1 && argc != 2)
+ if (argc != 1 && argc != 2)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 2)", argc);
if (TYPE(argv[0]) == T_ARRAY) {
v = make_cvector_from_rarray(argv[0]);
@@ -336,10 +334,6 @@ static VALUE rb_gsl_histogram_accumulate(int argc, VALUE *argv, VALUE obj)
gsl_vector_int *vi;
size_t i;
double weight = 1;
-#ifdef HAVE_NARRAY_H
- double *ptr;
- size_t size, stride;
-#endif
switch (argc) {
case 2:
Need_Float(argv[1]);
@@ -367,8 +361,10 @@ static VALUE rb_gsl_histogram_accumulate(int argc, VALUE *argv, VALUE obj)
gsl_histogram_accumulate(h, (double)gsl_vector_int_get(vi, i), weight);
#ifdef HAVE_NARRAY_H
} else if (NA_IsNArray(argv[0])) {
+ double *ptr;
+ size_t size, stride;
ptr = get_vector_ptr(argv[0], &stride, &size);
- for (i = 0; i < size; i++)
+ for (i = 0; i < size; i++)
gsl_histogram_accumulate(h, ptr[i], weight);
#endif
} else {
@@ -386,7 +382,7 @@ static VALUE rb_gsl_histogram_accumulate2(int argc, VALUE *argv, VALUE obj)
case 2:
Need_Float(argv[1]);
weight = NUM2DBL(argv[1]);
- /* no break; */
+ /* no break; */
case 1:
Need_Float(argv[0]);
x = NUM2DBL(argv[0]);
@@ -494,17 +490,6 @@ static VALUE rb_gsl_histogram_sigma(VALUE obj)
return rb_float_new(gsl_histogram_sigma(h));
}
-#ifndef GSL_1_1_LATER
-double gsl_histogram_sum(const gsl_histogram * h)
-{
- double sum=0;
- size_t i=0, n;
- n=h->n;
- while(i < n) sum += h->bin[i++];
- return sum;
-}
-#endif
-
static VALUE rb_gsl_histogram_sum(VALUE obj)
{
gsl_histogram *h = NULL;
@@ -573,7 +558,7 @@ static VALUE rb_gsl_histogram_equal_bins_p(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
CHECK_HISTOGRAM(argv[0]);
CHECK_HISTOGRAM(argv[1]);
Data_Get_Struct(argv[0], gsl_histogram, h1);
@@ -581,7 +566,7 @@ static VALUE rb_gsl_histogram_equal_bins_p(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
Data_Get_Struct(obj, gsl_histogram, h1);
CHECK_HISTOGRAM(argv[0]);
Data_Get_Struct(argv[0], gsl_histogram, h2);
@@ -598,7 +583,7 @@ static VALUE rb_gsl_histogram_equal_bins_p2(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
CHECK_HISTOGRAM(argv[0]);
CHECK_HISTOGRAM(argv[1]);
Data_Get_Struct(argv[0], gsl_histogram, h1);
@@ -606,7 +591,7 @@ static VALUE rb_gsl_histogram_equal_bins_p2(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
Data_Get_Struct(obj, gsl_histogram, h1);
CHECK_HISTOGRAM(argv[0]);
Data_Get_Struct(argv[0], gsl_histogram, h2);
@@ -884,24 +869,17 @@ static VALUE rb_gsl_histogram_pdf_alloc(VALUE klass, VALUE nn)
{
gsl_histogram_pdf *h = NULL;
gsl_histogram *h0 = NULL;
-#ifdef GSL_0_9_4_LATER
- if (rb_obj_is_kind_of(nn, cgsl_histogram)) {
- Data_Get_Struct(nn, gsl_histogram, h0);
- h = gsl_histogram_pdf_alloc(h0->n);
- gsl_histogram_pdf_init(h, h0);
- } else {
- CHECK_FIXNUM(nn);
+ if (rb_obj_is_kind_of(nn, cgsl_histogram)) {
+ Data_Get_Struct(nn, gsl_histogram, h0);
+ h = gsl_histogram_pdf_alloc(h0->n);
+ gsl_histogram_pdf_init(h, h0);
+ } else {
+ CHECK_FIXNUM(nn);
h = gsl_histogram_pdf_alloc(FIX2INT(nn));
}
-#else
- gsl_histogram *hh = NULL;
- Data_Get_Struct(nn, gsl_histogram, hh);
- h = gsl_histogram_pdf_alloc(hh);
-#endif
return Data_Wrap_Struct(klass, 0, gsl_histogram_pdf_free, h);
}
-#ifdef GSL_0_9_4_LATER
static VALUE rb_gsl_histogram_pdf_init(VALUE obj, VALUE hh)
{
gsl_histogram_pdf *p = NULL;
@@ -912,7 +890,6 @@ static VALUE rb_gsl_histogram_pdf_init(VALUE obj, VALUE hh)
gsl_histogram_pdf_init(p, h);
return obj;
}
-#endif
static VALUE rb_gsl_histogram_pdf_sample(VALUE obj, VALUE r)
{
@@ -971,7 +948,7 @@ static VALUE rb_gsl_histogram_graph(int argc, VALUE *argv, VALUE obj)
fprintf(fp, "%e %e\n%e %e\n", v->range[i], v->bin[i], v->range[i+1], v->bin[i]);
}
fflush(fp);
- pclose(fp);
+ pclose(fp);
fp = NULL;
return Qtrue;
#else
@@ -996,8 +973,8 @@ static VALUE rb_gsl_histogram_plot(int argc, VALUE *argv, VALUE obj)
case 1:
fp = popen("gnuplot -persist", "w");
if (fp == NULL) rb_raise(rb_eIOError, "GNU graph not found.");
- if (TYPE(argv[0]) == T_STRING)
- fprintf(fp, "plot '-' %s\n", STR2CSTR(argv[0]));
+ if (TYPE(argv[0]) == T_STRING)
+ fprintf(fp, "plot '-' %s\n", STR2CSTR(argv[0]));
else
fprintf(fp, "plot '-' with fsteps\n");
break;
@@ -1048,7 +1025,7 @@ static VALUE rb_gsl_histogram_fit_exponential(int argc, VALUE *argv, VALUE obj)
}
n = binend - binstart + 1;
dof = n - p;
-
+
x = gsl_vector_alloc(n);
w = gsl_vector_alloc(n);
lny = gsl_vector_alloc(n);
@@ -1059,15 +1036,15 @@ static VALUE rb_gsl_histogram_fit_exponential(int argc, VALUE *argv, VALUE obj)
gsl_vector_set(lny, i, log(h->bin[i+binstart]));
gsl_vector_set(w, i, h->bin[i+binstart]);
}
- gsl_fit_wlinear(x->data, 1, w->data, 1, lny->data, 1, n,
- &c0, &c1, &cov00, &cov01, &cov11, &sumsq);
+ gsl_fit_wlinear(x->data, 1, w->data, 1, lny->data, 1, n,
+ &c0, &c1, &cov00, &cov01, &cov11, &sumsq);
gsl_vector_free(lny);
gsl_vector_free(w);
gsl_vector_free(x);
c0 = exp(c0);
- return rb_ary_new3(6, rb_float_new(c0), rb_float_new(c1),
- rb_float_new(c0*sqrt(cov00)), rb_float_new(sqrt(cov11)),
- rb_float_new(sumsq), INT2FIX(dof));
+ return rb_ary_new3(6, rb_float_new(c0), rb_float_new(c1),
+ rb_float_new(c0*sqrt(cov00)), rb_float_new(sqrt(cov11)),
+ rb_float_new(sumsq), INT2FIX(dof));
}
static VALUE rb_gsl_histogram_fit_power(int argc, VALUE *argv, VALUE obj)
@@ -1094,7 +1071,7 @@ static VALUE rb_gsl_histogram_fit_power(int argc, VALUE *argv, VALUE obj)
}
n = binend - binstart + 1;
dof = n - p;
-
+
lnx = gsl_vector_alloc(n);
w = gsl_vector_alloc(n);
lny = gsl_vector_alloc(n);
@@ -1105,15 +1082,15 @@ static VALUE rb_gsl_histogram_fit_power(int argc, VALUE *argv, VALUE obj)
gsl_vector_set(lny, i, log(h->bin[i+binstart]));
gsl_vector_set(w, i, h->bin[i+binstart]);
}
- gsl_fit_wlinear(lnx->data, 1, w->data, 1, lny->data, 1, n,
- &c0, &c1, &cov00, &cov01, &cov11, &sumsq);
+ gsl_fit_wlinear(lnx->data, 1, w->data, 1, lny->data, 1, n,
+ &c0, &c1, &cov00, &cov01, &cov11, &sumsq);
gsl_vector_free(lny);
gsl_vector_free(w);
gsl_vector_free(lnx);
c0 = exp(c0);
- return rb_ary_new3(6, rb_float_new(c0), rb_float_new(c1),
- rb_float_new(c0*sqrt(cov00)), rb_float_new(sqrt(cov11)),
- rb_float_new(sumsq), INT2FIX(dof));
+ return rb_ary_new3(6, rb_float_new(c0), rb_float_new(c1),
+ rb_float_new(c0*sqrt(cov00)), rb_float_new(sqrt(cov11)),
+ rb_float_new(sumsq), INT2FIX(dof));
}
static int Gaussian_f(const gsl_vector *v, void *params, gsl_vector *f);
@@ -1173,8 +1150,8 @@ static int Gaussian_df(const gsl_vector *v, void *params, gsl_matrix *J)
return GSL_SUCCESS;
}
-static int Gaussian_fdf(const gsl_vector *v, void *params, gsl_vector *f,
- gsl_matrix *J)
+static int Gaussian_fdf(const gsl_vector *v, void *params, gsl_vector *f,
+ gsl_matrix *J)
{
Gaussian_f(v, params, f);
Gaussian_df(v, params, J);
@@ -1253,9 +1230,9 @@ static VALUE rb_gsl_histogram_fit_gaussian(int argc, VALUE *argv, VALUE obj)
gsl_vector_free(x);
gsl_matrix_free(covar);
return rb_ary_new3(8, rb_float_new(sigma), rb_float_new(mean),
- rb_float_new(height), rb_float_new(errs),
- rb_float_new(errm), rb_float_new(errh),
- rb_float_new(chi2), INT2FIX(dof));
+ rb_float_new(height), rb_float_new(errs),
+ rb_float_new(errm), rb_float_new(errh),
+ rb_float_new(chi2), INT2FIX(dof));
}
static int Rayleigh_f(const gsl_vector *v, void *params, gsl_vector *f);
@@ -1308,8 +1285,8 @@ static int Rayleigh_df(const gsl_vector *v, void *params, gsl_matrix *J)
return GSL_SUCCESS;
}
-static int Rayleigh_fdf(const gsl_vector *v, void *params, gsl_vector *f,
- gsl_matrix *J)
+static int Rayleigh_fdf(const gsl_vector *v, void *params, gsl_vector *f,
+ gsl_matrix *J)
{
Rayleigh_f(v, params, f);
Rayleigh_df(v, params, J);
@@ -1349,7 +1326,7 @@ static VALUE rb_gsl_histogram_fit_rayleigh(int argc, VALUE *argv, VALUE obj)
}
x = gsl_vector_alloc(p);
gsl_vector_set(x, 0, gsl_pow_2(gsl_histogram_sigma(h))); /* initial values, var = 1 */
- gsl_vector_set(x, 1, gsl_histogram_max_val(h));
+ gsl_vector_set(x, 1, gsl_histogram_max_val(h));
hh.h = h;
hh.binstart = binstart;
hh.binend = binend;
@@ -1385,10 +1362,10 @@ static VALUE rb_gsl_histogram_fit_rayleigh(int argc, VALUE *argv, VALUE obj)
gsl_multifit_fdfsolver_free(s);
gsl_vector_free(x);
gsl_matrix_free(covar);
- return rb_ary_new3(6, rb_float_new(sigma),
- rb_float_new(height), rb_float_new(errs),
- rb_float_new(errh),
- rb_float_new(chi2), INT2FIX(dof));
+ return rb_ary_new3(6, rb_float_new(sigma),
+ rb_float_new(height), rb_float_new(errs),
+ rb_float_new(errh),
+ rb_float_new(chi2), INT2FIX(dof));
}
/*
@@ -1444,8 +1421,8 @@ static int xExponential_df(const gsl_vector *v, void *params, gsl_matrix *J)
return GSL_SUCCESS;
}
-static int xExponential_fdf(const gsl_vector *v, void *params, gsl_vector *f,
- gsl_matrix *J)
+static int xExponential_fdf(const gsl_vector *v, void *params, gsl_vector *f,
+ gsl_matrix *J)
{
xExponential_f(v, params, f);
xExponential_df(v, params, J);
@@ -1485,7 +1462,7 @@ static VALUE rb_gsl_histogram_fit_xexponential(int argc, VALUE *argv, VALUE obj)
}
x = gsl_vector_alloc(p);
gsl_vector_set(x, 0, gsl_histogram_sigma(h)); /* initial values, var = 1 */
- gsl_vector_set(x, 1, gsl_histogram_max_val(h));
+ gsl_vector_set(x, 1, gsl_histogram_max_val(h));
hh.h = h;
hh.binstart = binstart;
hh.binend = binend;
@@ -1521,10 +1498,10 @@ static VALUE rb_gsl_histogram_fit_xexponential(int argc, VALUE *argv, VALUE obj)
gsl_multifit_fdfsolver_free(s);
gsl_vector_free(x);
gsl_matrix_free(covar);
- return rb_ary_new3(6, rb_float_new(b),
- rb_float_new(height), rb_float_new(errs),
- rb_float_new(errh),
- rb_float_new(chi2), INT2FIX(dof));
+ return rb_ary_new3(6, rb_float_new(b),
+ rb_float_new(height), rb_float_new(errs),
+ rb_float_new(errh),
+ rb_float_new(chi2), INT2FIX(dof));
}
static VALUE rb_gsl_histogram_fit(int argc, VALUE *argv, VALUE obj)
@@ -1539,20 +1516,20 @@ static VALUE rb_gsl_histogram_fit(int argc, VALUE *argv, VALUE obj)
return rb_gsl_histogram_fit_power(argc-1, argv+1, obj);
} else if (str_head_grep(fittype, "gaus") == 0) {
return rb_gsl_histogram_fit_gaussian(argc-1, argv+1, obj);
- } else if (str_head_grep(fittype, "rayleigh") == 0) {
+ } else if (str_head_grep(fittype, "rayleigh") == 0) {
return rb_gsl_histogram_fit_rayleigh(argc-1, argv+1, obj);
} else if (str_head_grep(fittype, "xexp") == 0) {
return rb_gsl_histogram_fit_xexponential(argc-1, argv+1, obj);
} else {
- rb_raise(rb_eRuntimeError,
- "unknown fitting type %s (exp, power, gaus expected)", fittype);
+ rb_raise(rb_eRuntimeError,
+ "unknown fitting type %s (exp, power, gaus expected)", fittype);
}
return Qnil;
}
/* Integrate histogram: the two histograms must have the same range and bins. */
void mygsl_histogram_integrate(const gsl_histogram *h, gsl_histogram *hi,
- size_t istart, size_t iend)
+ size_t istart, size_t iend)
{
size_t i;
if (iend >= istart) {
@@ -1580,7 +1557,7 @@ void mygsl_histogram_differentiate(const gsl_histogram *hi, gsl_histogram *h)
/* Create a histogram integrating the given histogram h */
gsl_histogram* mygsl_histogram_calloc_integrate(const gsl_histogram *h,
- size_t istart, size_t iend)
+ size_t istart, size_t iend)
{
gsl_histogram *hi = NULL;
hi = gsl_histogram_calloc_range(h->n, h->range);
@@ -1616,16 +1593,16 @@ static VALUE rb_gsl_histogram_integrate(int argc, VALUE *argv, VALUE obj)
case T_FIXNUM:
itmp = FIX2INT(argv[0]);
if (itmp == -1) {
- istart = h->n - 1;
- iend = 0;
+ istart = h->n - 1;
+ iend = 0;
} else {
- istart = 0;
- iend = h->n - 1;
+ istart = 0;
+ iend = h->n - 1;
}
break;
default:
rb_raise(rb_eArgError, "wrong argument type %s (Arran or Fixnum expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
break;
}
break;
@@ -1692,27 +1669,27 @@ static VALUE rb_gsl_histogram_rebin(int argc, VALUE *argv, VALUE obj)
}
static int mygsl_histogram_fread2(FILE * stream, gsl_histogram * h)
-{
+{
double min, max;
int status;
status = gsl_block_raw_fread(stream, &min, 1, 1);
- if (status) return status;
+ if (status) return status;
status = gsl_block_raw_fread(stream, &max, 1, 1);
- if (status) return status;
+ if (status) return status;
gsl_histogram_set_ranges_uniform(h, min, max);
- status = gsl_block_raw_fread (stream, h->bin, h->n, 1);
- if (status) return status;
+ status = gsl_block_raw_fread (stream, h->bin, h->n, 1);
+ if (status) return status;
return status;
}
static int mygsl_histogram_fwrite2(FILE * stream, const gsl_histogram * h)
-{
+{
int status;
status = gsl_block_raw_fwrite (stream, h->range, 1, 1);
- if (status) return status;
+ if (status) return status;
status = gsl_block_raw_fwrite (stream, h->range+h->n, 1, 1);
- if (status) return status;
- status = gsl_block_raw_fwrite (stream, h->bin, h->n, 1);
+ if (status) return status;
+ status = gsl_block_raw_fwrite (stream, h->bin, h->n, 1);
return status;
}
@@ -1833,33 +1810,31 @@ void Init_gsl_histogram(VALUE module)
VALUE cgsl_histogram_pdf;
cgsl_histogram = rb_define_class_under(module, "Histogram", cGSL_Object);
- cgsl_histogram_range = rb_define_class_under(cgsl_histogram, "Range",
- cgsl_vector_view_ro);
- cgsl_histogram_bin = rb_define_class_under(cgsl_histogram, "Bin",
- cgsl_vector_view);
- cgsl_histogram_integ = rb_define_class_under(cgsl_histogram, "Integral",
- cgsl_histogram);
-
-#ifdef GSL_0_9_4_LATER
+ cgsl_histogram_range = rb_define_class_under(cgsl_histogram, "Range",
+ cgsl_vector_view_ro);
+ cgsl_histogram_bin = rb_define_class_under(cgsl_histogram, "Bin",
+ cgsl_vector_view);
+ cgsl_histogram_integ = rb_define_class_under(cgsl_histogram, "Integral",
+ cgsl_histogram);
+
rb_define_singleton_method(cgsl_histogram, "alloc", rb_gsl_histogram_alloc, -1);
/* rb_define_singleton_method(cgsl_histogram, "new", rb_gsl_histogram_alloc, -1);*/
rb_define_singleton_method(cgsl_histogram, "[]", rb_gsl_histogram_alloc, -1);
- rb_define_singleton_method(cgsl_histogram, "alloc_uniform",
- rb_gsl_histogram_alloc_uniform, -1);
- rb_define_singleton_method(cgsl_histogram, "new_uniform",
- rb_gsl_histogram_alloc_uniform, -1);
+ rb_define_singleton_method(cgsl_histogram, "alloc_uniform",
+ rb_gsl_histogram_alloc_uniform, -1);
+ rb_define_singleton_method(cgsl_histogram, "new_uniform",
+ rb_gsl_histogram_alloc_uniform, -1);
- rb_define_singleton_method(cgsl_histogram, "alloc_with_min_max_step",
- rb_gsl_histogram_alloc_with_min_max_step, 3);
- rb_define_singleton_method(cgsl_histogram, "new_with_min_max_step",
- rb_gsl_histogram_alloc_with_min_max_step, 3);
-#endif
+ rb_define_singleton_method(cgsl_histogram, "alloc_with_min_max_step",
+ rb_gsl_histogram_alloc_with_min_max_step, 3);
+ rb_define_singleton_method(cgsl_histogram, "new_with_min_max_step",
+ rb_gsl_histogram_alloc_with_min_max_step, 3);
- rb_define_singleton_method(cgsl_histogram, "calloc",
- rb_gsl_histogram_calloc, 1);
- rb_define_singleton_method(cgsl_histogram, "calloc_range",
- rb_gsl_histogram_calloc_range, -1);
+ rb_define_singleton_method(cgsl_histogram, "calloc",
+ rb_gsl_histogram_calloc, 1);
+ rb_define_singleton_method(cgsl_histogram, "calloc_range",
+ rb_gsl_histogram_calloc_range, -1);
rb_define_method(cgsl_histogram, "bins", rb_gsl_histogram_bins, 0);
rb_define_alias(cgsl_histogram, "n", "bins");
@@ -1867,8 +1842,8 @@ void Init_gsl_histogram(VALUE module)
rb_define_method(cgsl_histogram, "set_ranges", rb_gsl_histogram_set_ranges, -1);
rb_define_method(cgsl_histogram, "range", rb_gsl_histogram_range, 0);
rb_define_method(cgsl_histogram, "bin", rb_gsl_histogram_bin, 0);
- rb_define_method(cgsl_histogram, "set_ranges_uniform",
- rb_gsl_histogram_set_ranges_uniform, -1);
+ rb_define_method(cgsl_histogram, "set_ranges_uniform",
+ rb_gsl_histogram_set_ranges_uniform, -1);
rb_define_singleton_method(cgsl_histogram, "memcpy", rb_gsl_histogram_memcpy, 2);
rb_define_method(cgsl_histogram, "clone", rb_gsl_histogram_clone, 0);
rb_define_alias(cgsl_histogram, "duplicate", "clone");
@@ -1896,20 +1871,20 @@ void Init_gsl_histogram(VALUE module)
rb_define_method(cgsl_histogram, "sum", rb_gsl_histogram_integral, -1);
rb_define_alias(cgsl_histogram, "integral", "sum");
- rb_define_method(cgsl_histogram, "equal_bins_p",
- rb_gsl_histogram_equal_bins_p, -1);
+ rb_define_method(cgsl_histogram, "equal_bins_p",
+ rb_gsl_histogram_equal_bins_p, -1);
rb_define_alias(cgsl_histogram, "equal_bins", "equal_bins_p");
- rb_define_singleton_method(cgsl_histogram, "equal_bins_p",
- rb_gsl_histogram_equal_bins_p, -1);
- rb_define_singleton_method(cgsl_histogram, "equal_bins",
- rb_gsl_histogram_equal_bins_p, -1);
- rb_define_method(cgsl_histogram, "equal_bins_p?",
- rb_gsl_histogram_equal_bins_p2, -1);
+ rb_define_singleton_method(cgsl_histogram, "equal_bins_p",
+ rb_gsl_histogram_equal_bins_p, -1);
+ rb_define_singleton_method(cgsl_histogram, "equal_bins",
+ rb_gsl_histogram_equal_bins_p, -1);
+ rb_define_method(cgsl_histogram, "equal_bins_p?",
+ rb_gsl_histogram_equal_bins_p2, -1);
rb_define_alias(cgsl_histogram, "equal_bins?", "equal_bins_p?");
- rb_define_singleton_method(cgsl_histogram, "equal_bins_p?",
- rb_gsl_histogram_equal_bins_p2, -1);
- rb_define_singleton_method(cgsl_histogram, "equal_bins?",
- rb_gsl_histogram_equal_bins_p2, -1);
+ rb_define_singleton_method(cgsl_histogram, "equal_bins_p?",
+ rb_gsl_histogram_equal_bins_p2, -1);
+ rb_define_singleton_method(cgsl_histogram, "equal_bins?",
+ rb_gsl_histogram_equal_bins_p2, -1);
rb_define_method(cgsl_histogram, "add", rb_gsl_histogram_add, 1);
rb_define_alias(cgsl_histogram, "+", "add");
@@ -1940,13 +1915,11 @@ void Init_gsl_histogram(VALUE module)
rb_define_method(cgsl_histogram, "print", rb_gsl_histogram_print, 0);
cgsl_histogram_pdf = rb_define_class_under(cgsl_histogram, "Pdf", cGSL_Object);
- rb_define_singleton_method(cgsl_histogram_pdf, "alloc",
- rb_gsl_histogram_pdf_alloc, 1);
- /* rb_define_singleton_method(cgsl_histogram_pdf, "new",
+ rb_define_singleton_method(cgsl_histogram_pdf, "alloc",
+ rb_gsl_histogram_pdf_alloc, 1);
+ /* rb_define_singleton_method(cgsl_histogram_pdf, "new",
rb_gsl_histogram_pdf_alloc, 1);*/
-#ifdef GSL_0_9_4_LATER
rb_define_method(cgsl_histogram_pdf, "init", rb_gsl_histogram_pdf_init, 1);
-#endif
rb_define_method(cgsl_histogram_pdf, "sample", rb_gsl_histogram_pdf_sample, 1);
rb_define_method(cgsl_histogram_pdf, "range", rb_gsl_histogram_pdf_range, 0);
@@ -1958,23 +1931,23 @@ void Init_gsl_histogram(VALUE module)
rb_define_method(cgsl_histogram, "plot", rb_gsl_histogram_plot, -1);
- rb_define_method(cgsl_histogram, "fit_gaussian",
- rb_gsl_histogram_fit_gaussian, -1);
- rb_define_method(cgsl_histogram, "fit_exponential",
- rb_gsl_histogram_fit_exponential, -1);
- rb_define_method(cgsl_histogram, "fit_xexponential",
- rb_gsl_histogram_fit_xexponential, -1);
- rb_define_method(cgsl_histogram, "fit_power",
- rb_gsl_histogram_fit_power, -1);
- rb_define_method(cgsl_histogram, "fit_rayleigh",
- rb_gsl_histogram_fit_rayleigh, -1);
- rb_define_method(cgsl_histogram, "fit",
- rb_gsl_histogram_fit, -1);
+ rb_define_method(cgsl_histogram, "fit_gaussian",
+ rb_gsl_histogram_fit_gaussian, -1);
+ rb_define_method(cgsl_histogram, "fit_exponential",
+ rb_gsl_histogram_fit_exponential, -1);
+ rb_define_method(cgsl_histogram, "fit_xexponential",
+ rb_gsl_histogram_fit_xexponential, -1);
+ rb_define_method(cgsl_histogram, "fit_power",
+ rb_gsl_histogram_fit_power, -1);
+ rb_define_method(cgsl_histogram, "fit_rayleigh",
+ rb_gsl_histogram_fit_rayleigh, -1);
+ rb_define_method(cgsl_histogram, "fit",
+ rb_gsl_histogram_fit, -1);
rb_define_method(cgsl_histogram, "integrate", rb_gsl_histogram_integrate, -1);
rb_undef_method(cgsl_histogram_integ, "integrate");
- rb_define_method(cgsl_histogram_integ, "differentiate",
- rb_gsl_histogram_differentiate, 0);
+ rb_define_method(cgsl_histogram_integ, "differentiate",
+ rb_gsl_histogram_differentiate, 0);
rb_define_alias(cgsl_histogram_integ, "diff", "differentiate");
rb_define_method(cgsl_histogram, "normalize", rb_gsl_histogram_normalize, 0);
diff --git a/ext/gsl/histogram2d.c b/ext/gsl_native/histogram2d.c
similarity index 90%
rename from ext/gsl/histogram2d.c
rename to ext/gsl_native/histogram2d.c
index 5e57573..6ad8b35 100644
--- a/ext/gsl/histogram2d.c
+++ b/ext/gsl_native/histogram2d.c
@@ -17,7 +17,6 @@ VALUE cgsl_histogram2d;
VALUE cgsl_histogram2d_view;
static VALUE cgsl_histogram2d_integ;
-#ifdef GSL_0_9_4_LATER
static VALUE rb_gsl_histogram2d_alloc_uniform(int argc, VALUE *argv, VALUE klass);
static VALUE rb_gsl_histogram2d_alloc(int argc, VALUE *argv, VALUE klass)
{
@@ -78,7 +77,7 @@ static VALUE rb_gsl_histogram2d_alloc_uniform(int argc, VALUE *argv, VALUE klass
double xmin, xmax, ymin, ymax;
switch (argc) {
case 4:
- CHECK_FIXNUM(argv[0]); CHECK_FIXNUM(argv[2]);
+ CHECK_FIXNUM(argv[0]); CHECK_FIXNUM(argv[2]);
Check_Type(argv[1], T_ARRAY); Check_Type(argv[3], T_ARRAY);
// if (RARRAY(argv[1])->len != 2 || RARRAY(argv[3])->len != 2)
if (RARRAY_LEN(argv[1]) != 2 || RARRAY_LEN(argv[3]) != 2)
@@ -92,13 +91,13 @@ static VALUE rb_gsl_histogram2d_alloc_uniform(int argc, VALUE *argv, VALUE klass
return Data_Wrap_Struct(klass, 0, gsl_histogram2d_free, h);
break;
case 6:
- CHECK_FIXNUM(argv[0]);
+ CHECK_FIXNUM(argv[0]);
Need_Float(argv[1]); Need_Float(argv[2]);
CHECK_FIXNUM(argv[3]);
Need_Float(argv[4]); Need_Float(argv[5]);
h = gsl_histogram2d_alloc(FIX2INT(argv[0]), FIX2INT(argv[3]));
gsl_histogram2d_set_ranges_uniform(h, NUM2DBL(argv[1]), NUM2DBL(argv[2]),
- NUM2DBL(argv[4]), NUM2DBL(argv[5]));
+ NUM2DBL(argv[4]), NUM2DBL(argv[5]));
return Data_Wrap_Struct(klass, 0, gsl_histogram2d_free, h);
break;
default:
@@ -107,7 +106,6 @@ static VALUE rb_gsl_histogram2d_alloc_uniform(int argc, VALUE *argv, VALUE klass
}
return Qnil; /* never reach here */
}
-#endif
static VALUE rb_gsl_histogram2d_set_ranges(int argc, VALUE *argv, VALUE obj)
{
@@ -205,7 +203,7 @@ static VALUE rb_gsl_histogram2d_accumulate(int argc, VALUE *argv, VALUE obj)
n = (size_t) GSL_MIN_INT((int) vx->size, (int) vy->size);
for (i = 0; i < n; i++)
gsl_histogram2d_accumulate(h, gsl_vector_get(vx, i), gsl_vector_get(vy, i),
- weight);
+ weight);
} else {
gsl_histogram2d_accumulate(h, NUM2DBL(argv[0]), NUM2DBL(argv[1]), weight);
}
@@ -215,14 +213,14 @@ static VALUE rb_gsl_histogram2d_accumulate(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_histogram2d_accumulate2(int argc, VALUE *argv, VALUE obj)
{
gsl_histogram2d *h = NULL;
- double x, y, weight=1;
+ double x, y, weight = 1;
switch (argc) {
case 3:
Need_Float(argv[2]);
weight = NUM2DBL(argv[2]);
- /* no break */
+ /* no break */
case 2:
- Need_Float(argv[0]); Need_Float(argv[1]);
+ Need_Float(argv[0]); Need_Float(argv[1]);
x = NUM2DBL(argv[0]); y = NUM2DBL(argv[1]);
break;
default:
@@ -254,13 +252,13 @@ static VALUE rb_gsl_histogram2d_get(int argc, VALUE *argv, VALUE obj)
switch (TYPE(argv[0])) {
case T_ARRAY:
return rb_float_new(gsl_histogram2d_get(h2, FIX2INT(rb_ary_entry(argv[0], 0)),
- FIX2INT(rb_ary_entry(argv[0], 1))));
+ FIX2INT(rb_ary_entry(argv[0], 1))));
break;
case T_FIXNUM:
- CHECK_FIXNUM(argv[0]);
+ CHECK_FIXNUM(argv[0]);
i = (size_t) FIX2INT(argv[0]);
if (i >= h2->ny)
- rb_raise(rb_eIndexError, "wrong index");
+ rb_raise(rb_eIndexError, "wrong index");
h1 = ALLOC(mygsl_histogram2d_view);
h1->h.n = h2->ny;
h1->h.range = h2->yrange;
@@ -269,7 +267,7 @@ static VALUE rb_gsl_histogram2d_get(int argc, VALUE *argv, VALUE obj)
break;
default:
rb_raise(rb_eTypeError, "wrong argument type %s (Array or Fixnum expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
break;
}
break;
@@ -345,7 +343,7 @@ static VALUE rb_gsl_histogram2d_find(VALUE obj, VALUE x, VALUE y)
{
gsl_histogram2d *h = NULL;
size_t i, j;
- Need_Float(x);Need_Float(y);
+ Need_Float(x); Need_Float(y);
Data_Get_Struct(obj, gsl_histogram2d, h);
gsl_histogram2d_find(h, NUM2DBL(x), NUM2DBL(y), &i, &j);
return rb_ary_new3(2, INT2FIX(i), INT2FIX(j));
@@ -383,7 +381,6 @@ static VALUE rb_gsl_histogram2d_min_bin(VALUE obj)
return rb_ary_new3(2, INT2FIX(i), INT2FIX(j));
}
-#ifdef GSL_1_1_LATER
static VALUE rb_gsl_histogram2d_xmean(VALUE obj)
{
gsl_histogram2d *h = NULL;
@@ -425,7 +422,6 @@ static VALUE rb_gsl_histogram2d_sum(VALUE obj)
Data_Get_Struct(obj, gsl_histogram2d, h);
return rb_float_new(gsl_histogram2d_sum(h));
}
-#endif
/* singleton */
static VALUE rb_gsl_histogram2d_equal_bins_p(VALUE obj, VALUE hh1, VALUE hh2)
@@ -611,7 +607,6 @@ static VALUE rb_gsl_histogram2d_reset(VALUE obj)
return obj;
}
-#ifdef GSL_0_9_4_LATER
static VALUE rb_gsl_histogram2d_pdf_alloc(VALUE klass, VALUE nx, VALUE ny)
{
gsl_histogram2d_pdf *h = NULL;
@@ -630,17 +625,6 @@ static VALUE rb_gsl_histogram2d_pdf_init(VALUE obj, VALUE hh)
gsl_histogram2d_pdf_init(pdf, h);
return obj;
}
-#else
-static VALUE rb_gsl_histogram2d_pdf_alloc(VALUE klass, VALUE hhh)
-{
- gsl_histogram2d_pdf *h = NULL;
- gsl_histogram2d *hh;
- Data_Get_Struct(hhh, gsl_histogram2d, hh);
- h = gsl_histogram2d_pdf_alloc(hh);
- return Data_Wrap_Struct(klass, 0, gsl_histogram2d_pdf_free, h);
-}
-
-#endif
static VALUE rb_gsl_histogram2d_pdf_sample(VALUE obj, VALUE r1, VALUE r2)
{
@@ -689,7 +673,7 @@ static VALUE rb_gsl_histogram2d_bin(VALUE obj)
}
void mygsl_histogram2d_yproject(const gsl_histogram2d *h2, size_t istart,
- size_t iend, gsl_histogram *h)
+ size_t iend, gsl_histogram *h)
{
size_t i, j;
double sum;
@@ -704,7 +688,7 @@ void mygsl_histogram2d_yproject(const gsl_histogram2d *h2, size_t istart,
}
gsl_histogram* mygsl_histogram2d_calloc_yproject(const gsl_histogram2d *h2,
- size_t istart, size_t iend)
+ size_t istart, size_t iend)
{
gsl_histogram *h;
h = gsl_histogram_calloc_range(h2->ny, h2->yrange);
@@ -713,7 +697,7 @@ gsl_histogram* mygsl_histogram2d_calloc_yproject(const gsl_histogram2d *h2,
}
void mygsl_histogram2d_xproject(const gsl_histogram2d *h2, size_t jstart,
- size_t jend, gsl_histogram *h)
+ size_t jend, gsl_histogram *h)
{
size_t i, j;
double sum;
@@ -728,7 +712,7 @@ void mygsl_histogram2d_xproject(const gsl_histogram2d *h2, size_t jstart,
}
gsl_histogram* mygsl_histogram2d_calloc_xproject(const gsl_histogram2d *h2,
- size_t jstart, size_t jend)
+ size_t jstart, size_t jend)
{
gsl_histogram *h;
h = gsl_histogram_calloc_range(h2->nx, h2->xrange);
@@ -789,35 +773,35 @@ static VALUE rb_gsl_histogram2d_yproject(int argc, VALUE *argv, VALUE obj)
}
static int mygsl_histogram2d_fread2(FILE * stream, gsl_histogram2d * h)
-{
+{
double xmin, xmax, ymin, ymax;
int status;
status = gsl_block_raw_fread(stream, &xmin, 1, 1);
- if (status) return status;
+ if (status) return status;
status = gsl_block_raw_fread(stream, &xmax, 1, 1);
- if (status) return status;
+ if (status) return status;
status = gsl_block_raw_fread(stream, &ymin, 1, 1);
- if (status) return status;
+ if (status) return status;
status = gsl_block_raw_fread(stream, &ymax, 1, 1);
- if (status) return status;
+ if (status) return status;
gsl_histogram2d_set_ranges_uniform(h, xmin, xmax, ymin, ymax);
- status = gsl_block_raw_fread (stream, h->bin, h->nx*h->ny, 1);
- if (status) return status;
+ status = gsl_block_raw_fread (stream, h->bin, h->nx*h->ny, 1);
+ if (status) return status;
return status;
}
static int mygsl_histogram2d_fwrite2(FILE * stream, const gsl_histogram2d * h)
-{
+{
int status;
status = gsl_block_raw_fwrite (stream, h->xrange, 1, 1);
- if (status) return status;
+ if (status) return status;
status = gsl_block_raw_fwrite (stream, h->xrange+h->nx, 1, 1);
- if (status) return status;
+ if (status) return status;
status = gsl_block_raw_fwrite (stream, h->yrange, 1, 1);
- if (status) return status;
+ if (status) return status;
status = gsl_block_raw_fwrite (stream, h->yrange+h->ny, 1, 1);
- if (status) return status;
- status = gsl_block_raw_fwrite (stream, h->bin, h->nx*h->ny, 1);
+ if (status) return status;
+ status = gsl_block_raw_fwrite (stream, h->bin, h->nx*h->ny, 1);
return status;
}
@@ -846,7 +830,7 @@ static VALUE rb_gsl_histogram2d_fread2(VALUE obj, VALUE io)
}
static gsl_histogram2d* mygsl_histogram2d_calloc_integrate(const gsl_histogram2d *h,
- int flag)
+ int flag)
{
gsl_histogram2d *hi;
size_t i, j, k;
@@ -867,26 +851,26 @@ static gsl_histogram2d* mygsl_histogram2d_calloc_integrate(const gsl_histogram2d
}
for (i = nx-2;; i--) {
for (j = ny-2;; j--) {
- hi->bin[i*ny+j] = ((gsl_histogram2d_get(hi, i+1, j)
- + gsl_histogram2d_get(hi, i, j+1))
- - gsl_histogram2d_get(hi, i+1, j+1))
- + gsl_histogram2d_get(h, i, j);
- if (j == 0) break;
+ hi->bin[i*ny+j] = ((gsl_histogram2d_get(hi, i+1, j)
+ + gsl_histogram2d_get(hi, i, j+1))
+ - gsl_histogram2d_get(hi, i+1, j+1))
+ + gsl_histogram2d_get(h, i, j);
+ if (j == 0) break;
}
if (i == 0) break;
}
} else {
hi->bin[0] = h->bin[0];
- for (j = 1; j < ny; j++) hi->bin[j] = gsl_histogram2d_get(hi, 0, j-1)
- + gsl_histogram2d_get(h, 0, j);
+ for (j = 1; j < ny; j++) hi->bin[j] = gsl_histogram2d_get(hi, 0, j-1)
+ + gsl_histogram2d_get(h, 0, j);
for (i = 1; i < nx; i++) hi->bin[i*ny] = gsl_histogram2d_get(hi, i-1, 0)
- + gsl_histogram2d_get(h, i, 0);
+ + gsl_histogram2d_get(h, i, 0);
for (i = 1; i < nx; i++) {
for (j = 1; j < ny; j++) {
- hi->bin[i*ny+j] = ((gsl_histogram2d_get(hi, i-1, j)
- + gsl_histogram2d_get(hi, i, j-1))
- - gsl_histogram2d_get(hi, i-1, j-1))
- + gsl_histogram2d_get(h, i, j);
+ hi->bin[i*ny+j] = ((gsl_histogram2d_get(hi, i-1, j)
+ + gsl_histogram2d_get(hi, i, j-1))
+ - gsl_histogram2d_get(hi, i-1, j-1))
+ + gsl_histogram2d_get(h, i, j);
}
}
}
@@ -940,40 +924,39 @@ void Init_gsl_histogram2d(VALUE module)
cgsl_histogram2d = rb_define_class_under(module, "Histogram2d", cGSL_Object);
cgsl_histogram2d_view = rb_define_class_under(cgsl_histogram2d, "View",
- cgsl_histogram);
+ cgsl_histogram);
+
+ cgsl_histogram2d_integ = rb_define_class_under(cgsl_histogram2d, "Integral",
+ cgsl_histogram2d);
- cgsl_histogram2d_integ = rb_define_class_under(cgsl_histogram2d, "Integral",
- cgsl_histogram2d);
-#ifdef GSL_0_9_4_LATER
/* rb_define_singleton_method(cgsl_histogram2d, "new", rb_gsl_histogram2d_alloc, -1);*/
rb_define_singleton_method(cgsl_histogram2d, "alloc", rb_gsl_histogram2d_alloc, -1);
- rb_define_singleton_method(cgsl_histogram2d, "new_uniform",
- rb_gsl_histogram2d_alloc_uniform, -1);
- rb_define_singleton_method(cgsl_histogram2d, "alloc_uniform",
- rb_gsl_histogram2d_alloc_uniform, -1);
-#endif
-
- rb_define_singleton_method(cgsl_histogram2d, "equal_bins_p",
- rb_gsl_histogram2d_equal_bins_p, 2);
- rb_define_singleton_method(cgsl_histogram2d, "equal_bins_p?",
- rb_gsl_histogram2d_equal_bins_p2, 2);
-
- rb_define_method(cgsl_histogram2d, "set_ranges",
- rb_gsl_histogram2d_set_ranges, -1);
- rb_define_method(cgsl_histogram2d, "set_ranges_uniform",
- rb_gsl_histogram2d_set_ranges_uniform, -1);
-
- rb_define_singleton_method(cgsl_histogram2d, "memcpy",
- rb_gsl_histogram2d_memcpy, 2);
+ rb_define_singleton_method(cgsl_histogram2d, "new_uniform",
+ rb_gsl_histogram2d_alloc_uniform, -1);
+ rb_define_singleton_method(cgsl_histogram2d, "alloc_uniform",
+ rb_gsl_histogram2d_alloc_uniform, -1);
+
+ rb_define_singleton_method(cgsl_histogram2d, "equal_bins_p",
+ rb_gsl_histogram2d_equal_bins_p, 2);
+ rb_define_singleton_method(cgsl_histogram2d, "equal_bins_p?",
+ rb_gsl_histogram2d_equal_bins_p2, 2);
+
+ rb_define_method(cgsl_histogram2d, "set_ranges",
+ rb_gsl_histogram2d_set_ranges, -1);
+ rb_define_method(cgsl_histogram2d, "set_ranges_uniform",
+ rb_gsl_histogram2d_set_ranges_uniform, -1);
+
+ rb_define_singleton_method(cgsl_histogram2d, "memcpy",
+ rb_gsl_histogram2d_memcpy, 2);
rb_define_method(cgsl_histogram2d, "clone", rb_gsl_histogram2d_clone, 0);
rb_define_alias(cgsl_histogram2d, "duplicate", "clone");
- rb_define_method(cgsl_histogram2d, "increment",
- rb_gsl_histogram2d_accumulate, -1);
+ rb_define_method(cgsl_histogram2d, "increment",
+ rb_gsl_histogram2d_accumulate, -1);
rb_define_alias(cgsl_histogram2d, "fill", "increment");
rb_define_alias(cgsl_histogram2d, "accumulate", "increment");
- rb_define_method(cgsl_histogram2d, "increment2",
- rb_gsl_histogram2d_accumulate2, -1);
+ rb_define_method(cgsl_histogram2d, "increment2",
+ rb_gsl_histogram2d_accumulate2, -1);
rb_define_alias(cgsl_histogram2d, "accumulate2", "increment2");
rb_define_alias(cgsl_histogram2d, "fill2", "increment2");
@@ -996,7 +979,6 @@ void Init_gsl_histogram2d(VALUE module)
rb_define_method(cgsl_histogram2d, "min_val", rb_gsl_histogram2d_min_val, 0);
rb_define_method(cgsl_histogram2d, "min_bin", rb_gsl_histogram2d_min_bin, 0);
-#ifdef GSL_1_1_LATER
rb_define_method(cgsl_histogram2d, "xmean", rb_gsl_histogram2d_xmean, 0);
rb_define_method(cgsl_histogram2d, "ymean", rb_gsl_histogram2d_ymean, 0);
rb_define_method(cgsl_histogram2d, "xsigma", rb_gsl_histogram2d_xsigma, 0);
@@ -1004,7 +986,6 @@ void Init_gsl_histogram2d(VALUE module)
rb_define_method(cgsl_histogram2d, "cov", rb_gsl_histogram2d_cov, 0);
rb_define_method(cgsl_histogram2d, "sum", rb_gsl_histogram2d_sum, 0);
rb_define_alias(cgsl_histogram2d, "integral", "sum");
-#endif
rb_define_method(cgsl_histogram2d, "add", rb_gsl_histogram2d_add, 1);
rb_define_alias(cgsl_histogram2d, "+", "add");
@@ -1028,18 +1009,12 @@ void Init_gsl_histogram2d(VALUE module)
rb_define_method(cgsl_histogram2d, "fscanf", rb_gsl_histogram2d_fscanf, 3);
cgsl_histogram2d_pdf = rb_define_class_under(cgsl_histogram2d, "Pdf", cGSL_Object);
-#ifdef GSL_0_9_4_LATER
- /* rb_define_singleton_method(cgsl_histogram2d_pdf, "new",
+
+ /* rb_define_singleton_method(cgsl_histogram2d_pdf, "new",
rb_gsl_histogram2d_pdf_alloc, 2);*/
- rb_define_singleton_method(cgsl_histogram2d_pdf, "alloc",
- rb_gsl_histogram2d_pdf_alloc, 2);
+ rb_define_singleton_method(cgsl_histogram2d_pdf, "alloc",
+ rb_gsl_histogram2d_pdf_alloc, 2);
rb_define_method(cgsl_histogram2d_pdf, "init", rb_gsl_histogram2d_pdf_init, 1);
-#else
- /* rb_define_singleton_method(cgsl_histogram2d_pdf, "new",
- rb_gsl_histogram2d_pdf_alloc, 1);*/
- rb_define_singleton_method(cgsl_histogram2d_pdf, "alloc",
- rb_gsl_histogram2d_pdf_alloc, 1);
-#endif
rb_define_method(cgsl_histogram2d_pdf, "sample", rb_gsl_histogram2d_pdf_sample, 2);
diff --git a/ext/gsl/histogram3d.c b/ext/gsl_native/histogram3d.c
similarity index 87%
rename from ext/gsl/histogram3d.c
rename to ext/gsl_native/histogram3d.c
index b19d563..5b7bc30 100644
--- a/ext/gsl/histogram3d.c
+++ b/ext/gsl_native/histogram3d.c
@@ -24,27 +24,27 @@ static VALUE rb_gsl_histogram3d_new(int argc, VALUE *argv, VALUE klass)
size_t nx, ny, nz;
switch (argc) {
case 3:
- if (TYPE(argv[0]) == T_FIXNUM
- && TYPE(argv[1]) == T_FIXNUM && TYPE(argv[2]) == T_FIXNUM) {
- h = mygsl_histogram3d_alloc(FIX2INT(argv[0]),
- FIX2INT(argv[1]), FIX2INT(argv[2]));
+ if (TYPE(argv[0]) == T_FIXNUM
+ && TYPE(argv[1]) == T_FIXNUM && TYPE(argv[2]) == T_FIXNUM) {
+ h = mygsl_histogram3d_alloc(FIX2INT(argv[0]),
+ FIX2INT(argv[1]), FIX2INT(argv[2]));
} else if (VECTOR_P(argv[0]) && VECTOR_P(argv[1]) && VECTOR_P(argv[2])) {
Data_Get_Struct(argv[0], gsl_vector, xrange);
Data_Get_Struct(argv[1], gsl_vector, yrange);
Data_Get_Struct(argv[2], gsl_vector, zrange);
h = mygsl_histogram3d_alloc(xrange->size-1, yrange->size-1, zrange->size-1);
mygsl_histogram3d_set_ranges(h, xrange->data, xrange->size,
- yrange->data, yrange->size,
- zrange->data, zrange->size);
- } else if (TYPE(argv[0]) == T_ARRAY
- && TYPE(argv[1]) == T_ARRAY && TYPE(argv[2]) == T_ARRAY) {
+ yrange->data, yrange->size,
+ zrange->data, zrange->size);
+ } else if (TYPE(argv[0]) == T_ARRAY
+ && TYPE(argv[1]) == T_ARRAY && TYPE(argv[2]) == T_ARRAY) {
xrange = make_cvector_from_rarray(argv[0]);
yrange = make_cvector_from_rarray(argv[1]);
zrange = make_cvector_from_rarray(argv[2]);
h = mygsl_histogram3d_alloc(xrange->size-1, yrange->size-1, zrange->size-1);
mygsl_histogram3d_set_ranges(h, xrange->data, xrange->size,
- yrange->data, yrange->size,
- zrange->data, zrange->size);
+ yrange->data, yrange->size,
+ zrange->data, zrange->size);
gsl_vector_free(zrange);
gsl_vector_free(yrange);
gsl_vector_free(xrange);
@@ -54,7 +54,7 @@ static VALUE rb_gsl_histogram3d_new(int argc, VALUE *argv, VALUE klass)
break;
case 6:
CHECK_FIXNUM(argv[0]); CHECK_FIXNUM(argv[2]); CHECK_FIXNUM(argv[4]);
- Check_Type(argv[1], T_ARRAY); Check_Type(argv[3], T_ARRAY);
+ Check_Type(argv[1], T_ARRAY); Check_Type(argv[3], T_ARRAY);
Check_Type(argv[5], T_ARRAY);
nx = FIX2INT(argv[0]); ny = FIX2INT(argv[2]); nz = FIX2INT(argv[4]);
xmin = NUM2DBL(rb_ary_entry(argv[1], 0));
@@ -64,7 +64,7 @@ static VALUE rb_gsl_histogram3d_new(int argc, VALUE *argv, VALUE klass)
zmin = NUM2DBL(rb_ary_entry(argv[5], 0));
zmax = NUM2DBL(rb_ary_entry(argv[5], 1));
h = mygsl_histogram3d_calloc_uniform(nx, ny, nz, xmin, xmax, ymin, ymax,
- zmin, zmax);
+ zmin, zmax);
break;
case 9:
CHECK_FIXNUM(argv[0]); CHECK_FIXNUM(argv[3]); CHECK_FIXNUM(argv[6]);
@@ -73,7 +73,7 @@ static VALUE rb_gsl_histogram3d_new(int argc, VALUE *argv, VALUE klass)
ymin = NUM2DBL(argv[4]); ymax = NUM2DBL(argv[5]);
zmin = NUM2DBL(argv[7]); zmax = NUM2DBL(argv[8]);
h = mygsl_histogram3d_calloc_uniform(nx, ny, nz, xmin, xmax, ymin, ymax,
- zmin, zmax);
+ zmin, zmax);
break;
default:
break;
@@ -189,37 +189,37 @@ static VALUE rb_gsl_histogram3d_get(int argc, VALUE *argv, VALUE obj)
// switch (RARRAY(argv[0])->len) {
switch (RARRAY_LEN(argv[0])) {
case 1:
- i = FIX2INT(rb_ary_entry(argv[0], 0));
- h2 = ALLOC(mygsl_histogram3d_view);
- h2->h.nx = h->ny;
- h2->h.ny = h->nz;
- h2->h.xrange = h->yrange;
- h2->h.yrange = h->zrange;
- h2->h.bin = h->bin + i*h->ny*h->nz;
- return Data_Wrap_Struct(cgsl_histogram3d_view, 0, free, h2);
- break;
+ i = FIX2INT(rb_ary_entry(argv[0], 0));
+ h2 = ALLOC(mygsl_histogram3d_view);
+ h2->h.nx = h->ny;
+ h2->h.ny = h->nz;
+ h2->h.xrange = h->yrange;
+ h2->h.yrange = h->zrange;
+ h2->h.bin = h->bin + i*h->ny*h->nz;
+ return Data_Wrap_Struct(cgsl_histogram3d_view, 0, free, h2);
+ break;
case 2:
- i = FIX2INT(rb_ary_entry(argv[0], 0));
- j = FIX2INT(rb_ary_entry(argv[0], 1));
- h1 = ALLOC(mygsl_histogram2d_view);
- h1->h.n = h->nz;
- h1->h.range = h->zrange;
- h1->h.bin = h->bin + i*h->ny*h->nz + j*h->nz;
- return Data_Wrap_Struct(cgsl_histogram2d_view, 0, free, h1);
- break;
+ i = FIX2INT(rb_ary_entry(argv[0], 0));
+ j = FIX2INT(rb_ary_entry(argv[0], 1));
+ h1 = ALLOC(mygsl_histogram2d_view);
+ h1->h.n = h->nz;
+ h1->h.range = h->zrange;
+ h1->h.bin = h->bin + i*h->ny*h->nz + j*h->nz;
+ return Data_Wrap_Struct(cgsl_histogram2d_view, 0, free, h1);
+ break;
case 3:
- i = FIX2INT(rb_ary_entry(argv[0], 0));
- j = FIX2INT(rb_ary_entry(argv[0], 1));
- k = FIX2INT(rb_ary_entry(argv[0], 2));
- /* do the last line of this function */
- break;
+ i = FIX2INT(rb_ary_entry(argv[0], 0));
+ j = FIX2INT(rb_ary_entry(argv[0], 1));
+ k = FIX2INT(rb_ary_entry(argv[0], 2));
+ /* do the last line of this function */
+ break;
default:
- rb_raise(rb_eRuntimeError, "wrong array size");
+ rb_raise(rb_eRuntimeError, "wrong array size");
}
break;
default:
rb_raise(rb_eTypeError, "wrong argument type %s (Fixnum or Array expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
break;
}
break;
@@ -230,7 +230,7 @@ static VALUE rb_gsl_histogram3d_get(int argc, VALUE *argv, VALUE obj)
h1->h.n = h->nz;
h1->h.range = h->zrange;
h1->h.bin = h->bin + i*h->ny*h->nz + j*h->nz;
- return Data_Wrap_Struct(cgsl_histogram2d_view, 0, free, h1);
+ return Data_Wrap_Struct(cgsl_histogram2d_view, 0, free, h1);
break;
case 3:
CHECK_FIXNUM(argv[0]); CHECK_FIXNUM(argv[1]); CHECK_FIXNUM(argv[2]);
@@ -251,7 +251,7 @@ static VALUE rb_gsl_histogram3d_increment(int argc, VALUE *argv, VALUE obj)
case 4:
Need_Float(argv[3]);
weight = NUM2DBL(argv[3]);
- /* no break */
+ /* no break */
case 3:
Need_Float(argv[0]); Need_Float(argv[1]); Need_Float(argv[2]);
x = NUM2DBL(argv[0]); y = NUM2DBL(argv[1]); z = NUM2DBL(argv[2]);
@@ -273,7 +273,7 @@ static VALUE rb_gsl_histogram3d_increment2(int argc, VALUE *argv, VALUE obj)
case 4:
Need_Float(argv[3]);
weight = NUM2DBL(argv[3]);
- /* no break */
+ /* no break */
case 3:
Need_Float(argv[0]); Need_Float(argv[1]); Need_Float(argv[2]);
x = NUM2DBL(argv[0]); y = NUM2DBL(argv[1]); z = NUM2DBL(argv[2]);
@@ -329,7 +329,7 @@ static VALUE rb_gsl_histogram3d_find(VALUE obj, VALUE x, VALUE y, VALUE z)
size_t i, j, k;
Data_Get_Struct(obj, mygsl_histogram3d, h);
mygsl_histogram3d_find(h, NUM2DBL(x), NUM2DBL(y), NUM2DBL(z),
- &i, &j, &k);
+ &i, &j, &k);
return rb_ary_new3(3, INT2FIX(i), INT2FIX(j), INT2FIX(k));
}
@@ -346,7 +346,7 @@ static VALUE rb_gsl_histogram3d_set_ranges(VALUE obj, VALUE xx, VALUE yy, VALUE
Data_Get_Struct(xx, gsl_vector, xrange);
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Array or Vector expected)",
- rb_class2name(CLASS_OF(xx)));
+ rb_class2name(CLASS_OF(xx)));
}
if (xrange->size != h->nx+1)
rb_raise(rb_eIndexError, "xrange length is different");
@@ -357,7 +357,7 @@ static VALUE rb_gsl_histogram3d_set_ranges(VALUE obj, VALUE xx, VALUE yy, VALUE
Data_Get_Struct(yy, gsl_vector, yrange);
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Array or Vector expected)",
- rb_class2name(CLASS_OF(yy)));
+ rb_class2name(CLASS_OF(yy)));
}
if (yrange->size != h->ny+1)
rb_raise(rb_eIndexError, "yrange length is different");
@@ -368,13 +368,13 @@ static VALUE rb_gsl_histogram3d_set_ranges(VALUE obj, VALUE xx, VALUE yy, VALUE
Data_Get_Struct(zz, gsl_vector, zrange);
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Array or Vector expected)",
- rb_class2name(CLASS_OF(zz)));
+ rb_class2name(CLASS_OF(zz)));
}
if (zrange->size != h->nz+1)
rb_raise(rb_eIndexError, "zrange length is different");
mygsl_histogram3d_set_ranges(h, xrange->data, xrange->size,
- yrange->data, yrange->size,
- zrange->data, zrange->size);
+ yrange->data, yrange->size,
+ zrange->data, zrange->size);
if (flagz == 1) gsl_vector_free(zrange);
if (flagy == 1) gsl_vector_free(yrange);
if (flagx == 1) gsl_vector_free(xrange);
@@ -695,7 +695,7 @@ static VALUE rb_gsl_histogram3d_reset(VALUE obj)
}
static VALUE rb_gsl_histogram3d_oper(VALUE obj, VALUE hh,
- int (*func)(mygsl_histogram3d *, const mygsl_histogram3d*))
+ int (*func)(mygsl_histogram3d *, const mygsl_histogram3d*))
{
mygsl_histogram3d *h1, *h2, *hnew;
CHECK_HISTOGRAM3D(hh);
@@ -782,18 +782,18 @@ void Init_gsl_histogram3d(VALUE module)
{
cgsl_histogram3d = rb_define_class_under(module, "Histogram3d", cGSL_Object);
cgsl_histogram3d_view = rb_define_class_under(cgsl_histogram3d, "View",
- cgsl_histogram2d);
+ cgsl_histogram2d);
/* rb_define_singleton_method(cgsl_histogram3d, "new", rb_gsl_histogram3d_new, -1);*/
- rb_define_singleton_method(cgsl_histogram3d, "alloc",
- rb_gsl_histogram3d_new, -1);
- rb_define_singleton_method(cgsl_histogram3d, "memcpy",
- rb_gsl_histogram3d_memcpy, 2);
+ rb_define_singleton_method(cgsl_histogram3d, "alloc",
+ rb_gsl_histogram3d_new, -1);
+ rb_define_singleton_method(cgsl_histogram3d, "memcpy",
+ rb_gsl_histogram3d_memcpy, 2);
/******/
- rb_define_method(cgsl_histogram3d, "set_ranges",
- rb_gsl_histogram3d_set_ranges, 3);
- rb_define_method(cgsl_histogram3d, "set_ranges_uniform",
- rb_gsl_histogram3d_set_ranges_uniform, -1);
+ rb_define_method(cgsl_histogram3d, "set_ranges",
+ rb_gsl_histogram3d_set_ranges, 3);
+ rb_define_method(cgsl_histogram3d, "set_ranges_uniform",
+ rb_gsl_histogram3d_set_ranges_uniform, -1);
rb_define_method(cgsl_histogram3d, "nx", rb_gsl_histogram3d_nx, 0);
rb_define_method(cgsl_histogram3d, "ny", rb_gsl_histogram3d_ny, 0);
@@ -809,22 +809,22 @@ void Init_gsl_histogram3d(VALUE module)
rb_define_method(cgsl_histogram3d, "get", rb_gsl_histogram3d_get, -1);
rb_define_alias(cgsl_histogram3d, "[]", "get");
- rb_define_method(cgsl_histogram3d, "increment",
- rb_gsl_histogram3d_increment, -1);
+ rb_define_method(cgsl_histogram3d, "increment",
+ rb_gsl_histogram3d_increment, -1);
rb_define_alias(cgsl_histogram3d, "fill", "increment");
rb_define_alias(cgsl_histogram3d, "accumulate", "increment");
- rb_define_method(cgsl_histogram3d, "increment2",
- rb_gsl_histogram3d_increment2, -1);
+ rb_define_method(cgsl_histogram3d, "increment2",
+ rb_gsl_histogram3d_increment2, -1);
rb_define_alias(cgsl_histogram3d, "fill2", "increment2");
rb_define_alias(cgsl_histogram3d, "accumulate2", "increment2");
- rb_define_method(cgsl_histogram3d, "get_xrange",
- rb_gsl_histogram3d_get_xrange, 1);
- rb_define_method(cgsl_histogram3d, "get_yrange",
- rb_gsl_histogram3d_get_yrange, 1);
- rb_define_method(cgsl_histogram3d, "get_zrange",
- rb_gsl_histogram3d_get_zrange, 1);
+ rb_define_method(cgsl_histogram3d, "get_xrange",
+ rb_gsl_histogram3d_get_xrange, 1);
+ rb_define_method(cgsl_histogram3d, "get_yrange",
+ rb_gsl_histogram3d_get_yrange, 1);
+ rb_define_method(cgsl_histogram3d, "get_zrange",
+ rb_gsl_histogram3d_get_zrange, 1);
rb_define_method(cgsl_histogram3d, "find", rb_gsl_histogram3d_find, 3);
@@ -835,12 +835,12 @@ void Init_gsl_histogram3d(VALUE module)
/*****/
- rb_define_method(cgsl_histogram3d, "xyproject",
- rb_gsl_histogram3d_xyproject, -1);
- rb_define_method(cgsl_histogram3d, "xzproject",
- rb_gsl_histogram3d_xzproject, -1);
- rb_define_method(cgsl_histogram3d, "yzproject",
- rb_gsl_histogram3d_yzproject, -1);
+ rb_define_method(cgsl_histogram3d, "xyproject",
+ rb_gsl_histogram3d_xyproject, -1);
+ rb_define_method(cgsl_histogram3d, "xzproject",
+ rb_gsl_histogram3d_xzproject, -1);
+ rb_define_method(cgsl_histogram3d, "yzproject",
+ rb_gsl_histogram3d_yzproject, -1);
rb_define_method(cgsl_histogram3d, "scale", rb_gsl_histogram3d_scale, 1);
rb_define_method(cgsl_histogram3d, "scale!", rb_gsl_histogram3d_scale_bang, 1);
diff --git a/ext/gsl/histogram3d_source.c b/ext/gsl_native/histogram3d_source.c
similarity index 70%
rename from ext/gsl/histogram3d_source.c
rename to ext/gsl_native/histogram3d_source.c
index 69e3ef3..fc04559 100644
--- a/ext/gsl/histogram3d_source.c
+++ b/ext/gsl_native/histogram3d_source.c
@@ -16,30 +16,30 @@
#include "include/rb_gsl_histogram.h"
mygsl_histogram3d* mygsl_histogram3d_alloc(const size_t nx, const size_t ny,
- const size_t nz)
+ const size_t nz)
{
mygsl_histogram3d *h = NULL;
if (nx == 0) GSL_ERROR_VAL ("histogram3d length nx must be positive integer",
- GSL_EDOM, 0);
+ GSL_EDOM, 0);
if (ny == 0) GSL_ERROR_VAL ("histogram3d length ny must be positive integer",
- GSL_EDOM, 0);
+ GSL_EDOM, 0);
if (nz == 0) GSL_ERROR_VAL ("histogram3d length nz must be positive integer",
- GSL_EDOM, 0);
+ GSL_EDOM, 0);
h = (mygsl_histogram3d *) malloc(sizeof(mygsl_histogram3d));
if (h == NULL) GSL_ERROR_VAL ("failed to allocate space for histogram3d struct",
- GSL_ENOMEM, 0);
+ GSL_ENOMEM, 0);
h->xrange = (double *) malloc ((nx + 1) * sizeof (double));
if (h->xrange == 0) {
free (h); /* exception in constructor, avoid memory leak */
GSL_ERROR_VAL ("failed to allocate space for histogram3d x ranges",
- GSL_ENOMEM, 0);
+ GSL_ENOMEM, 0);
}
h->yrange = (double *) malloc ((ny + 1) * sizeof (double));
if (h->yrange == 0) {
free (h->xrange);
free (h); /* exception in constructor, avoid memory leak */
GSL_ERROR_VAL ("failed to allocate space for histogram3d y ranges",
- GSL_ENOMEM, 0);
+ GSL_ENOMEM, 0);
}
h->zrange = (double *) malloc ((nz + 1) * sizeof (double));
if (h->zrange == 0) {
@@ -47,7 +47,7 @@ mygsl_histogram3d* mygsl_histogram3d_alloc(const size_t nx, const size_t ny,
free (h->yrange);
free (h); /* exception in constructor, avoid memory leak */
GSL_ERROR_VAL ("failed to allocate space for histogram3d z ranges",
- GSL_ENOMEM, 0);
+ GSL_ENOMEM, 0);
}
h->bin = (double *) malloc (nx*ny*nz*sizeof (double));
if (h->bin == 0) {
@@ -56,7 +56,7 @@ mygsl_histogram3d* mygsl_histogram3d_alloc(const size_t nx, const size_t ny,
free (h->zrange);
free (h); /* exception in constructor, avoid memory leak */
GSL_ERROR_VAL ("failed to allocate space for histogram bins",
- GSL_ENOMEM, 0);
+ GSL_ENOMEM, 0);
}
h->nx = nx;
h->ny = ny;
@@ -64,15 +64,15 @@ mygsl_histogram3d* mygsl_histogram3d_alloc(const size_t nx, const size_t ny,
return h;
}
-mygsl_histogram3d* mygsl_histogram3d_calloc_uniform(const size_t nx,
- const size_t ny,
- const size_t nz,
- const double xmin,
- const double xmax,
- const double ymin,
- const double ymax,
- const double zmin,
- const double zmax)
+mygsl_histogram3d* mygsl_histogram3d_calloc_uniform(const size_t nx,
+ const size_t ny,
+ const size_t nz,
+ const double xmin,
+ const double xmax,
+ const double ymin,
+ const double ymax,
+ const double zmin,
+ const double zmax)
{
mygsl_histogram3d *h;
size_t i;
@@ -86,9 +86,9 @@ mygsl_histogram3d* mygsl_histogram3d_calloc_uniform(const size_t nx,
return h;
}
-mygsl_histogram3d* mygsl_histogram3d_calloc(const size_t nx,
- const size_t ny,
- const size_t nz)
+mygsl_histogram3d* mygsl_histogram3d_calloc(const size_t nx,
+ const size_t ny,
+ const size_t nz)
{
mygsl_histogram3d *h;
size_t i;
@@ -104,10 +104,10 @@ mygsl_histogram3d* mygsl_histogram3d_calloc(const size_t nx,
return h;
}
-int mygsl_histogram3d_set_ranges_uniform (mygsl_histogram3d * h,
- double xmin, double xmax,
- double ymin, double ymax,
- double zmin, double zmax)
+int mygsl_histogram3d_set_ranges_uniform (mygsl_histogram3d * h,
+ double xmin, double xmax,
+ double ymin, double ymax,
+ double zmin, double zmax)
{
size_t i;
const size_t nx = h->nx, ny = h->ny, nz = h->nz;
@@ -115,7 +115,6 @@ int mygsl_histogram3d_set_ranges_uniform (mygsl_histogram3d * h,
if (xmin >= xmax) GSL_ERROR_VAL ("xmin must be less than xmax", GSL_EINVAL, 0);
if (ymin >= ymax) GSL_ERROR_VAL ("ymin must be less than ymax", GSL_EINVAL, 0);
if (zmin >= zmax) GSL_ERROR_VAL ("zmin must be less than zmax", GSL_EINVAL, 0);
-
for (i = 0; i <= nx; i++)
h->xrange[i] = xmin + ((double) i / (double) nx) * (xmax - xmin);
for (i = 0; i <= ny; i++)
@@ -126,22 +125,22 @@ int mygsl_histogram3d_set_ranges_uniform (mygsl_histogram3d * h,
return GSL_SUCCESS;
}
-int mygsl_histogram3d_set_ranges(mygsl_histogram3d * h,
- const double xrange[], size_t xsize,
- const double yrange[], size_t ysize,
- const double zrange[], size_t zsize)
+int mygsl_histogram3d_set_ranges(mygsl_histogram3d * h,
+ const double xrange[], size_t xsize,
+ const double yrange[], size_t ysize,
+ const double zrange[], size_t zsize)
{
size_t i;
const size_t nx = h->nx, ny = h->ny, nz = h->nz;
if (xsize != (nx + 1))
- GSL_ERROR_VAL ("size of xrange must match size of histogram",
- GSL_EINVAL, 0);
+ GSL_ERROR_VAL ("size of xrange must match size of histogram",
+ GSL_EINVAL, 0);
if (ysize != (ny + 1))
- GSL_ERROR_VAL ("size of yrange must match size of histogram",
- GSL_EINVAL, 0);
+ GSL_ERROR_VAL ("size of yrange must match size of histogram",
+ GSL_EINVAL, 0);
if (zsize != (nz + 1))
- GSL_ERROR_VAL ("size of yrange must match size of histogram",
- GSL_EINVAL, 0);
+ GSL_ERROR_VAL ("size of yrange must match size of histogram",
+ GSL_EINVAL, 0);
memcpy(h->xrange, xrange, sizeof(double)*xsize);
memcpy(h->yrange, yrange, sizeof(double)*ysize);
memcpy(h->zrange, zrange, sizeof(double)*zsize);
@@ -161,13 +160,13 @@ void mygsl_histogram3d_free (mygsl_histogram3d * h)
/*****/
int mygsl_histogram3d_memcpy(mygsl_histogram3d * dest, const mygsl_histogram3d * src)
-{
- size_t nx = src->nx;
- size_t ny = src->ny;
- size_t nz = src->nz;
+{
+ size_t nx = src->nx;
+ size_t ny = src->ny;
+ size_t nz = src->nz;
if (dest->nx != src->nx || dest->ny != src->ny || dest->nz != src->nz) {
- GSL_ERROR ("histograms have different sizes, cannot copy",
- GSL_EINVAL);
+ GSL_ERROR ("histograms have different sizes, cannot copy",
+ GSL_EINVAL);
}
memcpy(dest->xrange, src->xrange, sizeof(double)*(nx+1));
memcpy(dest->yrange, src->yrange, sizeof(double)*(ny+1));
@@ -187,78 +186,78 @@ mygsl_histogram3d* mygsl_histogram3d_clone(const mygsl_histogram3d * src)
/*****/
int mygsl_histogram3d_fread(FILE * stream, mygsl_histogram3d * h)
-{
- int status = gsl_block_raw_fread (stream, h->xrange, h->nx + 1, 1);
- if (status) return status;
- status = gsl_block_raw_fread (stream, h->yrange, h->ny + 1, 1);
- if (status) return status;
- status = gsl_block_raw_fread (stream, h->zrange, h->nz + 1, 1);
- if (status) return status;
- status = gsl_block_raw_fread (stream, h->bin, h->nx * h->ny * h->nz, 1);
+{
+ int status = gsl_block_raw_fread (stream, h->xrange, h->nx + 1, 1);
+ if (status) return status;
+ status = gsl_block_raw_fread (stream, h->yrange, h->ny + 1, 1);
+ if (status) return status;
+ status = gsl_block_raw_fread (stream, h->zrange, h->nz + 1, 1);
+ if (status) return status;
+ status = gsl_block_raw_fread (stream, h->bin, h->nx * h->ny * h->nz, 1);
return status;
}
int mygsl_histogram3d_fwrite(FILE * stream, const mygsl_histogram3d * h)
-{
- int status = gsl_block_raw_fwrite (stream, h->xrange, h->nx + 1, 1);
- if (status) return status;
- status = gsl_block_raw_fwrite (stream, h->yrange, h->ny + 1, 1);
- if (status) return status;
- status = gsl_block_raw_fwrite (stream, h->zrange, h->nz + 1, 1);
- if (status) return status;
- status = gsl_block_raw_fwrite (stream, h->bin, h->nx * h->ny * h->nz, 1);
+{
+ int status = gsl_block_raw_fwrite (stream, h->xrange, h->nx + 1, 1);
+ if (status) return status;
+ status = gsl_block_raw_fwrite (stream, h->yrange, h->ny + 1, 1);
+ if (status) return status;
+ status = gsl_block_raw_fwrite (stream, h->zrange, h->nz + 1, 1);
+ if (status) return status;
+ status = gsl_block_raw_fwrite (stream, h->bin, h->nx * h->ny * h->nz, 1);
return status;
}
int mygsl_histogram3d_increment(mygsl_histogram3d * h, double x, double y, double z)
-{
- int status = mygsl_histogram3d_accumulate (h, x, y, z, 1.0);
+{
+ int status = mygsl_histogram3d_accumulate (h, x, y, z, 1.0);
return status;
}
int mygsl_find (const size_t n, const double range[], const double x, size_t * i);
int mygsl_find2d (const size_t nx, const double xrange[],
- const size_t ny, const double yrange[],
- const double x, const double y,
- size_t * i, size_t * j);
+ const size_t ny, const double yrange[],
+ const double x, const double y,
+ size_t * i, size_t * j);
int mygsl_find3d (const size_t nx, const double xrange[],
- const size_t ny, const double yrange[],
- const size_t nz, const double zrange[],
- const double x, const double y, const double z,
- size_t * i, size_t * j, size_t *k);
-
-int mygsl_histogram3d_accumulate(mygsl_histogram3d * h,
- double x, double y, double z, double weight)
-{
- const size_t nx = h->nx;
- const size_t ny = h->ny;
- const size_t nz = h->nz;
- size_t i = 0, j = 0, k = 0;
+ const size_t ny, const double yrange[],
+ const size_t nz, const double zrange[],
+ const double x, const double y, const double z,
+ size_t * i, size_t * j, size_t *k);
+
+int mygsl_histogram3d_accumulate(mygsl_histogram3d * h,
+ double x, double y, double z, double weight)
+{
+ const size_t nx = h->nx;
+ const size_t ny = h->ny;
+ const size_t nz = h->nz;
+ size_t i = 0, j = 0, k = 0;
int status = mygsl_find3d (h->nx, h->xrange, h->ny, h->yrange, h->nz, h->zrange,
- x, y, z, &i, &j, &k);
- if (status) return GSL_EDOM;
- if (i >= nx) GSL_ERROR ("index lies outside valid range of 0 .. nx - 1",
- GSL_ESANITY);
- if (j >= ny) GSL_ERROR ("index lies outside valid range of 0 .. ny - 1",
- GSL_ESANITY);
- if (k >= nz) GSL_ERROR ("index lies outside valid range of 0 .. nz - 1",
- GSL_ESANITY);
- h->bin[i*ny*nz + j*nz + k] += weight;
+ x, y, z, &i, &j, &k);
+ if (status) return GSL_EDOM;
+ if (i >= nx) GSL_ERROR ("index lies outside valid range of 0 .. nx - 1",
+ GSL_ESANITY);
+ if (j >= ny) GSL_ERROR ("index lies outside valid range of 0 .. ny - 1",
+ GSL_ESANITY);
+ if (k >= nz) GSL_ERROR ("index lies outside valid range of 0 .. nz - 1",
+ GSL_ESANITY);
+ h->bin[i*ny*nz + j*nz + k] += weight;
return GSL_SUCCESS;
}
-int mygsl_histogram3d_increment2(mygsl_histogram3d * h,
- double x, double y, double z)
+int mygsl_histogram3d_increment2(mygsl_histogram3d * h,
+ double x, double y, double z)
{
return mygsl_histogram3d_accumulate2(h, x, y, z, 1.0);
}
-int mygsl_histogram3d_accumulate2(mygsl_histogram3d * h,
- double x, double y, double z, double weight)
-{
- const size_t nx = h->nx;
- const size_t ny = h->ny;
- const size_t nz = h->nz;
+int mygsl_histogram3d_accumulate2(mygsl_histogram3d * h,
+ double x, double y, double z, double weight)
+{
+ const size_t nx = h->nx;
+ const size_t ny = h->ny;
+ const size_t nz = h->nz;
size_t i = 0, j = 0, k = 0;
int status;
if (x < h->xrange[0]) x = h->xrange[0] + 4*GSL_DBL_EPSILON;
@@ -268,81 +267,81 @@ int mygsl_histogram3d_accumulate2(mygsl_histogram3d * h,
if (z < h->zrange[0]) z = h->zrange[0] + 4*GSL_DBL_EPSILON;
if (z > h->zrange[h->nz]) z = h->zrange[h->nz] - 4*GSL_DBL_EPSILON;
status = mygsl_find3d (h->nx, h->xrange, h->ny, h->yrange, h->nz, h->zrange,
- x, y, z, &i, &j, &k);
- if (status) return GSL_EDOM;
- if (i >= nx) GSL_ERROR ("index lies outside valid range of 0 .. nx - 1",
- GSL_ESANITY);
- if (j >= ny) GSL_ERROR ("index lies outside valid range of 0 .. ny - 1",
- GSL_ESANITY);
- if (k >= nz) GSL_ERROR ("index lies outside valid range of 0 .. nz - 1",
- GSL_ESANITY);
- h->bin[i*ny*nz + j*nz + k] += weight;
+ x, y, z, &i, &j, &k);
+ if (status) return GSL_EDOM;
+ if (i >= nx) GSL_ERROR ("index lies outside valid range of 0 .. nx - 1",
+ GSL_ESANITY);
+ if (j >= ny) GSL_ERROR ("index lies outside valid range of 0 .. ny - 1",
+ GSL_ESANITY);
+ if (k >= nz) GSL_ERROR ("index lies outside valid range of 0 .. nz - 1",
+ GSL_ESANITY);
+ h->bin[i*ny*nz + j*nz + k] += weight;
return GSL_SUCCESS;
}
-double mygsl_histogram3d_get(const mygsl_histogram3d * h, const size_t i,
- const size_t j, const size_t k)
-{
- const size_t nx = h->nx;
- const size_t ny = h->ny;
- const size_t nz = h->nz;
- if (i >= nx) GSL_ERROR_VAL ("index i lies outside valid range of 0 .. nx - 1",
- GSL_EDOM, 0);
- if (j >= ny) GSL_ERROR_VAL ("index j lies outside valid range of 0 .. ny - 1",
- GSL_EDOM, 0);
- if (k >= nz) GSL_ERROR_VAL ("index k lies outside valid range of 0 .. nz - 1",
- GSL_EDOM, 0);
+double mygsl_histogram3d_get(const mygsl_histogram3d * h, const size_t i,
+ const size_t j, const size_t k)
+{
+ const size_t nx = h->nx;
+ const size_t ny = h->ny;
+ const size_t nz = h->nz;
+ if (i >= nx) GSL_ERROR_VAL ("index i lies outside valid range of 0 .. nx - 1",
+ GSL_EDOM, 0);
+ if (j >= ny) GSL_ERROR_VAL ("index j lies outside valid range of 0 .. ny - 1",
+ GSL_EDOM, 0);
+ if (k >= nz) GSL_ERROR_VAL ("index k lies outside valid range of 0 .. nz - 1",
+ GSL_EDOM, 0);
return h->bin[i*ny*nz + j*nz + k];
}
-int mygsl_histogram3d_get_xrange(const mygsl_histogram3d * h, const size_t i,
- double *xlower, double *xupper)
-{
- const size_t nx = h->nx;
- if (i >= nx) GSL_ERROR ("index i lies outside valid range of 0 .. nx - 1",
- GSL_EDOM);
- *xlower = h->xrange[i];
- *xupper = h->xrange[i + 1];
+int mygsl_histogram3d_get_xrange(const mygsl_histogram3d * h, const size_t i,
+ double *xlower, double *xupper)
+{
+ const size_t nx = h->nx;
+ if (i >= nx) GSL_ERROR ("index i lies outside valid range of 0 .. nx - 1",
+ GSL_EDOM);
+ *xlower = h->xrange[i];
+ *xupper = h->xrange[i + 1];
return GSL_SUCCESS;
}
-int mygsl_histogram3d_get_yrange(const mygsl_histogram3d * h, const size_t j,
- double *ylower, double *yupper)
-{
- const size_t ny = h->ny;
- if (j >= ny) GSL_ERROR ("index j lies outside valid range of 0 .. ny - 1",
- GSL_EDOM);
- *ylower = h->yrange[j];
- *yupper = h->yrange[j + 1];
+int mygsl_histogram3d_get_yrange(const mygsl_histogram3d * h, const size_t j,
+ double *ylower, double *yupper)
+{
+ const size_t ny = h->ny;
+ if (j >= ny) GSL_ERROR ("index j lies outside valid range of 0 .. ny - 1",
+ GSL_EDOM);
+ *ylower = h->yrange[j];
+ *yupper = h->yrange[j + 1];
return GSL_SUCCESS;
}
-int mygsl_histogram3d_get_zrange(const mygsl_histogram3d * h, const size_t k,
- double *zlower, double *zupper)
-{
- const size_t nz = h->nz;
- if (k >= nz) GSL_ERROR ("index k lies outside valid range of 0 .. nz - 1",
- GSL_EDOM);
- *zlower = h->zrange[k];
- *zupper = h->zrange[k + 1];
+int mygsl_histogram3d_get_zrange(const mygsl_histogram3d * h, const size_t k,
+ double *zlower, double *zupper)
+{
+ const size_t nz = h->nz;
+ if (k >= nz) GSL_ERROR ("index k lies outside valid range of 0 .. nz - 1",
+ GSL_EDOM);
+ *zlower = h->zrange[k];
+ *zupper = h->zrange[k + 1];
return GSL_SUCCESS;
}
int mygsl_histogram3d_find (const mygsl_histogram3d * h,
- const double x, const double y, const double z,
- size_t * i, size_t * j, size_t *k)
-{
- int status = mygsl_find(h->nx, h->xrange, x, i);
- if (status) GSL_ERROR ("x not found in range of h", GSL_EDOM);
- status = mygsl_find (h->ny, h->yrange, y, j);
- if (status) GSL_ERROR ("y not found in range of h", GSL_EDOM);
- status = mygsl_find (h->nz, h->zrange, z, k);
- if (status) GSL_ERROR ("z not found in range of h", GSL_EDOM);
+ const double x, const double y, const double z,
+ size_t * i, size_t * j, size_t *k)
+{
+ int status = mygsl_find(h->nx, h->xrange, x, i);
+ if (status) GSL_ERROR ("x not found in range of h", GSL_EDOM);
+ status = mygsl_find (h->ny, h->yrange, y, j);
+ if (status) GSL_ERROR ("y not found in range of h", GSL_EDOM);
+ status = mygsl_find (h->nz, h->zrange, z, k);
+ if (status) GSL_ERROR ("z not found in range of h", GSL_EDOM);
return GSL_SUCCESS;
}
gsl_histogram2d* mygsl_histogram3d_xyproject(const mygsl_histogram3d * h3,
- size_t kstart, size_t kend)
+ size_t kstart, size_t kend)
{
gsl_histogram2d *h2;
double count;
@@ -353,8 +352,8 @@ gsl_histogram2d* mygsl_histogram3d_xyproject(const mygsl_histogram3d * h3,
for (j = 0; j < h3->ny; j++) {
count = 0;
for (k = kstart; k <= kend; k++) {
- if (k >= h3->nz) break;
- count += mygsl_histogram3d_get(h3, i, j, k);
+ if (k >= h3->nz) break;
+ count += mygsl_histogram3d_get(h3, i, j, k);
}
h2->bin[i*h2->ny + j] = count;
}
@@ -363,7 +362,7 @@ gsl_histogram2d* mygsl_histogram3d_xyproject(const mygsl_histogram3d * h3,
}
gsl_histogram2d* mygsl_histogram3d_xzproject(const mygsl_histogram3d * h3,
- size_t jstart, size_t jend)
+ size_t jstart, size_t jend)
{
gsl_histogram2d *h2;
double count;
@@ -374,8 +373,8 @@ gsl_histogram2d* mygsl_histogram3d_xzproject(const mygsl_histogram3d * h3,
for (k = 0; k < h3->nz; k++) {
count = 0;
for (j = jstart; j <= jend; j++) {
- if (j >= h3->ny) break;
- count += mygsl_histogram3d_get(h3, i, j, k);
+ if (j >= h3->ny) break;
+ count += mygsl_histogram3d_get(h3, i, j, k);
}
h2->bin[i*h2->ny + k] = count;
}
@@ -384,7 +383,7 @@ gsl_histogram2d* mygsl_histogram3d_xzproject(const mygsl_histogram3d * h3,
}
gsl_histogram2d* mygsl_histogram3d_yzproject(const mygsl_histogram3d * h3,
- size_t istart, size_t iend)
+ size_t istart, size_t iend)
{
gsl_histogram2d *h2;
double count;
@@ -395,8 +394,8 @@ gsl_histogram2d* mygsl_histogram3d_yzproject(const mygsl_histogram3d * h3,
for (k = 0; k < h3->nz; k++) {
count = 0;
for (i = istart; i <= iend; i++) {
- if (i >= h3->nx) break;
- count += mygsl_histogram3d_get(h3, i, j, k);
+ if (i >= h3->nx) break;
+ count += mygsl_histogram3d_get(h3, i, j, k);
}
h2->bin[j*h2->ny + k] = count;
}
@@ -422,7 +421,7 @@ int mygsl_histogram3d_shift(mygsl_histogram3d * h, double shift)
double mygsl_histogram3d_xmax(const mygsl_histogram3d * h)
{
- const int nx = h->nx;
+ const int nx = h->nx;
return h->xrange[nx];
}
double mygsl_histogram3d_xmin(const mygsl_histogram3d * h)
@@ -432,7 +431,7 @@ double mygsl_histogram3d_xmin(const mygsl_histogram3d * h)
double mygsl_histogram3d_ymax(const mygsl_histogram3d * h)
{
- const int ny = h->ny;
+ const int ny = h->ny;
return h->yrange[ny];
}
double mygsl_histogram3d_ymin(const mygsl_histogram3d * h)
@@ -442,7 +441,7 @@ double mygsl_histogram3d_ymin(const mygsl_histogram3d * h)
double mygsl_histogram3d_zmax(const mygsl_histogram3d * h)
{
- const int nz = h->nz;
+ const int nz = h->nz;
return h->zrange[nz];
}
@@ -464,8 +463,8 @@ double mygsl_histogram3d_max_val(const mygsl_histogram3d * h)
return max;
}
-void mygsl_histogram3d_max_bin(const mygsl_histogram3d * h,
- size_t *imax_out, size_t *jmax_out, size_t *kmax_out)
+void mygsl_histogram3d_max_bin(const mygsl_histogram3d * h,
+ size_t *imax_out, size_t *jmax_out, size_t *kmax_out)
{
const size_t nx = h->nx;
const size_t ny = h->ny;
@@ -475,13 +474,13 @@ void mygsl_histogram3d_max_bin(const mygsl_histogram3d * h,
for (i = 0; i < nx; i++) {
for (j = 0; j < ny; j++) {
for (k = 0; k < nz; k++) {
- x = h->bin[i * ny*nz + j*nz + k];
- if (x > max) {
- max = x;
- imax = i;
- jmax = j;
- kmax = k;
- }
+ x = h->bin[i * ny*nz + j*nz + k];
+ if (x > max) {
+ max = x;
+ imax = i;
+ jmax = j;
+ kmax = k;
+ }
}
}
}
@@ -503,8 +502,8 @@ double mygsl_histogram3d_min_val(const mygsl_histogram3d * h)
return min;
}
-void mygsl_histogram3d_min_bin(const mygsl_histogram3d * h,
- size_t *imin_out, size_t *jmin_out, size_t *kmin_out)
+void mygsl_histogram3d_min_bin(const mygsl_histogram3d * h,
+ size_t *imin_out, size_t *jmin_out, size_t *kmin_out)
{
const size_t nx = h->nx;
const size_t ny = h->ny;
@@ -514,13 +513,13 @@ void mygsl_histogram3d_min_bin(const mygsl_histogram3d * h,
for (i = 0; i < nx; i++) {
for (j = 0; j < ny; j++) {
for (k = 0; k < nz; k++) {
- x = h->bin[i * ny*nz + j*nz + k];
- if (x < min) {
- min = x;
- imin = i;
- jmin = j;
- kmin = k;
- }
+ x = h->bin[i * ny*nz + j*nz + k];
+ if (x < min) {
+ min = x;
+ imin = i;
+ jmin = j;
+ kmin = k;
+ }
}
}
}
@@ -551,8 +550,8 @@ double mygsl_histogram3d_xmean (const mygsl_histogram3d * h)
double wi = 0;
for (j = 0; j < ny; j++) {
for (k = 0; k < nz; k++) {
- double wijk = h->bin[i * ny *nz + j * nz + k];
- if (wijk > 0) wi += wijk;
+ double wijk = h->bin[i * ny *nz + j * nz + k];
+ if (wijk > 0) wi += wijk;
}
}
if (wi > 0) {
@@ -576,8 +575,8 @@ double mygsl_histogram3d_ymean (const mygsl_histogram3d * h)
double wj = 0;
for (i = 0; i < nx; i++) {
for (k = 0; k < nz; k++) {
- double wijk = h->bin[i * ny *nz + j * nz + k];
- if (wijk > 0) wj += wijk;
+ double wijk = h->bin[i * ny *nz + j * nz + k];
+ if (wijk > 0) wj += wijk;
}
}
if (wj > 0) {
@@ -601,8 +600,8 @@ double mygsl_histogram3d_zmean (const mygsl_histogram3d * h)
double wk = 0;
for (i = 0; i < nx; i++) {
for (j = 0; j < ny; j++) {
- double wijk = h->bin[i * ny *nz + j * nz + k];
- if (wijk > 0) wk += wijk;
+ double wijk = h->bin[i * ny *nz + j * nz + k];
+ if (wijk > 0) wk += wijk;
}
}
if (wk > 0) {
@@ -624,8 +623,8 @@ double mygsl_histogram3d_xsigma(const mygsl_histogram3d * h)
double wi = 0;
for (j = 0; j < ny; j++) {
for (k = 0; k < nz; k++) {
- double wijk = h->bin[i * ny*nz + j*nz + k];
- if (wijk > 0) wi += wijk;
+ double wijk = h->bin[i * ny*nz + j*nz + k];
+ if (wijk > 0) wi += wijk;
}
}
if (wi > 0) {
@@ -633,7 +632,7 @@ double mygsl_histogram3d_xsigma(const mygsl_histogram3d * h)
wvariance += ((xi * xi) - wvariance) * (wi / W);
}
}
- return sqrt(wvariance);
+ return sqrt(wvariance);
}
double mygsl_histogram3d_ysigma(const mygsl_histogram3d * h)
@@ -647,8 +646,8 @@ double mygsl_histogram3d_ysigma(const mygsl_histogram3d * h)
double wj = 0;
for (i = 0; i < nx; i++) {
for (k = 0; k < nz; k++) {
- double wjjk = h->bin[i * ny*nz + j*nz + k];
- if (wjjk > 0) wj += wjjk;
+ double wjjk = h->bin[i * ny*nz + j*nz + k];
+ if (wjjk > 0) wj += wjjk;
}
}
if (wj > 0) {
@@ -656,7 +655,7 @@ double mygsl_histogram3d_ysigma(const mygsl_histogram3d * h)
wvariance += ((yj * yj) - wvariance) * (wj / W);
}
}
- return sqrt(wvariance);
+ return sqrt(wvariance);
}
double mygsl_histogram3d_zsigma(const mygsl_histogram3d * h)
@@ -670,8 +669,8 @@ double mygsl_histogram3d_zsigma(const mygsl_histogram3d * h)
double wk = 0;
for (i = 0; i < nx; i++) {
for (j = 0; j < ny; j++) {
- double wijk = h->bin[i * ny*nz + j*nz + k];
- if (wijk > 0) wk += wijk;
+ double wijk = h->bin[i * ny*nz + j*nz + k];
+ if (wijk > 0) wk += wijk;
}
}
if (wk > 0) {
@@ -679,7 +678,7 @@ double mygsl_histogram3d_zsigma(const mygsl_histogram3d * h)
wvariance += ((zk * zk) - wvariance) * (wk / W);
}
}
- return sqrt(wvariance);
+ return sqrt(wvariance);
}
void mygsl_histogram3d_reset(mygsl_histogram3d * h)
@@ -690,17 +689,17 @@ void mygsl_histogram3d_reset(mygsl_histogram3d * h)
const size_t nz = h->nz;
for (i = 0; i < nx * ny * nz; i++)
- {
- h->bin[i] = 0;
- }
+ {
+ h->bin[i] = 0;
+ }
}
int mygsl_histogram3d_equal_bins_p(const mygsl_histogram3d * h1,
- const mygsl_histogram3d * h2)
+ const mygsl_histogram3d * h2)
{
size_t i;
if ((h1->nx != h2->nx) || (h1->ny != h2->ny) || (h1->nz != h2->nz)) return 0;
- for (i = 0; i <= h1->nx; i++)
+ for (i = 0; i <= h1->nx; i++)
if (h1->xrange[i] != h2->xrange[i]) return 0;
for (i = 0; i <= h1->ny; i++)
if (h1->yrange[i] != h2->yrange[i]) return 0;
diff --git a/ext/gsl/histogram_find.c b/ext/gsl_native/histogram_find.c
similarity index 75%
rename from ext/gsl/histogram_find.c
rename to ext/gsl_native/histogram_find.c
index 587b3be..d039431 100644
--- a/ext/gsl/histogram_find.c
+++ b/ext/gsl_native/histogram_find.c
@@ -1,17 +1,17 @@
/* histogram/find.c
- *
+ *
* Copyright (C) 1996, 1997, 1998, 1999, 2000 Brian Gough
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
@@ -26,7 +26,6 @@ int mygsl_find (const size_t n, const double range[], const double x, size_t * i
size_t i_linear, lower, upper, mid;
if (x < range[0]) return -1;
if (x >= range[n]) return +1;
-
/* optimize for linear case */
#ifdef LINEAR_OPT
@@ -36,47 +35,46 @@ int mygsl_find (const size_t n, const double range[], const double x, size_t * i
}
if (x >= range[i_linear] && x < range[i_linear + 1])
- {
- *i = i_linear;
- return 0;
- }
+ {
+ *i = i_linear;
+ return 0;
+ }
#endif
/* perform binary search */
- upper = n ;
- lower = 0 ;
+ upper = n;
+ lower = 0;
while (upper - lower > 1)
+ {
+ mid = (upper + lower) / 2;
+
+ if (x >= range[mid])
{
- mid = (upper + lower) / 2 ;
-
- if (x >= range[mid])
- {
- lower = mid ;
- }
- else
- {
- upper = mid ;
- }
+ lower = mid;
}
+ else
+ {
+ upper = mid;
+ }
+ }
- *i = lower ;
+ *i = lower;
/* sanity check the result */
if (x < range[lower] || x >= range[lower + 1])
- {
- GSL_ERROR ("x not found in range", GSL_ESANITY);
- }
-
+ {
+ GSL_ERROR ("x not found in range", GSL_ESANITY);
+ }
return 0;
}
int mygsl_find2d (const size_t nx, const double xrange[],
- const size_t ny, const double yrange[],
- const double x, const double y,
- size_t * i, size_t * j)
+ const size_t ny, const double yrange[],
+ const double x, const double y,
+ size_t * i, size_t * j)
{
int status = mygsl_find (nx, xrange, x, i);
if (status) return status;
@@ -86,10 +84,10 @@ int mygsl_find2d (const size_t nx, const double xrange[],
}
int mygsl_find3d (const size_t nx, const double xrange[],
- const size_t ny, const double yrange[],
- const size_t nz, const double zrange[],
- const double x, const double y, const double z,
- size_t * i, size_t * j, size_t *k)
+ const size_t ny, const double yrange[],
+ const size_t nz, const double zrange[],
+ const double x, const double y, const double z,
+ size_t * i, size_t * j, size_t *k)
{
int status = mygsl_find (nx, xrange, x, i);
if (status) return status;
diff --git a/ext/gsl/histogram_oper.c b/ext/gsl_native/histogram_oper.c
similarity index 78%
rename from ext/gsl/histogram_oper.c
rename to ext/gsl_native/histogram_oper.c
index 0c85945..fea48c9 100644
--- a/ext/gsl/histogram_oper.c
+++ b/ext/gsl_native/histogram_oper.c
@@ -18,11 +18,11 @@
*/
/***************************************************************
*
- * File gsl_histogram_oper.c:
- * Routine to make operation on histograms.
+ * File gsl_histogram_oper.c:
+ * Routine to make operation on histograms.
* Need GSL library and header.
* Contains the routines:
- * gsl_histogram_same_binning check if two histograms have the same binning
+ * gsl_histogram_same_binning check if two histograms have the same binning
* gsl_histogram_add add two histograms
* gsl_histogram_sub subctract two histograms
* gsl_histogram_mult multiply two histograms
@@ -38,7 +38,7 @@
#include <gsl/gsl_math.h>
#include <gsl/gsl_histogram.h>
-/*
+/*
* gsl_histogram_same_binning:
* control if two histograms have the
* same binning
@@ -48,112 +48,103 @@ int
mygsl_histogram_equal_bins_p (const gsl_histogram * h1, const gsl_histogram * h2)
{
if (h1->n != h2->n)
- {
- return 0;
- }
-
+ {
+ return 0;
+ }
{
size_t i;
/* init ranges */
for (i = 0; i <= h1->n; i++)
+ {
+ if (gsl_fcmp(h1->range[i],h2->range[i], 1e-12))
{
- if (gsl_fcmp(h1->range[i],h2->range[i], 1e-12))
- {
- return 0;
- }
+ return 0;
}
+ }
}
return 1;
}
-/*
+/*
* gsl_histogram_add:
* add two histograms
*/
-int
+int
mygsl_histogram_add (gsl_histogram * h1, const gsl_histogram * h2)
{
size_t i;
if (!mygsl_histogram_equal_bins_p (h1, h2))
- {
- GSL_ERROR ("histograms have different binning", GSL_EINVAL);
- }
-
+ {
+ GSL_ERROR ("histograms have different binning", GSL_EINVAL);
+ }
for (i = 0; i < h1->n; i++)
- {
- h1->bin[i] += h2->bin[i];
- }
-
+ {
+ h1->bin[i] += h2->bin[i];
+ }
return GSL_SUCCESS;
}
-/*
+/*
* gsl_histogram_sub:
* subtract two histograms
*/
-int
+int
mygsl_histogram_sub (gsl_histogram * h1, const gsl_histogram * h2)
{
size_t i;
if (!mygsl_histogram_equal_bins_p (h1, h2))
- {
- GSL_ERROR ("histograms have different binning", GSL_EINVAL);
- }
-
+ {
+ GSL_ERROR ("histograms have different binning", GSL_EINVAL);
+ }
for (i = 0; i < h1->n; i++)
- {
- h1->bin[i] -= h2->bin[i];
- }
-
+ {
+ h1->bin[i] -= h2->bin[i];
+ }
return GSL_SUCCESS;
}
-/*
+/*
* gsl_histogram_mult:
* multiply two histograms
*/
-int
+int
mygsl_histogram_mul (gsl_histogram * h1, const gsl_histogram * h2)
{
size_t i;
if (!mygsl_histogram_equal_bins_p (h1, h2))
- {
- GSL_ERROR ("histograms have different binning", GSL_EINVAL);
- }
-
+ {
+ GSL_ERROR ("histograms have different binning", GSL_EINVAL);
+ }
for (i = 0; i < h1->n; i++)
- {
- h1->bin[i] *= h2->bin[i];
- }
-
+ {
+ h1->bin[i] *= h2->bin[i];
+ }
return GSL_SUCCESS;
}
-/*
+/*
* gsl_histogram_div:
* divide two histograms
*/
-int
+int
mygsl_histogram_div (gsl_histogram * h1, const gsl_histogram * h2)
{
size_t i;
if (!mygsl_histogram_equal_bins_p (h1, h2))
- {
- GSL_ERROR ("histograms have different binning", GSL_EINVAL);
- }
-
+ {
+ GSL_ERROR ("histograms have different binning", GSL_EINVAL);
+ }
for (i = 0; i < h1->n; i++)
- {
- h1->bin[i] /= h2->bin[i];
- }
-
+ {
+ h1->bin[i] /= h2->bin[i];
+ }
return GSL_SUCCESS;
}
diff --git a/ext/gsl/ieee.c b/ext/gsl_native/ieee.c
similarity index 83%
rename from ext/gsl/ieee.c
rename to ext/gsl_native/ieee.c
index 4ad3b32..1d5df16 100644
--- a/ext/gsl/ieee.c
+++ b/ext/gsl_native/ieee.c
@@ -19,11 +19,7 @@ static VALUE rb_gsl_ieee_env_setup(VALUE obj)
static VALUE rb_gsl_ieee_fprintf_double(int argc, VALUE *argv, VALUE obj)
{
-#ifdef HAVE_RUBY_IO_H
rb_io_t *fptr = NULL;
-#else
- OpenFile *fptr = NULL;
-#endif
FILE *fp = NULL;
int flag = 0;
VALUE vtmp;
@@ -39,15 +35,11 @@ static VALUE rb_gsl_ieee_fprintf_double(int argc, VALUE *argv, VALUE obj)
case T_FILE:
GetOpenFile(argv[0], fptr);
rb_io_check_writable(fptr);
-#ifdef HAVE_RUBY_IO_H
fp = rb_io_stdio_file(fptr);
-#else
- fp = GetWriteFile(fptr);
-#endif
break;
default:
rb_raise(rb_eTypeError, "wrong type argument %s (IO or String expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
}
vtmp = argv[1];
break;
@@ -60,7 +52,7 @@ static VALUE rb_gsl_ieee_fprintf_double(int argc, VALUE *argv, VALUE obj)
}
if (TYPE(vtmp) != T_FLOAT)
rb_raise(rb_eTypeError, "wrong argument type %s (Float expected)",
- rb_class2name(CLASS_OF(vtmp)));
+ rb_class2name(CLASS_OF(vtmp)));
ftmp = RFLOAT_VALUE(vtmp);
gsl_ieee_fprintf_double(fp, &ftmp);
if (fp == stdout) fprintf(stdout, "\n");
@@ -82,15 +74,15 @@ void Init_gsl_ieee(VALUE module)
mgsl_ieee = rb_define_module_under(module, "IEEE");
rb_define_singleton_method(mgsl_ieee, "env_setup",
- rb_gsl_ieee_env_setup, 0);
+ rb_gsl_ieee_env_setup, 0);
rb_define_module_function(module, "ieee_env_setup", rb_gsl_ieee_env_setup, 0);
rb_define_singleton_method(mgsl_ieee, "fprintf_double",
- rb_gsl_ieee_fprintf_double, -1);
+ rb_gsl_ieee_fprintf_double, -1);
rb_define_singleton_method(mgsl_ieee, "fprintf",
- rb_gsl_ieee_fprintf_double, -1);
+ rb_gsl_ieee_fprintf_double, -1);
rb_define_singleton_method(mgsl_ieee, "printf",
- rb_gsl_ieee_printf_double, -1);
+ rb_gsl_ieee_printf_double, -1);
rb_define_singleton_method(mgsl_ieee, "printf_double",
- rb_gsl_ieee_printf_double, -1);
+ rb_gsl_ieee_printf_double, -1);
}
diff --git a/ext/gsl/include/rb_gsl.h b/ext/gsl_native/include/rb_gsl.h
similarity index 97%
rename from ext/gsl/include/rb_gsl.h
rename to ext/gsl_native/include/rb_gsl.h
index 0e72ef8..f701149 100644
--- a/ext/gsl/include/rb_gsl.h
+++ b/ext/gsl_native/include/rb_gsl.h
@@ -67,9 +67,7 @@ void Init_gsl_odeiv(VALUE module);
void Init_gsl_interp(VALUE module);
void Init_gsl_spline(VALUE module);
void Init_gsl_diff(VALUE module);
-#ifdef GSL_1_4_9_LATER
void Init_gsl_deriv(VALUE module);
-#endif
void Init_gsl_cheb(VALUE module);
void Init_gsl_sum(VALUE module);
@@ -123,9 +121,7 @@ void Init_cqp(VALUE module);
void Init_fresnel(VALUE module);
-#ifdef GSL_1_9_LATER
void Init_bspline(VALUE module);
-#endif
#ifdef HAVE_ALF_ALF_H
#include "alf/alf.h"
@@ -133,11 +129,8 @@ void Init_bspline(VALUE module);
void Init_alf(VALUE module);
void Init_geometry(VALUE module);
-#ifdef GSL_1_14_LATER
#include <gsl/gsl_multiset.h>
extern VALUE cMultiset;
void Init_multiset(VALUE module);
#endif
-
-#endif
diff --git a/ext/gsl/include/rb_gsl_array.h b/ext/gsl_native/include/rb_gsl_array.h
similarity index 86%
rename from ext/gsl/include/rb_gsl_array.h
rename to ext/gsl_native/include/rb_gsl_array.h
index ffbbe1f..330d2a1 100644
--- a/ext/gsl/include/rb_gsl_array.h
+++ b/ext/gsl_native/include/rb_gsl_array.h
@@ -109,14 +109,14 @@ double* get_vector_ptr(VALUE ary, size_t *stride, size_t *n);
gsl_matrix_complex* matrix_to_complex(const gsl_matrix *m);
-void gsl_matrix_complex_mul(gsl_matrix_complex *mnew, const gsl_matrix_complex *m,
- const gsl_matrix_complex *mb);
+void gsl_matrix_complex_mul(gsl_matrix_complex *mnew, const gsl_matrix_complex *m,
+ const gsl_matrix_complex *mb);
void gsl_matrix_mul(gsl_matrix *mnew, gsl_matrix *m, gsl_matrix *b);
-void gsl_matrix_complex_mul_vector(gsl_vector_complex *vnew,
- const gsl_matrix_complex *m,
- const gsl_vector_complex *v);
-void gsl_matrix_mul_vector(gsl_vector *vnew,
- const gsl_matrix *m, const gsl_vector *v);
+void gsl_matrix_complex_mul_vector(gsl_vector_complex *vnew,
+ const gsl_matrix_complex *m,
+ const gsl_vector_complex *v);
+void gsl_matrix_mul_vector(gsl_vector *vnew,
+ const gsl_matrix *m, const gsl_vector *v);
gsl_vector_complex* vector_to_complex(const gsl_vector *v);
gsl_vector* make_vector_clone(const gsl_vector *v);
@@ -150,8 +150,8 @@ gsl_matrix_int_view* rb_gsl_matrix_int_view_alloc();
void rb_gsl_matrix_int_view_free(gsl_matrix_int_view *v);
VALUE rb_gsl_matrix_to_i(VALUE obj);
VALUE rb_gsl_matrix_int_to_f(VALUE obj);
-void gsl_matrix_int_mul_vector(gsl_vector_int *vnew,
- const gsl_matrix_int *m, const gsl_vector_int *v);
+void gsl_matrix_int_mul_vector(gsl_vector_int *vnew,
+ const gsl_matrix_int *m, const gsl_vector_int *v);
VALUE rb_gsl_vector_to_i(VALUE obj);
VALUE make_rarray_from_cvector_int(const gsl_vector_int *v);
VALUE rb_gsl_vector_int_to_f(VALUE obj);
@@ -160,34 +160,24 @@ VALUE rb_gsl_vector_print(VALUE obj);
void gsl_vector_print(const gsl_vector *v, VALUE klass);
int rbgsl_vector_equal(const gsl_vector *v1, const gsl_vector *v2, double eps);
-#ifndef GSL_1_2_LATER
-int gsl_matrix_complex_add(gsl_matrix_complex * a, const gsl_matrix_complex * b);
-int gsl_matrix_complex_sub(gsl_matrix_complex * a, const gsl_matrix_complex * b);
-int gsl_matrix_complex_mul_elements(gsl_matrix_complex * a, const gsl_matrix_complex * b);
-int gsl_matrix_complex_div_elements(gsl_matrix_complex * a, const gsl_matrix_complex * b);
-int gsl_matrix_complex_scale(gsl_matrix_complex * a, const gsl_complex x);
-int gsl_matrix_complex_add_constant(gsl_matrix_complex * a, const gsl_complex x);
-int gsl_matrix_complex_add_diagonal(gsl_matrix_complex * a, const gsl_complex x);
-#endif
-
void Init_gsl_vector_init(VALUE module);
void Init_gsl_vector_int_init(VALUE module);
void Init_gsl_matrix_init(VALUE module);
void Init_gsl_matrix_int_init(VALUE module);
-gsl_matrix* gsl_matrix_alloc_from_array_sizes(VALUE ary,
- VALUE nn1, VALUE nn2);
+gsl_matrix* gsl_matrix_alloc_from_array_sizes(VALUE ary,
+ VALUE nn1, VALUE nn2);
gsl_matrix* gsl_matrix_alloc_from_arrays(int argc, VALUE *argv);
gsl_matrix* gsl_matrix_alloc_from_vector_sizes(VALUE ary,
- VALUE nn1, VALUE nn2);
+ VALUE nn1, VALUE nn2);
gsl_matrix* gsl_matrix_alloc_from_vectors(int argc, VALUE *argv);
-gsl_matrix_int* gsl_matrix_int_alloc_from_array_sizes(VALUE ary,
- VALUE nn1, VALUE nn2);
+gsl_matrix_int* gsl_matrix_int_alloc_from_array_sizes(VALUE ary,
+ VALUE nn1, VALUE nn2);
gsl_matrix_int* gsl_matrix_int_alloc_from_arrays(int argc, VALUE *argv);
gsl_matrix_int* gsl_matrix_int_alloc_from_vector_sizes(VALUE ary,
- VALUE nn1, VALUE nn2);
+ VALUE nn1, VALUE nn2);
gsl_matrix_int* gsl_matrix_int_alloc_from_vectors(int argc, VALUE *argv);
VALUE rb_gsl_matrix_do_something(VALUE obj, void (*f)(gsl_matrix *));
diff --git a/ext/gsl/include/rb_gsl_cheb.h b/ext/gsl_native/include/rb_gsl_cheb.h
similarity index 100%
rename from ext/gsl/include/rb_gsl_cheb.h
rename to ext/gsl_native/include/rb_gsl_cheb.h
diff --git a/ext/gsl/include/rb_gsl_common.h b/ext/gsl_native/include/rb_gsl_common.h
similarity index 83%
rename from ext/gsl/include/rb_gsl_common.h
rename to ext/gsl_native/include/rb_gsl_common.h
index c0cffa5..39c3330 100644
--- a/ext/gsl/include/rb_gsl_common.h
+++ b/ext/gsl_native/include/rb_gsl_common.h
@@ -13,11 +13,7 @@
#define ___RB_GSL_COMMON_H___
#include <ruby.h>
-#ifdef HAVE_RUBY_IO_H
#include <ruby/io.h>
-#else
-#include <rubyio.h>
-#endif
#include <ctype.h>
#include <gsl/gsl_errno.h>
@@ -32,7 +28,7 @@
EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#ifndef CHECK_FIXNUM
-#define CHECK_FIXNUM(x) if(!FIXNUM_P(x))rb_raise(rb_eTypeError,"Fixnum expected");
+#define CHECK_FIXNUM(x) if(!FIXNUM_P(x)) rb_raise(rb_eTypeError,"Fixnum expected");
#endif
#ifndef Need_Float
@@ -40,9 +36,9 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef Need_Float2
-#define Need_Float2(x,y) do {\
- Need_Float(x);\
- Need_Float(y);} while (0)
+#define Need_Float2(x,y) do { \
+ Need_Float(x); \
+ Need_Float(y); } while (0)
#endif
#ifndef COMPLEX_P
@@ -50,12 +46,12 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_RNG
-#define CHECK_RNG(x) if(!rb_obj_is_kind_of(x,cgsl_rng))\
+#define CHECK_RNG(x) if(!rb_obj_is_kind_of(x,cgsl_rng)) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Rng expected)");
#endif
#ifndef CHECK_COMPLEX
-#define CHECK_COMPLEX(x) if(!rb_obj_is_kind_of(x,cgsl_complex))\
+#define CHECK_COMPLEX(x) if(!rb_obj_is_kind_of(x,cgsl_complex)) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Complex expected)");
#endif
@@ -64,12 +60,12 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_POLY
-#define CHECK_POLY(x) if(!rb_obj_is_kind_of(x,cgsl_poly))\
+#define CHECK_POLY(x) if(!rb_obj_is_kind_of(x,cgsl_poly)) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Poly expected)");
#endif
#ifndef CHECK_POLY_INT
-#define CHECK_POLY_INT(x) if(!rb_obj_is_kind_of(x,cgsl_poly_int))\
+#define CHECK_POLY_INT(x) if(!rb_obj_is_kind_of(x,cgsl_poly_int)) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Poly::Int expected)");
#endif
@@ -78,7 +74,7 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_RATIONAL
-#define CHECK_RATIONAL(x) if(!rb_obj_is_kind_of(x,cgsl_rational))\
+#define CHECK_RATIONAL(x) if(!rb_obj_is_kind_of(x,cgsl_rational)) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Rational expected)");
#endif
@@ -88,7 +84,7 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_BLOCK
-#define CHECK_BLOCK(x) if(!rb_obj_is_kind_of(x,cgsl_block))\
+#define CHECK_BLOCK(x) if(!rb_obj_is_kind_of(x,cgsl_block)) \
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Block expected)", rb_class2name(CLASS_OF(x)));
#endif
#ifndef BLOCK_INT_P
@@ -96,7 +92,7 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_BLOCK_INT
-#define CHECK_BLOCK_INT(x) if(!rb_obj_is_kind_of(x,cgsl_block_int))\
+#define CHECK_BLOCK_INT(x) if(!rb_obj_is_kind_of(x,cgsl_block_int)) \
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Block::Int expected)", rb_class2name(CLASS_OF(x)));
#endif
#ifndef BLOCK_UCHAR_P
@@ -104,7 +100,7 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_BLOCK_UCHAR
-#define CHECK_BLOCK_UCHAR(x) if(!rb_obj_is_kind_of(x,cgsl_block_uchar))\
+#define CHECK_BLOCK_UCHAR(x) if(!rb_obj_is_kind_of(x,cgsl_block_uchar)) \
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Block::Byte expected)", rb_class2name(CLASS_OF(x)));
#endif
/*****/
@@ -126,27 +122,27 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef VECTOR_ROW_COL
-#define VECTOR_ROW_COL(x) ((rb_obj_is_kind_of(x,cgsl_vector_col)||rb_obj_is_kind_of(x,cgsl_vector_int_col))?cgsl_vector_col:cgsl_vector)
+#define VECTOR_ROW_COL(x) ((rb_obj_is_kind_of(x,cgsl_vector_col)||rb_obj_is_kind_of(x,cgsl_vector_int_col)) ? cgsl_vector_col : cgsl_vector)
#endif
#ifndef CHECK_VECTOR
-#define CHECK_VECTOR(x) if(!rb_obj_is_kind_of(x,cgsl_vector))\
+#define CHECK_VECTOR(x) if(!rb_obj_is_kind_of(x,cgsl_vector)) \
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Vector expected)", rb_class2name(CLASS_OF(x)));
#endif
#ifdef HAVE_NARRAY_H
-#define Data_Get_Vector(obj,sval) do {\
- if (NA_IsNArray(obj)) {\
- /* Convert obj to GSL::Vector::View */\
- obj = rb_gsl_na_to_gsl_vector_view_method(obj);\
- }\
- CHECK_VECTOR(obj);\
- Data_Get_Struct(obj,gsl_vector,sval);\
+#define Data_Get_Vector(obj,sval) do { \
+ if (NA_IsNArray(obj)) { \
+ /* Convert obj to GSL::Vector::View */ \
+ obj = rb_gsl_na_to_gsl_vector_view_method(obj); \
+ } \
+ CHECK_VECTOR(obj); \
+ Data_Get_Struct(obj,gsl_vector,sval); \
} while (0)
#else
-#define Data_Get_Vector(obj,sval) do {\
- CHECK_VECTOR(obj);\
- Data_Get_Struct(obj,gsl_vector,sval);\
+#define Data_Get_Vector(obj,sval) do { \
+ CHECK_VECTOR(obj); \
+ Data_Get_Struct(obj,gsl_vector,sval); \
} while (0)
#endif
@@ -168,11 +164,11 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef VECTOR_INT_ROW_COL
-#define VECTOR_INT_ROW_COL(x) (VECTOR_INT_ROW_P(x)?cgsl_vector_int:cgsl_vector_int_col)
+#define VECTOR_INT_ROW_COL(x) (VECTOR_INT_ROW_P(x) ? cgsl_vector_int : cgsl_vector_int_col)
#endif
#ifndef CHECK_VECTOR_INT
-#define CHECK_VECTOR_INT(x) if(!rb_obj_is_kind_of(x,cgsl_vector_int))\
+#define CHECK_VECTOR_INT(x) if(!rb_obj_is_kind_of(x,cgsl_vector_int)) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Vector::Int expected)");
#endif
@@ -190,11 +186,11 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef VECTOR_COMPLEX_ROW_COL
-#define VECTOR_COMPLEX_ROW_COL(x) (VECTOR_COMPLEX_ROW_P(x)?cgsl_vector_complex:cgsl_vector_complex_col)
+#define VECTOR_COMPLEX_ROW_COL(x) (VECTOR_COMPLEX_ROW_P(x) ? cgsl_vector_complex : cgsl_vector_complex_col)
#endif
#ifndef CHECK_VECTOR_COMPLEX
-#define CHECK_VECTOR_COMPLEX(x) if(!rb_obj_is_kind_of(x,cgsl_vector_complex))\
+#define CHECK_VECTOR_COMPLEX(x) if(!rb_obj_is_kind_of(x,cgsl_vector_complex)) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Vector::Complex expected)");
#endif
@@ -203,13 +199,13 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_MATRIX
-#define CHECK_MATRIX(x) if(!rb_obj_is_kind_of(x,cgsl_matrix))\
+#define CHECK_MATRIX(x) if(!rb_obj_is_kind_of(x,cgsl_matrix)) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Matrix expected)");
#endif
-#define Data_Get_Matrix(obj,sval) do {\
- CHECK_MATRIX(obj);\
- Data_Get_Struct(obj,gsl_matrix,sval);\
+#define Data_Get_Matrix(obj,sval) do { \
+ CHECK_MATRIX(obj); \
+ Data_Get_Struct(obj,gsl_matrix,sval); \
} while (0)
@@ -218,7 +214,7 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_MATRIX_INT
-#define CHECK_MATRIX_INT(x) if(!rb_obj_is_kind_of(x,cgsl_matrix_int))\
+#define CHECK_MATRIX_INT(x) if(!rb_obj_is_kind_of(x,cgsl_matrix_int)) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Matrix::Int expected)");
#endif
@@ -227,7 +223,7 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_MATRIX_COMPLEX
-#define CHECK_MATRIX_COMPLEX(x) if(!rb_obj_is_kind_of(x,cgsl_matrix_complex))\
+#define CHECK_MATRIX_COMPLEX(x) if(!rb_obj_is_kind_of(x,cgsl_matrix_complex)) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Matrix::Complex expected)");
#endif
@@ -236,7 +232,7 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_TENSOR
-#define CHECK_TENSOR(x) if(CLASS_OF(x)!=cgsl_tensor)\
+#define CHECK_TENSOR(x) if(CLASS_OF(x)!=cgsl_tensor) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Tensor expected)");
#endif
@@ -245,7 +241,7 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_TENSOR_INT
-#define CHECK_TENSOR_INT(x) if(CLASS_OF(x)!=cgsl_tensor_int)\
+#define CHECK_TENSOR_INT(x) if(CLASS_OF(x)!=cgsl_tensor_int) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Tensor::Int expected)");
#endif
@@ -254,7 +250,7 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_PERMUTATION
-#define CHECK_PERMUTATION(x) if(!rb_obj_is_kind_of(x,cgsl_permutation))\
+#define CHECK_PERMUTATION(x) if(!rb_obj_is_kind_of(x,cgsl_permutation)) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Permutation expected)");
#endif
@@ -263,7 +259,7 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_PROC
-#define CHECK_PROC(x) if(!rb_obj_is_kind_of(x,rb_cProc))\
+#define CHECK_PROC(x) if(!rb_obj_is_kind_of(x,rb_cProc)) \
rb_raise(rb_eTypeError, "wrong argument type (Proc expected)");
#endif
@@ -272,7 +268,7 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_FUNCTION
-#define CHECK_FUNCTION(x) if(!rb_obj_is_kind_of(x,cgsl_function))\
+#define CHECK_FUNCTION(x) if(!rb_obj_is_kind_of(x,cgsl_function)) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Function expected)");
#endif
@@ -281,7 +277,7 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_FUNCTION_FDF
-#define CHECK_FUNCTION_FDF(x) if(!rb_obj_is_kind_of(x,cgsl_function_fdf))\
+#define CHECK_FUNCTION_FDF(x) if(!rb_obj_is_kind_of(x,cgsl_function_fdf)) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Function_fdf expected)");
#endif
@@ -290,7 +286,7 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#endif
#ifndef CHECK_HISTOGRAM
-#define CHECK_HISTOGRAM(x) if(!rb_obj_is_kind_of(x,cgsl_histogram))\
+#define CHECK_HISTOGRAM(x) if(!rb_obj_is_kind_of(x,cgsl_histogram)) \
rb_raise(rb_eTypeError, "wrong argument type (GSL::Histogram expected)");
#endif
@@ -301,13 +297,13 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a;
#define RBGSL_SET_CLASS0(obj0, cls) RBASIC(obj0)->klass = cls
#endif
#define RBGSL_SET_CLASS(obj, cls) do { \
- VALUE _obj_ = (obj); \
- RBGSL_SET_CLASS0(_obj_, cls); \
+ VALUE _obj_ = (obj); \
+ RBGSL_SET_CLASS0(_obj_, cls); \
} while (0)
#endif
void rb_gsl_error_handler(const char *reason, const char *file,
- int line, int gsl_errno);
+ int line, int gsl_errno);
FILE* rb_gsl_open_writefile(VALUE io, int *flag);
FILE* rb_gsl_open_readfile(VALUE io, int *flag);
@@ -336,10 +332,6 @@ gsl_vector_int* mygsl_vector_int_down(gsl_vector_int *p);
void mygsl_vector_int_up2(gsl_vector_int *pnew, gsl_vector_int *p);
gsl_vector_int* mygsl_vector_int_up(gsl_vector_int *p);
-#ifndef GSL_1_3_LATER
-int gsl_fcmp(const double x1, const double x2, const double epsilon);
-#endif
-
size_t count_columns(const char *str);
char* str_scan_double(const char *str, double *val);
char* str_scan_int(const char *str, int *val);
diff --git a/ext/gsl/include/rb_gsl_complex.h b/ext/gsl_native/include/rb_gsl_complex.h
similarity index 100%
rename from ext/gsl/include/rb_gsl_complex.h
rename to ext/gsl_native/include/rb_gsl_complex.h
diff --git a/ext/gsl/include/rb_gsl_const.h b/ext/gsl_native/include/rb_gsl_const.h
similarity index 87%
rename from ext/gsl/include/rb_gsl_const.h
rename to ext/gsl_native/include/rb_gsl_const.h
index 359df40..c46b61b 100644
--- a/ext/gsl/include/rb_gsl_const.h
+++ b/ext/gsl_native/include/rb_gsl_const.h
@@ -14,13 +14,8 @@
#define ___RB_GSL_CONST_H___
#include "rb_gsl.h"
-#ifndef GSL_1_4_LATER
-#include <gsl/gsl_const_mks.h>
-#include <gsl/gsl_const_cgs.h>
-#else
#include <gsl/gsl_const_mksa.h>
#include <gsl/gsl_const_cgsm.h>
-#endif
#include <gsl/gsl_const_num.h>
EXTERN VALUE mgsl_const_mks, mgsl_const_cgs;
diff --git a/ext/gsl/include/rb_gsl_dirac.h b/ext/gsl_native/include/rb_gsl_dirac.h
similarity index 100%
rename from ext/gsl/include/rb_gsl_dirac.h
rename to ext/gsl_native/include/rb_gsl_dirac.h
diff --git a/ext/gsl/include/rb_gsl_eigen.h b/ext/gsl_native/include/rb_gsl_eigen.h
similarity index 100%
rename from ext/gsl/include/rb_gsl_eigen.h
rename to ext/gsl_native/include/rb_gsl_eigen.h
diff --git a/ext/gsl/include/rb_gsl_fft.h b/ext/gsl_native/include/rb_gsl_fft.h
similarity index 96%
rename from ext/gsl/include/rb_gsl_fft.h
rename to ext/gsl_native/include/rb_gsl_fft.h
index 6d3ca43..8de6449 100644
--- a/ext/gsl/include/rb_gsl_fft.h
+++ b/ext/gsl_native/include/rb_gsl_fft.h
@@ -18,9 +18,6 @@
#include <gsl/gsl_fft_real.h>
#include <gsl/gsl_fft_halfcomplex.h>
#include "rb_gsl.h"
-#ifdef HAVE_NARRAY_H
-#include "narray.h"
-#endif
typedef struct
{
diff --git a/ext/gsl/include/rb_gsl_fit.h b/ext/gsl_native/include/rb_gsl_fit.h
similarity index 100%
rename from ext/gsl/include/rb_gsl_fit.h
rename to ext/gsl_native/include/rb_gsl_fit.h
diff --git a/ext/gsl/include/rb_gsl_function.h b/ext/gsl_native/include/rb_gsl_function.h
similarity index 100%
rename from ext/gsl/include/rb_gsl_function.h
rename to ext/gsl_native/include/rb_gsl_function.h
diff --git a/ext/gsl/include/rb_gsl_graph.h b/ext/gsl_native/include/rb_gsl_graph.h
similarity index 98%
rename from ext/gsl/include/rb_gsl_graph.h
rename to ext/gsl_native/include/rb_gsl_graph.h
index c4a8cb7..21fffd3 100644
--- a/ext/gsl/include/rb_gsl_graph.h
+++ b/ext/gsl_native/include/rb_gsl_graph.h
@@ -58,8 +58,8 @@ typedef struct __rb_gsl_plot {
VALUE reposition;
VALUE blankout;
VALUE O;
- VALUE X, Y;
-
+ VALUE X, Y;
+
} gsl_graph;
gsl_graph* gsl_graph_new();
diff --git a/ext/gsl/include/rb_gsl_histogram.h b/ext/gsl_native/include/rb_gsl_histogram.h
similarity index 90%
rename from ext/gsl/include/rb_gsl_histogram.h
rename to ext/gsl_native/include/rb_gsl_histogram.h
index 83b5a6c..02a9b7b 100644
--- a/ext/gsl/include/rb_gsl_histogram.h
+++ b/ext/gsl_native/include/rb_gsl_histogram.h
@@ -29,21 +29,21 @@ typedef struct {
} mygsl_histogram2d_view;
#ifndef HISTOGRAM2D_P
-#define HISTOGRAM2D_P(x) (rb_obj_is_kind_of(x,cgsl_histogram2d)?1:0)
+#define HISTOGRAM2D_P(x) (rb_obj_is_kind_of(x,cgsl_histogram2d) ? 1 : 0)
#endif
#ifndef CHECK_HISTOGRAM2D
-#define CHECK_HISTOGRAM2D(x) if(!rb_obj_is_kind_of(x,cgsl_histogram2d))\
+#define CHECK_HISTOGRAM2D(x) if(!rb_obj_is_kind_of(x,cgsl_histogram2d)) \
rb_raise(rb_eTypeError, "wrong type (Histogram2d expected)");
#endif
#ifndef HISTOGRAM3D_P
-#define HISTOGRAM3D_P(x) (rb_obj_is_kind_of(x,cgsl_histogram3d)?1:0)
+#define HISTOGRAM3D_P(x) (rb_obj_is_kind_of(x,cgsl_histogram3d) ? 1 : 0)
#endif
#ifndef CHECK_HISTOGRAM3D
-#define CHECK_HISTOGRAM3D(x) if(!rb_obj_is_kind_of(x,cgsl_histogram3d))\
+#define CHECK_HISTOGRAM3D(x) if(!rb_obj_is_kind_of(x,cgsl_histogram3d)) \
rb_raise(rb_eTypeError, "wrong type (Histogram3d expected)");
#endif
@@ -51,13 +51,13 @@ typedef struct {
int
mygsl_histogram_equal_bins_p (const gsl_histogram * h1, const gsl_histogram * h2);
-int
+int
mygsl_histogram_add (gsl_histogram * h1, const gsl_histogram * h2);
-int
+int
mygsl_histogram_sub (gsl_histogram * h1, const gsl_histogram * h2);
-int
+int
mygsl_histogram_mul (gsl_histogram * h1, const gsl_histogram * h2);
-int
+int
mygsl_histogram_div (gsl_histogram * h1, const gsl_histogram * h2);
#endif
diff --git a/ext/gsl/include/rb_gsl_histogram3d.h b/ext/gsl_native/include/rb_gsl_histogram3d.h
similarity index 50%
rename from ext/gsl/include/rb_gsl_histogram3d.h
rename to ext/gsl_native/include/rb_gsl_histogram3d.h
index 862141a..5520a91 100644
--- a/ext/gsl/include/rb_gsl_histogram3d.h
+++ b/ext/gsl_native/include/rb_gsl_histogram3d.h
@@ -3,11 +3,11 @@
typedef struct {
size_t nx, ny, nz;
- double * xrange ;
- double * yrange ;
- double * zrange ;
- double * bin ;
-} mygsl_histogram3d ;
+ double * xrange;
+ double * yrange;
+ double * zrange;
+ double * bin;
+} mygsl_histogram3d;
typedef struct {
gsl_histogram2d h;
@@ -15,56 +15,56 @@ typedef struct {
mygsl_histogram3d* mygsl_histogram3d_alloc(const size_t nx, const size_t ny,
- const size_t nz);
+ const size_t nz);
void mygsl_histogram3d_free (mygsl_histogram3d * h);
-mygsl_histogram3d* mygsl_histogram3d_calloc_uniform(const size_t nx,
- const size_t ny,
- const size_t nz,
- const double xmin,
- const double xmax,
- const double ymin,
- const double ymax,
- const double zmin,
- const double zmax);
-mygsl_histogram3d* mygsl_histogram3d_calloc(const size_t nx,
- const size_t ny,
- const size_t nz);
-int mygsl_histogram3d_set_ranges_uniform (mygsl_histogram3d * h,
- double xmin, double xmax,
- double ymin, double ymax,
- double zmin, double zmax);
-int mygsl_histogram3d_set_ranges (mygsl_histogram3d * h,
- const double xrange[], size_t xsize,
- const double yrange[], size_t ysize,
- const double zrange[], size_t zsize);
+mygsl_histogram3d* mygsl_histogram3d_calloc_uniform(const size_t nx,
+ const size_t ny,
+ const size_t nz,
+ const double xmin,
+ const double xmax,
+ const double ymin,
+ const double ymax,
+ const double zmin,
+ const double zmax);
+mygsl_histogram3d* mygsl_histogram3d_calloc(const size_t nx,
+ const size_t ny,
+ const size_t nz);
+int mygsl_histogram3d_set_ranges_uniform (mygsl_histogram3d * h,
+ double xmin, double xmax,
+ double ymin, double ymax,
+ double zmin, double zmax);
+int mygsl_histogram3d_set_ranges (mygsl_histogram3d * h,
+ const double xrange[], size_t xsize,
+ const double yrange[], size_t ysize,
+ const double zrange[], size_t zsize);
int mygsl_histogram3d_memcpy(mygsl_histogram3d * dest, const mygsl_histogram3d * src);
mygsl_histogram3d* mygsl_histogram3d_clone(const mygsl_histogram3d * src);
int mygsl_histogram3d_fread(FILE * stream, mygsl_histogram3d * h);
int mygsl_histogram3d_fwrite(FILE * stream, const mygsl_histogram3d * h);
int mygsl_histogram3d_increment(mygsl_histogram3d * h, double x, double y, double z);
-int mygsl_histogram3d_accumulate (mygsl_histogram3d * h,
- double x, double y, double z, double weight);
-int mygsl_histogram3d_increment2(mygsl_histogram3d * h,
- double x, double y, double z);
-int mygsl_histogram3d_accumulate2(mygsl_histogram3d * h,
- double x, double y, double z, double weight);
-double mygsl_histogram3d_get (const mygsl_histogram3d * h, const size_t i,
- const size_t j, const size_t k);
-int mygsl_histogram3d_get_xrange(const mygsl_histogram3d * h, const size_t i,
- double *xlower, double *xupper);
-int mygsl_histogram3d_get_yrange(const mygsl_histogram3d * h, const size_t j,
- double *ylower, double *yupper);
-int mygsl_histogram3d_get_zrange(const mygsl_histogram3d * h, const size_t k,
- double *zlower, double *zupper);
+int mygsl_histogram3d_accumulate (mygsl_histogram3d * h,
+ double x, double y, double z, double weight);
+int mygsl_histogram3d_increment2(mygsl_histogram3d * h,
+ double x, double y, double z);
+int mygsl_histogram3d_accumulate2(mygsl_histogram3d * h,
+ double x, double y, double z, double weight);
+double mygsl_histogram3d_get (const mygsl_histogram3d * h, const size_t i,
+ const size_t j, const size_t k);
+int mygsl_histogram3d_get_xrange(const mygsl_histogram3d * h, const size_t i,
+ double *xlower, double *xupper);
+int mygsl_histogram3d_get_yrange(const mygsl_histogram3d * h, const size_t j,
+ double *ylower, double *yupper);
+int mygsl_histogram3d_get_zrange(const mygsl_histogram3d * h, const size_t k,
+ double *zlower, double *zupper);
int mygsl_histogram3d_find (const mygsl_histogram3d * h,
- const double x, const double y, const double z,
- size_t * i, size_t * j, size_t *k);
+ const double x, const double y, const double z,
+ size_t * i, size_t * j, size_t *k);
gsl_histogram2d* mygsl_histogram3d_xyproject(const mygsl_histogram3d * h3,
- size_t kstart, size_t kend);
+ size_t kstart, size_t kend);
gsl_histogram2d* mygsl_histogram3d_xzproject(const mygsl_histogram3d * h3,
- size_t jstart, size_t jend);
+ size_t jstart, size_t jend);
gsl_histogram2d* mygsl_histogram3d_yzproject(const mygsl_histogram3d * h3,
- size_t istart, size_t iend);
+ size_t istart, size_t iend);
int mygsl_histogram3d_scale(mygsl_histogram3d * h, double scale);
int mygsl_histogram3d_shift(mygsl_histogram3d * h, double shift);
double mygsl_histogram3d_xmax(const mygsl_histogram3d * h);
@@ -74,11 +74,11 @@ double mygsl_histogram3d_ymin(const mygsl_histogram3d * h);
double mygsl_histogram3d_zmax(const mygsl_histogram3d * h);
double mygsl_histogram3d_zmin(const mygsl_histogram3d * h);
double mygsl_histogram3d_max_val(const mygsl_histogram3d * h);
-void mygsl_histogram3d_max_bin(const mygsl_histogram3d * h,
- size_t *imax_out, size_t *jmax_out, size_t *kmax_out);
+void mygsl_histogram3d_max_bin(const mygsl_histogram3d * h,
+ size_t *imax_out, size_t *jmax_out, size_t *kmax_out);
double mygsl_histogram3d_min_val(const mygsl_histogram3d * h);
-void mygsl_histogram3d_min_bin(const mygsl_histogram3d * h,
- size_t *imin_out, size_t *jmin_out, size_t *kmin_out);
+void mygsl_histogram3d_min_bin(const mygsl_histogram3d * h,
+ size_t *imin_out, size_t *jmin_out, size_t *kmin_out);
double mygsl_histogram3d_sum (const mygsl_histogram3d * h);
double mygsl_histogram3d_xmean (const mygsl_histogram3d * h);
double mygsl_histogram3d_ymean (const mygsl_histogram3d * h);
@@ -88,7 +88,7 @@ double mygsl_histogram3d_ysigma(const mygsl_histogram3d * h);
double mygsl_histogram3d_zsigma(const mygsl_histogram3d * h);
void mygsl_histogram3d_reset(mygsl_histogram3d * h);
int mygsl_histogram3d_equal_bins_p(const mygsl_histogram3d * h1,
- const mygsl_histogram3d * h2);
+ const mygsl_histogram3d * h2);
int mygsl_histogram3d_add(mygsl_histogram3d * h1, const mygsl_histogram3d * h2);
int mygsl_histogram3d_sub(mygsl_histogram3d * h1, const mygsl_histogram3d * h2);
int mygsl_histogram3d_mul(mygsl_histogram3d * h1, const mygsl_histogram3d * h2);
diff --git a/ext/gsl/include/rb_gsl_integration.h b/ext/gsl_native/include/rb_gsl_integration.h
similarity index 100%
rename from ext/gsl/include/rb_gsl_integration.h
rename to ext/gsl_native/include/rb_gsl_integration.h
diff --git a/ext/gsl/include/rb_gsl_interp.h b/ext/gsl_native/include/rb_gsl_interp.h
similarity index 100%
rename from ext/gsl/include/rb_gsl_interp.h
rename to ext/gsl_native/include/rb_gsl_interp.h
diff --git a/ext/gsl/include/rb_gsl_linalg.h b/ext/gsl_native/include/rb_gsl_linalg.h
similarity index 95%
rename from ext/gsl/include/rb_gsl_linalg.h
rename to ext/gsl_native/include/rb_gsl_linalg.h
index 3d0e618..02e1560 100644
--- a/ext/gsl/include/rb_gsl_linalg.h
+++ b/ext/gsl_native/include/rb_gsl_linalg.h
@@ -14,7 +14,6 @@
#include <gsl/gsl_linalg.h>
#include <gsl/gsl_math.h>
-#include "rb_gsl_with_narray.h"
VALUE rb_gsl_linalg_complex_LU_decomp(int argc, VALUE *argv, VALUE obj);
VALUE rb_gsl_linalg_complex_LU_decomp2(int argc, VALUE *argv, VALUE obj);
diff --git a/ext/gsl/include/rb_gsl_math.h b/ext/gsl_native/include/rb_gsl_math.h
similarity index 85%
rename from ext/gsl/include/rb_gsl_math.h
rename to ext/gsl_native/include/rb_gsl_math.h
index f305cfe..44d34f1 100644
--- a/ext/gsl/include/rb_gsl_math.h
+++ b/ext/gsl_native/include/rb_gsl_math.h
@@ -15,10 +15,6 @@
#include "rb_gsl.h"
-#ifndef GSL_1_3_LATER
-int gsl_fcmp (const double x1, const double x2, const double epsilon);
-#endif
-
VALUE rb_gsl_math_complex_eval(gsl_complex (*func)(gsl_complex), VALUE obj);
#endif
diff --git a/ext/gsl/include/rb_gsl_odeiv.h b/ext/gsl_native/include/rb_gsl_odeiv.h
similarity index 100%
rename from ext/gsl/include/rb_gsl_odeiv.h
rename to ext/gsl_native/include/rb_gsl_odeiv.h
diff --git a/ext/gsl/include/rb_gsl_poly.h b/ext/gsl_native/include/rb_gsl_poly.h
similarity index 95%
rename from ext/gsl/include/rb_gsl_poly.h
rename to ext/gsl_native/include/rb_gsl_poly.h
index 41f2f95..02422ca 100644
--- a/ext/gsl/include/rb_gsl_poly.h
+++ b/ext/gsl_native/include/rb_gsl_poly.h
@@ -27,7 +27,7 @@ EXTERN VALUE cgsl_rational;
typedef gsl_vector gsl_poly;
typedef gsl_vector_int gsl_poly_int;
/*
-typedef struct ___gsl_rational
+typedef struct ___gsl_rational
{
VALUE num, den;
gsl_poly *pnum;
@@ -36,7 +36,7 @@ typedef struct ___gsl_rational
*/
int gsl_poly_conv(const double *a, size_t na, const double *b, size_t nb,
- double *c, size_t *nc);
+ double *c, size_t *nc);
gsl_vector* gsl_poly_deconv_vector(const gsl_vector *c, const gsl_vector *a, gsl_vector **r);
gsl_vector* gsl_poly_deriv(const gsl_vector *v);
@@ -51,7 +51,7 @@ VALUE rb_gsl_poly_complex_solve2(int argc, VALUE *argv, VALUE obj);
int gsl_poly_int_conv(const int *a, size_t na, const int *b, size_t nb,
- int *c, size_t *nc);
+ int *c, size_t *nc);
gsl_vector_int* gsl_poly_int_deconv_vector(const gsl_vector_int *c, const gsl_vector_int *a, gsl_vector_int **r);
gsl_vector_int* gsl_poly_int_deriv(const gsl_vector_int *v);
diff --git a/ext/gsl/include/rb_gsl_rational.h b/ext/gsl_native/include/rb_gsl_rational.h
similarity index 96%
rename from ext/gsl/include/rb_gsl_rational.h
rename to ext/gsl_native/include/rb_gsl_rational.h
index 03d89b8..6e00e3b 100644
--- a/ext/gsl/include/rb_gsl_rational.h
+++ b/ext/gsl_native/include/rb_gsl_rational.h
@@ -15,7 +15,7 @@
#include "rb_gsl_poly.h"
-typedef struct ___gsl_rational
+typedef struct ___gsl_rational
{
VALUE num, den;
gsl_poly *pnum;
diff --git a/ext/gsl/include/rb_gsl_rng.h b/ext/gsl_native/include/rb_gsl_rng.h
similarity index 100%
rename from ext/gsl/include/rb_gsl_rng.h
rename to ext/gsl_native/include/rb_gsl_rng.h
diff --git a/ext/gsl/include/rb_gsl_root.h b/ext/gsl_native/include/rb_gsl_root.h
similarity index 100%
rename from ext/gsl/include/rb_gsl_root.h
rename to ext/gsl_native/include/rb_gsl_root.h
diff --git a/ext/gsl/include/rb_gsl_sf.h b/ext/gsl_native/include/rb_gsl_sf.h
similarity index 70%
rename from ext/gsl/include/rb_gsl_sf.h
rename to ext/gsl_native/include/rb_gsl_sf.h
index 941b68d..9a61cec 100644
--- a/ext/gsl/include/rb_gsl_sf.h
+++ b/ext/gsl_native/include/rb_gsl_sf.h
@@ -13,6 +13,7 @@
#include <gsl/gsl_sf.h>
#include <gsl/gsl_complex.h>
+#include <gsl/gsl_sf_mathieu.h>
#include "rb_gsl.h"
EXTERN VALUE cgsl_sf_result, cgsl_sf_result_e10;
@@ -23,56 +24,56 @@ VALUE rb_gsl_sf_eval1(double (*func)(double), VALUE argv);
VALUE rb_gsl_sf_eval_int_double(double (*func)(int, double), VALUE jj, VALUE argv);
VALUE rb_gsl_sf_eval_double_double(double (*func)(double, double), VALUE ff, VALUE argv);
VALUE rb_gsl_sf_eval1_uint(double (*func)(unsigned int), VALUE argv);
-VALUE rb_gsl_sf_eval_double_m(double (*func)(double, gsl_mode_t), VALUE argv, VALUE m);;
-VALUE rb_gsl_sf_eval_int_double_double(double (*func)(int, double, double), VALUE jj,
- VALUE ff, VALUE argv);
+VALUE rb_gsl_sf_eval_double_m(double (*func)(double, gsl_mode_t), VALUE argv, VALUE m);
+VALUE rb_gsl_sf_eval_int_double_double(double (*func)(int, double, double), VALUE jj,
+ VALUE ff, VALUE argv);
VALUE rb_gsl_sf_eval_int_int_double(double (*func)(int, int, double), VALUE jj,
- VALUE jj2, VALUE argv);
-VALUE rb_gsl_sf_eval_double3(double (*func)(double, double, double),
- VALUE ff, VALUE ff2, VALUE argv);
-VALUE rb_gsl_sf_eval_double4(double (*func)(double, double, double, double),
- VALUE ff, VALUE ff2, VALUE ff3, VALUE argv);
+ VALUE jj2, VALUE argv);
+VALUE rb_gsl_sf_eval_double3(double (*func)(double, double, double),
+ VALUE ff, VALUE ff2, VALUE argv);
+VALUE rb_gsl_sf_eval_double4(double (*func)(double, double, double, double),
+ VALUE ff, VALUE ff2, VALUE ff3, VALUE argv);
VALUE rb_gsl_sf_eval_double_int(double (*func)(double, int), VALUE argv, VALUE jj);
VALUE rb_gsl_sf_eval1_int(double (*func)(int), VALUE argv);
VALUE rb_gsl_sf_eval_e(int (*func)(double, gsl_sf_result*), VALUE x);
-VALUE rb_gsl_sf_eval_e_int_double(int (*func)(int, double, gsl_sf_result*),
- VALUE n, VALUE x);
-VALUE rb_gsl_sf_eval_e_int_int_double(int (*func)(int, int, double, gsl_sf_result*),
- VALUE n1, VALUE n2, VALUE x);
-VALUE rb_gsl_sf_eval_e_double2(int (*func)(double, double, gsl_sf_result*),
- VALUE x1, VALUE x2);
+VALUE rb_gsl_sf_eval_e_int_double(int (*func)(int, double, gsl_sf_result*),
+ VALUE n, VALUE x);
+VALUE rb_gsl_sf_eval_e_int_int_double(int (*func)(int, int, double, gsl_sf_result*),
+ VALUE n1, VALUE n2, VALUE x);
+VALUE rb_gsl_sf_eval_e_double2(int (*func)(double, double, gsl_sf_result*),
+ VALUE x1, VALUE x2);
VALUE rb_gsl_sf_eval_e_uint(int (*func)(unsigned int, gsl_sf_result*), VALUE x);
-VALUE rb_gsl_sf_eval_e_int_uint(int (*func)(int, unsigned int, gsl_sf_result*),
- VALUE n, VALUE x);
-VALUE rb_gsl_sf_eval_e_double_uint(int (*func)(double, unsigned int, gsl_sf_result*),
- VALUE y, VALUE x);
-VALUE rb_gsl_sf_eval_e_m(int (*func)(double, gsl_mode_t, gsl_sf_result*),
- VALUE x, VALUE m);
-VALUE rb_gsl_sf_eval_e_double2_m(int (*func)(double, double, gsl_mode_t, gsl_sf_result*),
- VALUE x1, VALUE x2, VALUE m);
-VALUE rb_gsl_sf_eval_e_double3_m(int (*func)(double, double, double, gsl_mode_t, gsl_sf_result*),
- VALUE x1, VALUE x2, VALUE x3, VALUE m);
-VALUE rb_gsl_sf_eval_double2_m(double (*func)(double, double, gsl_mode_t),
- VALUE argv, VALUE x2, VALUE m);
-VALUE rb_gsl_sf_eval_double3_m(double (*func)(double, double, double, gsl_mode_t),
- VALUE argv, VALUE x2, VALUE x3, VALUE m);
+VALUE rb_gsl_sf_eval_e_int_uint(int (*func)(int, unsigned int, gsl_sf_result*),
+ VALUE n, VALUE x);
+VALUE rb_gsl_sf_eval_e_double_uint(int (*func)(double, unsigned int, gsl_sf_result*),
+ VALUE y, VALUE x);
+VALUE rb_gsl_sf_eval_e_m(int (*func)(double, gsl_mode_t, gsl_sf_result*),
+ VALUE x, VALUE m);
+VALUE rb_gsl_sf_eval_e_double2_m(int (*func)(double, double, gsl_mode_t, gsl_sf_result*),
+ VALUE x1, VALUE x2, VALUE m);
+VALUE rb_gsl_sf_eval_e_double3_m(int (*func)(double, double, double, gsl_mode_t, gsl_sf_result*),
+ VALUE x1, VALUE x2, VALUE x3, VALUE m);
+VALUE rb_gsl_sf_eval_double2_m(double (*func)(double, double, gsl_mode_t),
+ VALUE argv, VALUE x2, VALUE m);
+VALUE rb_gsl_sf_eval_double3_m(double (*func)(double, double, double, gsl_mode_t),
+ VALUE argv, VALUE x2, VALUE x3, VALUE m);
-VALUE rb_gsl_sf_eval_e_double4_m(int (*func)(double, double, double, double, gsl_mode_t, gsl_sf_result*),
- VALUE x1, VALUE x2, VALUE x3, VALUE x4, VALUE m);
+VALUE rb_gsl_sf_eval_e_double4_m(int (*func)(double, double, double, double, gsl_mode_t, gsl_sf_result*),
+ VALUE x1, VALUE x2, VALUE x3, VALUE x4, VALUE m);
VALUE rb_gsl_sf_eval_e_int(int (*func)(int, gsl_sf_result*), VALUE x);
-VALUE rb_gsl_sf_eval_e_double3(int (*func)(double, double, double, gsl_sf_result*),
- VALUE x1, VALUE x2, VALUE x3);
-VALUE rb_gsl_sf_eval_e_int_double2(int (*func)(int, double, double, gsl_sf_result*),
- VALUE n, VALUE x1, VALUE x2);
-VALUE rb_gsl_sf_eval_e_double2(int (*func)(double, double, gsl_sf_result*),
- VALUE x1, VALUE x2);
+VALUE rb_gsl_sf_eval_e_double3(int (*func)(double, double, double, gsl_sf_result*),
+ VALUE x1, VALUE x2, VALUE x3);
+VALUE rb_gsl_sf_eval_e_int_double2(int (*func)(int, double, double, gsl_sf_result*),
+ VALUE n, VALUE x1, VALUE x2);
+VALUE rb_gsl_sf_eval_e_double2(int (*func)(double, double, gsl_sf_result*),
+ VALUE x1, VALUE x2);
VALUE eval_sf(double (*func)(double, gsl_mode_t), VALUE argv);
VALUE rb_gsl_sf_eval_double4_m(double (*func)(double, double, double, double,
- gsl_mode_t),
- VALUE argv, VALUE x2, VALUE x3, VALUE x4, VALUE m);
+ gsl_mode_t),
+ VALUE argv, VALUE x2, VALUE x3, VALUE x4, VALUE m);
VALUE rb_gsl_sf_eval_complex(double (*f)(double), VALUE obj);
@@ -104,11 +105,6 @@ void Init_gsl_sf_synchrotron(VALUE module);
void Init_gsl_sf_transport(VALUE module);
void Init_gsl_sf_trigonometric(VALUE module);
void Init_gsl_sf_zeta(VALUE module);
-
-
-#ifdef GSL_1_9_LATER
-#include <gsl/gsl_sf_mathieu.h>
void Init_sf_mathieu(VALUE module);
-#endif
#endif
diff --git a/ext/gsl/include/rb_gsl_statistics.h b/ext/gsl_native/include/rb_gsl_statistics.h
similarity index 100%
rename from ext/gsl/include/rb_gsl_statistics.h
rename to ext/gsl_native/include/rb_gsl_statistics.h
diff --git a/ext/gsl/include/rb_gsl_tensor.h b/ext/gsl_native/include/rb_gsl_tensor.h
similarity index 100%
rename from ext/gsl/include/rb_gsl_tensor.h
rename to ext/gsl_native/include/rb_gsl_tensor.h
diff --git a/ext/gsl/include/rb_gsl_with_narray.h b/ext/gsl_native/include/rb_gsl_with_narray.h
similarity index 100%
rename from ext/gsl/include/rb_gsl_with_narray.h
rename to ext/gsl_native/include/rb_gsl_with_narray.h
diff --git a/ext/gsl/include/templates_off.h b/ext/gsl_native/include/templates_off.h
similarity index 100%
rename from ext/gsl/include/templates_off.h
rename to ext/gsl_native/include/templates_off.h
diff --git a/ext/gsl/include/templates_on.h b/ext/gsl_native/include/templates_on.h
similarity index 99%
rename from ext/gsl/include/templates_on.h
rename to ext/gsl_native/include/templates_on.h
index c2578a4..4db23e9 100644
--- a/ext/gsl/include/templates_on.h
+++ b/ext/gsl_native/include/templates_on.h
@@ -173,7 +173,7 @@
#error unknown BASE_ directive in source.h
#endif
-#define CONCAT2x(a,b) a ## _ ## b
+#define CONCAT2x(a,b) a ## _ ## b
#define CONCAT2(a,b) CONCAT2x(a,b)
#define CONCAT3x(a,b,c) a ## _ ## b ## _ ## c
#define CONCAT3(a,b,c) CONCAT3x(a,b,c)
diff --git a/ext/gsl/integration.c b/ext/gsl_native/integration.c
similarity index 81%
rename from ext/gsl/integration.c
rename to ext/gsl_native/integration.c
index b45a04c..8ad1a3f 100644
--- a/ext/gsl/integration.c
+++ b/ext/gsl_native/integration.c
@@ -15,10 +15,10 @@
#include "include/rb_gsl_common.h"
#ifndef CHECK_WORKSPACE
-#define CHECK_WORKSPACE(x) if(CLASS_OF(x)!=cgsl_integration_workspace)\
- rb_raise(rb_eTypeError,\
- "wrong argument type %s (Integration::Workspace expected)",\
- rb_class2name(CLASS_OF(x)));
+#define CHECK_WORKSPACE(x) if(CLASS_OF(x)!=cgsl_integration_workspace) \
+ rb_raise(rb_eTypeError, \
+ "wrong argument type %s (Integration::Workspace expected)", \
+ rb_class2name(CLASS_OF(x)));
#endif
#define EPSABS_DEFAULT 0.0
@@ -30,26 +30,24 @@ static VALUE cgsl_integration_qaws_table, cgsl_integration_qawo_table;
static VALUE cgsl_integration_workspace;
-#ifdef GSL_1_14_LATER
static VALUE cgsl_integration_glfixed_table;
-#endif
static int get_a_b(int argc, VALUE *argv, int argstart, double *a, double *b);
-static int get_epsabs_epsrel(int argc, VALUE *argv, int argstart,
- double *epsabs, double *epsrel);
+static int get_epsabs_epsrel(int argc, VALUE *argv, int argstart,
+ double *epsabs, double *epsrel);
static int get_a_b_epsabs_epsrel(int argc, VALUE *argv, int argstart,
- double *a, double *b, double *epsabs,
- double *epsrel);
+ double *a, double *b, double *epsabs,
+ double *epsrel);
static int get_limit_key_workspace(int argc, VALUE *argv, int argstart,
- size_t *limit, int *key,
- gsl_integration_workspace **w);
+ size_t *limit, int *key,
+ gsl_integration_workspace **w);
static int get_limit_workspace(int argc, VALUE *argv, int argstart,
- size_t *limit,
- gsl_integration_workspace **w);
+ size_t *limit,
+ gsl_integration_workspace **w);
static int get_epsabs_epsrel_limit_workspace(int argc, VALUE *argv, int argstart,
- double *epsabs, double *epsrel,
- size_t *limit,
- gsl_integration_workspace **w);
+ double *epsabs, double *epsrel,
+ size_t *limit,
+ gsl_integration_workspace **w);
static int get_a_b(int argc, VALUE *argv, int argstart, double *a, double *b)
{
@@ -74,8 +72,8 @@ static int get_a_b(int argc, VALUE *argv, int argstart, double *a, double *b)
return itmp;
}
-static int get_epsabs_epsrel(int argc, VALUE *argv, int argstart,
- double *epsabs, double *epsrel)
+static int get_epsabs_epsrel(int argc, VALUE *argv, int argstart,
+ double *epsabs, double *epsrel)
{
int itmp;
VALUE aa, bb;
@@ -94,13 +92,13 @@ static int get_epsabs_epsrel(int argc, VALUE *argv, int argstart,
*epsabs = NUM2DBL(argv[argstart]);
*epsrel = NUM2DBL(argv[argstart+1]);
itmp = 2;
- }
- return argstart + itmp;
+ }
+ return argstart + itmp;
}
static int get_a_b_epsabs_epsrel(int argc, VALUE *argv, int argstart,
- double *a, double *b, double *epsabs,
- double *epsrel)
+ double *a, double *b, double *epsabs,
+ double *epsrel)
{
int itmp;
*epsabs = EPSABS_DEFAULT;
@@ -111,8 +109,8 @@ static int get_a_b_epsabs_epsrel(int argc, VALUE *argv, int argstart,
}
static int get_limit_key_workspace(int argc, VALUE *argv, int argstart,
- size_t *limit, int *key,
- gsl_integration_workspace **w)
+ size_t *limit, int *key,
+ gsl_integration_workspace **w)
{
int flag = 0;
switch (argc-argstart) {
@@ -163,8 +161,8 @@ static int get_limit_key_workspace(int argc, VALUE *argv, int argstart,
}
static int get_limit_workspace(int argc, VALUE *argv, int argstart,
- size_t *limit,
- gsl_integration_workspace **w)
+ size_t *limit,
+ gsl_integration_workspace **w)
{
int flag = 0;
@@ -207,9 +205,9 @@ static int get_limit_workspace(int argc, VALUE *argv, int argstart,
}
static int get_epsabs_epsrel_limit_workspace(int argc, VALUE *argv, int argstart,
- double *epsabs, double *epsrel,
- size_t *limit,
- gsl_integration_workspace **w)
+ double *epsabs, double *epsrel,
+ size_t *limit,
+ gsl_integration_workspace **w)
{
int flag = 0, itmp;
itmp = argstart;
@@ -269,9 +267,8 @@ static VALUE rb_gsl_integration_qng(int argc, VALUE *argv, VALUE obj)
// local variable 'itmp' declared and set, but never used
//int itmp;
- if (argc < 1) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for >= 1)", argc);
-
+ if (argc < 1) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for >= 1)", argc);
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
CHECK_FUNCTION(argv[0]);
@@ -283,12 +280,12 @@ static VALUE rb_gsl_integration_qng(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(obj, gsl_function, F);
break;
}
- status = gsl_integration_qng(F, a, b, epsabs, epsrel,
- &result, &abserr, &neval);
-
+ status = gsl_integration_qng(F, a, b, epsabs, epsrel,
+ &result, &abserr, &neval);
+
return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr),
- INT2FIX(neval), INT2FIX(status));
-}
+ INT2FIX(neval), INT2FIX(status));
+}
static VALUE rb_gsl_integration_qag(int argc, VALUE *argv, VALUE obj)
{
@@ -298,9 +295,8 @@ static VALUE rb_gsl_integration_qag(int argc, VALUE *argv, VALUE obj)
gsl_function *F = NULL;
gsl_integration_workspace *w = NULL;
int key = KEY_DEFAULT, status, intervals, itmp, flag = 0;
- if (argc < 1) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for >= 1)", argc);
-
+ if (argc < 1) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for >= 1)", argc);
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
CHECK_FUNCTION(argv[0]);
@@ -325,26 +321,26 @@ static VALUE rb_gsl_integration_qag(int argc, VALUE *argv, VALUE obj)
default:
if (argc == 2) {
if (FIXNUM_P(argv[1])) {
- key = FIX2INT(argv[1]);
- w = gsl_integration_workspace_alloc(limit);
- flag = 1;
+ key = FIX2INT(argv[1]);
+ w = gsl_integration_workspace_alloc(limit);
+ flag = 1;
} else if (rb_obj_is_kind_of(argv[1], cgsl_integration_workspace)) {
- Data_Get_Struct(argv[1], gsl_integration_workspace, w);
- flag = 0;
+ Data_Get_Struct(argv[1], gsl_integration_workspace, w);
+ flag = 0;
} else {
- rb_raise(rb_eTypeError, "Key or Workspace expected");
+ rb_raise(rb_eTypeError, "Key or Workspace expected");
}
itmp = get_a_b(argc, argv, 0, &a, &b);
} else if (argc == 3) {
if (FIXNUM_P(argv[2])) {
- key = FIX2INT(argv[2]);
- w = gsl_integration_workspace_alloc(limit);
- flag = 1;
+ key = FIX2INT(argv[2]);
+ w = gsl_integration_workspace_alloc(limit);
+ flag = 1;
} else if (rb_obj_is_kind_of(argv[2], cgsl_integration_workspace)) {
- Data_Get_Struct(argv[2], gsl_integration_workspace, w);
- flag = 0;
+ Data_Get_Struct(argv[2], gsl_integration_workspace, w);
+ flag = 0;
} else {
- rb_raise(rb_eTypeError, "Key or Workspace expected");
+ rb_raise(rb_eTypeError, "Key or Workspace expected");
}
itmp = get_a_b(argc, argv, 0, &a, &b);
} else {
@@ -354,14 +350,13 @@ static VALUE rb_gsl_integration_qag(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(obj, gsl_function, F);
break;
}
- status = gsl_integration_qag(F, a, b, epsabs, epsrel, limit, key, w,
- &result, &abserr);
+ status = gsl_integration_qag(F, a, b, epsabs, epsrel, limit, key, w,
+ &result, &abserr);
intervals = w->size;
if (flag == 1) gsl_integration_workspace_free(w);
-
- return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr),
- INT2FIX(intervals), INT2FIX(status));
-}
+ return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr),
+ INT2FIX(intervals), INT2FIX(status));
+}
static VALUE rb_gsl_integration_qags(int argc, VALUE *argv, VALUE obj)
{
@@ -383,16 +378,15 @@ static VALUE rb_gsl_integration_qags(int argc, VALUE *argv, VALUE obj)
break;
}
flag = get_epsabs_epsrel_limit_workspace(argc, argv, itmp, &epsabs, &epsrel,
- &limit, &w);
-
- status = gsl_integration_qags(F, a, b, epsabs, epsrel, limit, w,
- &result, &abserr);
+ &limit, &w);
+
+ status = gsl_integration_qags(F, a, b, epsabs, epsrel, limit, w,
+ &result, &abserr);
intervals = w->size;
if (flag == 1) gsl_integration_workspace_free(w);
-
- return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr),
- INT2FIX(intervals), INT2FIX(status));
-}
+ return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr),
+ INT2FIX(intervals), INT2FIX(status));
+}
static VALUE rb_gsl_integration_qagp(int argc, VALUE *argv, VALUE obj)
{
@@ -423,17 +417,16 @@ static VALUE rb_gsl_integration_qagp(int argc, VALUE *argv, VALUE obj)
}
itmp += 1;
flag = get_epsabs_epsrel_limit_workspace(argc, argv, itmp, &epsabs, &epsrel,
- &limit, &w);
+ &limit, &w);
- status = gsl_integration_qagp(F, v->data, v->size, epsabs, epsrel, limit, w,
- &result, &abserr);
+ status = gsl_integration_qagp(F, v->data, v->size, epsabs, epsrel, limit, w,
+ &result, &abserr);
intervals = w->size;
if (flag == 1) gsl_integration_workspace_free(w);
if (flag2 == 1) gsl_vector_free(v);
-
- return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr),
- INT2FIX(intervals), INT2FIX(status));
-}
+ return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr),
+ INT2FIX(intervals), INT2FIX(status));
+}
/* (-infty --- +infty) */
static VALUE rb_gsl_integration_qagi(int argc, VALUE *argv, VALUE obj)
@@ -456,15 +449,14 @@ static VALUE rb_gsl_integration_qagi(int argc, VALUE *argv, VALUE obj)
break;
}
flag = get_epsabs_epsrel_limit_workspace(argc, argv, itmp, &epsabs, &epsrel,
- &limit, &w);
- status = gsl_integration_qagi(F, epsabs, epsrel, limit, w,
- &result, &abserr);
+ &limit, &w);
+ status = gsl_integration_qagi(F, epsabs, epsrel, limit, w,
+ &result, &abserr);
intervals = w->size;
if (flag == 1) gsl_integration_workspace_free(w);
-
- return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr),
- INT2FIX(intervals), INT2FIX(status));
-}
+ return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr),
+ INT2FIX(intervals), INT2FIX(status));
+}
/* (a --- +infty) */
static VALUE rb_gsl_integration_qagiu(int argc, VALUE *argv, VALUE obj)
@@ -490,15 +482,14 @@ static VALUE rb_gsl_integration_qagiu(int argc, VALUE *argv, VALUE obj)
a = NUM2DBL(argv[itmp]);
itmp += 1;
flag = get_epsabs_epsrel_limit_workspace(argc, argv, itmp, &epsabs, &epsrel,
- &limit, &w);
- status = gsl_integration_qagiu(F, a, epsabs, epsrel, limit, w,
- &result, &abserr);
+ &limit, &w);
+ status = gsl_integration_qagiu(F, a, epsabs, epsrel, limit, w,
+ &result, &abserr);
intervals = w->size;
if (flag == 1) gsl_integration_workspace_free(w);
-
- return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr),
- INT2FIX(intervals), INT2FIX(status));
-}
+ return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr),
+ INT2FIX(intervals), INT2FIX(status));
+}
/* (-infty --- b) */
static VALUE rb_gsl_integration_qagil(int argc, VALUE *argv, VALUE obj)
@@ -523,17 +514,16 @@ static VALUE rb_gsl_integration_qagil(int argc, VALUE *argv, VALUE obj)
Need_Float(argv[itmp]);
b = NUM2DBL(argv[itmp]);
flag = get_epsabs_epsrel_limit_workspace(argc, argv, itmp+1, &epsabs, &epsrel,
- &limit, &w);
+ &limit, &w);
Data_Get_Struct(obj, gsl_function, F);
- status = gsl_integration_qagil(F, b, epsabs, epsrel, limit, w,
- &result, &abserr);
+ status = gsl_integration_qagil(F, b, epsabs, epsrel, limit, w,
+ &result, &abserr);
intervals = w->size;
if (flag == 1) gsl_integration_workspace_free(w);
-
- return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr),
- INT2FIX(intervals), INT2FIX(status));
-}
+ return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr),
+ INT2FIX(intervals), INT2FIX(status));
+}
static VALUE rb_gsl_integration_qawc(int argc, VALUE *argv, VALUE obj)
{
@@ -559,14 +549,13 @@ static VALUE rb_gsl_integration_qawc(int argc, VALUE *argv, VALUE obj)
Need_Float(argv[itmp]);
c = NUM2DBL(argv[itmp]);
flag = get_epsabs_epsrel_limit_workspace(argc, argv, itmp+1, &epsabs, &epsrel,
- &limit, &w);
+ &limit, &w);
status = gsl_integration_qawc(F, a, b, c, epsabs, epsrel, limit, w, &result, &abserr);
intervals = w->size;
if (flag == 1) gsl_integration_workspace_free(w);
-
return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr), INT2FIX(intervals),
- INT2FIX(status));
-}
+ INT2FIX(status));
+}
VALUE rb_gsl_integration_qaws_table_alloc(int argc, VALUE *argv, VALUE klass)
{
@@ -587,7 +576,7 @@ VALUE rb_gsl_integration_qaws_table_alloc(int argc, VALUE *argv, VALUE klass)
nu = argv[3];
}
t = gsl_integration_qaws_table_alloc(NUM2DBL(alpha), NUM2DBL(beta),
- FIX2INT(mu), FIX2INT(nu));
+ FIX2INT(mu), FIX2INT(nu));
return Data_Wrap_Struct(klass, 0, gsl_integration_qaws_table_free, t);
}
@@ -614,7 +603,6 @@ static VALUE rb_gsl_integration_qaws_table_set(int argc, VALUE *argv, VALUE obj)
} else {
rb_raise(rb_eTypeError, "wrong argument type %s", rb_class2name(CLASS_OF(argv[0])));
}
-
gsl_integration_qaws_table_set(t, alpha, beta, mu, nu);
return obj;
}
@@ -637,8 +625,8 @@ static VALUE rb_gsl_ary_to_integration_qaws_table(VALUE ary)
{
gsl_integration_qaws_table *t = NULL;
t = make_qaws_table(ary);
- return Data_Wrap_Struct(cgsl_integration_qaws_table,
- 0, gsl_integration_qaws_table_free, t);
+ return Data_Wrap_Struct(cgsl_integration_qaws_table,
+ 0, gsl_integration_qaws_table_free, t);
}
static gsl_integration_qaws_table* make_qaws_table(VALUE ary)
@@ -682,33 +670,30 @@ static VALUE rb_gsl_integration_qaws(int argc, VALUE *argv, VALUE obj)
} else {
flagt = 0;
if (!rb_obj_is_kind_of(argv[itmp], cgsl_integration_qaws_table))
- rb_raise(rb_eTypeError, "Integration::QAWS_Table expected");
-
+ rb_raise(rb_eTypeError, "Integration::QAWS_Table expected");
Data_Get_Struct(argv[itmp], gsl_integration_qaws_table, t);
}
flag = get_epsabs_epsrel_limit_workspace(argc, argv, itmp+1, &epsabs, &epsrel,
- &limit, &w);
+ &limit, &w);
status = gsl_integration_qaws(F, a, b, t, epsabs, epsrel, limit, w, &result, &abserr);
intervals = w->size;
if (flag == 1) gsl_integration_workspace_free(w);
if (flagt == 1) gsl_integration_qaws_table_free(t);
-
return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr), INT2FIX(intervals),
- INT2FIX(status));
-}
+ INT2FIX(status));
+}
static gsl_integration_qawo_table* make_qawo_table(VALUE ary);
static VALUE rb_gsl_integration_qawo_table_alloc(int argc, VALUE *argv,
- VALUE klass)
+ VALUE klass)
{
gsl_integration_qawo_table *t = NULL;
double omega, L;
enum gsl_integration_qawo_enum sine;
size_t n;
- if (argc != 1 && argc != 4)
+ if (argc != 1 && argc != 4)
rb_raise(rb_eArgError, "wrong nubmer of arguments (%d for 1 or 4)", argc);
-
if (TYPE(argv[0]) == T_ARRAY) {
omega = NUM2DBL(rb_ary_entry(argv[0], 0));
L = NUM2DBL(rb_ary_entry(argv[0], 1));
@@ -720,9 +705,8 @@ static VALUE rb_gsl_integration_qawo_table_alloc(int argc, VALUE *argv,
sine = FIX2INT(argv[2]);
n = FIX2INT(argv[3]);
}
-
t = gsl_integration_qawo_table_alloc(omega, L, sine, n);
-
+
return Data_Wrap_Struct(klass, 0, gsl_integration_qawo_table_free, t);
}
@@ -743,8 +727,8 @@ static VALUE rb_gsl_ary_to_integration_qawo_table(VALUE ary)
{
gsl_integration_qawo_table *t = NULL;
t = make_qawo_table(ary);
- return Data_Wrap_Struct(cgsl_integration_qawo_table,
- 0, gsl_integration_qawo_table_free, t);
+ return Data_Wrap_Struct(cgsl_integration_qawo_table,
+ 0, gsl_integration_qawo_table_free, t);
}
static gsl_integration_qawo_table* make_qawo_table(VALUE ary)
@@ -806,7 +790,7 @@ static VALUE rb_gsl_integration_qawo(int argc, VALUE *argv, VALUE obj)
int status, intervals, itmp, flag = 0, flagt = 0;
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
- if (argc < 2) rb_raise(rb_eArgError, "too few arguments");
+ if (argc < 2) rb_raise(rb_eArgError, "too few arguments");
CHECK_FUNCTION(argv[0]);
Data_Get_Struct(argv[0], gsl_function, F);
itmp = 1;
@@ -821,18 +805,17 @@ static VALUE rb_gsl_integration_qawo(int argc, VALUE *argv, VALUE obj)
a = NUM2DBL(argv[itmp]);
flagt = get_qawo_table(argv[argc-1], &t);
flag = get_epsabs_epsrel_limit_workspace(argc-1, argv, itmp+1, &epsabs, &epsrel,
- &limit, &w);
+ &limit, &w);
status = gsl_integration_qawo(F, a, epsabs, epsrel, limit, w, t, &result, &abserr);
intervals = w->size;
if (flag == 1) gsl_integration_workspace_free(w);
if (flagt == 1) gsl_integration_qawo_table_free(t);
-
return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr), INT2FIX(intervals),
- INT2FIX(status));
-}
+ INT2FIX(status));
+}
static int get_qawo_table(VALUE tt,
- gsl_integration_qawo_table **t)
+ gsl_integration_qawo_table **t)
{
int flagt;
@@ -879,7 +862,7 @@ static VALUE rb_gsl_integration_qawf(int argc, VALUE *argv, VALUE obj)
itmp += 1;
}
vtmp = argv + itmp;
- flagt = get_qawo_table(argv[argc-1], &t);
+ flagt = get_qawo_table(argv[argc-1], &t);
switch (argc - 1 - itmp) {
case 0:
@@ -920,10 +903,9 @@ static VALUE rb_gsl_integration_qawf(int argc, VALUE *argv, VALUE obj)
gsl_integration_workspace_free(cw);
}
if (flagt == 1) gsl_integration_qawo_table_free(t);
-
- return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr),
- INT2FIX(intervals), INT2FIX(status));
-}
+ return rb_ary_new3(4, rb_float_new(result), rb_float_new(abserr),
+ INT2FIX(intervals), INT2FIX(status));
+}
static void rb_gsl_integration_define_symbols(VALUE module)
@@ -939,14 +921,14 @@ static void rb_gsl_integration_define_symbols(VALUE module)
}
static VALUE rb_gsl_integration_workspace_alloc(int argc, VALUE *argv,
- VALUE klass)
+ VALUE klass)
{
size_t limit;
if (argc == 1) limit = FIX2INT(argv[0]);
else limit = LIMIT_DEFAULT;
- return Data_Wrap_Struct(klass, 0,
- gsl_integration_workspace_free,
- gsl_integration_workspace_alloc(limit));
+ return Data_Wrap_Struct(klass, 0,
+ gsl_integration_workspace_free,
+ gsl_integration_workspace_alloc(limit));
}
static VALUE rb_gsl_integration_workspace_limit(VALUE obj)
@@ -989,7 +971,7 @@ static VALUE rb_gsl_integration_workspace_to_a(VALUE obj)
gsl_integration_workspace *w = NULL;
Data_Get_Struct(obj, gsl_integration_workspace, w);
return rb_ary_new3(5, INT2FIX(w->limit), INT2FIX(w->size), INT2FIX(w->nrmax),
- INT2FIX(w->i), INT2FIX(w->maximum_level));
+ INT2FIX(w->i), INT2FIX(w->maximum_level));
}
static VALUE rb_gsl_integration_workspace_alist(VALUE obj)
@@ -1029,7 +1011,6 @@ static VALUE rb_gsl_integration_workspace_elist(VALUE obj)
return Data_Wrap_Struct(cgsl_vector_view_ro, 0, free, v);
}
-#ifdef GSL_1_14_LATER
static VALUE rb_gsl_integration_glfixed_table_alloc(VALUE klass, VALUE n)
{
gsl_integration_glfixed_table *t;
@@ -1045,7 +1026,7 @@ static VALUE rb_gsl_integration_glfixed(VALUE obj, VALUE aa, VALUE bb, VALUE tt)
double res;
if (!rb_obj_is_kind_of(tt, cgsl_integration_glfixed_table)) {
rb_raise(rb_eTypeError, "Wrong arugment type (%s for GSL::Integration::Glfixed_table)",
- rb_class2name(CLASS_OF(tt)));
+ rb_class2name(CLASS_OF(tt)));
}
Data_Get_Struct(tt, gsl_integration_glfixed_table, t);
a = NUM2DBL(aa);
@@ -1054,7 +1035,6 @@ static VALUE rb_gsl_integration_glfixed(VALUE obj, VALUE aa, VALUE bb, VALUE tt)
res = gsl_integration_glfixed(f, a, b, t);
return rb_float_new(res);
}
-#endif
void Init_gsl_integration(VALUE module)
{
@@ -1080,69 +1060,69 @@ void Init_gsl_integration(VALUE module)
rb_define_alias(cgsl_function, "qagil", "integration_qagil");
rb_define_alias(cgsl_function, "qawc", "integration_qawc");
- cgsl_integration_qaws_table = rb_define_class_under(mgsl_integ, "QAWS_Table",
- cGSL_Object);
+ cgsl_integration_qaws_table = rb_define_class_under(mgsl_integ, "QAWS_Table",
+ cGSL_Object);
rb_define_singleton_method(cgsl_integration_qaws_table, "alloc",
- rb_gsl_integration_qaws_table_alloc, -1);
+ rb_gsl_integration_qaws_table_alloc, -1);
/* rb_define_singleton_method(cgsl_integration_qaws_table, "new",
rb_gsl_integration_qaws_table_alloc, -1);*/
- rb_define_method(cgsl_integration_qaws_table, "to_a",
- rb_gsl_integration_qaws_table_to_a, 0);
- rb_define_method(cgsl_integration_qaws_table, "set",
- rb_gsl_integration_qaws_table_set, -1);
- rb_define_method(rb_cArray, "to_gsl_integration_qaws_table",
- rb_gsl_ary_to_integration_qaws_table, 0);
+ rb_define_method(cgsl_integration_qaws_table, "to_a",
+ rb_gsl_integration_qaws_table_to_a, 0);
+ rb_define_method(cgsl_integration_qaws_table, "set",
+ rb_gsl_integration_qaws_table_set, -1);
+ rb_define_method(rb_cArray, "to_gsl_integration_qaws_table",
+ rb_gsl_ary_to_integration_qaws_table, 0);
rb_define_alias(rb_cArray, "to_qaws_table", "to_gsl_integration_qaws_table");
rb_define_method(cgsl_function, "integration_qaws", rb_gsl_integration_qaws, -1);
rb_define_alias(cgsl_function, "qaws", "integration_qaws");
- cgsl_integration_qawo_table = rb_define_class_under(mgsl_integ, "QAWO_Table",
- cGSL_Object);
+ cgsl_integration_qawo_table = rb_define_class_under(mgsl_integ, "QAWO_Table",
+ cGSL_Object);
rb_define_singleton_method(cgsl_integration_qawo_table, "alloc",
- rb_gsl_integration_qawo_table_alloc, -1);
+ rb_gsl_integration_qawo_table_alloc, -1);
/* rb_define_singleton_method(cgsl_integration_qawo_table, "new",
rb_gsl_integration_qawo_table_alloc, -1);*/
- rb_define_method(cgsl_integration_qawo_table, "to_a",
- rb_gsl_integration_qawo_table_to_a, 0);
- rb_define_method(rb_cArray, "to_gsl_integration_qawo_table",
- rb_gsl_ary_to_integration_qawo_table, 0);
- rb_define_method(cgsl_integration_qawo_table, "set",
- rb_gsl_integration_qawo_table_set, -1);
- rb_define_method(cgsl_integration_qawo_table, "set_length",
- rb_gsl_integration_qawo_table_set_length, 1);
+ rb_define_method(cgsl_integration_qawo_table, "to_a",
+ rb_gsl_integration_qawo_table_to_a, 0);
+ rb_define_method(rb_cArray, "to_gsl_integration_qawo_table",
+ rb_gsl_ary_to_integration_qawo_table, 0);
+ rb_define_method(cgsl_integration_qawo_table, "set",
+ rb_gsl_integration_qawo_table_set, -1);
+ rb_define_method(cgsl_integration_qawo_table, "set_length",
+ rb_gsl_integration_qawo_table_set_length, 1);
rb_define_method(cgsl_function, "integration_qawo", rb_gsl_integration_qawo, -1);
rb_define_method(cgsl_function, "integration_qawf", rb_gsl_integration_qawf, -1);
rb_define_alias(cgsl_function, "qawo", "integration_qawo");
rb_define_alias(cgsl_function, "qawf", "integration_qawf");
- cgsl_integration_workspace = rb_define_class_under(mgsl_integ,
- "Workspace", cGSL_Object);
+ cgsl_integration_workspace = rb_define_class_under(mgsl_integ,
+ "Workspace", cGSL_Object);
/* rb_define_singleton_method(cgsl_integration_workspace, "new",
rb_gsl_integration_workspace_alloc, -1);*/
rb_define_singleton_method(cgsl_integration_workspace, "alloc",
- rb_gsl_integration_workspace_alloc, -1);
-
- rb_define_method(cgsl_integration_workspace, "limit",
- rb_gsl_integration_workspace_limit, 0);
- rb_define_method(cgsl_integration_workspace, "size",
- rb_gsl_integration_workspace_size, 0);
- rb_define_method(cgsl_integration_workspace, "nrmax",
- rb_gsl_integration_workspace_nrmax, 0);
- rb_define_method(cgsl_integration_workspace, "i",
- rb_gsl_integration_workspace_i, 0);
- rb_define_method(cgsl_integration_workspace, "maximum_level",
- rb_gsl_integration_workspace_maximum_level, 0);
- rb_define_method(cgsl_integration_workspace, "to_a",
- rb_gsl_integration_workspace_to_a, 0);
- rb_define_method(cgsl_integration_workspace, "alist",
- rb_gsl_integration_workspace_alist, 0);
- rb_define_method(cgsl_integration_workspace, "blist",
- rb_gsl_integration_workspace_blist, 0);
- rb_define_method(cgsl_integration_workspace, "rlist",
- rb_gsl_integration_workspace_rlist, 0);
- rb_define_method(cgsl_integration_workspace, "elist",
- rb_gsl_integration_workspace_elist, 0);
+ rb_gsl_integration_workspace_alloc, -1);
+
+ rb_define_method(cgsl_integration_workspace, "limit",
+ rb_gsl_integration_workspace_limit, 0);
+ rb_define_method(cgsl_integration_workspace, "size",
+ rb_gsl_integration_workspace_size, 0);
+ rb_define_method(cgsl_integration_workspace, "nrmax",
+ rb_gsl_integration_workspace_nrmax, 0);
+ rb_define_method(cgsl_integration_workspace, "i",
+ rb_gsl_integration_workspace_i, 0);
+ rb_define_method(cgsl_integration_workspace, "maximum_level",
+ rb_gsl_integration_workspace_maximum_level, 0);
+ rb_define_method(cgsl_integration_workspace, "to_a",
+ rb_gsl_integration_workspace_to_a, 0);
+ rb_define_method(cgsl_integration_workspace, "alist",
+ rb_gsl_integration_workspace_alist, 0);
+ rb_define_method(cgsl_integration_workspace, "blist",
+ rb_gsl_integration_workspace_blist, 0);
+ rb_define_method(cgsl_integration_workspace, "rlist",
+ rb_gsl_integration_workspace_rlist, 0);
+ rb_define_method(cgsl_integration_workspace, "elist",
+ rb_gsl_integration_workspace_elist, 0);
/*****/
rb_define_module_function(mgsl_integ, "qng", rb_gsl_integration_qng, -1);
@@ -1157,13 +1137,10 @@ void Init_gsl_integration(VALUE module)
rb_define_module_function(mgsl_integ, "qawo", rb_gsl_integration_qawo, -1);
rb_define_module_function(mgsl_integ, "qawf", rb_gsl_integration_qawf, -1);
-#ifdef GSL_1_14_LATER
cgsl_integration_glfixed_table = rb_define_class_under(mgsl_integ, "Glfixed_table", cGSL_Object);
rb_define_singleton_method(cgsl_integration_glfixed_table, "alloc",
- rb_gsl_integration_glfixed_table_alloc, 1);
+ rb_gsl_integration_glfixed_table_alloc, 1);
rb_define_method(cgsl_function, "glfixed", rb_gsl_integration_glfixed, 3);
-#endif
-
}
#undef EPSABS_DEFAULT
diff --git a/ext/gsl/interp.c b/ext/gsl_native/interp.c
similarity index 93%
rename from ext/gsl/interp.c
rename to ext/gsl_native/interp.c
index b2ae04f..aaa0347 100644
--- a/ext/gsl/interp.c
+++ b/ext/gsl_native/interp.c
@@ -34,10 +34,10 @@ static VALUE rb_gsl_interp_new(int argc, VALUE *argv, VALUE klass)
break;
default:
if (ptrx == NULL) {
- ptrx = get_vector_ptr(argv[i], &stride, &sizex);
+ ptrx = get_vector_ptr(argv[i], &stride, &sizex);
} else {
- ptry = get_vector_ptr(argv[i], &stride, &sizey);
- size = GSL_MIN_INT(sizex, sizey);
+ ptry = get_vector_ptr(argv[i], &stride, &sizey);
+ size = GSL_MIN_INT(sizex, sizey);
}
break;
}
@@ -132,7 +132,7 @@ static VALUE rb_gsl_interp_bsearch(int argc, VALUE *argv, VALUE obj)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 3)", argc);
break;
}
- break;
+ break;
}
return INT2FIX(gsl_interp_bsearch(v->data, x, indexl, indexh));
}
@@ -170,9 +170,9 @@ static VALUE rb_gsl_interp_accel_find(VALUE obj, VALUE vv, VALUE xx)
}
static VALUE rb_gsl_interp_evaluate(VALUE obj, VALUE xxa, VALUE yya, VALUE xx,
- double (*eval)(const gsl_interp *, const double [],
- const double [], double,
- gsl_interp_accel *))
+ double (*eval)(const gsl_interp *, const double [],
+ const double [], double,
+ gsl_interp_accel *))
{
rb_gsl_interp *rgi = NULL;
double *ptrx = NULL, *ptry = NULL;
@@ -181,17 +181,13 @@ static VALUE rb_gsl_interp_evaluate(VALUE obj, VALUE xxa, VALUE yya, VALUE xx,
VALUE ary, x;
double val;
size_t n, i, j, size, stridex, stridey;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na = NULL;
- double *ptrz = NULL, *ptr = NULL;
-#endif
Data_Get_Struct(obj, rb_gsl_interp, rgi);
ptrx = get_vector_ptr(xxa, &stridex, &size);
- if (size != rgi->p->size ){
+ if (size != rgi->p->size ) {
rb_raise(rb_eTypeError, "size mismatch (xa:%d != %d)", (int) size, (int) rgi->p->size);
}
ptry = get_vector_ptr(yya, &stridey, &size);
- if (size != rgi->p->size ){
+ if (size != rgi->p->size ) {
rb_raise(rb_eTypeError, "size mismatch (ya:%d != %d)", (int) size, (int) rgi->p->size);
}
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
@@ -215,12 +211,14 @@ static VALUE rb_gsl_interp_evaluate(VALUE obj, VALUE xxa, VALUE yya, VALUE xx,
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *na = NULL;
+ double *ptrz = NULL, *ptr = NULL;
GetNArray(xx, na);
ptrz = (double*) na->ptr;
ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(xx));
ptr = NA_PTR_TYPE(ary, double*);
for (i = 0; (int) i < na->total; i++)
- ptr[i] = (*eval)(rgi->p, ptrx, ptry, ptrz[i], rgi->a);
+ ptr[i] = (*eval)(rgi->p, ptrx, ptry, ptrz[i], rgi->a);
return ary;
}
#endif
@@ -228,18 +226,18 @@ static VALUE rb_gsl_interp_evaluate(VALUE obj, VALUE xxa, VALUE yya, VALUE xx,
Data_Get_Struct(xx, gsl_vector, v);
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- val = (*eval)(rgi->p, ptrx, ptry, gsl_vector_get(v, i), rgi->a);
- gsl_vector_set(vnew, i, val);
+ val = (*eval)(rgi->p, ptrx, ptry, gsl_vector_get(v, i), rgi->a);
+ gsl_vector_set(vnew, i, val);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
} else if (MATRIX_P(xx)) {
Data_Get_Struct(xx, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- val = (*eval)(rgi->p, ptrx, ptry, gsl_matrix_get(m, i, j), rgi->a);
- gsl_matrix_set(mnew, i, j, val);
- }
+ for (j = 0; j < m->size2; j++) {
+ val = (*eval)(rgi->p, ptrx, ptry, gsl_matrix_get(m, i, j), rgi->a);
+ gsl_matrix_set(mnew, i, j, val);
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -306,7 +304,7 @@ static VALUE rb_gsl_interp_eval_deriv_e(VALUE obj, VALUE xxa, VALUE yya, VALUE x
default:
return rb_float_new(y);
break;
- }
+ }
return Qnil;
}
@@ -338,8 +336,8 @@ static VALUE rb_gsl_interp_eval_deriv2_e(VALUE obj, VALUE xxa, VALUE yya, VALUE
return Qnil;
}
-static VALUE rb_gsl_interp_eval_integ(VALUE obj, VALUE xxa, VALUE yya,
- VALUE aa, VALUE bb)
+static VALUE rb_gsl_interp_eval_integ(VALUE obj, VALUE xxa, VALUE yya,
+ VALUE aa, VALUE bb)
{
rb_gsl_interp *rgi = NULL;
double *ptr1 = NULL, *ptr2 = NULL;
@@ -354,8 +352,8 @@ static VALUE rb_gsl_interp_eval_integ(VALUE obj, VALUE xxa, VALUE yya,
return rb_float_new(gsl_interp_eval_integ(rgi->p, ptr1, ptr2, a, b, rgi->a));
}
-static VALUE rb_gsl_interp_eval_integ_e(VALUE obj, VALUE xxa, VALUE yya,
- VALUE aa, VALUE bb)
+static VALUE rb_gsl_interp_eval_integ_e(VALUE obj, VALUE xxa, VALUE yya,
+ VALUE aa, VALUE bb)
{
rb_gsl_interp *rgi = NULL;
double *ptr1 = NULL, *ptr2 = NULL;
@@ -392,9 +390,7 @@ const gsl_interp_type* get_interp_type(VALUE t)
type = FIX2INT(t);
switch (type) {
case GSL_INTERP_LINEAR: return gsl_interp_linear; break;
-#ifdef GSL_1_1_LATER
case GSL_INTERP_POLYNOMIAL: return gsl_interp_polynomial; break;
-#endif
case GSL_INTERP_CSPLINE: return gsl_interp_cspline; break;
case GSL_INTERP_CSPLINE_PERIODIC: return gsl_interp_cspline_periodic; break;
case GSL_INTERP_AKIMA: return gsl_interp_akima; break;
@@ -408,10 +404,8 @@ const gsl_interp_type* get_interp_type(VALUE t)
strcpy(name, STR2CSTR(t));
if (str_tail_grep(name, "linear") == 0) {
return gsl_interp_linear;
-#ifdef GSL_1_1_LATER
} else if (str_tail_grep(name, "polynomial") == 0) {
return gsl_interp_polynomial;
-#endif
} else if (str_tail_grep(name, "cspline") == 0) {
return gsl_interp_cspline;
} else if (str_tail_grep(name, "cspline_periodic") == 0) {
@@ -453,10 +447,8 @@ static void rb_gsl_interp_define_const(VALUE klass)
rb_define_const(klass, "AKIMA_PERIODIC", INT2FIX(GSL_INTERP_AKIMA_PERIODIC));
rb_define_const(klass, "Linear", INT2FIX(GSL_INTERP_LINEAR));
-#ifdef GSL_1_1_LATER
rb_define_const(klass, "POLYNOMIAL", INT2FIX(GSL_INTERP_POLYNOMIAL));
rb_define_const(klass, "Polynomial", INT2FIX(GSL_INTERP_POLYNOMIAL));
-#endif
rb_define_const(klass, "CSpline", INT2FIX(GSL_INTERP_CSPLINE));
rb_define_const(klass, "CSpline_Periodic", INT2FIX(GSL_INTERP_CSPLINE_PERIODIC));
rb_define_const(klass, "Akima", INT2FIX(GSL_INTERP_AKIMA));
diff --git a/ext/gsl_native/jacobi.c b/ext/gsl_native/jacobi.c
new file mode 100644
index 0000000..54c65a7
--- /dev/null
+++ b/ext/gsl_native/jacobi.c
@@ -0,0 +1,733 @@
+#ifdef HAVE_JACOBI_H
+#include "include/rb_gsl.h"
+#include "jacobi.h"
+
+static VALUE jac_eval3_e(VALUE x, VALUE a, VALUE b,
+ int (*f)(double, double, double, gsl_sf_result*))
+{
+ gsl_sf_result *result;
+ VALUE obj;
+ obj = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, result);
+ (*f)(NUM2DBL(x), NUM2DBL(a), NUM2DBL(b), result);
+ return obj;
+}
+
+static VALUE jac_eval3(VALUE xx, VALUE aa, VALUE bb, double (*f)(double, double, double))
+{
+ gsl_vector *x, *y;
+ double a, b;
+ size_t i, len;
+ VALUE ary;
+ a = NUM2DBL(aa);
+ b = NUM2DBL(bb);
+ if (VECTOR_P(xx)) {
+ Data_Get_Struct(xx, gsl_vector, x);
+ y = gsl_vector_alloc(x->size);
+ for (i = 0; i < x->size; i++) {
+ gsl_vector_set(y, i, (*f)(gsl_vector_get(x, i), a, b));
+ }
+ return Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(xx)), 0, gsl_vector_free, y);
+ } else if (TYPE(xx) == T_ARRAY) {
+ // len = RARRAY(xx)->len;
+ len = RARRAY_LEN(xx);
+ ary = rb_ary_new2(len);
+ for (i = 0; i < len; i++) {
+ rb_ary_store(ary, i, rb_float_new((*f)(NUM2DBL(rb_ary_entry(xx, i)), a, b)));
+ }
+ return ary;
+#ifdef HAVE_NARRAY_H
+ } else if (NA_IsNArray(xx)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
+ GetNArray(xx, na);
+ len = na->total;
+ ptr1 = (double*) na->ptr;
+ ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(xx));
+ ptr2 = NA_PTR_TYPE(ary, double*);
+ for (i = 0; i < len; i++) {
+ ptr2[i] = (*f)(ptr1[i], a, b);
+ }
+ return ary;
+#endif
+ } else {
+ return rb_float_new((*f)(NUM2DBL(xx), a, b));
+ }
+}
+
+static VALUE rb_jac_jacobi_eval(int argc, VALUE *argv,
+ double (*f)(double, int, double, double),
+ int (*f2)(int, const double*, int, double*, double, double, double*))
+{
+ gsl_vector *x, *ws, *y;
+ double a, b;
+ VALUE ary;
+ size_t len, i;
+ int n, flag = 0;
+ if (argc < 4) rb_raise(rb_eArgError, "Too few arguments (%d for >= 4)", argc);
+ if (VECTOR_P(argv[0])) {
+ Data_Get_Struct(argv[0], gsl_vector, x);
+ y = gsl_vector_alloc(x->size);
+ ary = Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(x)), 0, gsl_vector_free, y);
+ switch (argc) {
+ case 4:
+ ws = gsl_vector_alloc(2*x->size);
+ flag = 1;
+ break;
+ case 5:
+ CHECK_VECTOR(argv[4]);
+ Data_Get_Struct(argv[4], gsl_vector, ws);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Too many arguments (%d for 4 or 5)", argc);
+ }
+ (*f2)(x->size, x->data, FIX2INT(argv[1]), y->data, NUM2DBL(argv[2]), NUM2DBL(argv[3]),
+ ws->data);
+ if (flag == 1) gsl_vector_free(ws);
+ return ary;
+ } else if (TYPE(argv[0]) == T_ARRAY) {
+ n = FIX2INT(argv[1]);
+ a = NUM2DBL(argv[2]);
+ b = NUM2DBL(argv[3]);
+ // len = RARRAY(argv[0])->len;
+ len = RARRAY_LEN(argv[0]);
+ ary = rb_ary_new2(len);
+ for (i = 0; i < len; i++) {
+ rb_ary_store(ary, i, rb_float_new((*f)(NUM2DBL(rb_ary_entry(argv[0], i)), n, a, b)));
+ }
+ return ary;
+#ifdef HAVE_NARRAY_H
+ } else if (NA_IsNArray(argv[0])) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
+ GetNArray(argv[0], na);
+ len = na->total;
+ ptr1 = (double*) na->ptr;
+ ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(argv[0]));
+ ptr2 = NA_PTR_TYPE(ary, double*);
+ n = FIX2INT(argv[1]);
+ a = NUM2DBL(argv[2]);
+ b = NUM2DBL(argv[3]);
+ ws = gsl_vector_alloc(len);
+ (*f2)(len, ptr1, n, ptr2, a, b, ws->data);
+ gsl_vector_free(ws);
+ return ary;
+#endif
+ } else {
+ return rb_float_new((*f)(NUM2DBL(argv[0]), FIX2INT(argv[1]), NUM2DBL(argv[2]), NUM2DBL(argv[3])));
+ }
+}
+static VALUE rb_jac_jacobi_P0_e(VALUE module, VALUE x, VALUE a, VALUE b)
+{
+ return jac_eval3_e(x, a, b, jac_jacobi_P0_e);
+}
+
+static VALUE rb_jac_jacobi_P0(VALUE module, VALUE x, VALUE a, VALUE b)
+{
+ return jac_eval3(x, a, b, jac_jacobi_P0);
+}
+
+static VALUE rb_jac_jacobi_P1_e(VALUE module, VALUE x, VALUE a, VALUE b)
+{
+ return jac_eval3_e(x, a, b, jac_jacobi_P1_e);
+}
+
+static VALUE rb_jac_jacobi_P1(VALUE module, VALUE x, VALUE a, VALUE b)
+{
+ return jac_eval3(x, a, b, jac_jacobi_P1);
+}
+
+
+static VALUE rb_jac_jacobi(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_jacobi_eval(argc, argv, jac_jacobi, jac_jacobi_array);
+}
+
+static VALUE rb_jac_djacobi_P0_e(VALUE module, VALUE x, VALUE a, VALUE b)
+{
+ return jac_eval3_e(x, a, b, jac_djacobi_P0_e);
+}
+
+static VALUE rb_jac_djacobi_P0(VALUE module, VALUE x, VALUE a, VALUE b)
+{
+ return jac_eval3(x, a, b, jac_djacobi_P0);
+}
+
+static VALUE rb_jac_djacobi_P1_e(VALUE module, VALUE x, VALUE a, VALUE b)
+{
+ return jac_eval3_e(x, a, b, jac_djacobi_P1_e);
+}
+
+static VALUE rb_jac_djacobi_P1(VALUE module, VALUE x, VALUE a, VALUE b)
+{
+ return jac_eval3(x, a, b, jac_djacobi_P1);
+}
+
+static VALUE rb_jac_djacobi(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_jacobi_eval(argc, argv, jac_djacobi, jac_djacobi_array);
+}
+
+static VALUE rb_jac_zeros_eval(int argc, VALUE *argv, VALUE module,
+ int (*f)(double*, int, double, double))
+{
+ gsl_vector *x;
+ int m, status;
+ double a, b;
+ VALUE xx;
+ switch (argc) {
+ case 3:
+ if (FIXNUM_P(argv[0])) {
+ m = FIX2INT(argv[0]);
+ a = NUM2DBL(argv[1]);
+ b = NUM2DBL(argv[2]);
+ x = gsl_vector_alloc(m);
+ xx = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, x);
+ } else if (VECTOR_P(argv[0])) {
+ Data_Get_Struct(argv[0], gsl_vector, x);
+ m = x->size;
+ a = NUM2DBL(argv[1]);
+ b = NUM2DBL(argv[2]);
+ xx = argv[0];
+ } else {
+ rb_raise(rb_eTypeError, "Wrong argument type %s (Fixnum or GSL::Vector expected)",
+ rb_class2name(CLASS_OF(argv[0])));
+ }
+ break;
+ case 4:
+ CHECK_VECTOR(argv[0]);
+ Data_Get_Struct(argv[0], gsl_vector, x);
+ m = FIX2INT(argv[1]);
+ a = NUM2DBL(argv[2]);
+ b = NUM2DBL(argv[3]);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 3 or 4)", argc);
+ }
+ status = (*f)(x->data, m, a, b);
+ if (status != GSL_SUCCESS)
+ rb_raise(rb_eRuntimeError, "Something wrong. (error code %d)", status);
+ return xx;
+}
+
+static VALUE rb_jac_jacobi_zeros(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_zeros_eval(argc, argv, module, jac_jacobi_zeros);
+}
+
+static void jac_define_const(VALUE module)
+{
+ rb_define_const(module, "GJ", INT2FIX(JAC_GJ));
+ rb_define_const(module, "GLJ", INT2FIX(JAC_GLJ));
+ rb_define_const(module, "GRJM", INT2FIX(JAC_GRJM));
+ rb_define_const(module, "GRJP", INT2FIX(JAC_GRJP));
+}
+
+static VALUE rb_jac_quadrature_alloc(VALUE klass, VALUE vQ)
+{
+ jac_quadrature *q;
+
+ q = jac_quadrature_alloc(FIX2INT(vQ));
+
+ return Data_Wrap_Struct(klass, 0, jac_quadrature_free, q);
+}
+
+static VALUE rb_jac_quadrature_Q(VALUE obj)
+{
+ jac_quadrature *q;
+ Data_Get_Struct(obj, jac_quadrature, q);
+ return INT2FIX(q->Q);
+}
+
+static VALUE rb_jac_quadrature_type(VALUE obj)
+{
+ jac_quadrature *q;
+ Data_Get_Struct(obj, jac_quadrature, q);
+ return INT2FIX((int) q->type);
+}
+
+static VALUE rb_jac_quadrature_alpha(VALUE obj)
+{
+ jac_quadrature *q;
+ Data_Get_Struct(obj, jac_quadrature, q);
+ return NUM2DBL(q->alpha);
+}
+
+static VALUE rb_jac_quadrature_beta(VALUE obj)
+{
+ jac_quadrature *q;
+ Data_Get_Struct(obj, jac_quadrature, q);
+ return NUM2DBL(q->beta);
+}
+
+static VALUE rb_jac_quadrature_x(VALUE obj)
+{
+ jac_quadrature *q;
+ gsl_vector_view *v;
+ Data_Get_Struct(obj, jac_quadrature, q);
+ v = gsl_vector_view_alloc();
+ v->vector.data = q->x;
+ v->vector.size = q->Q;
+ v->vector.stride = 1;
+ return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
+}
+
+static VALUE rb_jac_quadrature_w(VALUE obj)
+{
+ jac_quadrature *q;
+ gsl_vector_view *v;
+ Data_Get_Struct(obj, jac_quadrature, q);
+ v = gsl_vector_view_alloc();
+ v->vector.data = q->w;
+ v->vector.size = q->Q;
+ v->vector.stride = 1;
+ return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
+}
+
+static VALUE rb_jac_quadrature_D(VALUE obj)
+{
+ jac_quadrature *q;
+ gsl_vector_view *v;
+ Data_Get_Struct(obj, jac_quadrature, q);
+ v = gsl_vector_view_alloc();
+ v->vector.data = q->D;
+ v->vector.size = q->Q;
+ v->vector.stride = 1;
+ return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
+}
+
+static VALUE rb_jac_quadrature_xp(VALUE obj)
+{
+ jac_quadrature *q;
+ gsl_vector_view *v;
+ Data_Get_Struct(obj, jac_quadrature, q);
+ v = gsl_vector_view_alloc();
+ v->vector.data = q->w;
+ v->vector.size = q->np;
+ v->vector.stride = 1;
+ return Data_Wrap_Struct(cgsl_vector_view, 0, gsl_vector_view_free, v);
+}
+
+static VALUE rb_jac_interpmat_alloc(int argc, VALUE *argv, VALUE obj)
+{
+ int err;
+ jac_quadrature *q;
+ gsl_vector *xp;
+ int np;
+ Data_Get_Struct(obj, jac_quadrature, q);
+ switch (argc) {
+ case 1:
+ CHECK_VECTOR(argv[0]);
+ Data_Get_Struct(argv[0], gsl_vector, xp);
+ np = xp->size;
+ break;
+ case 2:
+ CHECK_VECTOR(argv[1]);
+ Data_Get_Struct(argv[1], gsl_vector, xp);
+ np = FIX2INT(argv[0]);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc);
+ }
+ err = jac_interpmat_alloc(q, np, xp->data);
+ return FIX2INT(err);
+}
+
+static VALUE rb_jac_interpmat_free(VALUE obj)
+{
+ jac_quadrature *q;
+ Data_Get_Struct(obj, jac_quadrature, q);
+ jac_interpmat_free(q);
+ return Qtrue;
+}
+
+static VALUE rb_jac_quadrature_zwd(int argc, VALUE *argv, VALUE obj)
+{
+ jac_quadrature *q;
+ gsl_vector *ws;
+ int flag = 0, type, status;
+ double a, b;
+ Data_Get_Struct(obj, jac_quadrature, q);
+ switch (argc) {
+ case 3:
+ type = FIX2INT(argv[0]);
+ a = NUM2DBL(argv[1]);
+ b = NUM2DBL(argv[2]);
+ ws = gsl_vector_alloc(q->Q);
+ flag = 1;
+ break;
+ case 4:
+ type = FIX2INT(argv[0]);
+ a = NUM2DBL(argv[1]);
+ b = NUM2DBL(argv[2]);
+ Data_Get_Struct(argv[3], gsl_vector, ws);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 3 or 4)", argc);
+ }
+ status = jac_quadrature_zwd(q, type, a, b, ws->data);
+ if (flag == 1) gsl_vector_free(ws);
+ return INT2FIX(status);
+}
+
+static VALUE rb_jac_integrate(VALUE obj, VALUE ff)
+{
+ jac_quadrature *q;
+ gsl_vector *f;
+ CHECK_VECTOR(ff);
+ Data_Get_Struct(obj, jac_quadrature, q);
+ Data_Get_Struct(ff, gsl_vector, f);
+ return rb_float_new(jac_integrate(q, f->data));
+}
+
+static VALUE rb_jac_interpolate(int argc, VALUE *argv, VALUE obj)
+{
+ jac_quadrature *q;
+ gsl_vector *f, *fout;
+ VALUE vfout;
+ switch (argc) {
+ case 1:
+ CHECK_VECTOR(argv[0]);
+ Data_Get_Struct(argv[0], gsl_vector, f);
+ fout = gsl_vector_alloc(f->size);
+ vfout = Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(argv[0])), 0, gsl_vector_free, fout);
+ break;
+ case 2:
+ CHECK_VECTOR(argv[0]);
+ Data_Get_Struct(argv[0], gsl_vector, f);
+ CHECK_VECTOR(argv[1]);
+ Data_Get_Struct(argv[1], gsl_vector, fout);
+ vfout = argv[1];
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc);
+ }
+ Data_Get_Struct(obj, jac_quadrature, q);
+ jac_interpolate(q, f->data, fout->data);
+ return vfout;
+}
+
+static VALUE rb_jac_differentiate(int argc, VALUE *argv, VALUE obj)
+{
+ jac_quadrature *q;
+ gsl_vector *f, *fout;
+ VALUE vfout;
+ switch (argc) {
+ case 1:
+ CHECK_VECTOR(argv[0]);
+ Data_Get_Struct(argv[0], gsl_vector, f);
+ fout = gsl_vector_alloc(f->size);
+ vfout = Data_Wrap_Struct(VECTOR_ROW_COL(CLASS_OF(argv[0])), 0, gsl_vector_free, fout);
+ break;
+ case 2:
+ CHECK_VECTOR(argv[0]);
+ Data_Get_Struct(argv[0], gsl_vector, f);
+ CHECK_VECTOR(argv[1]);
+ Data_Get_Struct(argv[1], gsl_vector, fout);
+ vfout = argv[1];
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1 or 2)", argc);
+ }
+ Data_Get_Struct(obj, jac_quadrature, q);
+ jac_differentiate(q, f->data, fout->data);
+ return vfout;
+}
+
+/*****/
+static VALUE rb_jac_qeval(int argc, VALUE *argv,
+ int (*f)(double*, double*, const int, double, double, double*))
+{
+ gsl_vector *z, *D, *ws;
+ int Q;
+ int flag = 0, status;
+ double alpha, beta;
+ VALUE vD;
+ if (argc < 3) rb_raise(rb_eArgError, "Too few arguments (%d for >= 3)", argc);
+ CHECK_VECTOR(argv[0]);
+ Data_Get_Struct(argv[0], gsl_vector, z);
+ argc -= 1;
+ argv += 1;
+ if (VECTOR_P(argv[argc-1])) {
+ Data_Get_Struct(argv[argc-1], gsl_vector, ws);
+ argc -= 1;
+ } else {
+ ws = gsl_vector_alloc(z->size);
+ flag = 1;
+ }
+ switch (argc) {
+ case 2:
+ Q = z->size;
+ D = gsl_vector_alloc(Q*Q);
+ alpha = NUM2DBL(argv[0]);
+ beta = NUM2DBL(argv[1]);
+ vD = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, D);
+ break;
+ case 4:
+ Data_Get_Struct(argv[0], gsl_vector, D);
+ vD = argv[0];
+ Q = FIX2INT(argv[1]);
+ alpha = NUM2DBL(argv[2]);
+ beta = NUM2DBL(argv[3]);
+ break;
+ case 3:
+ if (VECTOR_P(argv[0])) {
+ Q = z->size;
+ Data_Get_Struct(argv[0], gsl_vector, D);
+ vD = argv[0];
+ } else {
+ Q = FIX2INT(argv[0]);
+ D = gsl_vector_alloc(Q*Q);
+ vD = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, D);
+ }
+ alpha = NUM2DBL(argv[1]);
+ beta = NUM2DBL(argv[2]);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments.");
+ }
+ status = (*f)(z->data, D->data, Q, alpha, beta, ws->data);
+ if (flag == 1) gsl_vector_free(ws);
+ if (status != GSL_SUCCESS) rb_raise(rb_eRuntimeError, "Something wrong.");
+ return vD;
+}
+
+static VALUE rb_jac_diffmat_gj(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_qeval(argc, argv, jac_diffmat_gj);
+}
+
+static VALUE rb_jac_diffmat_glj(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_qeval(argc, argv, jac_diffmat_glj);
+}
+
+static VALUE rb_jac_diffmat_grjm(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_qeval(argc, argv, jac_diffmat_grjm);
+}
+
+static VALUE rb_jac_diffmat_grjp(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_qeval(argc, argv, jac_diffmat_grjp);
+}
+
+static VALUE rb_jac_weights_gj(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_qeval(argc, argv, jac_weights_gj);
+}
+
+static VALUE rb_jac_weights_glj(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_qeval(argc, argv, jac_weights_glj);
+}
+
+static VALUE rb_jac_weights_grjm(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_qeval(argc, argv, jac_weights_grjm);
+}
+
+static VALUE rb_jac_weights_grjp(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_qeval(argc, argv, jac_weights_grjp);
+}
+
+static VALUE rb_jac_zeros_gj(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_zeros_eval(argc, argv, module, jac_zeros_gj);
+}
+static VALUE rb_jac_zeros_glj(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_zeros_eval(argc, argv, module, jac_zeros_glj);
+}
+static VALUE rb_jac_zeros_grjm(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_zeros_eval(argc, argv, module, jac_zeros_grjm);
+}
+static VALUE rb_jac_zeros_grjp(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_zeros_eval(argc, argv, module, jac_zeros_grjp);
+}
+
+static VALUE rb_jac_lagrange_eval(int argc, VALUE *argv,
+ double (*f)(int, double, int, double*, double, double))
+{
+ gsl_vector *z;
+ int i, Q;
+ double alpha, beta, zz;
+
+ switch (argc) {
+ case 5:
+ i = FIX2INT(argv[0]);
+ zz = NUM2DBL(argv[1]);
+ CHECK_VECTOR(argv[2]);
+ Data_Get_Struct(argv[2], gsl_vector, z);
+ Q = z->size;
+ alpha = NUM2DBL(argv[3]);
+ beta = NUM2DBL(argv[4]);
+ break;
+ case 6:
+ i = FIX2INT(argv[0]);
+ zz = NUM2DBL(argv[1]);
+ Q = FIX2INT(argv[2]);
+ CHECK_VECTOR(argv[3]);
+ Data_Get_Struct(argv[3], gsl_vector, z);
+ alpha = NUM2DBL(argv[4]);
+ beta = NUM2DBL(argv[5]);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 5 or 6)", argc);
+ }
+ return rb_float_new((*f)(i, zz, Q, z->data, alpha, beta));
+}
+
+static VALUE rb_jac_lagrange_gj(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_lagrange_eval(argc, argv, jac_lagrange_gj);
+}
+static VALUE rb_jac_lagrange_glj(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_lagrange_eval(argc, argv, jac_lagrange_glj);
+}
+static VALUE rb_jac_lagrange_grjm(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_lagrange_eval(argc, argv, jac_lagrange_grjm);
+}
+
+static VALUE rb_jac_lagrange_grjp(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_lagrange_eval(argc, argv, jac_lagrange_grjp);
+}
+
+static VALUE rb_jac_interpmat_eval(int argc, VALUE *argv,
+ int (*f)(double*, double*, int, double*, int, double, double))
+{
+ gsl_vector *imat, *zp, *z;
+ double alpha, beta;
+ int np, Q, status;
+ VALUE vimat;
+
+ if (argc < 3) rb_raise(rb_eArgError, "Too few arguments (%d for >= 3)", argc);
+ CHECK_VECTOR(argv[0]);
+ if (VECTOR_P(argv[1])) {
+ Data_Get_Struct(argv[0], gsl_vector, imat);
+ Data_Get_Struct(argv[1], gsl_vector, zp);
+ vimat = argv[0];
+ if (FIXNUM_P(argv[2])) np = FIX2INT(argv[2]);
+ argc -= 3;
+ argv += 3;
+ } else {
+ Data_Get_Struct(argv[0], gsl_vector, zp);
+ if (FIXNUM_P(argv[1])) np = FIX2INT(argv[1]);
+ else np = zp->size;
+ imat = gsl_vector_alloc(np);
+ vimat = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, imat);
+ argc -= 2;
+ argv += 2;
+ }
+ CHECK_VECTOR(argv[0]);
+ Data_Get_Struct(argv[0], gsl_vector, z);
+ argc -= 1;
+ argv += 1;
+ switch (argc) {
+ case 3:
+ Q = FIX2INT(argv[0]);
+ alpha = NUM2DBL(argv[1]);
+ beta = NUM2DBL(argv[2]);
+ break;
+ case 2:
+ Q = z->size;
+ alpha = NUM2DBL(argv[0]);
+ beta = NUM2DBL(argv[1]);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments.");
+ }
+ (*f)(imat->data, zp->data, np, z->data, Q, alpha, beta);
+ if (status != GSL_SUCCESS) rb_raise(rb_eRuntimeError, "Some error.");
+ return vimat;
+}
+
+static VALUE rb_jac_interpmat_gj(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_interpmat_eval(argc, argv, jac_interpmat_gj);
+}
+
+static VALUE rb_jac_interpmat_glj(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_interpmat_eval(argc, argv, jac_interpmat_glj);
+}
+static VALUE rb_jac_interpmat_grjm(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_interpmat_eval(argc, argv, jac_interpmat_grjm);
+}
+static VALUE rb_jac_interpmat_grjp(int argc, VALUE *argv, VALUE module)
+{
+ return rb_jac_interpmat_eval(argc, argv, jac_interpmat_grjp);
+}
+void Init_jacobi(VALUE module)
+{
+ VALUE mjac, cjacq;
+
+ mjac = rb_define_module("Jac");
+ jac_define_const(mjac);
+ cjacq = rb_define_class_under(mjac, "Quadrature", cGSL_Object);
+
+ rb_define_module_function(mjac, "jacobi_P0_e", rb_jac_jacobi_P0_e, 3);
+ rb_define_module_function(mjac, "jacobi_P0", rb_jac_jacobi_P0, 3);
+ rb_define_module_function(mjac, "jacobi_P1_e", rb_jac_jacobi_P1_e, 3);
+ rb_define_module_function(mjac, "jacobi_P1", rb_jac_jacobi_P1, 3);
+ rb_define_module_function(mjac, "jacobi", rb_jac_jacobi, -1);
+ rb_define_module_function(mjac, "djacobi_P0_e", rb_jac_djacobi_P0_e, 3);
+ rb_define_module_function(mjac, "djacobi_P0", rb_jac_djacobi_P0, 3);
+ rb_define_module_function(mjac, "djacobi_P1_e", rb_jac_djacobi_P1_e, 3);
+ rb_define_module_function(mjac, "djacobi_P1", rb_jac_djacobi_P1, 3);
+ rb_define_module_function(mjac, "djacobi", rb_jac_djacobi, 4);
+
+ rb_define_module_function(mjac, "jacobi_zeros", rb_jac_jacobi_zeros, -1);
+
+ /*****/
+ rb_define_singleton_method(cjacq, "alloc", rb_jac_quadrature_alloc, 1);
+ rb_define_method(cjacq, "Q", rb_jac_quadrature_Q, 0);
+ rb_define_method(cjacq, "type", rb_jac_quadrature_type, 0);
+ rb_define_method(cjacq, "alpha", rb_jac_quadrature_alpha, 0);
+ rb_define_method(cjacq, "beta", rb_jac_quadrature_beta, 0);
+ rb_define_method(cjacq, "x", rb_jac_quadrature_x, 0);
+ rb_define_method(cjacq, "w", rb_jac_quadrature_w, 0);
+ rb_define_method(cjacq, "D", rb_jac_quadrature_D, 0);
+ rb_define_method(cjacq, "xp", rb_jac_quadrature_xp, 0);
+ rb_define_method(cjacq, "interpmat_alloc", rb_jac_interpmat_alloc, -1);
+ rb_define_method(cjacq, "interpmat_free", rb_jac_interpmat_free, 0);
+ rb_define_method(cjacq, "zwd", rb_jac_quadrature_zwd, -1);
+ rb_define_method(cjacq, "integrate", rb_jac_integrate, 1);
+ rb_define_method(cjacq, "interpolate", rb_jac_interpolate, -1);
+ rb_define_method(cjacq, "differentiate", rb_jac_differentiate, -1);
+ /*****/
+ rb_define_module_function(mjac, "diffmat_gj", rb_jac_diffmat_gj, -1);
+ rb_define_module_function(mjac, "diffmat_glj", rb_jac_diffmat_glj, -1);
+ rb_define_module_function(mjac, "diffmat_grjm", rb_jac_diffmat_grjm, -1);
+ rb_define_module_function(mjac, "diffmat_grjp", rb_jac_diffmat_grjp, -1);
+
+ rb_define_module_function(mjac, "weights_gj", rb_jac_weights_gj, -1);
+ rb_define_module_function(mjac, "weights_glj", rb_jac_weights_glj, -1);
+ rb_define_module_function(mjac, "weights_grjm", rb_jac_weights_grjm, -1);
+ rb_define_module_function(mjac, "weights_grjp", rb_jac_weights_grjp, -1);
+
+ rb_define_module_function(mjac, "zeros_gj", rb_jac_zeros_gj, -1);
+ rb_define_module_function(mjac, "zeros_glj", rb_jac_zeros_glj, -1);
+ rb_define_module_function(mjac, "zeros_grjm", rb_jac_zeros_grjm, -1);
+ rb_define_module_function(mjac, "zeros_grjp", rb_jac_zeros_grjp, -1);
+
+ rb_define_module_function(mjac, "lagrange_gj", rb_jac_lagrange_gj, -1);
+ rb_define_module_function(mjac, "lagrange_glj", rb_jac_lagrange_glj, -1);
+ rb_define_module_function(mjac, "lagrange_grjm", rb_jac_lagrange_grjm, -1);
+ rb_define_module_function(mjac, "lagrange_grjp", rb_jac_lagrange_grjp, -1);
+
+ rb_define_module_function(mjac, "interpmat_gj", rb_jac_interpmat_gj, -1);
+ rb_define_module_function(mjac, "interpmat_glj", rb_jac_interpmat_glj, -1);
+ rb_define_module_function(mjac, "interpmat_grjm", rb_jac_interpmat_grjm, -1);
+ rb_define_module_function(mjac, "interpmat_grjp", rb_jac_interpmat_grjp, -1);
+
+}
+
+#endif
+
diff --git a/ext/gsl/linalg.c b/ext/gsl_native/linalg.c
similarity index 91%
rename from ext/gsl/linalg.c
rename to ext/gsl_native/linalg.c
index 29ae415..22acf0e 100644
--- a/ext/gsl/linalg.c
+++ b/ext/gsl_native/linalg.c
@@ -38,7 +38,40 @@ enum {
#ifdef HAVE_NARRAY_H
static VALUE rb_gsl_linalg_LU_decomp_narray(int argc, VALUE *argv, VALUE obj,
- int flag);
+ int flag)
+{
+ struct NARRAY *na, *na2;
+ VALUE m;
+ gsl_matrix_view mv;
+ gsl_permutation *p;
+ int signum;
+
+ if (argc != 1)
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
+ GetNArray(argv[0], na);
+ if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
+ if (na->shape[0] != na->shape[1])
+ rb_raise(rb_eRuntimeError, "square matrix required");
+ if (flag == LINALG_DECOMP) {
+ m = na_make_object(NA_DFLOAT, 2, na->shape, CLASS_OF(argv[0]));
+ GetNArray(m, na2);
+ memcpy((double*)na2->ptr, (double*)na->ptr, sizeof(double)*na2->total);
+ mv = gsl_matrix_view_array((double*)na2->ptr, na->shape[1], na->shape[0]);
+ } else {
+ mv = gsl_matrix_view_array((double*)na->ptr, na->shape[1], na->shape[0]);
+ }
+ p = gsl_permutation_alloc(mv.matrix.size1);
+ gsl_linalg_LU_decomp(&mv.matrix, p, &signum);
+ if (flag == LINALG_DECOMP) {
+ return rb_ary_new3(3, m,
+ Data_Wrap_Struct(cgsl_permutation, 0, gsl_permutation_free, p),
+ INT2FIX(signum));
+ } else {
+ return rb_ary_new3(3, argv[0],
+ Data_Wrap_Struct(cgsl_permutation, 0, gsl_permutation_free, p),
+ INT2FIX(signum));
+ }
+}
#endif
static VALUE rb_gsl_linalg_LU_decomposition(int argc, VALUE *argv, VALUE obj, int flag)
@@ -51,7 +84,7 @@ static VALUE rb_gsl_linalg_LU_decomposition(int argc, VALUE *argv, VALUE obj, in
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
#ifdef HAVE_NARRAY_H
- if (NA_IsNArray(argv[0]))
+ if (NA_IsNArray(argv[0]))
return rb_gsl_linalg_LU_decomp_narray(argc, argv, obj, flag);
#endif
if (MATRIX_COMPLEX_P(argv[0]))
@@ -109,45 +142,6 @@ static VALUE rb_gsl_linalg_LU_decomp_bang(int argc, VALUE *argv, VALUE obj)
return rb_gsl_linalg_LU_decomposition(argc, argv, obj, LINALG_DECOMP_BANG);
}
-#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_linalg_LU_decomp_narray(int argc, VALUE *argv, VALUE obj,
- int flag)
-{
- struct NARRAY *na, *na2;
- VALUE m;
- gsl_matrix_view mv;
- gsl_permutation *p;
- int signum;
-
- if (argc != 1)
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
- GetNArray(argv[0], na);
- if (na->rank < 2) rb_raise(rb_eRuntimeError, "rank >= 2 required");
- if (na->shape[0] != na->shape[1])
- rb_raise(rb_eRuntimeError, "square matrix required");
- if (flag == LINALG_DECOMP) {
- m = na_make_object(NA_DFLOAT, 2, na->shape, CLASS_OF(argv[0]));
- GetNArray(m, na2);
- memcpy((double*)na2->ptr, (double*)na->ptr, sizeof(double)*na2->total);
- mv = gsl_matrix_view_array((double*)na2->ptr, na->shape[1], na->shape[0]);
- } else {
- mv = gsl_matrix_view_array((double*)na->ptr, na->shape[1], na->shape[0]);
- }
- p = gsl_permutation_alloc(mv.matrix.size1);
- gsl_linalg_LU_decomp(&mv.matrix, p, &signum);
- if (flag == LINALG_DECOMP) {
- return rb_ary_new3(3, m,
- Data_Wrap_Struct(cgsl_permutation, 0, gsl_permutation_free, p),
- INT2FIX(signum));
- } else {
- return rb_ary_new3(3, argv[0],
- Data_Wrap_Struct(cgsl_permutation, 0, gsl_permutation_free, p),
- INT2FIX(signum));
- }
-
-}
-#endif
-
static gsl_matrix* get_matrix(VALUE obj, VALUE klass,int *flagm);
static gsl_permutation* get_permutation(VALUE obj, size_t size, int *flagp);
static gsl_vector* get_vector2(VALUE obj, int *flagv);
@@ -155,15 +149,13 @@ static gsl_vector* get_vector2(VALUE obj, int *flagv);
static gsl_matrix* get_matrix(VALUE obj, VALUE klass, int *flagm)
{
gsl_matrix *mtmp = NULL, *m = NULL;
-#ifdef HAVE_NARRAY_H
- gsl_matrix_view mv;
- struct NARRAY *na;
-#endif
if (CLASS_OF(obj) == klass) {
Data_Get_Struct(obj, gsl_matrix, m);
*flagm = 0;
#ifdef HAVE_NARRAY_H
} else if (NA_IsNArray(obj)) {
+ gsl_matrix_view mv;
+ struct NARRAY *na;
GetNArray(obj, na);
mv = gsl_matrix_view_array((double*)na->ptr, na->shape[1], na->shape[0]);
m = &mv.matrix;
@@ -194,15 +186,13 @@ static gsl_permutation* get_permutation(VALUE obj, size_t size, int *flagp)
static gsl_vector* get_vector2(VALUE obj, int *flagv)
{
gsl_vector *v = NULL;
-#ifdef HAVE_NARRAY_H
- gsl_vector_view vv;
- struct NARRAY *na;
-#endif
if (TYPE(obj) == T_ARRAY) {
v = make_cvector_from_rarray(obj);
*flagv = 1;
#ifdef HAVE_NARRAY_H
} else if (NA_IsNArray(obj)) {
+ gsl_vector_view vv;
+ struct NARRAY *na;
GetNArray(obj, na);
vv = gsl_vector_view_array((double*) na->ptr, na->total);
v = &vv.vector;
@@ -217,7 +207,36 @@ static gsl_vector* get_vector2(VALUE obj, int *flagv)
}
#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_linalg_LU_solve_narray(int argc, VALUE *argv, VALUE obj);
+static VALUE rb_gsl_linalg_LU_solve_narray(int argc, VALUE *argv, VALUE obj)
+{
+ struct NARRAY *na, *b;
+ VALUE ret;
+ gsl_permutation *p;
+ gsl_matrix_view mv;
+ gsl_vector_view bv, xv;
+ double *x;
+ int shape[1];
+ if (argc < 3)
+ rb_raise(rb_eArgError,
+ "wrong number of arguments %d(NArray, GSL::Permutation and NArray expected",
+ argc);
+ GetNArray(argv[0], na);
+ mv = gsl_matrix_view_array((double*) na->ptr, na->shape[1], na->shape[0]);
+ CHECK_PERMUTATION(argv[1]);
+ Data_Get_Struct(argv[1], gsl_permutation, p);
+ GetNArray(argv[2], b);
+ bv = gsl_vector_view_array((double*) b->ptr, b->total);
+ if (argc == 3) {
+ shape[0] = b->total;
+ ret = na_make_object(NA_DFLOAT, 1, shape, CLASS_OF(argv[0]));
+ } else {
+ ret = argv[3];
+ }
+ x = NA_PTR_TYPE(ret,double*);
+ xv = gsl_vector_view_array(x, b->total);
+ gsl_linalg_LU_solve(&mv.matrix, p, &bv.vector, &xv.vector);
+ return ret;
+}
#endif
VALUE rb_gsl_linalg_LU_solve(int argc, VALUE *argv, VALUE obj)
@@ -230,19 +249,18 @@ VALUE rb_gsl_linalg_LU_solve(int argc, VALUE *argv, VALUE obj)
VALUE bb;
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
- if (argc < 2 || argc > 4)
+ if (argc < 2 || argc > 4)
rb_raise(rb_eArgError, "Usage: solve(m, b), solve(m, b, x), solve(lu, p, b), solve(lu, p, b, x)");
#ifdef HAVE_NARRAY_H
- if (NA_IsNArray(argv[0]))
+ if (NA_IsNArray(argv[0]))
return rb_gsl_linalg_LU_solve_narray(argc, argv, obj);
#endif
m = get_matrix(argv[0], cgsl_matrix_LU, &flagm);
itmp = 1;
break;
default:
- if (argc < 1 || argc > 3)
+ if (argc < 1 || argc > 3)
rb_raise(rb_eArgError, "Usage: LU_solve(b), LU_solve(p, b), LU_solve(b, x), solve(p, b, x)");
-
m = get_matrix(obj, cgsl_matrix_LU, &flagm);
itmp = 0;
break;
@@ -252,7 +270,6 @@ VALUE rb_gsl_linalg_LU_solve(int argc, VALUE *argv, VALUE obj)
p = get_permutation(argv[itmp], size, &flagp);
if (flagp == 1 && flagm == 0) rb_raise(rb_eArgError, "permutation must be given");
if (flagp == 0) itmp++;
-
bb = argv[itmp];
b = get_vector2(argv[itmp], &flagb);
itmp++;
@@ -274,42 +291,27 @@ VALUE rb_gsl_linalg_LU_solve(int argc, VALUE *argv, VALUE obj)
}
#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_linalg_LU_solve_narray(int argc, VALUE *argv, VALUE obj)
+static VALUE rb_gsl_linalg_LU_svx_narray(int argc, VALUE *argv, VALUE obj)
{
struct NARRAY *na, *b;
- VALUE ret;
gsl_permutation *p;
gsl_matrix_view mv;
- gsl_vector_view bv, xv;
- double *x;
- int shape[1];
- if (argc < 3)
- rb_raise(rb_eArgError,
- "wrong number of arguments %d(NArray, GSL::Permutation and NArray expected",
- argc);
+ gsl_vector_view bv;
+ if (argc != 3)
+ rb_raise(rb_eArgError,
+ "wrong number of arguments %d(NArray, GSL::Permutation and NArray expected",
+ argc);
GetNArray(argv[0], na);
mv = gsl_matrix_view_array((double*) na->ptr, na->shape[1], na->shape[0]);
CHECK_PERMUTATION(argv[1]);
Data_Get_Struct(argv[1], gsl_permutation, p);
GetNArray(argv[2], b);
bv = gsl_vector_view_array((double*) b->ptr, b->total);
- if (argc == 3) {
- shape[0] = b->total;
- ret = na_make_object(NA_DFLOAT, 1, shape, CLASS_OF(argv[0]));
- } else {
- ret = argv[3];
- }
- x = NA_PTR_TYPE(ret,double*);
- xv = gsl_vector_view_array(x, b->total);
- gsl_linalg_LU_solve(&mv.matrix, p, &bv.vector, &xv.vector);
- return ret;
+ gsl_linalg_LU_svx(&mv.matrix, p, &bv.vector);
+ return argv[2];
}
#endif
-#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_linalg_LU_svx_narray(int argc, VALUE *argv, VALUE obj);
-#endif
-
/* bb must be Vector, it is replaced by the root of the system */
static VALUE rb_gsl_linalg_LU_svx(int argc, VALUE *argv, VALUE obj)
{
@@ -321,18 +323,18 @@ static VALUE rb_gsl_linalg_LU_svx(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
- if (argc < 2 || argc > 3)
+ if (argc < 2 || argc > 3)
rb_raise(rb_eArgError, "Usage: svx(m, b), svx(lu, p, b)");
#ifdef HAVE_NARRAY_H
- if (NA_IsNArray(argv[0]))
- return rb_gsl_linalg_LU_svx_narray(argc, argv, obj);
+ if (NA_IsNArray(argv[0]))
+ return rb_gsl_linalg_LU_svx_narray(argc, argv, obj);
#endif
m = get_matrix(argv[0], cgsl_matrix_LU, &flagm);
itmp = 1;
break;
default:
- if (argc < 1 || argc > 2)
- rb_raise(rb_eArgError, "Usage: LU_svx(b), LU_svx(p, b)");
+ if (argc < 1 || argc > 2)
+ rb_raise(rb_eArgError, "Usage: LU_svx(b), LU_svx(p, b)");
m = get_matrix(obj, cgsl_matrix_LU, &flagm);
itmp = 0;
break;
@@ -350,32 +352,10 @@ static VALUE rb_gsl_linalg_LU_svx(int argc, VALUE *argv, VALUE obj)
return argv[itmp];
}
-#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_linalg_LU_svx_narray(int argc, VALUE *argv, VALUE obj)
-{
- struct NARRAY *na, *b;
- gsl_permutation *p;
- gsl_matrix_view mv;
- gsl_vector_view bv;
- if (argc != 3)
- rb_raise(rb_eArgError,
- "wrong number of arguments %d(NArray, GSL::Permutation and NArray expected",
- argc);
- GetNArray(argv[0], na);
- mv = gsl_matrix_view_array((double*) na->ptr, na->shape[1], na->shape[0]);
- CHECK_PERMUTATION(argv[1]);
- Data_Get_Struct(argv[1], gsl_permutation, p);
- GetNArray(argv[2], b);
- bv = gsl_vector_view_array((double*) b->ptr, b->total);
- gsl_linalg_LU_svx(&mv.matrix, p, &bv.vector);
- return argv[2];
-}
-#endif
-
/* singleton */
static VALUE rb_gsl_linalg_LU_refine(VALUE obj, VALUE vm,
- VALUE lu, VALUE pp, VALUE bb,
- VALUE xx)
+ VALUE lu, VALUE pp, VALUE bb,
+ VALUE xx)
{
gsl_matrix *m = NULL, *mlu = NULL;
gsl_permutation *p = NULL;
@@ -403,59 +383,6 @@ static VALUE rb_gsl_linalg_LU_refine(VALUE obj, VALUE vm,
}
#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_linalg_LU_invert_narray(int argc, VALUE *argv, VALUE obj);
-#endif
-
-static VALUE rb_gsl_linalg_LU_invert(int argc, VALUE *argv, VALUE obj)
-{
- gsl_matrix *m = NULL, *inverse = NULL;
- gsl_permutation *p = NULL;
- int signum, flagm = 0, flagp = 0, itmp;
- size_t size;
- switch (TYPE(obj)) {
- case T_MODULE: case T_CLASS: case T_OBJECT:
-#ifdef HAVE_NARRAY_H
- if (NA_IsNArray(argv[0]))
- return rb_gsl_linalg_LU_invert_narray(argc, argv, obj);
-#endif
- m = get_matrix(argv[0], cgsl_matrix_LU, &flagm);
- itmp = 1;
- break;
- default:
- m = get_matrix(obj, cgsl_matrix_LU, &flagm);
- itmp = 0;
- }
- size = m->size1;
-
- if (argc == itmp) {
- p = gsl_permutation_alloc(size);
- flagp = 1;
- } else {
- CHECK_PERMUTATION(argv[itmp]);
- p = get_permutation(argv[itmp], size, &flagp);
- }
- if (flagp == 1 && flagm == 0) rb_raise(rb_eArgError, "permutation must be given");
- if (flagp == 0) itmp++;
-
- if (flagm == 1 || flagp == 1) {
- gsl_linalg_LU_decomp(m, p, &signum);
- }
-
- if (argc-1 == itmp) {
- CHECK_MATRIX(argv[itmp]);
- Data_Get_Struct(argv[itmp], gsl_matrix, inverse);
- } else {
- inverse = gsl_matrix_alloc(size, size);
- }
- gsl_linalg_LU_invert(m, p, inverse);
- if (flagm == 1) gsl_matrix_free(m);
- if (flagp == 1) gsl_permutation_free(p);
- if (argc-1 == itmp) return argv[itmp];
- else return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, inverse);
-
-}
-
-#ifdef HAVE_NARRAY_H
static VALUE rb_gsl_linalg_LU_invert_narray(int argc, VALUE *argv, VALUE obj)
{
struct NARRAY *na;
@@ -483,7 +410,7 @@ static VALUE rb_gsl_linalg_LU_det_narray(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 2:
signum = FIX2INT(argv[1]);
- /* no break */
+ /* no break */
case 1:
GetNArray(argv[0], na);
mv = gsl_matrix_view_array((double*)na->ptr, na->shape[1], na->shape[0]);
@@ -512,6 +439,51 @@ static VALUE rb_gsl_linalg_LU_lndet_narray(int argc, VALUE *argv, VALUE obj)
#endif
+static VALUE rb_gsl_linalg_LU_invert(int argc, VALUE *argv, VALUE obj)
+{
+ gsl_matrix *m = NULL, *inverse = NULL;
+ gsl_permutation *p = NULL;
+ int signum, flagm = 0, flagp = 0, itmp;
+ size_t size;
+ switch (TYPE(obj)) {
+ case T_MODULE: case T_CLASS: case T_OBJECT:
+#ifdef HAVE_NARRAY_H
+ if (NA_IsNArray(argv[0]))
+ return rb_gsl_linalg_LU_invert_narray(argc, argv, obj);
+#endif
+ m = get_matrix(argv[0], cgsl_matrix_LU, &flagm);
+ itmp = 1;
+ break;
+ default:
+ m = get_matrix(obj, cgsl_matrix_LU, &flagm);
+ itmp = 0;
+ }
+ size = m->size1;
+
+ if (argc == itmp) {
+ p = gsl_permutation_alloc(size);
+ flagp = 1;
+ } else {
+ CHECK_PERMUTATION(argv[itmp]);
+ p = get_permutation(argv[itmp], size, &flagp);
+ }
+ if (flagp == 1 && flagm == 0) rb_raise(rb_eArgError, "permutation must be given");
+ if (flagp == 0) itmp++;
+ if (flagm == 1 || flagp == 1) {
+ gsl_linalg_LU_decomp(m, p, &signum);
+ }
+ if (argc-1 == itmp) {
+ CHECK_MATRIX(argv[itmp]);
+ Data_Get_Struct(argv[itmp], gsl_matrix, inverse);
+ } else {
+ inverse = gsl_matrix_alloc(size, size);
+ }
+ gsl_linalg_LU_invert(m, p, inverse);
+ if (flagm == 1) gsl_matrix_free(m);
+ if (flagp == 1) gsl_permutation_free(p);
+ if (argc-1 == itmp) return argv[itmp];
+ else return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, inverse);
+}
static VALUE rb_gsl_linalg_LU_det(int argc, VALUE *argv, VALUE obj)
{
gsl_matrix *m = NULL;
@@ -522,7 +494,7 @@ static VALUE rb_gsl_linalg_LU_det(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc < 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv[0]))
return rb_gsl_linalg_LU_det_narray(argc, argv, obj);
@@ -547,8 +519,8 @@ static VALUE rb_gsl_linalg_LU_det(int argc, VALUE *argv, VALUE obj)
p = gsl_permutation_alloc(size);
flagp = 1;
}
- }
- if (flagm == 1) gsl_linalg_LU_decomp(m, p, &sign);
+ }
+ if (flagm == 1) gsl_linalg_LU_decomp(m, p, &sign);
det = gsl_linalg_LU_det(m, sign);
if (flagm == 1) gsl_matrix_free(m);
if (flagp == 1) gsl_permutation_free(p);
@@ -565,7 +537,7 @@ static VALUE rb_gsl_linalg_LU_lndet(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc < 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv[0]))
return rb_gsl_linalg_LU_lndet_narray(argc, argv, obj);
@@ -579,7 +551,7 @@ static VALUE rb_gsl_linalg_LU_lndet(int argc, VALUE *argv, VALUE obj)
}
if (flagm == 1) {
p = gsl_permutation_alloc(m->size1);
- gsl_linalg_LU_decomp(m, p, &sign);
+ gsl_linalg_LU_decomp(m, p, &sign);
}
lndet = gsl_linalg_LU_lndet(m);
if (flagm == 1) {
@@ -606,7 +578,7 @@ static VALUE rb_gsl_linalg_LU_sgndet(int argc, VALUE *argv, VALUE obj)
}
if (flagm == 1) {
p = gsl_permutation_alloc(m->size1);
- gsl_linalg_LU_decomp(m, p, &sign);
+ gsl_linalg_LU_decomp(m, p, &sign);
} else {
if (argc-itmp != 1) rb_raise(rb_eArgError, "sign must be given");
sign = FIX2INT(argv[itmp]);
@@ -619,12 +591,11 @@ static VALUE rb_gsl_linalg_LU_sgndet(int argc, VALUE *argv, VALUE obj)
return INT2FIX(signdet);
}
-#ifdef GSL_1_6_LATER
int gsl_linalg_LQ_solve_T(const gsl_matrix*, const gsl_vector*, const gsl_vector*, gsl_vector*);
int gsl_linalg_LQ_svx_T (const gsl_matrix*, const gsl_vector*, gsl_vector*);
-int gsl_linalg_LQ_lssolve_T(const gsl_matrix * LQ, const gsl_vector * tau,
- const gsl_vector * b, gsl_vector * x,
- gsl_vector * residual);
+int gsl_linalg_LQ_lssolve_T(const gsl_matrix * LQ, const gsl_vector * tau,
+ const gsl_vector * b, gsl_vector * x,
+ gsl_vector * residual);
int
gsl_linalg_LQ_Lsolve_T (const gsl_matrix * LQ, const gsl_vector * b, gsl_vector* x);
int
@@ -632,9 +603,6 @@ gsl_linalg_LQ_Lsvx_T (const gsl_matrix * LQ, gsl_vector * x);
int
gsl_linalg_L_solve_T (const gsl_matrix * L, const gsl_vector * b, gsl_vector * x);
-
-#endif
-
enum {
LINALG_QR_DECOMP,
LINALG_QR_DECOMP_BANG,
@@ -659,7 +627,7 @@ enum {
};
static VALUE rb_gsl_linalg_QR_LQ_decomposition(int argc, VALUE *argv, VALUE obj,
- int flag)
+ int flag)
{
gsl_matrix *m = NULL, *mtmp = NULL;
gsl_vector *tau = NULL;
@@ -679,7 +647,7 @@ static VALUE rb_gsl_linalg_QR_LQ_decomposition(int argc, VALUE *argv, VALUE obj,
break;
}
CHECK_MATRIX(omatrix);
- Data_Get_Struct(omatrix, gsl_matrix, mtmp);
+ Data_Get_Struct(omatrix, gsl_matrix, mtmp);
switch (flag) {
case LINALG_QR_DECOMP:
@@ -693,7 +661,6 @@ static VALUE rb_gsl_linalg_QR_LQ_decomposition(int argc, VALUE *argv, VALUE obj,
mdecomp = omatrix;
RBGSL_SET_CLASS(mdecomp, cgsl_matrix_QR);
break;
-#ifdef GSL_1_6_LATER
case LINALG_LQ_DECOMP:
fdecomp = &gsl_linalg_LQ_decomp;
m = make_matrix_clone(mtmp);
@@ -705,7 +672,6 @@ static VALUE rb_gsl_linalg_QR_LQ_decomposition(int argc, VALUE *argv, VALUE obj,
mdecomp = omatrix;
RBGSL_SET_CLASS(mdecomp, cgsl_matrix_LQ);
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operation");
break;
@@ -736,7 +702,7 @@ static VALUE rb_gsl_linalg_QR_LQ_decomposition(int argc, VALUE *argv, VALUE obj,
break;
case LINALG_QR_DECOMP_BANG:
case LINALG_LQ_DECOMP_BANG:
- if (argc == itmp) {
+ if (argc == itmp) {
return Data_Wrap_Struct(cgsl_vector_tau, 0, gsl_vector_free, tau);
} else {
RBGSL_SET_CLASS(argv[itmp], cgsl_vector_tau);
@@ -751,7 +717,88 @@ static VALUE rb_gsl_linalg_QR_LQ_decomposition(int argc, VALUE *argv, VALUE obj,
}
#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_linalg_QR_decomp_narray(int argc, VALUE *argv, VALUE obj);
+static VALUE rb_gsl_linalg_QR_decomp_narray(int argc, VALUE *argv, VALUE obj)
+{
+ struct NARRAY *na;
+ gsl_matrix_view mv;
+ gsl_vector_view vv;
+ int shapem[2], shapev[1];
+ VALUE qr, tau;
+ if (argc < 1) rb_raise(rb_eArgError, "too few arguments.");
+ GetNArray(argv[0], na);
+ shapem[0] = na->shape[1];
+ shapem[1] = na->shape[1];
+ shapev[0] = shapem[0];
+ qr = na_make_object(NA_DFLOAT, 2, shapem, CLASS_OF(argv[0]));
+ tau = na_make_object(NA_DFLOAT, 1, shapev, cNVector);
+ memcpy(NA_PTR_TYPE(qr,double*),na->ptr,sizeof(double)*shapem[0]*shapem[1]);
+ mv = gsl_matrix_view_array(NA_PTR_TYPE(qr,double*), shapem[0], shapem[1]);
+ vv = gsl_vector_view_array(NA_PTR_TYPE(tau,double*), shapev[0]);
+ gsl_linalg_QR_decomp(&mv.matrix, &vv.vector);
+ return rb_ary_new3(2, qr, tau);
+}
+
+static VALUE rb_gsl_linalg_QR_unpack_narray(int argc, VALUE *argv, VALUE obj)
+{
+ struct NARRAY *m, *tau;
+ gsl_matrix_view mv, mq, mr;
+ gsl_vector_view vv;
+ int shape[2];
+ VALUE q, r;
+ if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
+ argc);
+ GetNArray(argv[0], m);
+ GetNArray(argv[1], tau);
+ mv = gsl_matrix_view_array((double*)m->ptr, m->shape[1], m->shape[0]);
+ vv = gsl_vector_view_array((double*)tau->ptr, tau->shape[0]);
+ shape[0] = m->shape[1];
+ shape[1] = m->shape[1];
+ q = na_make_object(NA_DFLOAT, 2, shape, CLASS_OF(argv[0]));
+ shape[0] = m->shape[1];
+ shape[1] = m->shape[0];
+ r = na_make_object(NA_DFLOAT, 2, shape, CLASS_OF(argv[0]));
+ mq = gsl_matrix_view_array(NA_PTR_TYPE(q,double*), m->shape[1], m->shape[1]);
+ mr = gsl_matrix_view_array(NA_PTR_TYPE(r,double*), m->shape[1], m->shape[0]);
+ // printf("OK 4 %d %d\n", mq.matrix.size1, mr.matrix.size2);
+ gsl_linalg_QR_unpack(&mv.matrix, &vv.vector, &mq.matrix, &mr.matrix);
+ // printf("OK 5\n");
+ return rb_ary_new3(2, q, r);
+}
+
+static VALUE rb_gsl_linalg_QR_solve_narray(int argc, VALUE *argv, VALUE obj)
+{
+ struct NARRAY *qr, *tau, *b;
+ VALUE x;
+ gsl_matrix_view mv;
+ gsl_vector_view tv, bv, xv;
+ if (argc != 3) rb_raise(rb_eArgError, "Usage: QR.solve(qr, tau, b)");
+ GetNArray(argv[0], qr);
+ GetNArray(argv[1], tau);
+ GetNArray(argv[2], b);
+ x = na_make_object(NA_DFLOAT, 1, b->shape, CLASS_OF(argv[2]));
+ mv = gsl_matrix_view_array((double*)qr->ptr, qr->shape[1], qr->shape[0]);
+ tv = gsl_vector_view_array((double*)tau->ptr, tau->shape[0]);
+ bv = gsl_vector_view_array((double*)b->ptr, b->shape[0]);
+ xv = gsl_vector_view_array(NA_PTR_TYPE(x,double*), b->shape[0]);
+ gsl_linalg_QR_solve(&mv.matrix, &tv.vector, &bv.vector, &xv.vector);
+ return x;
+}
+static VALUE rb_gsl_linalg_QR_svx_narray(int argc, VALUE *argv, VALUE obj)
+{
+ struct NARRAY *qr, *tau, *b;
+ gsl_matrix_view mv;
+ gsl_vector_view tv, bv;
+ if (argc != 3) rb_raise(rb_eArgError, "Usage: QR.solve(qr, tau, b)");
+ GetNArray(argv[0], qr);
+ GetNArray(argv[1], tau);
+ GetNArray(argv[2], b);
+ mv = gsl_matrix_view_array((double*)qr->ptr, qr->shape[1], qr->shape[0]);
+ tv = gsl_vector_view_array((double*)tau->ptr, tau->shape[0]);
+ bv = gsl_vector_view_array((double*)b->ptr, b->shape[0]);
+ gsl_linalg_QR_svx(&mv.matrix, &tv.vector, &bv.vector);
+ return argv[2];
+}
+
#endif
static VALUE rb_gsl_linalg_QR_decomp(int argc, VALUE *argv, VALUE obj)
@@ -768,7 +815,6 @@ static VALUE rb_gsl_linalg_QR_decomp_bang(int argc, VALUE *argv, VALUE obj)
return rb_gsl_linalg_QR_LQ_decomposition(argc, argv, obj, LINALG_QR_DECOMP_BANG);
}
-#ifdef GSL_1_6_LATER
static VALUE rb_gsl_linalg_LQ_decomp(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QR_LQ_decomposition(argc, argv, obj, LINALG_LQ_DECOMP);
@@ -778,7 +824,6 @@ static VALUE rb_gsl_linalg_LQ_decomp_bang(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QR_LQ_decomposition(argc, argv, obj, LINALG_LQ_DECOMP_BANG);
}
-#endif
static VALUE rb_gsl_linalg_QR_LQ_solve(int argc, VALUE *argv, VALUE obj, int flag)
{
@@ -810,13 +855,11 @@ static VALUE rb_gsl_linalg_QR_LQ_solve(int argc, VALUE *argv, VALUE obj, int fla
fdecomp = &gsl_linalg_QR_decomp;
fsolve = &gsl_linalg_QR_solve;
break;
-#ifdef GSL_1_6_LATER
case LINALG_LQ_SOLVE:
m = get_matrix(omatrix, cgsl_matrix_LQ, &flagm);
fdecomp = &gsl_linalg_LQ_decomp;
fsolve = &gsl_linalg_LQ_solve_T;
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operatioin");
break;
@@ -878,7 +921,7 @@ static VALUE rb_gsl_linalg_QR_LQ_svx(int argc, VALUE *argv, VALUE obj, int flag)
itmp = 0;
break;
}
- if (argc-itmp < 1 || argc-itmp > 2)
+ if (argc-itmp < 1 || argc-itmp > 2)
rb_raise(rb_eArgError, "wrong number of arguments");
CHECK_MATRIX(omatrix);
switch (flag) {
@@ -887,13 +930,11 @@ static VALUE rb_gsl_linalg_QR_LQ_svx(int argc, VALUE *argv, VALUE obj, int flag)
fdecomp = &gsl_linalg_QR_decomp;
fsvx = &gsl_linalg_QR_svx;
break;
-#ifdef GSL_1_6_LATER
case LINALG_LQ_SOLVE:
m = get_matrix(omatrix, cgsl_matrix_LQ, &flagm);
fdecomp = &gsl_linalg_LQ_decomp;
fsvx = &gsl_linalg_LQ_svx_T;
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operatioin");
break;
@@ -932,7 +973,7 @@ static VALUE rb_gsl_linalg_QR_LQ_lssolve(int argc, VALUE *argv, VALUE obj, int f
size_t size;
int (*fdecomp)(gsl_matrix*, gsl_vector*);
int (*flssolve)(const gsl_matrix*, const gsl_vector*, const gsl_vector*, gsl_vector*,
- gsl_vector*);
+ gsl_vector*);
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
@@ -954,13 +995,11 @@ static VALUE rb_gsl_linalg_QR_LQ_lssolve(int argc, VALUE *argv, VALUE obj, int f
fdecomp = &gsl_linalg_QR_decomp;
flssolve = &gsl_linalg_QR_lssolve;
break;
-#ifdef GSL_1_6_LATER
case LINALG_LQ_SOLVE:
m = get_matrix(omatrix, cgsl_matrix_LQ, &flagm);
fdecomp = &gsl_linalg_LQ_decomp;
flssolve = &gsl_linalg_LQ_lssolve_T;
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operatioin");
break;
@@ -1009,7 +1048,6 @@ static VALUE rb_gsl_linalg_QR_LQ_lssolve(int argc, VALUE *argv, VALUE obj, int f
if (flagm == 1) gsl_matrix_free(m);
if (flagt == 1) gsl_vector_free(tau);
if (flagb == 1) gsl_vector_free(b);
-
switch (argc - itmp) {
case 2:
return INT2FIX(status);
@@ -1019,16 +1057,11 @@ static VALUE rb_gsl_linalg_QR_LQ_lssolve(int argc, VALUE *argv, VALUE obj, int f
break;
default:
return rb_ary_new3(2, Data_Wrap_Struct(cgsl_vector_col, 0, gsl_vector_free, x),
- Data_Wrap_Struct(cgsl_vector_col, 0, gsl_vector_free, r));
+ Data_Wrap_Struct(cgsl_vector_col, 0, gsl_vector_free, r));
}
return Qnil;
}
-#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_linalg_QR_solve_narray(int argc, VALUE *argv, VALUE obj);
-static VALUE rb_gsl_linalg_QR_svx_narray(int argc, VALUE *argv, VALUE obj);
-#endif
-
static VALUE rb_gsl_linalg_QR_solve(int argc, VALUE *argv, VALUE obj)
{
#ifdef HAVE_NARRAY_H
@@ -1052,7 +1085,6 @@ static VALUE rb_gsl_linalg_QR_lssolve(int argc, VALUE *argv, VALUE obj)
return rb_gsl_linalg_QR_LQ_lssolve(argc, argv, obj, LINALG_QR_SOLVE);
}
-#ifdef GSL_1_6_LATER
static VALUE rb_gsl_linalg_LQ_solve(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QR_LQ_solve(argc, argv, obj, LINALG_LQ_SOLVE);
@@ -1067,18 +1099,17 @@ static VALUE rb_gsl_linalg_LQ_lssolve(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QR_LQ_lssolve(argc, argv, obj, LINALG_LQ_SOLVE);
}
-#endif
static VALUE rb_gsl_linalg_QRLQ_QTvec(int argc, VALUE *argv, VALUE obj,
- int flag)
+ int flag)
{
gsl_matrix *QR = NULL;
gsl_vector *tau = NULL, *v = NULL;
VALUE ret;
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
- if (argc != 3) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for 3)", argc);
+ if (argc != 3) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for 3)", argc);
CHECK_MATRIX(argv[0]); CHECK_VECTOR(argv[1]); CHECK_VECTOR(argv[2]);
Data_Get_Struct(argv[0], gsl_matrix, QR);
Data_Get_Struct(argv[1], gsl_vector, tau);
@@ -1086,8 +1117,8 @@ static VALUE rb_gsl_linalg_QRLQ_QTvec(int argc, VALUE *argv, VALUE obj,
ret = argv[2];
break;
default:
- if (argc != 2) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for 2)", argc);
+ if (argc != 2) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for 2)", argc);
CHECK_VECTOR(argv[2]); CHECK_VECTOR(argv[1]);
Data_Get_Struct(obj, gsl_matrix, QR);
Data_Get_Struct(argv[0], gsl_vector, tau);
@@ -1102,14 +1133,12 @@ static VALUE rb_gsl_linalg_QRLQ_QTvec(int argc, VALUE *argv, VALUE obj,
case LINALG_QR_Qvec:
gsl_linalg_QR_Qvec(QR, tau, v);
break;
-#ifdef GSL_1_6_LATER
case LINALG_LQ_vecQ:
gsl_linalg_LQ_vecQ(QR, tau, v);
break;
case LINALG_LQ_vecQT:
gsl_linalg_LQ_vecQT(QR, tau, v);
break;
-#endif
default:
break;
}
@@ -1126,7 +1155,6 @@ static VALUE rb_gsl_linalg_QR_Qvec(int argc, VALUE *argv, VALUE obj)
return rb_gsl_linalg_QRLQ_QTvec(argc, argv, obj, LINALG_QR_Qvec);
}
-#ifdef GSL_1_6_LATER
static VALUE rb_gsl_linalg_LQ_vecQT(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QRLQ_QTvec(argc, argv, obj, LINALG_LQ_vecQT);
@@ -1136,10 +1164,9 @@ static VALUE rb_gsl_linalg_LQ_vecQ(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QRLQ_QTvec(argc, argv, obj, LINALG_LQ_vecQ);
}
-#endif
static VALUE rb_gsl_linalg_QRLQ_unpack(int argc, VALUE *argv, VALUE obj,
- int flag)
+ int flag)
{
gsl_matrix *QR = NULL, *Q = NULL, *R = NULL;
gsl_vector *tau = NULL;
@@ -1158,14 +1185,14 @@ static VALUE rb_gsl_linalg_QRLQ_unpack(int argc, VALUE *argv, VALUE obj,
}
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
- if (argc != 2) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for 2)", argc);
+ if (argc != 2) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for 2)", argc);
vtmp = argv[0];
itmp = 1;
break;
default:
- if (argc != 1) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for 1)", argc);
+ if (argc != 1) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for 1)", argc);
vtmp = obj;
itmp = 0;
break;
@@ -1186,13 +1213,11 @@ static VALUE rb_gsl_linalg_QRLQ_unpack(int argc, VALUE *argv, VALUE obj,
vQ = Data_Wrap_Struct(cgsl_matrix_Q, 0, gsl_matrix_free, Q);
vR = Data_Wrap_Struct(cgsl_matrix_R, 0, gsl_matrix_free, R);
break;
-#ifdef GSL_1_6_LATER
case LINALG_LQ_UNPACK:
- gsl_linalg_LQ_unpack(QR, tau, Q, R);
- vQ = Data_Wrap_Struct(cgsl_matrix_L, 0, gsl_matrix_free, Q);
- vR = Data_Wrap_Struct(cgsl_matrix_Q, 0, gsl_matrix_free, R);
+ gsl_linalg_LQ_unpack(QR, tau, Q, R);
+ vQ = Data_Wrap_Struct(cgsl_matrix_L, 0, gsl_matrix_free, Q);
+ vR = Data_Wrap_Struct(cgsl_matrix_Q, 0, gsl_matrix_free, R);
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operation");
break;
@@ -1200,10 +1225,6 @@ static VALUE rb_gsl_linalg_QRLQ_unpack(int argc, VALUE *argv, VALUE obj,
return rb_ary_new3(2, vQ, vR);
}
-#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_linalg_QR_unpack_narray(int argc, VALUE *argv, VALUE obj);
-#endif
-
static VALUE rb_gsl_linalg_QR_unpack(int argc, VALUE *argv, VALUE obj)
{
#ifdef HAVE_NARRAY_H
@@ -1213,16 +1234,14 @@ static VALUE rb_gsl_linalg_QR_unpack(int argc, VALUE *argv, VALUE obj)
return rb_gsl_linalg_QRLQ_unpack(argc, argv, obj, LINALG_QR_UNPACK);
}
-#ifdef GSL_1_6_LATER
static VALUE rb_gsl_linalg_LQ_unpack(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QRLQ_unpack(argc, argv, obj, LINALG_LQ_UNPACK);
}
-#endif
/* singleton */
static VALUE rb_gsl_linalg_QRLQ_QRLQsolve(int argc, VALUE *argv, VALUE obj,
- int flag)
+ int flag)
{
gsl_matrix *Q = NULL, *R = NULL;
gsl_vector *b = NULL, *x = NULL;
@@ -1251,21 +1270,19 @@ static VALUE rb_gsl_linalg_QRLQ_QRLQsolve(int argc, VALUE *argv, VALUE obj,
}
switch (flag) {
case LINALG_QR_DECOMP:
- if (CLASS_OF(argv[0]) != cgsl_matrix_Q)
+ if (CLASS_OF(argv[0]) != cgsl_matrix_Q)
rb_raise(rb_eTypeError, "not a Q matrix");
- if (CLASS_OF(argv[1]) != cgsl_matrix_R)
+ if (CLASS_OF(argv[1]) != cgsl_matrix_R)
rb_raise(rb_eTypeError, "not a R matrix");
fsolve = &gsl_linalg_QR_QRsolve;
break;
-#ifdef GSL_1_6_LATER
case LINALG_LQ_DECOMP:
- /* if (CLASS_OF(argv[0]) != cgsl_matrix_L)
+ /* if (CLASS_OF(argv[0]) != cgsl_matrix_L)
rb_raise(rb_eTypeError, "not a L matrix");
- if (CLASS_OF(argv[1]) != cgsl_matrix_Q)
+ if (CLASS_OF(argv[1]) != cgsl_matrix_Q)
rb_raise(rb_eTypeError, "not a Q matrix");*/
fsolve = &gsl_linalg_LQ_LQsolve;
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operation");
break;
@@ -1284,7 +1301,7 @@ static VALUE rb_gsl_linalg_QRLQ_QRLQsolve(int argc, VALUE *argv, VALUE obj,
/*****/
static VALUE rb_gsl_linalg_QRLQ_RLsolve(int argc, VALUE *argv, VALUE obj,
- int flag)
+ int flag)
{
gsl_matrix *QR = NULL, *mtmp;
gsl_vector *b = NULL, *x = NULL, *tau = NULL;
@@ -1338,7 +1355,6 @@ static VALUE rb_gsl_linalg_QRLQ_RLsolve(int argc, VALUE *argv, VALUE obj,
}
fsolve = &gsl_linalg_R_solve;
break;
-#ifdef GSL_1_6_LATER
case LINALG_LQ_LSOLVE:
if (CLASS_OF(omatrix) != cgsl_matrix_LQ) {
QR = make_matrix_clone(mtmp);
@@ -1357,7 +1373,6 @@ static VALUE rb_gsl_linalg_QRLQ_RLsolve(int argc, VALUE *argv, VALUE obj,
}
fsolve = &gsl_linalg_L_solve_T;
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operation");
break;
@@ -1379,7 +1394,7 @@ static VALUE rb_gsl_linalg_QRLQ_RLsolve(int argc, VALUE *argv, VALUE obj,
}
static VALUE rb_gsl_linalg_QRLQ_RLsvx(int argc, VALUE *argv, VALUE obj,
- int flag)
+ int flag)
{
gsl_matrix *QR = NULL, *mtmp;
gsl_vector *x = NULL, *tau = NULL;
@@ -1424,18 +1439,17 @@ static VALUE rb_gsl_linalg_QRLQ_RLsvx(int argc, VALUE *argv, VALUE obj,
}
fsolve = &gsl_linalg_QR_Rsvx;
break;
- /*
- case LINALG_R_SVX:
- if (CLASS_OF(omatrix) != cgsl_matrix_QR) {
- QR = make_matrix_clone(mtmp);
- tau = gsl_vector_alloc(QR->size1);
- gsl_linalg_QR_decomp(QR, tau);
- flagq = 1;
- }
- fsolve = &gsl_linalg_R_svx;
- break;
- */
-#ifdef GSL_1_6_LATER
+ /*
+case LINALG_R_SVX:
+ if (CLASS_OF(omatrix) != cgsl_matrix_QR) {
+ QR = make_matrix_clone(mtmp);
+ tau = gsl_vector_alloc(QR->size1);
+ gsl_linalg_QR_decomp(QR, tau);
+ flagq = 1;
+ }
+ fsolve = &gsl_linalg_R_svx;
+ break;
+ */
case LINALG_LQ_LSVX:
if (CLASS_OF(omatrix) != cgsl_matrix_LQ) {
QR = make_matrix_clone(mtmp);
@@ -1445,7 +1459,6 @@ static VALUE rb_gsl_linalg_QRLQ_RLsvx(int argc, VALUE *argv, VALUE obj,
}
fsolve = &gsl_linalg_LQ_Lsvx_T;
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operation");
break;
@@ -1475,12 +1488,11 @@ static VALUE rb_gsl_linalg_R_solve(int argc, VALUE *argv, VALUE obj)
/* singleton */
static VALUE rb_gsl_linalg_QR_QRsolve(int argc, VALUE *argv, VALUE obj,
- int flag)
+ int flag)
{
return rb_gsl_linalg_QRLQ_QRLQsolve(argc, argv, obj, LINALG_QR_DECOMP);
}
-#ifdef GSL_1_6_LATER
static VALUE rb_gsl_linalg_LQ_Lsolve(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QRLQ_RLsolve(argc, argv, obj, LINALG_LQ_LSOLVE);
@@ -1498,14 +1510,13 @@ static VALUE rb_gsl_linalg_L_solve(int argc, VALUE *argv, VALUE obj)
/* singleton */
static VALUE rb_gsl_linalg_LQ_LQsolve(int argc, VALUE *argv, VALUE obj,
- int flag)
+ int flag)
{
return rb_gsl_linalg_QRLQ_QRLQsolve(argc, argv, obj, LINALG_LQ_DECOMP);
}
-#endif
static VALUE rb_gsl_linalg_QRLQ_update(VALUE obj, VALUE qq, VALUE rr, VALUE ww,
- VALUE vv, int flag)
+ VALUE vv, int flag)
{
gsl_matrix *Q = NULL, *R = NULL;
gsl_vector *w = NULL, *v = NULL;
@@ -1520,11 +1531,9 @@ static VALUE rb_gsl_linalg_QRLQ_update(VALUE obj, VALUE qq, VALUE rr, VALUE ww,
case LINALG_QR_DECOMP:
status = gsl_linalg_QR_update(Q, R, w, v);
break;
-#ifdef GSL_1_6_LATER
case LINALG_LQ_DECOMP:
status = gsl_linalg_LQ_update(Q, R, w, v);
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operation");
break;
@@ -1534,18 +1543,16 @@ static VALUE rb_gsl_linalg_QRLQ_update(VALUE obj, VALUE qq, VALUE rr, VALUE ww,
/* singleton */
static VALUE rb_gsl_linalg_QR_update(VALUE obj, VALUE qq, VALUE rr, VALUE ww,
- VALUE vv)
+ VALUE vv)
{
return rb_gsl_linalg_QRLQ_update(obj, qq, rr, ww, vv, LINALG_QR_DECOMP);
}
-#ifdef GSL_1_6_LATER
static VALUE rb_gsl_linalg_LQ_update(VALUE obj, VALUE qq, VALUE rr, VALUE ww,
- VALUE vv)
+ VALUE vv)
{
return rb_gsl_linalg_QRLQ_update(obj, qq, rr, ww, vv, LINALG_LQ_DECOMP);
}
-#endif
/******/
enum {
@@ -1564,7 +1571,7 @@ static VALUE rb_gsl_linalg_QRLQPT_decomp(int argc, VALUE *argv, VALUE obj, int f
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
vA = argv[0];
break;
default:
@@ -1585,14 +1592,12 @@ static VALUE rb_gsl_linalg_QRLQPT_decomp(int argc, VALUE *argv, VALUE obj, int f
vp = Data_Wrap_Struct(cgsl_permutation, 0, gsl_permutation_free, p);
gsl_linalg_QRPT_decomp(QR, tau, p, &signum, norm);
break;
-#ifdef GSL_1_6_LATER
case LINALG_PTLQ:
vQR = Data_Wrap_Struct(cgsl_matrix_PTLQ, 0, gsl_matrix_free, QR);
vtau = Data_Wrap_Struct(cgsl_vector_tau, 0, gsl_vector_free, tau);
vp = Data_Wrap_Struct(cgsl_permutation, 0, gsl_permutation_free, p);
gsl_linalg_PTLQ_decomp(QR, tau, p, &signum, norm);
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operation");
break;
@@ -1612,7 +1617,7 @@ static VALUE rb_gsl_linalg_QRLQPT_decomp_bang(int argc, VALUE *argv, VALUE obj,
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
vA = argv[0];
break;
default:
@@ -1632,14 +1637,12 @@ static VALUE rb_gsl_linalg_QRLQPT_decomp_bang(int argc, VALUE *argv, VALUE obj,
vp = Data_Wrap_Struct(cgsl_permutation, 0, gsl_permutation_free, p);
gsl_linalg_QRPT_decomp(A, tau, p, &signum, norm);
break;
-#ifdef GSL_1_6_LATER
case LINALG_PTLQ:
RBGSL_SET_CLASS(vA, cgsl_matrix_PTLQ);
vtau = Data_Wrap_Struct(cgsl_vector_tau, 0, gsl_vector_free, tau);
vp = Data_Wrap_Struct(cgsl_permutation, 0, gsl_permutation_free, p);
gsl_linalg_PTLQ_decomp(A, tau, p, &signum, norm);
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operation");
break;
@@ -1658,7 +1661,6 @@ static VALUE rb_gsl_linalg_QRPT_decomp_bang(int argc, VALUE *argv, VALUE obj)
return rb_gsl_linalg_QRLQPT_decomp_bang(argc, argv, obj, LINALG_QRPT);
}
-#ifdef GSL_1_6_LATER
static VALUE rb_gsl_linalg_PTLQ_decomp(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QRLQPT_decomp(argc, argv, obj, LINALG_PTLQ);
@@ -1668,7 +1670,6 @@ static VALUE rb_gsl_linalg_PTLQ_decomp_bang(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QRLQPT_decomp_bang(argc, argv, obj, LINALG_PTLQ);
}
-#endif
static VALUE rb_gsl_linalg_QRLQPT_decomp2(int argc, VALUE *argv, VALUE obj,int flag)
{
@@ -1706,13 +1707,11 @@ static VALUE rb_gsl_linalg_QRLQPT_decomp2(int argc, VALUE *argv, VALUE obj,int f
vR = Data_Wrap_Struct(cgsl_matrix_R, 0, gsl_matrix_free, R);
gsl_linalg_QRPT_decomp2(A, Q, R, tau, p, &signum, norm);
break;
-#ifdef GSL_1_6_LATER
case LINALG_PTLQ:
vR = Data_Wrap_Struct(cgsl_matrix_L, 0, gsl_matrix_free, R);
vQ = Data_Wrap_Struct(cgsl_matrix_Q, 0, gsl_matrix_free, Q);
gsl_linalg_PTLQ_decomp2(A, Q, R, tau, p, &signum, norm);
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operation");
}
@@ -1725,33 +1724,29 @@ static VALUE rb_gsl_linalg_QRPT_decomp2(int argc, VALUE *argv, VALUE obj)
return rb_gsl_linalg_QRLQPT_decomp2(argc, argv, obj, LINALG_QRPT);
}
-#ifdef GSL_1_6_LATER
static VALUE rb_gsl_linalg_PTLQ_decomp2(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QRLQPT_decomp2(argc, argv, obj, LINALG_PTLQ);
}
-#endif
-#ifdef GSL_1_6_LATER
int gsl_linalg_PTLQ_solve_T(const gsl_matrix * QR, const gsl_vector * tau,
- const gsl_permutation * p, const gsl_vector * b,
- gsl_vector * x);
+ const gsl_permutation * p, const gsl_vector * b,
+ gsl_vector * x);
int gsl_linalg_PTLQ_svx_T(const gsl_matrix * LQ,
- const gsl_vector * tau,
- const gsl_permutation * p,
- gsl_vector * x);
+ const gsl_vector * tau,
+ const gsl_permutation * p,
+ gsl_vector * x);
int gsl_linalg_PTLQ_LQsolve_T (const gsl_matrix * Q, const gsl_matrix * L,
- const gsl_permutation * p,
- const gsl_vector * b,
- gsl_vector * x);
+ const gsl_permutation * p,
+ const gsl_vector * b,
+ gsl_vector * x);
int gsl_linalg_PTLQ_Lsolve_T (const gsl_matrix * LQ,
- const gsl_permutation * p,
- const gsl_vector * b,
- gsl_vector * x);
+ const gsl_permutation * p,
+ const gsl_vector * b,
+ gsl_vector * x);
int gsl_linalg_PTLQ_Lsvx_T (const gsl_matrix * LQ,
- const gsl_permutation * p,
- gsl_vector * x);
-#endif
+ const gsl_permutation * p,
+ gsl_vector * x);
static VALUE rb_gsl_linalg_QRLQPT_solve(int argc, VALUE *argv, VALUE obj, int flag)
{
@@ -1762,21 +1757,19 @@ static VALUE rb_gsl_linalg_QRLQPT_solve(int argc, VALUE *argv, VALUE obj, int fl
VALUE vtmp, klass;
size_t size0;
int (*fdecomp)(gsl_matrix*, gsl_vector*, gsl_permutation*, int *, gsl_vector*);
- int (*fsolve)(const gsl_matrix*, const gsl_vector*, const gsl_permutation*,
- const gsl_vector*, gsl_vector *);
+ int (*fsolve)(const gsl_matrix*, const gsl_vector*, const gsl_permutation*,
+ const gsl_vector*, gsl_vector *);
switch (flag) {
case LINALG_QRPT:
klass = cgsl_matrix_QRPT;
fdecomp = &gsl_linalg_QRPT_decomp;
fsolve = &gsl_linalg_QRPT_solve;
break;
-#ifdef GSL_1_6_LATER
case LINALG_PTLQ:
klass = cgsl_matrix_PTLQ;
fdecomp = &gsl_linalg_PTLQ_decomp;
fsolve = &gsl_linalg_PTLQ_solve_T;
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operation");
break;
@@ -1794,11 +1787,11 @@ static VALUE rb_gsl_linalg_QRLQPT_solve(int argc, VALUE *argv, VALUE obj, int fl
}
CHECK_MATRIX(vtmp);
if (CLASS_OF(vtmp) == klass) {
- if (argc-itmp != 3) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for %d)",
- argc, 4-itmp);
+ if (argc-itmp != 3) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for %d)",
+ argc, 4-itmp);
CHECK_VECTOR(argv[itmp]);
- if (CLASS_OF(argv[itmp]) != cgsl_vector_tau)
+ if (CLASS_OF(argv[itmp]) != cgsl_vector_tau)
rb_raise(rb_eTypeError, "not a tau vector");
CHECK_PERMUTATION(argv[itmp+1]);
Data_Get_Struct(argv[itmp], gsl_vector, tau);
@@ -1807,8 +1800,8 @@ static VALUE rb_gsl_linalg_QRLQPT_solve(int argc, VALUE *argv, VALUE obj, int fl
size0 = GSL_MIN(QR->size1, QR->size2);
itmp += 2;
} else {
- if (argc-itmp != 1) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for %d)", argc, 2-itmp);
+ if (argc-itmp != 1) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for %d)", argc, 2-itmp);
Data_Get_Struct(vtmp, gsl_matrix, A);
QR = make_matrix_clone(A);
size0 = GSL_MIN(QR->size1, QR->size2);
@@ -1842,12 +1835,10 @@ static VALUE rb_gsl_linalg_QRPT_solve(int argc, VALUE *argv, VALUE obj)
return rb_gsl_linalg_QRLQPT_solve(argc, argv, obj, LINALG_QRPT);
}
-#ifdef GSL_1_6_LATER
static VALUE rb_gsl_linalg_PTLQ_solve(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QRLQPT_solve(argc, argv, obj, LINALG_PTLQ);
}
-#endif
static VALUE rb_gsl_linalg_QRLQPT_svx(int argc, VALUE *argv, VALUE obj, int flag)
{
@@ -1858,21 +1849,19 @@ static VALUE rb_gsl_linalg_QRLQPT_svx(int argc, VALUE *argv, VALUE obj, int flag
VALUE vtmp, klass;
size_t size0;
int (*fdecomp)(gsl_matrix*, gsl_vector*, gsl_permutation*, int *, gsl_vector*);
- int (*fsvx)(const gsl_matrix*, const gsl_vector*, const gsl_permutation*,
- gsl_vector *);
+ int (*fsvx)(const gsl_matrix*, const gsl_vector*, const gsl_permutation*,
+ gsl_vector *);
switch (flag) {
case LINALG_QRPT:
klass = cgsl_matrix_QRPT;
fdecomp = &gsl_linalg_QRPT_decomp;
fsvx = &gsl_linalg_QRPT_svx;
break;
-#ifdef GSL_1_6_LATER
case LINALG_PTLQ:
klass = cgsl_matrix_PTLQ;
fdecomp = &gsl_linalg_PTLQ_decomp;
fsvx = &gsl_linalg_PTLQ_svx_T;
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operation");
break;
@@ -1881,7 +1870,7 @@ static VALUE rb_gsl_linalg_QRLQPT_svx(int argc, VALUE *argv, VALUE obj, int flag
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
vtmp = argv[0];
itmp = 1;
break;
@@ -1892,11 +1881,11 @@ static VALUE rb_gsl_linalg_QRLQPT_svx(int argc, VALUE *argv, VALUE obj, int flag
}
CHECK_MATRIX(vtmp);
if (CLASS_OF(vtmp) == klass) {
- if (argc-itmp != 3) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for %d)",
- argc, 3+itmp);
+ if (argc-itmp != 3) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for %d)",
+ argc, 3+itmp);
CHECK_VECTOR(argv[itmp]);
- if (CLASS_OF(argv[itmp]) != cgsl_vector_tau)
+ if (CLASS_OF(argv[itmp]) != cgsl_vector_tau)
rb_raise(rb_eTypeError, "not a tau vector");
CHECK_PERMUTATION(argv[itmp+1]);
Data_Get_Struct(argv[itmp], gsl_vector, tau);
@@ -1905,8 +1894,8 @@ static VALUE rb_gsl_linalg_QRLQPT_svx(int argc, VALUE *argv, VALUE obj, int flag
size0 = GSL_MIN(QR->size1, QR->size2);
itmp += 2;
} else {
- if (argc-itmp != 1) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for %d)", argc, 2+itmp);
+ if (argc-itmp != 1) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for %d)", argc, 2+itmp);
Data_Get_Struct(vtmp, gsl_matrix, A);
QR = make_matrix_clone(A);
size0 = GSL_MIN(QR->size1, QR->size2);
@@ -1933,36 +1922,32 @@ static VALUE rb_gsl_linalg_QRPT_svx(int argc, VALUE *argv, VALUE obj)
return rb_gsl_linalg_QRLQPT_svx(argc, argv, obj, LINALG_QRPT);
}
-#ifdef GSL_1_6_LATER
static VALUE rb_gsl_linalg_PTLQ_svx(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QRLQPT_svx(argc, argv, obj, LINALG_PTLQ);
}
-#endif
/* singleton */
-static VALUE rb_gsl_linalg_QRLQPT_QRLQsolve(VALUE obj, VALUE qq, VALUE rr,
- VALUE pp, VALUE bb, int flag)
+static VALUE rb_gsl_linalg_QRLQPT_QRLQsolve(VALUE obj, VALUE qq, VALUE rr,
+ VALUE pp, VALUE bb, int flag)
{
gsl_matrix *Q = NULL, *R = NULL;
gsl_vector *b = NULL, *x = NULL;
gsl_permutation *p = NULL;
int flagb = 0;
- int (*fsolve)(const gsl_matrix*, const gsl_matrix*, const gsl_permutation*,
- const gsl_vector*, gsl_vector*);
+ int (*fsolve)(const gsl_matrix*, const gsl_matrix*, const gsl_permutation*,
+ const gsl_vector*, gsl_vector*);
switch (flag) {
case LINALG_QRPT:
if (CLASS_OF(qq) != cgsl_matrix_Q) rb_raise(rb_eTypeError, "not a Q matrix");
if (CLASS_OF(rr) != cgsl_matrix_R) rb_raise(rb_eTypeError, "not a R matrix");
fsolve = &gsl_linalg_QRPT_QRsolve;
break;
-#ifdef GSL_1_6_LATER
case LINALG_PTLQ:
if (CLASS_OF(qq) != cgsl_matrix_Q) rb_raise(rb_eTypeError, "not a Q matrix");
if (CLASS_OF(rr) != cgsl_matrix_L) rb_raise(rb_eTypeError, "not a L matrix");
fsolve = &gsl_linalg_PTLQ_LQsolve_T;
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operation");
break;
@@ -1984,23 +1969,21 @@ static VALUE rb_gsl_linalg_QRLQPT_QRLQsolve(VALUE obj, VALUE qq, VALUE rr,
return Data_Wrap_Struct(cgsl_vector_col, 0, gsl_vector_free, x);
}
-static VALUE rb_gsl_linalg_QRPT_QRsolve(VALUE obj, VALUE qq, VALUE rr,
- VALUE pp, VALUE bb)
+static VALUE rb_gsl_linalg_QRPT_QRsolve(VALUE obj, VALUE qq, VALUE rr,
+ VALUE pp, VALUE bb)
{
return rb_gsl_linalg_QRLQPT_QRLQsolve(obj, qq, rr, pp, bb, LINALG_QRPT);
}
-#ifdef GSL_1_6_LATER
-static VALUE rb_gsl_linalg_PTLQ_LQsolve(VALUE obj, VALUE qq, VALUE rr,
- VALUE pp, VALUE bb)
+static VALUE rb_gsl_linalg_PTLQ_LQsolve(VALUE obj, VALUE qq, VALUE rr,
+ VALUE pp, VALUE bb)
{
return rb_gsl_linalg_QRLQPT_QRLQsolve(obj, qq, rr, pp, bb, LINALG_PTLQ);
}
-#endif
/* singleton */
-static VALUE rb_gsl_linalg_QRLQPT_update(VALUE obj, VALUE qq, VALUE rr,
- VALUE pp, VALUE ww, VALUE vv, int flag)
+static VALUE rb_gsl_linalg_QRLQPT_update(VALUE obj, VALUE qq, VALUE rr,
+ VALUE pp, VALUE ww, VALUE vv, int flag)
{
gsl_matrix *Q = NULL, *R = NULL;
gsl_vector *w = NULL, *v = NULL;
@@ -2010,12 +1993,10 @@ static VALUE rb_gsl_linalg_QRLQPT_update(VALUE obj, VALUE qq, VALUE rr,
if (CLASS_OF(qq) != cgsl_matrix_Q) rb_raise(rb_eTypeError, "not a Q matrix");
if (CLASS_OF(rr) != cgsl_matrix_R) rb_raise(rb_eTypeError, "not a R matrix");
break;
-#ifdef GSL_1_6_LATER
case LINALG_PTLQ:
if (CLASS_OF(qq) != cgsl_matrix_Q) rb_raise(rb_eTypeError, "not a Q matrix");
if (CLASS_OF(rr) != cgsl_matrix_L) rb_raise(rb_eTypeError, "not a L matrix");
break;
-#endif
}
CHECK_PERMUTATION(pp);
Data_Get_Struct(qq, gsl_matrix, Q);
@@ -2027,28 +2008,24 @@ static VALUE rb_gsl_linalg_QRLQPT_update(VALUE obj, VALUE qq, VALUE rr,
case LINALG_QRPT:
gsl_linalg_QRPT_update(Q, R, p, w, v);
break;
-#ifdef GSL_1_6_LATER
case LINALG_PTLQ:
gsl_linalg_PTLQ_update(Q, R, p, w, v);
break;
-#endif
}
return obj;
}
-static VALUE rb_gsl_linalg_QRPT_update(VALUE obj, VALUE qq, VALUE rr,
- VALUE pp, VALUE ww, VALUE vv)
+static VALUE rb_gsl_linalg_QRPT_update(VALUE obj, VALUE qq, VALUE rr,
+ VALUE pp, VALUE ww, VALUE vv)
{
return rb_gsl_linalg_QRLQPT_update(obj, qq, rr, pp, ww, vv, LINALG_QRPT);
}
-#ifdef GSL_1_6_LATER
-static VALUE rb_gsl_linalg_PTLQ_update(VALUE obj, VALUE qq, VALUE rr,
- VALUE pp, VALUE ww, VALUE vv)
+static VALUE rb_gsl_linalg_PTLQ_update(VALUE obj, VALUE qq, VALUE rr,
+ VALUE pp, VALUE ww, VALUE vv)
{
return rb_gsl_linalg_QRLQPT_update(obj, qq, rr, pp, ww, vv, LINALG_PTLQ);
}
-#endif
static VALUE rb_gsl_linalg_QRLQPT_RLsolve(int argc, VALUE *argv, VALUE obj, int flag)
{
@@ -2057,19 +2034,17 @@ static VALUE rb_gsl_linalg_QRLQPT_RLsolve(int argc, VALUE *argv, VALUE obj, int
gsl_permutation *p = NULL;
int itmp, flagb = 0;
VALUE vtmp, klass;
- int (*fsolve)(const gsl_matrix*, const gsl_permutation*, const gsl_vector*,
- gsl_vector*);
+ int (*fsolve)(const gsl_matrix*, const gsl_permutation*, const gsl_vector*,
+ gsl_vector*);
switch (flag) {
case LINALG_QRPT:
klass = cgsl_matrix_QRPT;
fsolve = &gsl_linalg_QRPT_Rsolve;
break;
-#ifdef GSL_1_6_LATER
case LINALG_PTLQ:
klass = cgsl_matrix_PTLQ;
fsolve = &gsl_linalg_PTLQ_Lsolve_T;
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operation");
break;
@@ -2077,7 +2052,7 @@ static VALUE rb_gsl_linalg_QRLQPT_RLsolve(int argc, VALUE *argv, VALUE obj, int
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
vtmp = argv[0];
itmp = 1;
break;
@@ -2113,12 +2088,11 @@ static VALUE rb_gsl_linalg_QRPT_Rsolve(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QRLQPT_RLsolve(argc, argv, obj, LINALG_QRPT);
}
-#ifdef GSL_1_6_LATER
+
static VALUE rb_gsl_linalg_PTLQ_Lsolve(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QRLQPT_RLsolve(argc, argv, obj, LINALG_PTLQ);
}
-#endif
static VALUE rb_gsl_linalg_QRLQPT_RLsvx(int argc, VALUE *argv, VALUE obj, int flag)
{
@@ -2133,11 +2107,9 @@ static VALUE rb_gsl_linalg_QRLQPT_RLsvx(int argc, VALUE *argv, VALUE obj, int fl
klass = cgsl_matrix_QRPT;
fsvx = &gsl_linalg_QRPT_Rsvx;
break;
-#ifdef GSL_1_6_LATER
case LINALG_PTLQ:
klass = cgsl_matrix_PTLQ;
fsvx = &gsl_linalg_PTLQ_Lsvx_T;
-#endif
default:
rb_raise(rb_eRuntimeError, "unknown operation");
break;
@@ -2145,7 +2117,7 @@ static VALUE rb_gsl_linalg_QRLQPT_RLsvx(int argc, VALUE *argv, VALUE obj, int fl
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
vtmp = argv[0];
itmp = 1;
break;
@@ -2178,12 +2150,11 @@ static VALUE rb_gsl_linalg_QRPT_Rsvx(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QRLQPT_RLsvx(argc, argv, obj, LINALG_QRPT);
}
-#ifdef GSL_1_6_LATER
+
static VALUE rb_gsl_linalg_PTLQ_Lsvx(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_linalg_QRLQPT_RLsvx(argc, argv, obj, LINALG_PTLQ);
}
-#endif
/*******/
#ifdef HAVE_NARRAY_H
@@ -2266,11 +2237,11 @@ static VALUE rb_gsl_linalg_SV_decomp(int argc, VALUE *argv, VALUE obj)
CHECK_VECTOR(argv[1]);
Data_Get_Struct(argv[1], gsl_vector, w);
flag = 0;
- /* no break, do next */
+ /* no break, do next */
case 1:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv[0]))
- return rb_gsl_linalg_SV_decomp_narray(argc, argv, obj);
+ return rb_gsl_linalg_SV_decomp_narray(argc, argv, obj);
#endif
CHECK_MATRIX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix, A);
@@ -2317,7 +2288,7 @@ static VALUE rb_gsl_linalg_SV_decomp_mod(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError,
- "wrong number of argument (%d for 1)", argc);
+ "wrong number of argument (%d for 1)", argc);
CHECK_MATRIX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix, A);
break;
@@ -2347,10 +2318,10 @@ static VALUE rb_gsl_linalg_SV_decomp_jacobi(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError,
- "wrong number of argument (%d for 1)", argc);
+ "wrong number of argument (%d for 1)", argc);
#ifdef HAVE_NARRAY_H
- if (NA_IsNArray(argv[0]))
- return rb_gsl_linalg_SV_decomp_jacobi_narray(argc, argv, obj);
+ if (NA_IsNArray(argv[0]))
+ return rb_gsl_linalg_SV_decomp_jacobi_narray(argc, argv, obj);
#endif
CHECK_MATRIX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix, A);
@@ -2374,7 +2345,7 @@ static VALUE rb_gsl_linalg_SV_solve(int argc, VALUE *argv, VALUE obj)
gsl_matrix *A = NULL, *U = NULL, *V = NULL;
gsl_vector *S = NULL, *b = NULL, *x = NULL;
int flagb = 0, flagv = 0;
-
+
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc < 1) rb_raise(rb_eArgError, "too few arguments.");
@@ -2385,35 +2356,35 @@ static VALUE rb_gsl_linalg_SV_solve(int argc, VALUE *argv, VALUE obj)
CHECK_MATRIX(argv[0]);
if (CLASS_OF(argv[0]) == cgsl_matrix_U) {
- if (argc != 4) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for 4)", argc);
+ if (argc != 4) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for 4)", argc);
Data_Get_Struct(argv[0], gsl_matrix, U);
CHECK_MATRIX(argv[1]);
- if (CLASS_OF(argv[1]) != cgsl_matrix_V)
- rb_raise(rb_eTypeError, "not a V matrix");
+ if (CLASS_OF(argv[1]) != cgsl_matrix_V)
+ rb_raise(rb_eTypeError, "not a V matrix");
Data_Get_Struct(argv[1], gsl_matrix, V);
CHECK_VECTOR(argv[2]);
- if (CLASS_OF(argv[2]) != cgsl_vector_S)
- rb_raise(rb_eTypeError, "not a S vector");
+ if (CLASS_OF(argv[2]) != cgsl_vector_S)
+ rb_raise(rb_eTypeError, "not a S vector");
Data_Get_Struct(argv[2], gsl_vector, S);
if (TYPE(argv[3]) == T_ARRAY) {
- b = make_cvector_from_rarray(argv[3]);
- flagb = 1;
+ b = make_cvector_from_rarray(argv[3]);
+ flagb = 1;
} else {
- CHECK_VECTOR(argv[3]);
- Data_Get_Struct(argv[3], gsl_vector, b);
+ CHECK_VECTOR(argv[3]);
+ Data_Get_Struct(argv[3], gsl_vector, b);
}
} else {
- if (argc != 2) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for 2)", argc);
+ if (argc != 2) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for 2)", argc);
Data_Get_Struct(argv[0], gsl_matrix, A);
U = make_matrix_clone(A);
if (TYPE(argv[1]) == T_ARRAY) {
- b = make_cvector_from_rarray(argv[1]);
- flagb = 1;
+ b = make_cvector_from_rarray(argv[1]);
+ flagb = 1;
} else {
- CHECK_VECTOR(argv[1]);
- Data_Get_Struct(argv[1], gsl_vector, b);
+ CHECK_VECTOR(argv[1]);
+ Data_Get_Struct(argv[1], gsl_vector, b);
}
S = gsl_vector_alloc(A->size2); /* see manual p 123 */
V = gsl_matrix_alloc(A->size2, A->size2);
@@ -2422,8 +2393,8 @@ static VALUE rb_gsl_linalg_SV_solve(int argc, VALUE *argv, VALUE obj)
}
break;
default:
- if (argc != 1) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for 1)", argc);
+ if (argc != 1) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for 1)", argc);
Data_Get_Struct(obj, gsl_matrix, A);
U = make_matrix_clone(A);
if (TYPE(argv[0]) == T_ARRAY) {
@@ -2439,7 +2410,7 @@ static VALUE rb_gsl_linalg_SV_solve(int argc, VALUE *argv, VALUE obj)
flagv = 1;
break;
}
- // x = gsl_vector_alloc(b->size);
+ // x = gsl_vector_alloc(b->size);
// Bug report #25842
x = gsl_vector_alloc(S->size);
gsl_linalg_SV_solve(U, V, S, b, x);
@@ -2486,8 +2457,8 @@ static VALUE rb_gsl_linalg_cholesky_solve_narray(int argc, VALUE *argv, VALUE ob
x = argv[2];
break;
default:
- rb_raise(rb_eArgError,
- "Usage: Cholesky.solve(chol, b) or Cholesky.solve(chol, b, x)");
+ rb_raise(rb_eArgError,
+ "Usage: Cholesky.solve(chol, b) or Cholesky.solve(chol, b, x)");
break;
}
mv = gsl_matrix_view_array((double*)nm->ptr, nm->shape[1], nm->shape[0]);
@@ -2517,7 +2488,7 @@ static VALUE rb_gsl_linalg_cholesky_decomp(int argc, VALUE *argv, VALUE obj)
switch(TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv[0]))
return rb_gsl_linalg_cholesky_decomp_narray(argc, argv, obj);
@@ -2544,7 +2515,7 @@ static VALUE rb_gsl_linalg_cholesky_solve(int argc, VALUE *argv, VALUE obj)
switch(TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of argument (%d for 2)",
- argc);
+ argc);
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv[0]))
return rb_gsl_linalg_cholesky_solve_narray(argc, argv, obj);
@@ -2554,7 +2525,7 @@ static VALUE rb_gsl_linalg_cholesky_solve(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
vA = obj;
vb = argv[0];
break;
@@ -2592,7 +2563,7 @@ static VALUE rb_gsl_linalg_cholesky_svx(int argc, VALUE *argv, VALUE obj)
switch(TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of argument (%d for 2)",
- argc);
+ argc);
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv[0]))
return rb_gsl_linalg_cholesky_svx_narray(argc, argv, obj);
@@ -2602,7 +2573,7 @@ static VALUE rb_gsl_linalg_cholesky_svx(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
vA = obj;
vb = argv[0];
break;
@@ -2631,7 +2602,7 @@ static VALUE rb_gsl_linalg_symmtd_decomp(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
CHECK_MATRIX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix, Atmp);
break;
@@ -2656,7 +2627,7 @@ static VALUE rb_gsl_linalg_symmtd_decomp2(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
CHECK_MATRIX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix, A);
break;
@@ -2678,14 +2649,14 @@ static VALUE rb_gsl_linalg_symmtd_unpack(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of argument (%d for 2)",
- argc);
+ argc);
CHECK_MATRIX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix, A);
Data_Get_Struct(argv[1], gsl_vector, tau);
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
CHECK_MATRIX(obj);
Data_Get_Struct(obj, gsl_matrix, A);
Data_Get_Struct(argv[0], gsl_vector, tau);
@@ -2711,7 +2682,7 @@ static VALUE rb_gsl_linalg_symmtd_unpack_T(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 2)",
- argc);
+ argc);
CHECK_MATRIX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix, A);
break;
@@ -2739,7 +2710,7 @@ static VALUE rb_gsl_linalg_hermtd_decomp(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
CHECK_MATRIX_COMPLEX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix_complex, Atmp);
break;
@@ -2763,7 +2734,7 @@ static VALUE rb_gsl_linalg_hermtd_decomp2(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
CHECK_MATRIX_COMPLEX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix_complex, A);
break;
@@ -2786,14 +2757,14 @@ static VALUE rb_gsl_linalg_hermtd_unpack(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
CHECK_MATRIX_COMPLEX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix_complex, A);
Data_Get_Struct(argv[1], gsl_vector_complex, tau);
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
CHECK_MATRIX_COMPLEX(obj);
Data_Get_Struct(obj, gsl_matrix_complex, A);
Data_Get_Struct(argv[0], gsl_vector_complex, tau);
@@ -2819,7 +2790,7 @@ static VALUE rb_gsl_linalg_hermtd_unpack_T(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
CHECK_MATRIX_COMPLEX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix_complex, A);
break;
@@ -2851,7 +2822,7 @@ static VALUE rb_gsl_linalg_bidiag_decomp(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
Data_Get_Struct(argv[0], gsl_matrix, Atmp);
break;
default:
@@ -2879,7 +2850,7 @@ static VALUE rb_gsl_linalg_bidiag_decomp2(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
Data_Get_Struct(argv[0], gsl_matrix, A);
break;
default:
@@ -2905,7 +2876,7 @@ static VALUE rb_gsl_linalg_bidiag_unpack(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 3) rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)",
- argc);
+ argc);
CHECK_MATRIX(argv[0]);
CHECK_VECTOR(argv[1]);
CHECK_VECTOR(argv[2]);
@@ -2915,7 +2886,7 @@ static VALUE rb_gsl_linalg_bidiag_unpack(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
CHECK_MATRIX(obj);
CHECK_VECTOR(argv[0]);
CHECK_VECTOR(argv[1]);
@@ -2946,8 +2917,8 @@ static VALUE rb_gsl_linalg_bidiag_unpack2(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
- if (argc != 3) rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)",
- argc);
+ if (argc != 3) rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)",
+ argc);
CHECK_MATRIX(argv[0]);
CHECK_VECTOR(argv[1]);
CHECK_VECTOR(argv[2]);
@@ -2957,7 +2928,7 @@ static VALUE rb_gsl_linalg_bidiag_unpack2(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
CHECK_MATRIX(obj);
CHECK_VECTOR(argv[0]);
CHECK_VECTOR(argv[1]);
@@ -2965,7 +2936,7 @@ static VALUE rb_gsl_linalg_bidiag_unpack2(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(argv[0], gsl_vector, tau_U);
Data_Get_Struct(argv[1], gsl_vector, tau_V);
break;
- }
+ }
V = gsl_matrix_alloc(A->size2, A->size2);
gsl_linalg_bidiag_unpack2(A, tau_U, tau_V, V);
vv = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, V);
@@ -2982,7 +2953,7 @@ static VALUE rb_gsl_linalg_bidiag_unpack_B(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)",
- argc);
+ argc);
CHECK_MATRIX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix, A);
break;
@@ -2990,7 +2961,7 @@ static VALUE rb_gsl_linalg_bidiag_unpack_B(int argc, VALUE *argv, VALUE obj)
CHECK_MATRIX(obj);
Data_Get_Struct(obj, gsl_matrix, A);
break;
- }
+ }
size0 = GSL_MIN(A->size1, A->size2);
d = gsl_vector_alloc(size0);
s = gsl_vector_alloc(size0);
@@ -3101,7 +3072,7 @@ static VALUE rb_gsl_linalg_HH_solve(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of argument (%d for 2)",
- argc);
+ argc);
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv[0]))
return rb_gsl_linalg_HH_solve_narray(argc, argv, obj);
@@ -3111,7 +3082,7 @@ static VALUE rb_gsl_linalg_HH_solve(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
vA = obj;
vb = argv[0];
break;
@@ -3142,13 +3113,13 @@ static VALUE rb_gsl_linalg_HH_solve_bang(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of argument (%d for 2)",
- argc);
+ argc);
vA = argv[0];
vb = argv[1];
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
vA = obj;
vb = argv[0];
break;
@@ -3176,7 +3147,7 @@ static VALUE rb_gsl_linalg_HH_svx(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of argument (%d for 2)",
- argc);
+ argc);
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv[0]))
return rb_gsl_linalg_HH_svx_narray(argc, argv, obj);
@@ -3186,7 +3157,7 @@ static VALUE rb_gsl_linalg_HH_svx(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
vA = obj;
vb = argv[0];
break;
@@ -3214,9 +3185,8 @@ static VALUE rb_gsl_linalg_solve_symm_tridiag(VALUE obj, VALUE dd, VALUE ee, VAL
return Data_Wrap_Struct(cgsl_vector_col, 0, gsl_vector_free, x);
}
-#ifdef GSL_1_2_LATER
static VALUE rb_gsl_linalg_solve_tridiag(VALUE obj, VALUE dd, VALUE ee, VALUE ff,
- VALUE bb)
+ VALUE bb)
{
gsl_vector *b = NULL, *x = NULL, *d = NULL, *e = NULL, *f = NULL;
@@ -3243,8 +3213,8 @@ static VALUE rb_gsl_linalg_solve_symm_cyc_tridiag(VALUE obj, VALUE dd, VALUE ee,
return Data_Wrap_Struct(cgsl_vector_col, 0, gsl_vector_free, x);
}
-static VALUE rb_gsl_linalg_solve_cyc_tridiag(VALUE obj, VALUE dd, VALUE ee,
- VALUE ff, VALUE bb)
+static VALUE rb_gsl_linalg_solve_cyc_tridiag(VALUE obj, VALUE dd, VALUE ee,
+ VALUE ff, VALUE bb)
{
gsl_vector *b = NULL, *x = NULL, *d = NULL, *e = NULL, *f = NULL;
Data_Get_Struct(dd, gsl_vector, d);
@@ -3255,11 +3225,10 @@ static VALUE rb_gsl_linalg_solve_cyc_tridiag(VALUE obj, VALUE dd, VALUE ee,
gsl_linalg_solve_cyc_tridiag(d, e, f, b, x);
return Data_Wrap_Struct(cgsl_vector_col, 0, gsl_vector_free, x);
}
-#endif
static void rb_gsl_linalg_balance_columns_init(int argc, VALUE *argv, VALUE obj,
- VALUE *mat, VALUE *vec,
- gsl_matrix **M, gsl_vector **V)
+ VALUE *mat, VALUE *vec,
+ gsl_matrix **M, gsl_vector **V)
{
gsl_matrix *A = NULL;
gsl_vector *D = NULL;
@@ -3333,92 +3302,6 @@ static VALUE rb_gsl_linalg_balance_columns(int argc, VALUE *argv, VALUE obj)
return rb_ary_new3(2, mat, vec);
}
-#ifdef HAVE_NARRAY_H
-static VALUE rb_gsl_linalg_QR_decomp_narray(int argc, VALUE *argv, VALUE obj)
-{
- struct NARRAY *na;
- gsl_matrix_view mv;
- gsl_vector_view vv;
- int shapem[2], shapev[1];
- VALUE qr, tau;
- if (argc < 1) rb_raise(rb_eArgError, "too few arguments.");
- GetNArray(argv[0], na);
- shapem[0] = na->shape[1];
- shapem[1] = na->shape[1];
- shapev[0] = shapem[0];
- qr = na_make_object(NA_DFLOAT, 2, shapem, CLASS_OF(argv[0]));
- tau = na_make_object(NA_DFLOAT, 1, shapev, cNVector);
- memcpy(NA_PTR_TYPE(qr,double*),na->ptr,sizeof(double)*shapem[0]*shapem[1]);
- mv = gsl_matrix_view_array(NA_PTR_TYPE(qr,double*), shapem[0], shapem[1]);
- vv = gsl_vector_view_array(NA_PTR_TYPE(tau,double*), shapev[0]);
- gsl_linalg_QR_decomp(&mv.matrix, &vv.vector);
- return rb_ary_new3(2, qr, tau);
-}
-
-static VALUE rb_gsl_linalg_QR_unpack_narray(int argc, VALUE *argv, VALUE obj)
-{
- struct NARRAY *m, *tau;
- gsl_matrix_view mv, mq, mr;
- gsl_vector_view vv;
- int shape[2];
- VALUE q, r;
- if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
- GetNArray(argv[0], m);
- GetNArray(argv[1], tau);
- mv = gsl_matrix_view_array((double*)m->ptr, m->shape[1], m->shape[0]);
- vv = gsl_vector_view_array((double*)tau->ptr, tau->shape[0]);
- shape[0] = m->shape[1];
- shape[1] = m->shape[1];
- q = na_make_object(NA_DFLOAT, 2, shape, CLASS_OF(argv[0]));
- shape[0] = m->shape[1];
- shape[1] = m->shape[0];
- r = na_make_object(NA_DFLOAT, 2, shape, CLASS_OF(argv[0]));
- mq = gsl_matrix_view_array(NA_PTR_TYPE(q,double*), m->shape[1], m->shape[1]);
- mr = gsl_matrix_view_array(NA_PTR_TYPE(r,double*), m->shape[1], m->shape[0]);
- // printf("OK 4 %d %d\n", mq.matrix.size1, mr.matrix.size2);
- gsl_linalg_QR_unpack(&mv.matrix, &vv.vector, &mq.matrix, &mr.matrix);
- // printf("OK 5\n");
- return rb_ary_new3(2, q, r);
-}
-
-static VALUE rb_gsl_linalg_QR_solve_narray(int argc, VALUE *argv, VALUE obj)
-{
- struct NARRAY *qr, *tau, *b;
- VALUE x;
- gsl_matrix_view mv;
- gsl_vector_view tv, bv, xv;
- if (argc != 3) rb_raise(rb_eArgError, "Usage: QR.solve(qr, tau, b)");
- GetNArray(argv[0], qr);
- GetNArray(argv[1], tau);
- GetNArray(argv[2], b);
- x = na_make_object(NA_DFLOAT, 1, b->shape, CLASS_OF(argv[2]));
- mv = gsl_matrix_view_array((double*)qr->ptr, qr->shape[1], qr->shape[0]);
- tv = gsl_vector_view_array((double*)tau->ptr, tau->shape[0]);
- bv = gsl_vector_view_array((double*)b->ptr, b->shape[0]);
- xv = gsl_vector_view_array(NA_PTR_TYPE(x,double*), b->shape[0]);
- gsl_linalg_QR_solve(&mv.matrix, &tv.vector, &bv.vector, &xv.vector);
- return x;
-}
-static VALUE rb_gsl_linalg_QR_svx_narray(int argc, VALUE *argv, VALUE obj)
-{
- struct NARRAY *qr, *tau, *b;
- gsl_matrix_view mv;
- gsl_vector_view tv, bv;
- if (argc != 3) rb_raise(rb_eArgError, "Usage: QR.solve(qr, tau, b)");
- GetNArray(argv[0], qr);
- GetNArray(argv[1], tau);
- GetNArray(argv[2], b);
- mv = gsl_matrix_view_array((double*)qr->ptr, qr->shape[1], qr->shape[0]);
- tv = gsl_vector_view_array((double*)tau->ptr, tau->shape[0]);
- bv = gsl_vector_view_array((double*)b->ptr, b->shape[0]);
- gsl_linalg_QR_svx(&mv.matrix, &tv.vector, &bv.vector);
- return argv[2];
-}
-
-#endif
-
-#ifdef GSL_1_9_LATER
static VALUE rb_gsl_linalg_hessenberg_decomp(VALUE module, VALUE AA)
{
gsl_matrix *A = NULL, *Atmp = NULL;
@@ -3500,7 +3383,7 @@ static VALUE rb_gsl_linalg_hesstri_decomp(int argc, VALUE *argv, VALUE module)
break;
case 3:
CHECK_VECTOR(argv[2]);
- Data_Get_Struct(argv[2], gsl_vector, work);
+ Data_Get_Struct(argv[2], gsl_vector, work);
break;
case 4:
CHECK_MATRIX(argv[2]);
@@ -3508,7 +3391,7 @@ static VALUE rb_gsl_linalg_hesstri_decomp(int argc, VALUE *argv, VALUE module)
Data_Get_Struct(argv[2], gsl_matrix, U);
Data_Get_Struct(argv[3], gsl_matrix, V);
flag = 1;
- break;
+ break;
case 5:
CHECK_MATRIX(argv[2]);
CHECK_MATRIX(argv[3]);
@@ -3523,17 +3406,17 @@ static VALUE rb_gsl_linalg_hesstri_decomp(int argc, VALUE *argv, VALUE module)
rb_raise(rb_eArgError, "Wrong number of arguments (%d for 2-55)", argc);
}
CHECK_MATRIX(argv[0]);
- CHECK_MATRIX(argv[1]);
+ CHECK_MATRIX(argv[1]);
Data_Get_Struct(argv[0], gsl_matrix, A);
Data_Get_Struct(argv[1], gsl_matrix, B);
Anew = make_matrix_clone(A);
- Bnew = make_matrix_clone(B);
+ Bnew = make_matrix_clone(B);
if (flag == 1) work = gsl_vector_alloc(A->size1);
gsl_linalg_hesstri_decomp(Anew, Bnew, U, V, work);
if (flag == 1) gsl_vector_free(work);
vH = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Anew);
- vR = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Bnew);
- if (argc == 2 || argc == 3) {
+ vR = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, Bnew);
+ if (argc == 2 || argc == 3) {
ary = rb_ary_new3(2, vH, vR);
} else {
ary = rb_ary_new3(4, vH, vR, vU, vV);
@@ -3553,7 +3436,7 @@ static VALUE rb_gsl_linalg_hesstri_decomp_bang(int argc, VALUE *argv, VALUE modu
break;
case 3:
CHECK_VECTOR(argv[2]);
- Data_Get_Struct(argv[2], gsl_vector, work);
+ Data_Get_Struct(argv[2], gsl_vector, work);
break;
case 4:
CHECK_MATRIX(argv[2]);
@@ -3561,7 +3444,7 @@ static VALUE rb_gsl_linalg_hesstri_decomp_bang(int argc, VALUE *argv, VALUE modu
Data_Get_Struct(argv[2], gsl_matrix, U);
Data_Get_Struct(argv[3], gsl_matrix, V);
flag = 1;
- break;
+ break;
case 5:
CHECK_MATRIX(argv[2]);
CHECK_MATRIX(argv[3]);
@@ -3576,7 +3459,7 @@ static VALUE rb_gsl_linalg_hesstri_decomp_bang(int argc, VALUE *argv, VALUE modu
rb_raise(rb_eArgError, "Wrong number of arguments (%d for 2-55)", argc);
}
CHECK_MATRIX(argv[0]);
- CHECK_MATRIX(argv[1]);
+ CHECK_MATRIX(argv[1]);
Data_Get_Struct(argv[0], gsl_matrix, A);
Data_Get_Struct(argv[1], gsl_matrix, B);
if (flag == 1) work = gsl_vector_alloc(A->size1);
@@ -3584,7 +3467,7 @@ static VALUE rb_gsl_linalg_hesstri_decomp_bang(int argc, VALUE *argv, VALUE modu
if (flag == 1) gsl_vector_free(work);
vH = argv[0];
vR = argv[1];
- if (argc == 2 || argc == 3) {
+ if (argc == 2 || argc == 3) {
ary = rb_ary_new3(2, vH, vR);
} else {
ary = rb_ary_new3(4, vH, vR, vU, vV);
@@ -3610,7 +3493,7 @@ static VALUE rb_gsl_linalg_balance_matrix(int argc, VALUE *argv, VALUE module)
CHECK_VECTOR(argv[1]);
Data_Get_Struct(argv[0], gsl_matrix, A);
Data_Get_Struct(argv[1], gsl_vector, D);
- Anew = make_matrix_clone(A);
+ Anew = make_matrix_clone(A);
vD = argv[1];
break;
default:
@@ -3645,7 +3528,6 @@ static VALUE rb_gsl_linalg_balance_matrix2(int argc, VALUE *argv, VALUE module)
}
return Qtrue;
}
-#endif
void Init_gsl_linalg_complex(VALUE module);
void Init_gsl_linalg(VALUE module)
@@ -3664,9 +3546,7 @@ void Init_gsl_linalg(VALUE module)
VALUE mgsl_linalg_tridiag;
VALUE mgsl_linalg_HH;
VALUE mgsl_linalg_Householder;
-#ifdef GSL_1_9_LATER
VALUE mhessen;
-#endif
mgsl_linalg = rb_define_module_under(module, "Linalg");
mgsl_linalg_LU = rb_define_module_under(mgsl_linalg, "LU");
@@ -3769,7 +3649,7 @@ void Init_gsl_linalg(VALUE module)
rb_define_module_function(mgsl_linalg_QR, "QTvec", rb_gsl_linalg_QR_QTvec, -1);
rb_define_method(cgsl_matrix_QR, "QTvec", rb_gsl_linalg_QR_QTvec, -1);
- rb_define_module_function(mgsl_linalg_QR, "Qvec", rb_gsl_linalg_QR_Qvec, -1);
+ rb_define_module_function(mgsl_linalg_QR, "Qvec", rb_gsl_linalg_QR_Qvec, -1);
rb_define_method(cgsl_matrix_QR, "Qvec", rb_gsl_linalg_QR_Qvec, -1);
rb_define_module_function(mgsl_linalg_QR, "Rsolve", rb_gsl_linalg_QR_Rsolve, -1);
@@ -3795,7 +3675,7 @@ void Init_gsl_linalg(VALUE module)
rb_define_module_function(mgsl_linalg_QRPT, "decomp!", rb_gsl_linalg_QRPT_decomp_bang, -1);
rb_define_method(cgsl_matrix, "QRPT_decomp!", rb_gsl_linalg_QRPT_decomp_bang, -1);
- rb_define_module_function(mgsl_linalg_QRPT, "decomp2", rb_gsl_linalg_QRPT_decomp2, -1);
+ rb_define_module_function(mgsl_linalg_QRPT, "decomp2", rb_gsl_linalg_QRPT_decomp2, -1);
rb_define_method(cgsl_matrix, "QRPT_decomp2", rb_gsl_linalg_QRPT_decomp2, -1);
rb_define_module_function(mgsl_linalg_QRPT, "solve", rb_gsl_linalg_QRPT_solve, -1);
@@ -3854,9 +3734,9 @@ void Init_gsl_linalg(VALUE module)
/*****/
rb_define_module_function(mgsl_linalg_hermtd, "decomp", rb_gsl_linalg_hermtd_decomp, -1);
rb_define_method(cgsl_matrix, "hermtd_decomp", rb_gsl_linalg_hermtd_decomp, -1);
- rb_define_module_function(mgsl_linalg_hermtd, "decomp!", rb_gsl_linalg_hermtd_decomp2, -1);
+ rb_define_module_function(mgsl_linalg_hermtd, "decomp!", rb_gsl_linalg_hermtd_decomp2, -1);
rb_define_method(cgsl_matrix, "hermtd_decomp!", rb_gsl_linalg_hermtd_decomp2, -1);
-
+
rb_define_method(cgsl_matrix_complex, "hermtd_unpack", rb_gsl_linalg_hermtd_unpack, -1);
rb_define_module_function(mgsl_linalg_hermtd, "unpack", rb_gsl_linalg_hermtd_unpack, -1);
rb_define_method(cgsl_matrix_complex, "hermtd_unpack_T", rb_gsl_linalg_hermtd_unpack_T, -1);
@@ -3882,35 +3762,35 @@ void Init_gsl_linalg(VALUE module)
rb_define_module_function(mgsl_linalg, "bidiag_unpack_B", rb_gsl_linalg_bidiag_unpack_B, -1);
rb_define_module_function(mgsl_linalg_bidiag, "unpack_B", rb_gsl_linalg_bidiag_unpack_B, -1);
/*****/
- rb_define_module_function(mgsl_linalg, "householder_transform",
- rb_gsl_linalg_householder_transform, -1);
- rb_define_module_function(mgsl_linalg_Householder, "transform",
- rb_gsl_linalg_householder_transform, -1);
- rb_define_module_function(mgsl_linalg_HH, "transform",
- rb_gsl_linalg_householder_transform, -1);
- rb_define_method(cgsl_vector, "householder_transform",
- rb_gsl_linalg_householder_transform, -1);
-
- rb_define_module_function(mgsl_linalg, "householder_hm",
- rb_gsl_linalg_householder_hm, 3);
- rb_define_module_function(mgsl_linalg_Householder, "hm",
- rb_gsl_linalg_householder_hm, 3);
- rb_define_module_function(mgsl_linalg_HH, "hm",
- rb_gsl_linalg_householder_hm, 3);
-
- rb_define_module_function(mgsl_linalg, "householder_mh",
- rb_gsl_linalg_householder_mh, 3);
- rb_define_module_function(mgsl_linalg_Householder, "mh",
- rb_gsl_linalg_householder_mh, 3);
- rb_define_module_function(mgsl_linalg_HH, "mh",
- rb_gsl_linalg_householder_mh, 3);
-
- rb_define_module_function(mgsl_linalg, "householder_hv",
- rb_gsl_linalg_householder_hv, 3);
- rb_define_module_function(mgsl_linalg_Householder, "hv",
- rb_gsl_linalg_householder_hv, 3);
- rb_define_module_function(mgsl_linalg_HH, "hv",
- rb_gsl_linalg_householder_hv, 3);
+ rb_define_module_function(mgsl_linalg, "householder_transform",
+ rb_gsl_linalg_householder_transform, -1);
+ rb_define_module_function(mgsl_linalg_Householder, "transform",
+ rb_gsl_linalg_householder_transform, -1);
+ rb_define_module_function(mgsl_linalg_HH, "transform",
+ rb_gsl_linalg_householder_transform, -1);
+ rb_define_method(cgsl_vector, "householder_transform",
+ rb_gsl_linalg_householder_transform, -1);
+
+ rb_define_module_function(mgsl_linalg, "householder_hm",
+ rb_gsl_linalg_householder_hm, 3);
+ rb_define_module_function(mgsl_linalg_Householder, "hm",
+ rb_gsl_linalg_householder_hm, 3);
+ rb_define_module_function(mgsl_linalg_HH, "hm",
+ rb_gsl_linalg_householder_hm, 3);
+
+ rb_define_module_function(mgsl_linalg, "householder_mh",
+ rb_gsl_linalg_householder_mh, 3);
+ rb_define_module_function(mgsl_linalg_Householder, "mh",
+ rb_gsl_linalg_householder_mh, 3);
+ rb_define_module_function(mgsl_linalg_HH, "mh",
+ rb_gsl_linalg_householder_mh, 3);
+
+ rb_define_module_function(mgsl_linalg, "householder_hv",
+ rb_gsl_linalg_householder_hv, 3);
+ rb_define_module_function(mgsl_linalg_Householder, "hv",
+ rb_gsl_linalg_householder_hv, 3);
+ rb_define_module_function(mgsl_linalg_HH, "hv",
+ rb_gsl_linalg_householder_hv, 3);
rb_define_module_function(mgsl_linalg_HH, "solve", rb_gsl_linalg_HH_solve, -1);
rb_define_module_function(mgsl_linalg_HH, "solve!", rb_gsl_linalg_HH_solve_bang, -1);
@@ -3925,32 +3805,29 @@ void Init_gsl_linalg(VALUE module)
rb_define_module_function(mgsl_linalg_tridiag, "solve_symm", rb_gsl_linalg_solve_symm_tridiag, 3);
-#ifdef GSL_1_2_LATER
rb_define_module_function(mgsl_linalg, "solve_tridiag", rb_gsl_linalg_solve_tridiag, 4);
rb_define_module_function(mgsl_linalg_tridiag, "solve", rb_gsl_linalg_solve_tridiag, 4);
rb_define_module_function(mgsl_linalg, "solve_symm_cyc_tridiag", rb_gsl_linalg_solve_symm_cyc_tridiag, 3);
rb_define_module_function(mgsl_linalg, "solve_cyc_tridiag", rb_gsl_linalg_solve_cyc_tridiag, 4);
rb_define_module_function(mgsl_linalg_tridiag, "solve_symm_cyc", rb_gsl_linalg_solve_symm_cyc_tridiag, 3);
rb_define_module_function(mgsl_linalg_tridiag, "solve_cyc", rb_gsl_linalg_solve_cyc_tridiag, 4);
-#endif
/*****/
- rb_define_module_function(mgsl_linalg, "balance_columns!",
- rb_gsl_linalg_balance_columns_bang, -1);
- rb_define_method(cgsl_matrix, "balance_columns!",
- rb_gsl_linalg_balance_columns_bang, -1);
- rb_define_module_function(mgsl_linalg, "balance_columns",
- rb_gsl_linalg_balance_columns, -1);
- rb_define_method(cgsl_matrix, "balance_columns",
- rb_gsl_linalg_balance_columns, -1);
+ rb_define_module_function(mgsl_linalg, "balance_columns!",
+ rb_gsl_linalg_balance_columns_bang, -1);
+ rb_define_method(cgsl_matrix, "balance_columns!",
+ rb_gsl_linalg_balance_columns_bang, -1);
+ rb_define_module_function(mgsl_linalg, "balance_columns",
+ rb_gsl_linalg_balance_columns, -1);
+ rb_define_method(cgsl_matrix, "balance_columns",
+ rb_gsl_linalg_balance_columns, -1);
rb_define_alias(cgsl_matrix, "balance", "balance_columns");
rb_define_alias(cgsl_matrix, "balanc", "balance_columns");
/*****/
- Init_gsl_linalg_complex(mgsl_linalg);
+ Init_gsl_linalg_complex(mgsl_linalg);
/** GSL-1.6 **/
-#ifdef GSL_1_6_LATER
rb_define_module_function(mgsl_linalg, "LQ_decomp", rb_gsl_linalg_LQ_decomp, -1);
rb_define_module_function(mgsl_linalg_LQ, "decomp", rb_gsl_linalg_LQ_decomp, -1);
rb_define_method(cgsl_matrix, "LQ_decomp", rb_gsl_linalg_LQ_decomp, -1);
@@ -3999,7 +3876,7 @@ void Init_gsl_linalg(VALUE module)
rb_define_module_function(mgsl_linalg_PTLQ, "decomp!", rb_gsl_linalg_PTLQ_decomp_bang, -1);
rb_define_method(cgsl_matrix, "PTLQ_decomp!", rb_gsl_linalg_PTLQ_decomp_bang, -1);
- rb_define_module_function(mgsl_linalg_PTLQ, "decomp2", rb_gsl_linalg_PTLQ_decomp2, -1);
+ rb_define_module_function(mgsl_linalg_PTLQ, "decomp2", rb_gsl_linalg_PTLQ_decomp2, -1);
rb_define_method(cgsl_matrix, "PTLQ_decomp2", rb_gsl_linalg_PTLQ_decomp2, -1);
rb_define_module_function(mgsl_linalg_PTLQ, "solve_T", rb_gsl_linalg_PTLQ_solve, -1);
@@ -4018,26 +3895,21 @@ void Init_gsl_linalg(VALUE module)
rb_define_module_function(mgsl_linalg_PTLQ, "Lsvx_T", rb_gsl_linalg_PTLQ_Lsvx, -1);
rb_define_method(cgsl_matrix_PTLQ, "Lsvx_T", rb_gsl_linalg_PTLQ_Lsvx, -1);
-#endif
-
-#ifdef GSL_1_9_LATER
mhessen = rb_define_module_under(mgsl_linalg, "Hessenberg");
rb_define_module_function(mhessen, "decomp", rb_gsl_linalg_hessenberg_decomp, 1);
- rb_define_module_function(mgsl_linalg, "heesenberg_decomp", rb_gsl_linalg_hessenberg_decomp, 1);
- rb_define_module_function(mhessen, "unpack", rb_gsl_linalg_hessenberg_unpack, 2);
- rb_define_module_function(mgsl_linalg, "hessenberg_unpack", rb_gsl_linalg_hessenberg_unpack, 2);
- rb_define_module_function(mhessen, "unpack_accum", rb_gsl_linalg_hessenberg_unpack_accum, -1);
- rb_define_module_function(mgsl_linalg, "hessenberg_unpack_accum", rb_gsl_linalg_hessenberg_unpack_accum, -1);
- rb_define_module_function(mhessen, "set_zero", rb_gsl_linalg_hessenberg_set_zero, 1);
- rb_define_module_function(mgsl_linalg, "hessenberg_set_zero", rb_gsl_linalg_hessenberg_set_zero, 1);
-
+ rb_define_module_function(mgsl_linalg, "heesenberg_decomp", rb_gsl_linalg_hessenberg_decomp, 1);
+ rb_define_module_function(mhessen, "unpack", rb_gsl_linalg_hessenberg_unpack, 2);
+ rb_define_module_function(mgsl_linalg, "hessenberg_unpack", rb_gsl_linalg_hessenberg_unpack, 2);
+ rb_define_module_function(mhessen, "unpack_accum", rb_gsl_linalg_hessenberg_unpack_accum, -1);
+ rb_define_module_function(mgsl_linalg, "hessenberg_unpack_accum", rb_gsl_linalg_hessenberg_unpack_accum, -1);
+ rb_define_module_function(mhessen, "set_zero", rb_gsl_linalg_hessenberg_set_zero, 1);
+ rb_define_module_function(mgsl_linalg, "hessenberg_set_zero", rb_gsl_linalg_hessenberg_set_zero, 1);
+
rb_define_module_function(mgsl_linalg, "hesstri_decomp", rb_gsl_linalg_hesstri_decomp, -1);
rb_define_module_function(mgsl_linalg, "hesstri_decomp!", rb_gsl_linalg_hesstri_decomp_bang, -1);
-
- rb_define_module_function(mgsl_linalg, "balance_matrix", rb_gsl_linalg_balance_matrix, -1);
- rb_define_module_function(mgsl_linalg, "balance_matrix!", rb_gsl_linalg_balance_matrix2, -1);
- rb_define_module_function(mgsl_linalg, "balance", rb_gsl_linalg_balance_matrix, -1);
- rb_define_module_function(mgsl_linalg, "balance!", rb_gsl_linalg_balance_matrix2, -1);
-#endif
+ rb_define_module_function(mgsl_linalg, "balance_matrix", rb_gsl_linalg_balance_matrix, -1);
+ rb_define_module_function(mgsl_linalg, "balance_matrix!", rb_gsl_linalg_balance_matrix2, -1);
+ rb_define_module_function(mgsl_linalg, "balance", rb_gsl_linalg_balance_matrix, -1);
+ rb_define_module_function(mgsl_linalg, "balance!", rb_gsl_linalg_balance_matrix2, -1);
}
diff --git a/ext/gsl/linalg_complex.c b/ext/gsl_native/linalg_complex.c
similarity index 84%
rename from ext/gsl/linalg_complex.c
rename to ext/gsl_native/linalg_complex.c
index 3bb47a0..491ad0c 100644
--- a/ext/gsl/linalg_complex.c
+++ b/ext/gsl_native/linalg_complex.c
@@ -18,9 +18,7 @@ EXTERN VALUE mgsl_linalg;
EXTERN VALUE cgsl_complex;
static VALUE cgsl_matrix_complex_LU;
-#ifdef GSL_1_10_LATER
static VALUE cgsl_matrix_complex_C;
-#endif
VALUE rb_gsl_linalg_complex_LU_decomp(int argc, VALUE *argv, VALUE obj)
{
@@ -35,7 +33,7 @@ VALUE rb_gsl_linalg_complex_LU_decomp(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
CHECK_MATRIX_COMPLEX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix_complex, m);
itmp = 1;
@@ -81,7 +79,7 @@ VALUE rb_gsl_linalg_complex_LU_decomp2(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
CHECK_MATRIX_COMPLEX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix_complex, m);
itmp = 1;
@@ -100,13 +98,13 @@ VALUE rb_gsl_linalg_complex_LU_decomp2(int argc, VALUE *argv, VALUE obj)
p = gsl_permutation_alloc(size);
gsl_linalg_complex_LU_decomp(mnew, p, &signum);
obj2 = Data_Wrap_Struct(cgsl_permutation, 0, gsl_permutation_free, p);
- return rb_ary_new3(3, objm ,obj2, INT2FIX(signum));
+ return rb_ary_new3(3, objm,obj2, INT2FIX(signum));
break;
case 1: /* when a permutation object is given */
CHECK_PERMUTATION(argv[itmp]);
Data_Get_Struct(argv[itmp], gsl_permutation, p);
gsl_linalg_complex_LU_decomp(m, p, &signum);
- return rb_ary_new3(3, objm , argv[itmp], INT2FIX(signum));
+ return rb_ary_new3(3, objm, argv[itmp], INT2FIX(signum));
break;
default:
rb_raise(rb_eArgError, "Usage: LU_decomp!() or LU_decomp!(permutation)");
@@ -119,14 +117,13 @@ static VALUE rb_gsl_linalg_complex_LU_solve(int argc, VALUE *argv, VALUE obj)
gsl_permutation *p = NULL;
gsl_vector_complex *b = NULL, *x = NULL;
int flagm = 0, flagx = 0, itmp, signum;
-
+
switch (TYPE(obj)) {
case T_MODULE:
case T_CLASS:
case T_OBJECT:
- if (argc < 2 || argc > 4)
+ if (argc < 2 || argc > 4)
rb_raise(rb_eArgError, "Usage: solve(m, b), solve(m, b, x), solve(lu, p, b), solve(lu, p, b, x)");
-
CHECK_MATRIX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix_complex, m);
if (CLASS_OF(argv[0]) != cgsl_matrix_complex_LU) {
@@ -139,7 +136,7 @@ static VALUE rb_gsl_linalg_complex_LU_solve(int argc, VALUE *argv, VALUE obj)
itmp = 1;
break;
default:
- if (argc < 1 || argc > 3)
+ if (argc < 1 || argc > 3)
rb_raise(rb_eArgError, "Usage: LU_solve(b), LU_solve(p, b), LU_solve(b, x), solve(p, b, x)");
Data_Get_Struct(obj, gsl_matrix_complex, m);
if (CLASS_OF(obj) != cgsl_matrix_complex_LU) {
@@ -185,7 +182,7 @@ static VALUE rb_gsl_linalg_complex_LU_svx(int argc, VALUE *argv, VALUE obj)
gsl_permutation *p = NULL;
gsl_vector_complex *x = NULL;
int flagm = 0, itmp, signum;
-
+
switch (TYPE(obj)) {
case T_MODULE:
case T_CLASS:
@@ -232,8 +229,8 @@ static VALUE rb_gsl_linalg_complex_LU_svx(int argc, VALUE *argv, VALUE obj)
}
static VALUE rb_gsl_linalg_complex_LU_refine(VALUE obj, VALUE vm,
- VALUE lu, VALUE pp, VALUE bb,
- VALUE xx)
+ VALUE lu, VALUE pp, VALUE bb,
+ VALUE xx)
{
gsl_matrix_complex *m = NULL, *mlu = NULL;
gsl_permutation *p = NULL;
@@ -306,7 +303,6 @@ static VALUE rb_gsl_linalg_complex_LU_invert(int argc, VALUE *argv, VALUE obj)
}
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, inverse);
}
-#ifdef GSL_1_1_1_LATER
static VALUE rb_gsl_linalg_complex_LU_det(int argc, VALUE *argv, VALUE obj)
{
gsl_matrix_complex *m = NULL, *mtmp = NULL;
@@ -389,7 +385,7 @@ static VALUE rb_gsl_linalg_complex_LU_lndet(int argc, VALUE *argv, VALUE obj)
if (flagm == 1) {
p = gsl_permutation_alloc(m->size1);
gsl_linalg_complex_LU_decomp(mtmp, p, &signum);
- }
+ }
lndet = gsl_linalg_complex_LU_lndet(mtmp);
if (flagm == 1) {
gsl_matrix_complex_free(mtmp);
@@ -446,9 +442,6 @@ static VALUE rb_gsl_linalg_complex_LU_sgndet(int argc, VALUE *argv, VALUE obj)
}
return vz;
}
-#endif
-
-#ifdef GSL_1_10_LATER
static VALUE rb_gsl_linalg_cholesky_decomp(int argc, VALUE *argv, VALUE obj)
{
@@ -456,7 +449,7 @@ static VALUE rb_gsl_linalg_cholesky_decomp(int argc, VALUE *argv, VALUE obj)
switch(TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
CHECK_MATRIX_COMPLEX(argv[0]);
Data_Get_Struct(argv[0], gsl_matrix_complex, Atmp);
break;
@@ -479,13 +472,13 @@ static VALUE rb_gsl_linalg_cholesky_solve(int argc, VALUE *argv, VALUE obj)
switch(TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of argument (%d for 2)",
- argc);
+ argc);
vA = argv[0];
vb = argv[1];
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
vA = obj;
vb = argv[0];
break;
@@ -519,13 +512,13 @@ static VALUE rb_gsl_linalg_cholesky_svx(int argc, VALUE *argv, VALUE obj)
switch(TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of argument (%d for 2)",
- argc);
+ argc);
vA = argv[0];
vb = argv[1];
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of argument (%d for 1)",
- argc);
+ argc);
vA = obj;
vb = argv[0];
break;
@@ -572,7 +565,7 @@ static VALUE rb_gsl_linalg_complex_householder_hm(VALUE obj, VALUE t, VALUE vv,
gsl_vector_complex *v = NULL;
gsl_complex *tau;
gsl_matrix_complex *A = NULL;
- CHECK_COMPLEX(t);
+ CHECK_COMPLEX(t);
CHECK_VECTOR_COMPLEX(vv);
CHECK_MATRIX_COMPLEX(aa);
Data_Get_Struct(t, gsl_complex, tau);
@@ -587,7 +580,7 @@ static VALUE rb_gsl_linalg_complex_householder_mh(VALUE obj, VALUE t, VALUE vv,
gsl_vector_complex *v = NULL;
gsl_complex *tau;
gsl_matrix_complex *A = NULL;
- CHECK_COMPLEX(t);
+ CHECK_COMPLEX(t);
CHECK_VECTOR_COMPLEX(vv);
CHECK_MATRIX_COMPLEX(aa);
Data_Get_Struct(t, gsl_complex, tau);
@@ -601,7 +594,7 @@ static VALUE rb_gsl_linalg_complex_householder_hv(VALUE obj, VALUE t, VALUE vv,
{
gsl_vector_complex *v = NULL, *w = NULL;
gsl_complex *tau;
- CHECK_COMPLEX(t);
+ CHECK_COMPLEX(t);
CHECK_VECTOR_COMPLEX(vv);
CHECK_VECTOR_COMPLEX(ww);
Data_Get_Struct(t, gsl_complex, tau);
@@ -610,103 +603,97 @@ static VALUE rb_gsl_linalg_complex_householder_hv(VALUE obj, VALUE t, VALUE vv,
gsl_linalg_complex_householder_hv(*tau, v, w);
return ww;
}
-#endif
void Init_gsl_linalg_complex(VALUE module)
{
VALUE mgsl_linalg_complex;
VALUE mgsl_linalg_complex_LU;
-#ifdef GSL_1_10_LATER
VALUE mgsl_linalg_complex_chol, mgsl_linalg_complex_Householder;
-#endif
mgsl_linalg_complex = rb_define_module_under(module, "Complex");
mgsl_linalg_complex_LU = rb_define_module_under(mgsl_linalg_complex, "LU");
cgsl_matrix_complex_LU = rb_define_class_under(mgsl_linalg_complex_LU,
- "LUMatrix", cgsl_matrix_complex);
+ "LUMatrix", cgsl_matrix_complex);
rb_define_singleton_method(mgsl_linalg_complex, "LU_decomp!",
- rb_gsl_linalg_complex_LU_decomp, -1);
+ rb_gsl_linalg_complex_LU_decomp, -1);
rb_define_singleton_method(mgsl_linalg_complex_LU, "decomp!",
- rb_gsl_linalg_complex_LU_decomp, -1);
- rb_define_method(cgsl_matrix_complex, "LU_decomp!",
- rb_gsl_linalg_complex_LU_decomp, -1);
+ rb_gsl_linalg_complex_LU_decomp, -1);
+ rb_define_method(cgsl_matrix_complex, "LU_decomp!",
+ rb_gsl_linalg_complex_LU_decomp, -1);
rb_define_alias(cgsl_matrix_complex, "decomp!", "LU_decomp!");
rb_define_singleton_method(mgsl_linalg_complex, "LU_decomp",
- rb_gsl_linalg_complex_LU_decomp2, -1);
+ rb_gsl_linalg_complex_LU_decomp2, -1);
rb_define_singleton_method(mgsl_linalg_complex_LU, "decomp",
- rb_gsl_linalg_complex_LU_decomp2, -1);
- rb_define_method(cgsl_matrix_complex, "LU_decomp",
- rb_gsl_linalg_complex_LU_decomp2, -1);
+ rb_gsl_linalg_complex_LU_decomp2, -1);
+ rb_define_method(cgsl_matrix_complex, "LU_decomp",
+ rb_gsl_linalg_complex_LU_decomp2, -1);
rb_define_alias(cgsl_matrix_complex, "decomp", "LU_decomp");
rb_define_singleton_method(mgsl_linalg_complex, "LU_solve",
- rb_gsl_linalg_complex_LU_solve, -1);
+ rb_gsl_linalg_complex_LU_solve, -1);
rb_define_singleton_method(mgsl_linalg_complex_LU, "solve",
- rb_gsl_linalg_complex_LU_solve, -1);
- rb_define_method(cgsl_matrix_complex, "LU_solve",
- rb_gsl_linalg_complex_LU_solve, -1);
- rb_define_method(cgsl_matrix_complex_LU, "solve",
- rb_gsl_linalg_complex_LU_solve, -1);
+ rb_gsl_linalg_complex_LU_solve, -1);
+ rb_define_method(cgsl_matrix_complex, "LU_solve",
+ rb_gsl_linalg_complex_LU_solve, -1);
+ rb_define_method(cgsl_matrix_complex_LU, "solve",
+ rb_gsl_linalg_complex_LU_solve, -1);
rb_define_singleton_method(mgsl_linalg_complex, "LU_svx",
- rb_gsl_linalg_complex_LU_svx, -1);
+ rb_gsl_linalg_complex_LU_svx, -1);
rb_define_singleton_method(mgsl_linalg_complex_LU, "svx",
- rb_gsl_linalg_complex_LU_svx, -1);
- rb_define_method(cgsl_matrix_complex, "LU_svx",
- rb_gsl_linalg_complex_LU_svx, -1);
- rb_define_method(cgsl_matrix_complex_LU, "svx",
- rb_gsl_linalg_complex_LU_svx, -1);
+ rb_gsl_linalg_complex_LU_svx, -1);
+ rb_define_method(cgsl_matrix_complex, "LU_svx",
+ rb_gsl_linalg_complex_LU_svx, -1);
+ rb_define_method(cgsl_matrix_complex_LU, "svx",
+ rb_gsl_linalg_complex_LU_svx, -1);
rb_define_singleton_method(mgsl_linalg_complex, "LU_refine",
- rb_gsl_linalg_complex_LU_refine, 5);
+ rb_gsl_linalg_complex_LU_refine, 5);
rb_define_singleton_method(mgsl_linalg_complex_LU, "refine",
- rb_gsl_linalg_complex_LU_refine, 5);
+ rb_gsl_linalg_complex_LU_refine, 5);
rb_define_singleton_method(mgsl_linalg_complex, "LU_invert",
- rb_gsl_linalg_complex_LU_invert, -1);
+ rb_gsl_linalg_complex_LU_invert, -1);
rb_define_singleton_method(mgsl_linalg_complex_LU, "invert",
- rb_gsl_linalg_complex_LU_invert, -1);
- rb_define_method(cgsl_matrix_complex, "LU_invert",
- rb_gsl_linalg_complex_LU_invert, -1);
+ rb_gsl_linalg_complex_LU_invert, -1);
+ rb_define_method(cgsl_matrix_complex, "LU_invert",
+ rb_gsl_linalg_complex_LU_invert, -1);
rb_define_alias(cgsl_matrix_complex, "invert", "LU_invert");
rb_define_alias(cgsl_matrix_complex, "inv", "LU_invert");
- rb_define_method(cgsl_matrix_complex_LU, "invert",
- rb_gsl_linalg_complex_LU_invert, -1);
-
-#ifdef GSL_1_1_1_LATER
- rb_define_singleton_method(mgsl_linalg_complex, "LU_det",
- rb_gsl_linalg_complex_LU_det, -1);
- rb_define_singleton_method(mgsl_linalg_complex_LU, "det",
- rb_gsl_linalg_complex_LU_det, -1);
+ rb_define_method(cgsl_matrix_complex_LU, "invert",
+ rb_gsl_linalg_complex_LU_invert, -1);
+
+ rb_define_singleton_method(mgsl_linalg_complex, "LU_det",
+ rb_gsl_linalg_complex_LU_det, -1);
+ rb_define_singleton_method(mgsl_linalg_complex_LU, "det",
+ rb_gsl_linalg_complex_LU_det, -1);
rb_define_method(cgsl_matrix_complex, "LU_det", rb_gsl_linalg_complex_LU_det, -1);
rb_define_alias(cgsl_matrix_complex, "det", "LU_det");
rb_define_method(cgsl_matrix_complex_LU, "det", rb_gsl_linalg_complex_LU_det, -1);
- rb_define_singleton_method(mgsl_linalg_complex, "LU_lndet",
- rb_gsl_linalg_complex_LU_lndet, -1);
- rb_define_singleton_method(mgsl_linalg_complex_LU, "lndet",
- rb_gsl_linalg_complex_LU_lndet, -1);
+ rb_define_singleton_method(mgsl_linalg_complex, "LU_lndet",
+ rb_gsl_linalg_complex_LU_lndet, -1);
+ rb_define_singleton_method(mgsl_linalg_complex_LU, "lndet",
+ rb_gsl_linalg_complex_LU_lndet, -1);
rb_define_method(cgsl_matrix_complex, "LU_lndet", rb_gsl_linalg_complex_LU_lndet, -1);
rb_define_alias(cgsl_matrix_complex, "lndet", "LU_lndet");
rb_define_method(cgsl_matrix_complex_LU, "LU_lndet", rb_gsl_linalg_complex_LU_lndet, -1);
- rb_define_singleton_method(mgsl_linalg_complex, "LU_sgndet",
- rb_gsl_linalg_complex_LU_sgndet, -1);
- rb_define_singleton_method(mgsl_linalg_complex_LU, "sgndet",
- rb_gsl_linalg_complex_LU_sgndet, -1);
+ rb_define_singleton_method(mgsl_linalg_complex, "LU_sgndet",
+ rb_gsl_linalg_complex_LU_sgndet, -1);
+ rb_define_singleton_method(mgsl_linalg_complex_LU, "sgndet",
+ rb_gsl_linalg_complex_LU_sgndet, -1);
rb_define_method(cgsl_matrix_complex, "LU_sgndet", rb_gsl_linalg_complex_LU_sgndet, -1);
rb_define_alias(cgsl_matrix_complex, "sgndet", "LU_sgndet");
rb_define_method(cgsl_matrix_complex_LU, "LU_sgndet", rb_gsl_linalg_complex_LU_sgndet, -1);
-#endif
-#ifdef GSL_1_10_LATER
mgsl_linalg_complex_chol = rb_define_module_under(mgsl_linalg_complex, "Cholesky");
- cgsl_matrix_complex_C = rb_define_class_under(mgsl_linalg_complex_chol, "CholeskyMatrix", cgsl_matrix_complex);
+ cgsl_matrix_complex_C = rb_define_class_under(mgsl_linalg_complex_chol, "CholeskyMatrix", cgsl_matrix_complex);
rb_define_singleton_method(mgsl_linalg_complex_chol, "decomp", rb_gsl_linalg_cholesky_decomp, -1);
- rb_define_method(cgsl_matrix_complex, "cholesky_decomp", rb_gsl_linalg_cholesky_decomp, -1);
+ rb_define_method(cgsl_matrix_complex, "cholesky_decomp", rb_gsl_linalg_cholesky_decomp, -1);
rb_define_singleton_method(mgsl_linalg_complex_chol, "solve", rb_gsl_linalg_cholesky_solve, -1);
rb_define_method(cgsl_matrix_complex, "cholesky_solve", rb_gsl_linalg_cholesky_solve, -1);
rb_define_method(cgsl_matrix_complex_C, "solve", rb_gsl_linalg_cholesky_solve, -1);
@@ -715,26 +702,25 @@ void Init_gsl_linalg_complex(VALUE module)
rb_define_method(cgsl_matrix_complex_C, "svx", rb_gsl_linalg_cholesky_svx, -1);
mgsl_linalg_complex_Householder = rb_define_module_under(mgsl_linalg_complex, "Householder");
- rb_define_singleton_method(mgsl_linalg_complex, "householder_transform",
- rb_gsl_linalg_complex_householder_transform, -1);
- rb_define_singleton_method(mgsl_linalg_complex_Householder, "transform",
- rb_gsl_linalg_complex_householder_transform, -1);
- rb_define_method(cgsl_vector_complex, "householder_transform",
- rb_gsl_linalg_complex_householder_transform, -1);
-
- rb_define_singleton_method(mgsl_linalg_complex, "householder_hm",
- rb_gsl_linalg_complex_householder_hm, 3);
- rb_define_singleton_method(mgsl_linalg_complex_Householder, "hm",
- rb_gsl_linalg_complex_householder_hm, 3);
-
- rb_define_singleton_method(mgsl_linalg_complex, "householder_mh",
- rb_gsl_linalg_complex_householder_mh, 3);
- rb_define_singleton_method(mgsl_linalg_complex_Householder, "mh",
- rb_gsl_linalg_complex_householder_mh, 3);
-
- rb_define_singleton_method(mgsl_linalg_complex, "householder_hv",
- rb_gsl_linalg_complex_householder_hv, 3);
- rb_define_singleton_method(mgsl_linalg_complex_Householder, "hv",
- rb_gsl_linalg_complex_householder_hv, 3);
-#endif
+ rb_define_singleton_method(mgsl_linalg_complex, "householder_transform",
+ rb_gsl_linalg_complex_householder_transform, -1);
+ rb_define_singleton_method(mgsl_linalg_complex_Householder, "transform",
+ rb_gsl_linalg_complex_householder_transform, -1);
+ rb_define_method(cgsl_vector_complex, "householder_transform",
+ rb_gsl_linalg_complex_householder_transform, -1);
+
+ rb_define_singleton_method(mgsl_linalg_complex, "householder_hm",
+ rb_gsl_linalg_complex_householder_hm, 3);
+ rb_define_singleton_method(mgsl_linalg_complex_Householder, "hm",
+ rb_gsl_linalg_complex_householder_hm, 3);
+
+ rb_define_singleton_method(mgsl_linalg_complex, "householder_mh",
+ rb_gsl_linalg_complex_householder_mh, 3);
+ rb_define_singleton_method(mgsl_linalg_complex_Householder, "mh",
+ rb_gsl_linalg_complex_householder_mh, 3);
+
+ rb_define_singleton_method(mgsl_linalg_complex, "householder_hv",
+ rb_gsl_linalg_complex_householder_hv, 3);
+ rb_define_singleton_method(mgsl_linalg_complex_Householder, "hv",
+ rb_gsl_linalg_complex_householder_hv, 3);
}
diff --git a/ext/gsl/math.c b/ext/gsl_native/math.c
similarity index 92%
rename from ext/gsl/math.c
rename to ext/gsl_native/math.c
index 3577536..69a6bf3 100644
--- a/ext/gsl/math.c
+++ b/ext/gsl_native/math.c
@@ -12,9 +12,6 @@
#include "include/rb_gsl_math.h"
#include "include/rb_gsl_complex.h"
-#ifdef HAVE_NARRAY_H
-#include "narray.h"
-#endif
static void rb_gsl_define_const(VALUE module);
@@ -124,15 +121,15 @@ VALUE rb_gsl_math_complex_eval(gsl_complex (*func)(gsl_complex), VALUE obj)
mnew = gsl_matrix_complex_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
for (j = 0; j < m->size2; j++) {
- gsl_matrix_complex_set(mnew, i, j, (*func)(gsl_matrix_complex_get(m, i, j)));
+ gsl_matrix_complex_set(mnew, i, j, (*func)(gsl_matrix_complex_get(m, i, j)));
}
}
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, mnew);
} else {
- rb_raise(rb_eTypeError,
- "wrong argument type %s "
- " (GSL::Complex or GSL::Vector::Complex expected)",
- rb_class2name(CLASS_OF(obj)));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s "
+ " (GSL::Complex or GSL::Vector::Complex expected)",
+ rb_class2name(CLASS_OF(obj)));
}
}
@@ -140,10 +137,6 @@ static VALUE rb_gsl_math_eval(double (*func)(const double), VALUE xx)
{
VALUE x, ary;
size_t i, size;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- double *ptr1, *ptr2;
-#endif
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
switch (TYPE(xx)) {
case T_FIXNUM:
@@ -165,6 +158,8 @@ static VALUE rb_gsl_math_eval(double (*func)(const double), VALUE xx)
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *na;
+ double *ptr1, *ptr2;
GetNArray(xx, na);
ptr1 = (double*) na->ptr;
size = na->total;
@@ -188,18 +183,14 @@ static VALUE rb_gsl_math_eval(double (*func)(const double), VALUE xx)
}
static VALUE rb_gsl_math_eval2(double (*func)(const double, const double), VALUE xx,
- VALUE yy);
+ VALUE yy);
static VALUE rb_gsl_math_eval2(double (*func)(const double, const double), VALUE xx,
- VALUE yy)
+ VALUE yy)
{
VALUE x, y, ary;
size_t i, j, size;
gsl_vector *v = NULL, *v2 = NULL, *vnew = NULL;
gsl_matrix *m = NULL, *m2 = NULL, *mnew = NULL;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *nax, *nay;
- double *ptr1, *ptr2, *ptr3;
-#endif
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
switch (TYPE(xx)) {
case T_FIXNUM:
@@ -226,6 +217,8 @@ static VALUE rb_gsl_math_eval2(double (*func)(const double, const double), VALUE
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *nax, *nay;
+ double *ptr1, *ptr2, *ptr3;
GetNArray(xx, nax);
GetNArray(yy, nay);
ptr1 = (double*) nax->ptr;
@@ -243,7 +236,7 @@ static VALUE rb_gsl_math_eval2(double (*func)(const double, const double), VALUE
Data_Get_Struct(yy, gsl_vector, v2);
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- gsl_vector_set(vnew, i, (*func)(gsl_vector_get(v, i), gsl_vector_get(v2, i)));
+ gsl_vector_set(vnew, i, (*func)(gsl_vector_get(v, i), gsl_vector_get(v2, i)));
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
} else if (MATRIX_P(xx)) {
@@ -252,15 +245,15 @@ static VALUE rb_gsl_math_eval2(double (*func)(const double, const double), VALUE
Data_Get_Struct(yy, gsl_matrix, m2);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- gsl_matrix_set(mnew, i, j, (*func)(gsl_matrix_get(m, i, j), gsl_matrix_get(m2, i, j)));
- }
+ for (j = 0; j < m->size2; j++) {
+ gsl_matrix_set(mnew, i, j, (*func)(gsl_matrix_get(m, i, j), gsl_matrix_get(m2, i, j)));
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
- rb_raise(rb_eTypeError,
- "wrong argument type %s "
- "(Array or Vector or Matrix expected)", rb_class2name(CLASS_OF(xx)));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s "
+ "(Array or Vector or Matrix expected)", rb_class2name(CLASS_OF(xx)));
}
break;
}
@@ -287,32 +280,32 @@ static VALUE rb_gsl_hypot(VALUE obj, VALUE x, VALUE y)
{
return rb_gsl_math_eval2(gsl_hypot, x, y);
}
-#ifdef GSL_1_10_LATER
+
static VALUE rb_gsl_hypot3(VALUE obj, VALUE x, VALUE y, VALUE z)
{
Need_Float(x);
Need_Float(y);
- Need_Float(z);
+ Need_Float(z);
return rb_float_new(gsl_hypot3(NUM2DBL(x), NUM2DBL(y), NUM2DBL(z)));
}
-#endif
+
static VALUE rb_gsl_acosh(VALUE obj, VALUE x)
{
- if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
+ if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
return rb_gsl_math_complex_eval(gsl_complex_arccosh, x);
return rb_gsl_math_eval(gsl_acosh, x);
}
static VALUE rb_gsl_asinh(VALUE obj, VALUE x)
{
- if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
+ if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
return rb_gsl_math_complex_eval(gsl_complex_arcsinh, x);
return rb_gsl_math_eval(gsl_asinh, x);
}
static VALUE rb_gsl_atanh(VALUE obj, VALUE x)
{
- if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
+ if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
return rb_gsl_math_complex_eval(gsl_complex_arctanh, x);
return rb_gsl_math_eval(gsl_atanh, x);
}
@@ -328,10 +321,6 @@ VALUE rb_gsl_pow(VALUE obj, VALUE xx, VALUE nn)
double n;
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *m = NULL, *mnew = NULL;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- double *ptr1, *ptr2;
-#endif
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
switch (TYPE(xx)) {
case T_FIXNUM:
@@ -353,6 +342,8 @@ VALUE rb_gsl_pow(VALUE obj, VALUE xx, VALUE nn)
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *na;
+ double *ptr1, *ptr2;
n = NUM2DBL(nn);
GetNArray(xx, na);
ptr1 = (double*) na->ptr;
@@ -368,21 +359,21 @@ VALUE rb_gsl_pow(VALUE obj, VALUE xx, VALUE nn)
Data_Get_Struct(xx, gsl_vector, v);
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- gsl_vector_set(vnew, i, pow(gsl_vector_get(v, i), n));
+ gsl_vector_set(vnew, i, pow(gsl_vector_get(v, i), n));
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
- }
+ }
if (MATRIX_P(xx)) {
n = NUM2DBL(nn);
Data_Get_Struct(xx, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- gsl_matrix_set(mnew, i, j, pow(gsl_matrix_get(m, i, j), n));
- }
+ for (j = 0; j < m->size2; j++) {
+ gsl_matrix_set(mnew, i, j, pow(gsl_matrix_get(m, i, j), n));
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
- }
+ }
if (COMPLEX_P(xx) || VECTOR_COMPLEX_P(xx) || MATRIX_COMPLEX_P(xx)) {
argv[0] = xx;
argv[1] = nn;
@@ -402,10 +393,6 @@ static VALUE rb_gsl_pow_int(VALUE obj, VALUE xx, VALUE nn)
int n;
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *m = NULL, *mnew = NULL;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- double *ptr1, *ptr2;
-#endif
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
switch (TYPE(xx)) {
@@ -430,6 +417,8 @@ static VALUE rb_gsl_pow_int(VALUE obj, VALUE xx, VALUE nn)
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *na;
+ double *ptr1, *ptr2;
CHECK_FIXNUM(nn);
n = FIX2INT(nn);
GetNArray(xx, na);
@@ -447,7 +436,7 @@ static VALUE rb_gsl_pow_int(VALUE obj, VALUE xx, VALUE nn)
Data_Get_Struct(xx, gsl_vector, v);
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- gsl_vector_set(vnew, i, gsl_pow_int(gsl_vector_get(v, i), n));
+ gsl_vector_set(vnew, i, gsl_pow_int(gsl_vector_get(v, i), n));
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
} else if (MATRIX_P(xx)) {
@@ -456,9 +445,9 @@ static VALUE rb_gsl_pow_int(VALUE obj, VALUE xx, VALUE nn)
Data_Get_Struct(xx, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- gsl_matrix_set(mnew, i, j, gsl_pow_int(gsl_matrix_get(m, i, j), n));
- }
+ for (j = 0; j < m->size2; j++) {
+ gsl_matrix_set(mnew, i, j, gsl_pow_int(gsl_matrix_get(m, i, j), n));
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else if (COMPLEX_P(xx) || VECTOR_COMPLEX_P(xx) || MATRIX_COMPLEX_P(xx)) {
@@ -556,7 +545,6 @@ static VALUE rb_GSL_MAX(VALUE obj, VALUE aa, VALUE bb)
max = GSL_MAX_DBL(a, b);
if (gsl_fcmp(max, a, 1.0e-10) == 0) return aa;
else return bb;
-
}
static VALUE rb_GSL_MIN(VALUE obj, VALUE aa, VALUE bb)
@@ -587,7 +575,7 @@ static VALUE rb_GSL_MAX_INT(VALUE obj, VALUE aa, VALUE bb)
{
if (TYPE(aa) != T_FIXNUM || TYPE(bb) != T_FIXNUM)
return rb_GSL_MAX(obj, aa, bb);
- else
+ else
return INT2FIX(GSL_MAX_INT(FIX2INT(aa), FIX2INT(bb)));
}
@@ -595,11 +583,10 @@ static VALUE rb_GSL_MIN_INT(VALUE obj, VALUE aa, VALUE bb)
{
if (TYPE(aa) != T_FIXNUM || TYPE(bb) != T_FIXNUM)
return rb_GSL_MIN(obj, aa, bb);
- return
+ return
INT2FIX(GSL_MIN_INT(FIX2INT(aa), FIX2INT(bb)));
}
-#ifdef GSL_1_3_LATER
static VALUE rb_gsl_ldexp(VALUE obj, VALUE x, VALUE e)
{
return rb_float_new(gsl_ldexp(NUM2DBL(x), FIX2INT(e)));
@@ -613,7 +600,6 @@ static VALUE rb_gsl_frexp(VALUE obj, VALUE x)
val = gsl_frexp(NUM2DBL(x), &e);
return rb_ary_new3(2, rb_float_new(val), INT2FIX(e));
}
-#endif
static VALUE rb_gsl_fcmp(int argc, VALUE *argv, VALUE obj)
{
@@ -621,7 +607,7 @@ static VALUE rb_gsl_fcmp(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 3:
epsilon = NUM2DBL(argv[2]);
- /* no break, do next */
+ /* no break, do next */
case 2:
a = NUM2DBL(argv[0]);
b = NUM2DBL(argv[1]);
@@ -641,7 +627,7 @@ static VALUE rb_gsl_equal(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 3:
epsilon = NUM2DBL(argv[2]);
- /* no break, do next */
+ /* no break, do next */
case 2:
a = NUM2DBL(argv[0]);
b = NUM2DBL(argv[1]);
@@ -668,14 +654,12 @@ void Init_gsl_math(VALUE module)
rb_define_module_function(module, "isinf?", rb_gsl_isinf2, 1);
rb_define_module_function(module, "finite", rb_gsl_finite, 1);
rb_define_module_function(module, "finite?", rb_gsl_finite2, 1);
-
+
rb_define_module_function(module, "sqrt", rb_gsl_sqrt, 1);
rb_define_module_function(module, "log1p", rb_gsl_log1p, 1);
rb_define_module_function(module, "expm1", rb_gsl_expm1, 1);
rb_define_module_function(module, "hypot", rb_gsl_hypot, 2);
-#ifdef GSL_1_10_LATER
- rb_define_module_function(module, "hypot3", rb_gsl_hypot3, 3);
-#endif
+ rb_define_module_function(module, "hypot3", rb_gsl_hypot3, 3);
rb_define_module_function(module, "acosh", rb_gsl_acosh, 1);
rb_define_module_function(module, "asinh", rb_gsl_asinh, 1);
rb_define_module_function(module, "atanh", rb_gsl_atanh, 1);
@@ -691,7 +675,7 @@ void Init_gsl_math(VALUE module)
rb_define_module_function(module, "pow_9", rb_gsl_pow_9, 1);
rb_define_module_function(module, "sign", rb_GSL_SIGN, 1);
rb_define_module_function(module, "SIGN", rb_GSL_SIGN, 1);
-
+
rb_define_module_function(module, "is_odd", rb_GSL_IS_ODD, 1);
rb_define_module_function(module, "IS_ODD", rb_GSL_IS_ODD, 1);
rb_define_module_function(module, "is_odd?", rb_GSL_IS_ODD2, 1);
@@ -717,8 +701,6 @@ void Init_gsl_math(VALUE module)
rb_define_module_function(module, "fcmp", rb_gsl_fcmp, -1);
rb_define_singleton_method(module, "equal?", rb_gsl_equal, -1);
-#ifdef GSL_1_3_LATER
rb_define_module_function(module, "ldexp", rb_gsl_ldexp, 2);
rb_define_module_function(module, "frexp", rb_gsl_frexp, 1);
-#endif
}
diff --git a/ext/gsl/matrix.c b/ext/gsl_native/matrix.c
similarity index 82%
rename from ext/gsl/matrix.c
rename to ext/gsl_native/matrix.c
index f457263..4c92be4 100644
--- a/ext/gsl/matrix.c
+++ b/ext/gsl_native/matrix.c
@@ -18,21 +18,19 @@
#include "include/rb_gsl_histogram.h"
#include "include/rb_gsl_complex.h"
#include "include/rb_gsl_poly.h"
-#ifdef HAVE_NARRAY_H
#include "include/rb_gsl_with_narray.h"
-#endif
-int gsl_linalg_matmult_int(const gsl_matrix_int *A,
- const gsl_matrix_int *B, gsl_matrix_int *C);
+int gsl_linalg_matmult_int(const gsl_matrix_int *A,
+ const gsl_matrix_int *B, gsl_matrix_int *C);
#define BASE_DOUBLE
#include "include/templates_on.h"
-#include "matrix_source.c"
+#include "matrix_source.h"
#include "include/templates_off.h"
#undef BASE_DOUBLE
#define BASE_INT
#include "include/templates_on.h"
-#include "matrix_source.c"
+#include "matrix_source.h"
#include "include/templates_off.h"
#undef BASE_INT
diff --git a/ext/gsl/matrix_complex.c b/ext/gsl_native/matrix_complex.c
similarity index 92%
rename from ext/gsl/matrix_complex.c
rename to ext/gsl_native/matrix_complex.c
index b0b058c..5c28767 100644
--- a/ext/gsl/matrix_complex.c
+++ b/ext/gsl_native/matrix_complex.c
@@ -27,7 +27,7 @@ void get_range_beg_en_n(VALUE range, double *beg, double *en, size_t *n, int *st
// From ext/matrix_source.c
void parse_submatrix_args(int argc, VALUE *argv, size_t size1, size_t size2,
- size_t *i, size_t *j, size_t *n1, size_t *n2);
+ size_t *i, size_t *j, size_t *n1, size_t *n2);
static VALUE rb_gsl_matrix_complex_arithmetics(int flag, VALUE obj, VALUE bb)
{
@@ -73,28 +73,28 @@ static VALUE rb_gsl_matrix_complex_arithmetics(int flag, VALUE obj, VALUE bb)
Data_Get_Struct(bb, gsl_matrix_complex, cmb);
switch (flag) {
case GSL_MATRIX_COMPLEX_ADD:
- cmnew = make_matrix_complex_clone(cm);
- gsl_matrix_complex_add(cmnew, cmb);
- return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmnew);
- break;
+ cmnew = make_matrix_complex_clone(cm);
+ gsl_matrix_complex_add(cmnew, cmb);
+ return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmnew);
+ break;
case GSL_MATRIX_COMPLEX_SUB:
- cmnew = make_matrix_complex_clone(cm);
- gsl_matrix_complex_sub(cmnew,cmb);
- return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmnew);
- break;
+ cmnew = make_matrix_complex_clone(cm);
+ gsl_matrix_complex_sub(cmnew,cmb);
+ return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmnew);
+ break;
case GSL_MATRIX_COMPLEX_MUL:
- cmnew = make_matrix_complex_clone(cm);
- gsl_matrix_complex_mul_elements(cmnew, cmb);
- return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmnew);
- break;
+ cmnew = make_matrix_complex_clone(cm);
+ gsl_matrix_complex_mul_elements(cmnew, cmb);
+ return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmnew);
+ break;
case GSL_MATRIX_COMPLEX_DIV:
- cmnew = make_matrix_complex_clone(cm);
- gsl_matrix_complex_div_elements(cmnew, cmb);
- return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmnew);
- break;
+ cmnew = make_matrix_complex_clone(cm);
+ gsl_matrix_complex_div_elements(cmnew, cmb);
+ return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmnew);
+ break;
default:
- rb_raise(rb_eRuntimeError, "operation not defined");
- break;
+ rb_raise(rb_eRuntimeError, "operation not defined");
+ break;
}
} else if (rb_obj_is_kind_of(bb, cgsl_matrix)) {
Data_Get_Struct(bb, gsl_matrix, m);
@@ -102,80 +102,80 @@ static VALUE rb_gsl_matrix_complex_arithmetics(int flag, VALUE obj, VALUE bb)
cmnew = make_matrix_complex_clone(cm);
switch (flag) {
case GSL_MATRIX_COMPLEX_ADD:
- gsl_matrix_complex_add(cmnew, cmb);
- break;
+ gsl_matrix_complex_add(cmnew, cmb);
+ break;
case GSL_MATRIX_COMPLEX_SUB:
- gsl_matrix_complex_sub(cmnew,cmb);
- break;
+ gsl_matrix_complex_sub(cmnew,cmb);
+ break;
case GSL_MATRIX_COMPLEX_MUL:
- gsl_matrix_complex_mul_elements(cmnew, cmb);
- break;
+ gsl_matrix_complex_mul_elements(cmnew, cmb);
+ break;
case GSL_MATRIX_COMPLEX_DIV:
- gsl_matrix_complex_div_elements(cmnew, cmb);
- break;
+ gsl_matrix_complex_div_elements(cmnew, cmb);
+ break;
default:
- rb_raise(rb_eRuntimeError, "operation not defined");
- break;
+ rb_raise(rb_eRuntimeError, "operation not defined");
+ break;
}
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmnew);
} else if (rb_obj_is_kind_of(bb, cgsl_complex)) {
Data_Get_Struct(bb, gsl_complex, c);
switch (flag) {
case GSL_MATRIX_COMPLEX_ADD:
- cmnew = make_matrix_complex_clone(cm);
- gsl_matrix_complex_add_constant(cmnew, *c);
- break;
+ cmnew = make_matrix_complex_clone(cm);
+ gsl_matrix_complex_add_constant(cmnew, *c);
+ break;
case GSL_MATRIX_COMPLEX_SUB:
- cmnew = make_matrix_complex_clone(cm);
- gsl_matrix_complex_add_constant(cmnew, gsl_complex_negative(*c));
- break;
+ cmnew = make_matrix_complex_clone(cm);
+ gsl_matrix_complex_add_constant(cmnew, gsl_complex_negative(*c));
+ break;
case GSL_MATRIX_COMPLEX_MUL:
- cmnew = make_matrix_complex_clone(cm);
- gsl_matrix_complex_scale(cmnew, *c);
- break;
+ cmnew = make_matrix_complex_clone(cm);
+ gsl_matrix_complex_scale(cmnew, *c);
+ break;
case GSL_MATRIX_COMPLEX_DIV:
- cmnew = make_matrix_complex_clone(cm);
- gsl_matrix_complex_scale(cmnew, gsl_complex_inverse(*c));
- break;
+ cmnew = make_matrix_complex_clone(cm);
+ gsl_matrix_complex_scale(cmnew, gsl_complex_inverse(*c));
+ break;
default:
- rb_raise(rb_eRuntimeError, "operation not defined");
- break;
+ rb_raise(rb_eRuntimeError, "operation not defined");
+ break;
}
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmnew);
} else if (rb_obj_is_kind_of(bb, cgsl_vector)) {
Data_Get_Struct(bb, gsl_vector, v);
switch (flag) {
case GSL_MATRIX_COMPLEX_MUL:
- cvb = vector_to_complex(v);
- cvnew = gsl_vector_complex_alloc(v->size);
- if (cvnew == NULL) rb_raise(rb_eNoMemError, "gsl_vector_complex_alloc failed");
- gsl_matrix_complex_mul_vector(cvnew, cm, cvb);
- gsl_vector_complex_free(cvb);
- return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cvnew);
- break;
+ cvb = vector_to_complex(v);
+ cvnew = gsl_vector_complex_alloc(v->size);
+ if (cvnew == NULL) rb_raise(rb_eNoMemError, "gsl_vector_complex_alloc failed");
+ gsl_matrix_complex_mul_vector(cvnew, cm, cvb);
+ gsl_vector_complex_free(cvb);
+ return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cvnew);
+ break;
default:
- rb_raise(rb_eRuntimeError,
- "operation is not defined %s and Matrix_Complex",
- rb_class2name(CLASS_OF(bb)));
- break;
+ rb_raise(rb_eRuntimeError,
+ "operation is not defined %s and Matrix_Complex",
+ rb_class2name(CLASS_OF(bb)));
+ break;
}
} else if (rb_obj_is_kind_of(bb, cgsl_vector_complex)) {
if (!VECTOR_COMPLEX_COL_P(bb))
- rb_raise(rb_eTypeError,
- "Operation is not defined with %s (Vector::Complex::Col expected)",
- rb_class2name(CLASS_OF(bb)));
+ rb_raise(rb_eTypeError,
+ "Operation is not defined with %s (Vector::Complex::Col expected)",
+ rb_class2name(CLASS_OF(bb)));
Data_Get_Struct(bb, gsl_vector_complex, cv);
switch (flag) {
case GSL_MATRIX_COMPLEX_MUL:
- cvnew = gsl_vector_complex_alloc(cv->size);
- if (cvnew == NULL) rb_raise(rb_eNoMemError, "gsl_vector_complex_alloc failed");
- gsl_matrix_complex_mul_vector(cvnew, cm, cv);
- return Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cvnew);;
+ cvnew = gsl_vector_complex_alloc(cv->size);
+ if (cvnew == NULL) rb_raise(rb_eNoMemError, "gsl_vector_complex_alloc failed");
+ gsl_matrix_complex_mul_vector(cvnew, cm, cv);
+ return Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cvnew);
default:
- rb_raise(rb_eRuntimeError,
- "operation is not defined %s and Matrix_Complex",
- rb_class2name(CLASS_OF(bb)));
- break;
+ rb_raise(rb_eRuntimeError,
+ "operation is not defined %s and Matrix_Complex",
+ rb_class2name(CLASS_OF(bb)));
+ break;
}
} else {
rb_raise(rb_eTypeError, "wrong argument type %s", rb_class2name(CLASS_OF(bb)));
@@ -218,15 +218,15 @@ static VALUE rb_gsl_matrix_complex_eye(int argc, VALUE *argv, VALUE klass)
// if (RARRAY(argv[1])->len < 2) rb_raise(rb_eArgError, "wrong argument");
if (RARRAY_LEN(argv[1]) < 2) rb_raise(rb_eArgError, "wrong argument");
z = gsl_complex_rect(NUM2DBL(rb_ary_entry(argv[1], 0)),
- NUM2DBL(rb_ary_entry(argv[1], 1)));
+ NUM2DBL(rb_ary_entry(argv[1], 1)));
break;
default:
if (rb_obj_is_kind_of(argv[1], cgsl_complex)) {
- Data_Get_Struct(argv[1], gsl_complex, pz);
+ Data_Get_Struct(argv[1], gsl_complex, pz);
z = *pz;
} else {
- rb_raise(rb_eTypeError,
- "wrong argument type %s", rb_class2name(CLASS_OF(argv[1])));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s", rb_class2name(CLASS_OF(argv[1])));
}
break;
}
@@ -244,7 +244,7 @@ static VALUE rb_gsl_matrix_complex_eye(int argc, VALUE *argv, VALUE klass)
m = gsl_matrix_complex_calloc(n, n);
if (m == NULL) rb_raise(rb_eNoMemError, "gsl_matrix_complex_alloc failed");
for (i = 0; i < n; i++) gsl_matrix_complex_set(m, i, i, z);
- return Data_Wrap_Struct(klass, 0, gsl_matrix_complex_free, m);
+ return Data_Wrap_Struct(klass, 0, gsl_matrix_complex_free, m);
}
static VALUE rb_gsl_matrix_complex_identity(VALUE klass, VALUE nn)
@@ -258,7 +258,7 @@ static VALUE rb_gsl_matrix_complex_identity(VALUE klass, VALUE nn)
if (m == NULL) rb_raise(rb_eNoMemError, "gsl_matrix_complex_calloc failed");
z = gsl_complex_rect(1.0, 0.0);
for (i = 0; i < n; i++) gsl_matrix_complex_set(m, i, i, z);
- return Data_Wrap_Struct(klass, 0, gsl_matrix_complex_free, m);
+ return Data_Wrap_Struct(klass, 0, gsl_matrix_complex_free, m);
}
static VALUE rb_gsl_matrix_complex_set_zero(VALUE obj)
@@ -300,8 +300,8 @@ static VALUE rb_gsl_matrix_complex_set_all(VALUE obj, VALUE s)
Data_Get_Struct(s, gsl_complex, z);
gsl_matrix_complex_set_all(m, *z);
} else {
- rb_raise(rb_eTypeError,
- "wrong argument type %s", rb_class2name(CLASS_OF(s)));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s", rb_class2name(CLASS_OF(s)));
}
break;
}
@@ -323,7 +323,6 @@ static VALUE rb_gsl_matrix_complex_set(int argc, VALUE *argv, VALUE obj)
if(argc < 1 || argc > 5) {
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1-5)", argc);
}
-
Data_Get_Struct(obj, gsl_matrix_complex, m);
other = argv[argc-1];
@@ -357,7 +356,7 @@ static VALUE rb_gsl_matrix_complex_set(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(other, gsl_matrix_complex, mother);
if(n1 * n2 != mother->size1 * mother->size2) {
rb_raise(rb_eRangeError, "sizes do not match (%d x %d != %d x %d)",
- (int) n1, (int) n2, (int) mother->size1, (int) mother->size2);
+ (int) n1, (int) n2, (int) mother->size1, (int) mother->size2);
}
// TODO Change to gsl_matrix_memmove if/when GSL has such a function
// because gsl_matrix_memcpy does not handle overlapping regions (e.g.
@@ -375,7 +374,7 @@ static VALUE rb_gsl_matrix_complex_set(int argc, VALUE *argv, VALUE obj)
// m[...] = [[row0], [row1], ...] # multiple rows
if((int) n1 != RARRAY_LEN(other)) {
rb_raise(rb_eRangeError, "row counts do not match (%d != %d)",
- (int) n1, (int) RARRAY_LEN(other));
+ (int) n1, (int) RARRAY_LEN(other));
}
for(k = 0; k < n1; k++) {
vv = gsl_matrix_complex_row(&mv.matrix, k);
@@ -399,7 +398,6 @@ static VALUE rb_gsl_matrix_complex_set(int argc, VALUE *argv, VALUE obj)
gsl_matrix_complex_set_all(&mv.matrix, rb_gsl_obj_to_gsl_complex(other, NULL));
}
}
-
return obj;
}
@@ -409,7 +407,7 @@ static VALUE rb_gsl_matrix_complex_set_row(int argc, VALUE *argv, VALUE obj)
size_t i, k;
gsl_complex z, *pz = &z;
if (argc < 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 2)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
Data_Get_Struct(obj, gsl_matrix_complex, A);
i = FIX2INT(argv[0]);
@@ -436,7 +434,7 @@ static VALUE rb_gsl_matrix_complex_set_col(int argc, VALUE *argv, VALUE obj)
int j, k;
gsl_complex z, *pz = &z;
if (argc < 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 2)",
- argc);
+ argc);
CHECK_FIXNUM(argv[0]);
Data_Get_Struct(obj, gsl_matrix_complex, A);
j = FIX2INT(argv[0]);
@@ -473,7 +471,7 @@ static VALUE rb_gsl_matrix_complex_get(int argc, VALUE *argv, VALUE obj)
if(ii < 0) ii += m->size1;
if(ij < 0) ij += m->size2;
c = ALLOC(gsl_complex);
- *c = gsl_matrix_complex_get(m, (size_t)ii, (size_t)ij);
+ *c = gsl_matrix_complex_get(m, (size_t)ii, (size_t)ij);
retval = Data_Wrap_Struct(cgsl_complex, 0, free, c);
} else if(argc == 1 && TYPE(argv[0]) == T_FIXNUM) {
// m[i]
@@ -492,7 +490,7 @@ static VALUE rb_gsl_matrix_complex_get(int argc, VALUE *argv, VALUE obj)
if(ii < 0) ii += m->size1;
if(ij < 0) ij += m->size2;
c = ALLOC(gsl_complex);
- *c = gsl_matrix_complex_get(m, (size_t)ii, (size_t)ij);
+ *c = gsl_matrix_complex_get(m, (size_t)ii, (size_t)ij);
retval = Data_Wrap_Struct(cgsl_complex, 0, free, c);
} else {
rb_raise(rb_eArgError, "Array index must have length 2, not %d", (int) RARRAY_LEN(argv[0]));
@@ -500,7 +498,6 @@ static VALUE rb_gsl_matrix_complex_get(int argc, VALUE *argv, VALUE obj)
} else {
retval = rb_gsl_matrix_complex_submatrix(argc, argv, obj);
}
-
return retval;
}
@@ -546,12 +543,12 @@ static VALUE rb_gsl_matrix_complex_to_a(VALUE obj)
size_t i, j;
Data_Get_Struct(obj, gsl_matrix_complex, m);
ma = rb_ary_new2(m->size1);
- for(i=0; i < m->size1; i++) {
+ for(i = 0; i < m->size1; i++) {
ra = rb_ary_new2(m->size2);
rb_ary_store(ma, i, ra);
- for(j=0; j < m->size2; j++) {
+ for(j = 0; j < m->size2; j++) {
c = ALLOC(gsl_complex);
- *c = gsl_matrix_complex_get(m, i, j);
+ *c = gsl_matrix_complex_get(m, i, j);
rb_ary_store(ra, j, Data_Wrap_Struct(cgsl_complex, 0, free, c));
}
}
@@ -610,11 +607,11 @@ static VALUE rb_gsl_matrix_complex_to_s(int argc, VALUE *argv, VALUE obj)
int max_rows = 4;
int max_cols = 4;
- switch(argc){
- case 2: max_cols = NUM2INT(argv[1]);
- case 1: max_rows = NUM2INT(argv[0]);
- case 0: break;
- default:
+ switch(argc) {
+ case 2: max_cols = NUM2INT(argv[1]);
+ case 1: max_rows = NUM2INT(argv[0]);
+ case 0: break;
+ default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0, 1, or 2)", argc);
}
@@ -628,7 +625,7 @@ static VALUE rb_gsl_matrix_complex_to_s(int argc, VALUE *argv, VALUE obj)
for (j = 0; j < m->size2; j++) {
z = gsl_matrix_complex_get(m, i, j);
sprintf(buf,
- "%s[ %4.3e %4.3e ]", (j==0) ? "" : " ", GSL_REAL(z), GSL_IMAG(z));
+ "%s[ %4.3e %4.3e ]", (j==0) ? "" : " ", GSL_REAL(z), GSL_IMAG(z));
rb_str_cat(str, buf, strlen(buf));
// if too many cols
if ((int) j >= max_cols-1 && j != m->size2-1) {
@@ -926,8 +923,8 @@ static VALUE rb_gsl_matrix_complex_add_diagonal(VALUE obj, VALUE s)
Data_Get_Struct(s, gsl_complex, z);
gsl_matrix_complex_add_diagonal(m, *z);
} else {
- rb_raise(rb_eTypeError,
- "wrong argument type %s", rb_class2name(CLASS_OF(s)));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s", rb_class2name(CLASS_OF(s)));
}
break;
}
@@ -1001,7 +998,7 @@ static VALUE rb_gsl_matrix_complex_set_diagonal(VALUE obj, VALUE diag)
for (i = 0; i < m->size1; i++) gsl_matrix_complex_set(m, i, i, gsl_vector_complex_get(v, i));
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Vector_Complex or Array expected)",
- rb_class2name(CLASS_OF(diag)));
+ rb_class2name(CLASS_OF(diag)));
}
return obj;
}
@@ -1055,7 +1052,7 @@ static VALUE rb_gsl_matrix_complex_coerce(VALUE obj, VALUE other)
return rb_ary_new3(2, vcm, obj);
} else {
rb_raise(rb_eTypeError, "cannot coerce %s to GSL::Matrix::Complex",
- rb_class2name(CLASS_OF(other)));
+ rb_class2name(CLASS_OF(other)));
}
break;
}
@@ -1273,8 +1270,8 @@ static VALUE rb_gsl_matrix_complex_logabs(VALUE obj)
return rb_gsl_matrix_complex_XXX(obj, gsl_complex_logabs);
}
-static VALUE rb_gsl_matrix_complex_XXX_complex(VALUE obj,
- gsl_complex (*f)(gsl_complex))
+static VALUE rb_gsl_matrix_complex_XXX_complex(VALUE obj,
+ gsl_complex (*f)(gsl_complex))
{
gsl_matrix_complex *m, *mnew;
size_t i, j;
@@ -1525,14 +1522,14 @@ static VALUE rb_gsl_matrix_complex_indgen_singleton(int argc, VALUE *argv, VALUE
// function, but it only determines absolute equality (i.e. is has no epsilon
// argument).
static int gsl_matrix_complex_equal_eps(const gsl_matrix_complex *m1,
- const gsl_matrix_complex *m2, double eps)
+ const gsl_matrix_complex *m2, double eps)
{
gsl_complex z1, z2;
size_t i, j;
if (m1->size1 != m2->size1) return 0;
- if (m1->size2 != m2->size2) return 0;
+ if (m1->size2 != m2->size2) return 0;
for (i = 0; i < m1->size1; i++) {
- for (j = 0; j < m1->size2; j++) {
+ for (j = 0; j < m1->size2; j++) {
z1 = gsl_matrix_complex_get(m1, i, j);
z2 = gsl_matrix_complex_get(m2, i, j);
if (!rbgsl_complex_equal(&z1, &z2, eps)) return 0;
@@ -1602,7 +1599,7 @@ void Init_gsl_matrix_complex(VALUE module)
rb_define_method(cgsl_matrix_complex, "fwrite", rb_gsl_matrix_complex_fwrite, 1);
rb_define_method(cgsl_matrix_complex, "fread", rb_gsl_matrix_complex_fread, 1);
rb_define_method(cgsl_matrix_complex, "fscanf", rb_gsl_matrix_complex_fscanf, 1);
-
+
rb_define_singleton_method(cgsl_matrix_complex, "memcpy", rb_gsl_matrix_complex_memcpy, 2);
rb_define_method(cgsl_matrix_complex, "clone", rb_gsl_matrix_complex_clone, 0);
rb_define_alias(cgsl_matrix_complex, "duplicate", "clone");
@@ -1610,10 +1607,10 @@ void Init_gsl_matrix_complex(VALUE module)
rb_define_method(cgsl_matrix_complex, "swap_rows", rb_gsl_matrix_complex_swap_rows, 2);
rb_define_method(cgsl_matrix_complex, "swap_columns", rb_gsl_matrix_complex_swap_columns, 2);
rb_define_method(cgsl_matrix_complex, "swap_rowcol", rb_gsl_matrix_complex_swap_rowcol, 2);
-
+
rb_define_method(cgsl_matrix_complex, "transpose", rb_gsl_matrix_complex_transpose, 0);
rb_define_method(cgsl_matrix_complex, "isnull", rb_gsl_matrix_complex_isnull, 0);
-
+
rb_define_method(cgsl_matrix_complex, "add", rb_gsl_matrix_complex_add, 1);
rb_define_alias(cgsl_matrix_complex, "add_constant", "add");
rb_define_alias(cgsl_matrix_complex, "+", "add");
@@ -1624,13 +1621,13 @@ void Init_gsl_matrix_complex(VALUE module)
rb_define_alias(cgsl_matrix_complex, "/", "div_elements");
rb_define_method(cgsl_matrix_complex, "scale", rb_gsl_matrix_complex_scale, 1);
rb_define_method(cgsl_matrix_complex, "scale!", rb_gsl_matrix_complex_scale_bang, 1);
-
+
rb_define_method(cgsl_matrix_complex, "add_diagonal", rb_gsl_matrix_complex_add_diagonal, 1);
-
+
rb_define_method(cgsl_matrix_complex, "set_zero", rb_gsl_matrix_complex_set_zero, 0);
rb_define_method(cgsl_matrix_complex, "set_identity", rb_gsl_matrix_complex_set_identity, 0);
rb_define_method(cgsl_matrix_complex, "set_all", rb_gsl_matrix_complex_set_all, 1);
-
+
rb_define_method(cgsl_matrix_complex, "submatrix", rb_gsl_matrix_complex_submatrix, -1);
rb_define_alias(cgsl_matrix_complex, "view", "submatrix");
rb_define_method(cgsl_matrix_complex, "row", rb_gsl_matrix_complex_row, 1);
@@ -1642,13 +1639,13 @@ void Init_gsl_matrix_complex(VALUE module)
rb_define_method(cgsl_matrix_complex, "set_diagonal", rb_gsl_matrix_complex_set_diagonal, 1);
rb_define_method(cgsl_matrix_complex, "subdiagonal", rb_gsl_matrix_complex_subdiagonal, 1);
rb_define_method(cgsl_matrix_complex, "superdiagonal", rb_gsl_matrix_complex_superdiagonal, 1);
-
+
rb_define_method(cgsl_matrix_complex, "coerce", rb_gsl_matrix_complex_coerce, 1);
-
+
rb_define_method(cgsl_matrix_complex, "mul", rb_gsl_matrix_complex_mul, 1);
rb_define_alias(cgsl_matrix_complex, "*", "mul");
rb_define_method(cgsl_matrix_complex, "mul!", rb_gsl_matrix_complex_mul2, 1);
-
+
rb_define_method(cgsl_matrix_complex, "real", rb_gsl_matrix_complex_real, 0);
rb_define_alias(cgsl_matrix_complex, "to_real", "real");
rb_define_alias(cgsl_matrix_complex, "re", "real");
@@ -1662,7 +1659,7 @@ void Init_gsl_matrix_complex(VALUE module)
rb_define_alias(cgsl_matrix_complex, "conj", "conjugate");
rb_define_method(cgsl_matrix_complex, "dagger!", rb_gsl_matrix_complex_dagger, 0);
rb_define_method(cgsl_matrix_complex, "dagger", rb_gsl_matrix_complex_dagger2, 0);
-
+
rb_define_method(cgsl_matrix_complex, "trace", rb_gsl_matrix_complex_trace, 0);
rb_define_method(cgsl_matrix_complex, "each_row", rb_gsl_matrix_complex_each_row, 0);
rb_define_method(cgsl_matrix_complex, "each_col", rb_gsl_matrix_complex_each_col, 0);
@@ -1671,14 +1668,14 @@ void Init_gsl_matrix_complex(VALUE module)
rb_define_method(cgsl_matrix_complex, "collect!", rb_gsl_matrix_complex_collect_bang, 0);
rb_define_alias(cgsl_matrix_complex, "map", "collect");
rb_define_alias(cgsl_matrix_complex, "map!", "collect!");
-
+
rb_define_method(cgsl_matrix_complex, "to_a", rb_gsl_matrix_complex_to_a, 0);
rb_define_method(cgsl_matrix_complex, "size1", rb_gsl_matrix_complex_size1, 0);
rb_define_method(cgsl_matrix_complex, "size2", rb_gsl_matrix_complex_size2, 0);
rb_define_method(cgsl_matrix_complex, "shape", rb_gsl_matrix_complex_shape, 0);
rb_define_alias(cgsl_matrix_complex, "size", "shape");
-
+
/*****/
rb_define_method(cgsl_matrix_complex, "-@", rb_gsl_matrix_complex_uminus, 0);
rb_define_method(cgsl_matrix_complex, "+@", rb_gsl_matrix_complex_uplus, 0);
@@ -1728,9 +1725,9 @@ void Init_gsl_matrix_complex(VALUE module)
rb_define_method(cgsl_matrix_complex, "indgen", rb_gsl_matrix_complex_indgen, -1);
rb_define_method(cgsl_matrix_complex, "indgen!", rb_gsl_matrix_complex_indgen_bang, -1);
rb_define_singleton_method(cgsl_matrix_complex, "indgen", rb_gsl_matrix_complex_indgen_singleton, -1);
-
+
rb_define_method(cgsl_matrix_complex, "equal?", rb_gsl_matrix_complex_equal, -1);
rb_define_alias(cgsl_matrix_complex, "==", "equal?");
rb_define_method(cgsl_matrix_complex, "not_equal?", rb_gsl_matrix_complex_not_equal, -1);
- rb_define_alias(cgsl_matrix_complex, "!=", "not_equal?");
+ rb_define_alias(cgsl_matrix_complex, "!=", "not_equal?");
}
diff --git a/ext/gsl/matrix_double.c b/ext/gsl_native/matrix_double.c
similarity index 82%
rename from ext/gsl/matrix_double.c
rename to ext/gsl_native/matrix_double.c
index 3c11852..42c3120 100644
--- a/ext/gsl/matrix_double.c
+++ b/ext/gsl_native/matrix_double.c
@@ -2,7 +2,7 @@
matrix_double.c
Ruby/GSL: Ruby extension library for GSL (GNU Scientific Library)
(C) Copyright 2001-2006 by Yoshiki Tsunesada
-
+
Ruby/GSL is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License.
This library is distributed in the hope that it will be useful, but
@@ -11,9 +11,7 @@
#include "include/rb_gsl_array.h"
#include "include/rb_gsl_complex.h"
-#ifdef HAVE_NARRAY_H
#include "include/rb_gsl_with_narray.h"
-#endif
enum {
GSL_MATRIX_ADD,
@@ -62,29 +60,28 @@ static VALUE rb_gsl_matrix_arithmetics(int flag, VALUE obj, VALUE bb)
default:
if (MATRIX_INT_P(bb)) bb = rb_gsl_matrix_int_to_f(bb);
if (VECTOR_INT_P(bb)) bb = rb_gsl_vector_int_to_f(bb);
-
if (rb_obj_is_kind_of(bb, cgsl_matrix)) {
Data_Get_Struct(bb, gsl_matrix, mb);
switch (flag) {
case GSL_MATRIX_ADD:
- mnew = make_matrix_clone(m);
- gsl_matrix_add(mnew, mb);
- break;
+ mnew = make_matrix_clone(m);
+ gsl_matrix_add(mnew, mb);
+ break;
case GSL_MATRIX_SUB:
- mnew = make_matrix_clone(m);
- gsl_matrix_sub(mnew,mb);
- break;
+ mnew = make_matrix_clone(m);
+ gsl_matrix_sub(mnew,mb);
+ break;
case GSL_MATRIX_MUL:
- mnew = make_matrix_clone(m);
- gsl_matrix_mul_elements(mnew, mb);
- break;
+ mnew = make_matrix_clone(m);
+ gsl_matrix_mul_elements(mnew, mb);
+ break;
case GSL_MATRIX_DIV:
- mnew = make_matrix_clone(m);
- gsl_matrix_div_elements(mnew, mb);
- break;
+ mnew = make_matrix_clone(m);
+ gsl_matrix_div_elements(mnew, mb);
+ break;
default:
- rb_raise(rb_eRuntimeError, "operation not defined");
- break;
+ rb_raise(rb_eRuntimeError, "operation not defined");
+ break;
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else if (rb_obj_is_kind_of(bb, cgsl_matrix_complex)) {
@@ -92,20 +89,20 @@ static VALUE rb_gsl_matrix_arithmetics(int flag, VALUE obj, VALUE bb)
cmnew = matrix_to_complex(m);
switch (flag) {
case GSL_MATRIX_ADD:
- gsl_matrix_complex_add(cmnew, cmb);
- break;
+ gsl_matrix_complex_add(cmnew, cmb);
+ break;
case GSL_MATRIX_SUB:
- gsl_matrix_complex_sub(cmnew,cmb);
- break;
+ gsl_matrix_complex_sub(cmnew,cmb);
+ break;
case GSL_MATRIX_MUL:
- gsl_matrix_complex_mul_elements(cmnew, cmb);
- break;
+ gsl_matrix_complex_mul_elements(cmnew, cmb);
+ break;
case GSL_MATRIX_DIV:
- gsl_matrix_complex_div_elements(cmnew, cmb);
- break;
+ gsl_matrix_complex_div_elements(cmnew, cmb);
+ break;
default:
- rb_raise(rb_eRuntimeError, "operation not defined");
- break;
+ rb_raise(rb_eRuntimeError, "operation not defined");
+ break;
}
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmnew);
} else if (rb_obj_is_kind_of(bb, cgsl_complex)) {
@@ -113,60 +110,60 @@ static VALUE rb_gsl_matrix_arithmetics(int flag, VALUE obj, VALUE bb)
cmnew = matrix_to_complex(m);
switch (flag) {
case GSL_MATRIX_ADD:
- gsl_matrix_complex_add_constant(cmnew, *c);
- break;
+ gsl_matrix_complex_add_constant(cmnew, *c);
+ break;
case GSL_MATRIX_SUB:
- gsl_matrix_complex_add_constant(cmnew, gsl_complex_negative(*c));
- break;
+ gsl_matrix_complex_add_constant(cmnew, gsl_complex_negative(*c));
+ break;
case GSL_MATRIX_MUL:
- gsl_matrix_complex_scale(cmnew, *c);
- break;
+ gsl_matrix_complex_scale(cmnew, *c);
+ break;
case GSL_MATRIX_DIV:
- gsl_matrix_complex_scale(cmnew, gsl_complex_inverse(*c));
- break;
+ gsl_matrix_complex_scale(cmnew, gsl_complex_inverse(*c));
+ break;
default:
- rb_raise(rb_eRuntimeError, "operation not defined");
- break;
+ rb_raise(rb_eRuntimeError, "operation not defined");
+ break;
}
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cmnew);
} else if (rb_obj_is_kind_of(bb, cgsl_vector)) {
if (!VECTOR_COL_P(bb))
- rb_raise(rb_eTypeError,
- "Operation with %s is not defined (GSL::Vector::Col expected)",
- rb_class2name(CLASS_OF(bb)));
+ rb_raise(rb_eTypeError,
+ "Operation with %s is not defined (GSL::Vector::Col expected)",
+ rb_class2name(CLASS_OF(bb)));
Data_Get_Struct(bb, gsl_vector, v);
switch (flag) {
case GSL_MATRIX_MUL:
- // vnew = gsl_vector_alloc(v->size);
- vnew = gsl_vector_alloc(m->size1);
- if (vnew == NULL) rb_raise(rb_eNoMemError, "gsl_vector_alloc failed");
- gsl_matrix_mul_vector(vnew, m, v);
- return Data_Wrap_Struct(cgsl_vector_col, 0, gsl_vector_free, vnew);
- break;
+ // vnew = gsl_vector_alloc(v->size);
+ vnew = gsl_vector_alloc(m->size1);
+ if (vnew == NULL) rb_raise(rb_eNoMemError, "gsl_vector_alloc failed");
+ gsl_matrix_mul_vector(vnew, m, v);
+ return Data_Wrap_Struct(cgsl_vector_col, 0, gsl_vector_free, vnew);
+ break;
case GSL_MATRIX_DIV:
- return rb_gsl_linalg_LU_solve(1, &bb, obj);
- break;
+ return rb_gsl_linalg_LU_solve(1, &bb, obj);
+ break;
default:
- rb_raise(rb_eRuntimeError, "operation is not defined %s and Matrix",
- rb_class2name(CLASS_OF(bb)));
- break;
+ rb_raise(rb_eRuntimeError, "operation is not defined %s and Matrix",
+ rb_class2name(CLASS_OF(bb)));
+ break;
}
} else if (rb_obj_is_kind_of(bb, cgsl_vector_complex)) {
Data_Get_Struct(bb, gsl_vector_complex, cv);
switch (flag) {
case GSL_MATRIX_MUL:
- cm = matrix_to_complex(m);
- // cvnew = gsl_vector_complex_alloc(cv->size);
- cvnew = gsl_vector_complex_alloc(m->size1);
- if (cvnew == NULL) rb_raise(rb_eNoMemError, "gsl_vector_complex_alloc failed");
- gsl_matrix_complex_mul_vector(cvnew, cm, cv);
- gsl_matrix_complex_free(cm);
- return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cvnew);
- break;
+ cm = matrix_to_complex(m);
+ // cvnew = gsl_vector_complex_alloc(cv->size);
+ cvnew = gsl_vector_complex_alloc(m->size1);
+ if (cvnew == NULL) rb_raise(rb_eNoMemError, "gsl_vector_complex_alloc failed");
+ gsl_matrix_complex_mul_vector(cvnew, cm, cv);
+ gsl_matrix_complex_free(cm);
+ return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cvnew);
+ break;
default:
- rb_raise(rb_eRuntimeError, "operation is not defined %s and Matrix",
- rb_class2name(CLASS_OF(bb)));
- break;
+ rb_raise(rb_eRuntimeError, "operation is not defined %s and Matrix",
+ rb_class2name(CLASS_OF(bb)));
+ break;
}
} else {
rb_raise(rb_eTypeError, "wrong argument type %s", rb_class2name(CLASS_OF(bb)));
@@ -236,8 +233,8 @@ static VALUE rb_gsl_matrix_mul(VALUE obj, VALUE bb)
return rb_gsl_matrix_mul_elements(obj, bb);
break;
default:
- rb_raise(rb_eTypeError,
- "wrong argument type %s", rb_class2name(CLASS_OF(bb)));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s", rb_class2name(CLASS_OF(bb)));
break;
}
}
@@ -271,8 +268,8 @@ static VALUE rb_gsl_matrix_mul_bang(VALUE obj, VALUE bb)
return obj;
break;
default:
- rb_raise(rb_eTypeError,
- "wrong argument type %s", rb_class2name(CLASS_OF(bb)));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s", rb_class2name(CLASS_OF(bb)));
break;
}
}
@@ -336,8 +333,8 @@ static VALUE rb_gsl_matrix_coerce(VALUE obj, VALUE other)
vcm = Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, cm);
return rb_ary_new3(2, other, vcm);
} else {
- rb_raise(rb_eTypeError, "cannot coerce %s to Matrix",
- rb_class2name(CLASS_OF(other)));
+ rb_raise(rb_eTypeError, "cannot coerce %s to Matrix",
+ rb_class2name(CLASS_OF(other)));
}
break;
}
@@ -384,7 +381,7 @@ static VALUE rb_gsl_matrix_clean(int argc, VALUE *argv, VALUE obj)
mnew = make_matrix_clone(m);
n = m->size1*m->size2;
for (i = 0; i < n; i++) if (fabs(mnew->data[i]) < eps) mnew->data[i] = 0.0;
- return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);;
+ return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
}
static VALUE rb_gsl_matrix_clean_bang(int argc, VALUE *argv, VALUE obj)
@@ -411,8 +408,8 @@ static VALUE rb_gsl_matrix_clean_bang(int argc, VALUE *argv, VALUE obj)
}
-static VALUE rb_gsl_matrix_op_inplace(VALUE mm1, VALUE mm2,
- int (*f)(gsl_matrix*, const gsl_matrix*))
+static VALUE rb_gsl_matrix_op_inplace(VALUE mm1, VALUE mm2,
+ int (*f)(gsl_matrix*, const gsl_matrix*))
{
gsl_matrix *m1, *m2;
Data_Get_Struct(mm1, gsl_matrix, m1);
@@ -467,7 +464,7 @@ static VALUE rb_gsl_matrix_log10(VALUE obj)
#include <gsl/gsl_randist.h>
#include "include/rb_gsl_rng.h"
static VALUE rb_gsl_matrix_randx(int argc, VALUE *argv, VALUE klass,
- double (*f)(const gsl_rng*));
+ double (*f)(const gsl_rng*));
static VALUE rb_gsl_matrix_rand(int argc, VALUE *argv, VALUE klass)
{
return rb_gsl_matrix_randx(argc, argv, klass, gsl_rng_uniform);
@@ -479,7 +476,7 @@ static VALUE rb_gsl_matrix_randn(int argc, VALUE *argv, VALUE klass)
}
static VALUE rb_gsl_matrix_randx(int argc, VALUE *argv, VALUE klass,
- double (*f)(const gsl_rng*))
+ double (*f)(const gsl_rng*))
{
gsl_matrix *m;
gsl_rng *rng;
@@ -488,8 +485,8 @@ static VALUE rb_gsl_matrix_randx(int argc, VALUE *argv, VALUE klass,
switch (argc) {
case 3:
if (!rb_obj_is_kind_of(argv[2], cgsl_rng)) {
- rb_raise(rb_eTypeError,
- "Wrong argument type (GSL::Rng expected)");
+ rb_raise(rb_eTypeError,
+ "Wrong argument type (GSL::Rng expected)");
}
Data_Get_Struct(argv[2], gsl_rng, rng);
size1 = FIX2INT(argv[0]);
@@ -530,7 +527,7 @@ void Init_gsl_matrix(VALUE module)
rb_define_alias(cgsl_matrix, "*", "mul");
rb_define_method(cgsl_matrix, "mul!", rb_gsl_matrix_mul_bang, 1);
/***/
-
+
rb_define_method(cgsl_matrix, "to_complex", rb_gsl_matrix_to_complex, 0);
rb_define_method(cgsl_matrix, "coerce", rb_gsl_matrix_coerce, 1);
diff --git a/ext/gsl/matrix_int.c b/ext/gsl_native/matrix_int.c
similarity index 78%
rename from ext/gsl/matrix_int.c
rename to ext/gsl_native/matrix_int.c
index 1e0ea01..a7a2dc0 100644
--- a/ext/gsl/matrix_int.c
+++ b/ext/gsl_native/matrix_int.c
@@ -2,7 +2,7 @@
matrix_int.c
Ruby/GSL: Ruby extension library for GSL (GNU Scientific Library)
(C) Copyright 2001-2006 by Yoshiki Tsunesada
-
+
Ruby/GSL is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License.
This library is distributed in the hope that it will be useful, but
@@ -15,8 +15,8 @@
#include "include/rb_gsl_with_narray.h"
#endif
-int gsl_linalg_matmult_int(const gsl_matrix_int *A,
- const gsl_matrix_int *B, gsl_matrix_int *C);
+int gsl_linalg_matmult_int(const gsl_matrix_int *A,
+ const gsl_matrix_int *B, gsl_matrix_int *C);
VALUE rb_gsl_matrix_to_i(VALUE obj);
@@ -85,16 +85,16 @@ static VALUE rb_gsl_matrix_int_operation1(VALUE obj, VALUE other, int flag)
bval = NUM2INT(other);
anew = make_matrix_int_clone(a);
switch (flag) {
- case GSL_MATRIX_INT_ADD:
+ case GSL_MATRIX_INT_ADD:
/*result =*/ gsl_matrix_int_add_constant(anew, bval);
break;
- case GSL_MATRIX_INT_SUB:
+ case GSL_MATRIX_INT_SUB:
/*result =*/ gsl_matrix_int_add_constant(anew, -bval);
break;
- case GSL_MATRIX_INT_MUL:
+ case GSL_MATRIX_INT_MUL:
/*result =*/ gsl_matrix_int_scale(anew, bval);
break;
- case GSL_MATRIX_INT_DIV:
+ case GSL_MATRIX_INT_DIV:
/*result =*/ gsl_matrix_int_scale(anew, 1.0/bval);
break;
default:
@@ -109,34 +109,34 @@ static VALUE rb_gsl_matrix_int_operation1(VALUE obj, VALUE other, int flag)
Data_Get_Struct(other, gsl_matrix_int, b);
switch (flag) {
case GSL_MATRIX_INT_ADD:
- /*result =*/ gsl_matrix_int_add(anew, b);
- break;
+ /*result =*/ gsl_matrix_int_add(anew, b);
+ break;
case GSL_MATRIX_INT_SUB:
- /*result =*/ gsl_matrix_int_sub(anew, b);
- break;
+ /*result =*/ gsl_matrix_int_sub(anew, b);
+ break;
case GSL_MATRIX_INT_MUL:
- /*result =*/ gsl_matrix_int_mul_elements(anew, b);
- break;
+ /*result =*/ gsl_matrix_int_mul_elements(anew, b);
+ break;
case GSL_MATRIX_INT_DIV:
- /*result =*/ gsl_matrix_int_div_elements(anew, b);
- break;
+ /*result =*/ gsl_matrix_int_div_elements(anew, b);
+ break;
default:
- break;
+ break;
}
} else if (VECTOR_INT_COL_P(other)) {
switch (flag) {
case GSL_MATRIX_INT_MUL:
- Data_Get_Struct(other, gsl_vector_int, vi);
- vinew = gsl_vector_int_alloc(vi->size);
- gsl_matrix_int_mul_vector(vinew, a, vi);
- return Data_Wrap_Struct(cgsl_vector_int_col, 0, gsl_vector_int_free, vinew);
- break;
+ Data_Get_Struct(other, gsl_vector_int, vi);
+ vinew = gsl_vector_int_alloc(vi->size);
+ gsl_matrix_int_mul_vector(vinew, a, vi);
+ return Data_Wrap_Struct(cgsl_vector_int_col, 0, gsl_vector_int_free, vinew);
+ break;
default:
- rb_raise(rb_eRuntimeError, "Operation not defined");
+ rb_raise(rb_eRuntimeError, "Operation not defined");
}
} else {
rb_raise(rb_eTypeError, "Operation not defined with %s",
- rb_class2name(CLASS_OF(other)));
+ rb_class2name(CLASS_OF(other)));
}
break;
}
@@ -183,48 +183,47 @@ static VALUE rb_gsl_matrix_int_matrix_mul(VALUE obj, VALUE bb)
switch (TYPE(bb)) {
case T_FIXNUM:
return rb_gsl_matrix_int_mul(obj, bb);
- /* return rb_gsl_matrix_int_power(obj, bb);*/
+ /* return rb_gsl_matrix_int_power(obj, bb);*/
break;
default:
rb_raise(rb_eTypeError, "wrong argument type %s (Matrix::Int, Vector::Int::Col or Fixnum expected)",
- rb_class2name(CLASS_OF(bb)));
+ rb_class2name(CLASS_OF(bb)));
break;
}
}
}
-int gsl_linalg_matmult_int(const gsl_matrix_int *A,
- const gsl_matrix_int *B, gsl_matrix_int *C)
+int gsl_linalg_matmult_int(const gsl_matrix_int *A,
+ const gsl_matrix_int *B, gsl_matrix_int *C)
{
if (A->size2 != B->size1 || A->size1 != C->size1 || B->size2 != C->size2)
- {
- GSL_ERROR ("matrix sizes are not conformant", GSL_EBADLEN);
- }
+ {
+ GSL_ERROR ("matrix sizes are not conformant", GSL_EBADLEN);
+ }
else
+ {
+ int a, b;
+ int temp;
+ size_t i, j, k;
+
+ for (i = 0; i < C->size1; i++)
{
- int a, b;
- int temp;
- size_t i, j, k;
-
- for (i = 0; i < C->size1; i++)
+ for (j = 0; j < C->size2; j++)
+ {
+ a = gsl_matrix_int_get(A, i, 0);
+ b = gsl_matrix_int_get(B, 0, j);
+ temp = a * b;
+ for (k = 1; k < A->size2; k++)
{
- for (j = 0; j < C->size2; j++)
- {
- a = gsl_matrix_int_get(A, i, 0);
- b = gsl_matrix_int_get(B, 0, j);
- temp = a * b;
- for (k = 1; k < A->size2; k++)
- {
- a = gsl_matrix_int_get(A, i, k);
- b = gsl_matrix_int_get(B, k, j);
- temp += a * b;
- }
- gsl_matrix_int_set(C, i, j, temp);
- }
+ a = gsl_matrix_int_get(A, i, k);
+ b = gsl_matrix_int_get(B, k, j);
+ temp += a * b;
}
-
- return GSL_SUCCESS;
+ gsl_matrix_int_set(C, i, j, temp);
+ }
}
+ return GSL_SUCCESS;
+ }
}
void Init_gsl_matrix_int_init(VALUE module);
diff --git a/ext/gsl/matrix_source.c b/ext/gsl_native/matrix_source.h
similarity index 84%
rename from ext/gsl/matrix_source.c
rename to ext/gsl_native/matrix_source.h
index b6acac0..d6f312b 100644
--- a/ext/gsl/matrix_source.c
+++ b/ext/gsl_native/matrix_source.h
@@ -52,14 +52,14 @@ void FUNCTION(get_range,beg_en_n)(VALUE range, BASE *beg, BASE *en, size_t *n, i
// From ext/vector_source.c
void get_range_beg_en_n_for_size(VALUE range,
- int *beg, int *en, size_t *n, int *step, size_t size);
+ int *beg, int *en, size_t *n, int *step, size_t size);
void parse_submatrix_args(int argc, VALUE *argv, size_t size1, size_t size2,
- size_t *i, size_t *j, size_t *n1, size_t *n2);
+ size_t *i, size_t *j, size_t *n1, size_t *n2);
#ifdef BASE_DOUBLE
void parse_submatrix_args(int argc, VALUE *argv, size_t size1, size_t size2,
- size_t *i, size_t *j, size_t *n1, size_t *n2)
+ size_t *i, size_t *j, size_t *n1, size_t *n2)
{
int ii, ij, in1, in2, end, step;
@@ -91,7 +91,7 @@ void parse_submatrix_args(int argc, VALUE *argv, size_t size1, size_t size2,
// Fixnum, nil -> single row, all cols (Vector::View)
// Fixnum, Range -> single row, Range cols (Vector::View)
// Fixnum, Fixnum -> single row, single col (Matrix::View)
- case 2:
+ case 2:
// nil, ...
if(NIL_P(argv[0])) {
// Parse second arg
@@ -114,7 +114,7 @@ void parse_submatrix_args(int argc, VALUE *argv, size_t size1, size_t size2,
*i = 0; *j = (size_t)ij;
*n1 = size1; *n2 = 0; // *n2 == 0 tells #submatrix to return Vector::Col::View
}
- // Range, ...
+ // Range, ...
} else if(rb_obj_is_kind_of(argv[0], rb_cRange)) {
get_range_beg_en_n_for_size(argv[0], &ii, &end, n1, &step, size1);
if(step < 0 || *n1 <= 0) {
@@ -139,7 +139,7 @@ void parse_submatrix_args(int argc, VALUE *argv, size_t size1, size_t size2,
*j = (size_t) ij;
*n2 = 0; // *n2 == 0 tells #submatrix to return Vector::Col::View
}
- // Fixnum, ...
+ // Fixnum, ...
} else {
ii = NUM2INT(argv[0]);
if(ii < 0) ii += size1;
@@ -182,7 +182,7 @@ void parse_submatrix_args(int argc, VALUE *argv, size_t size1, size_t size2,
if(ij < 0) ij += size2;
*j = (size_t) ij;
*n2 = (size_t) in2;
- // Range, Fixnum, Fixnum
+ // Range, Fixnum, Fixnum
} else if(rb_obj_is_kind_of(argv[0], rb_cRange)) {
// Range, Fixnum, Fixnum -> Range rows, some cols
CHECK_FIXNUM(argv[1]); CHECK_FIXNUM(argv[2]);
@@ -196,11 +196,11 @@ void parse_submatrix_args(int argc, VALUE *argv, size_t size1, size_t size2,
*i = (size_t)ii;
*j = (size_t) ij;
*n2 = (size_t) in2;
- // Fixnum, Fixnum, ...
+ // Fixnum, Fixnum, ...
} else {
CHECK_FIXNUM(argv[0]); CHECK_FIXNUM(argv[1]);
ii = FIX2INT(argv[0]);
- if(ii < 0) ii += size1;
+ if(ii < 0) ii += size1;
in1 = FIX2INT(argv[1]);
*i = (size_t)ii;
*n1 = (size_t)in1;
@@ -218,7 +218,7 @@ void parse_submatrix_args(int argc, VALUE *argv, size_t size1, size_t size2,
*j = (size_t)ij;
} else {
rb_raise(rb_eArgError, "expected third argument to be nil or Range, not %s",
- rb_class2name(CLASS_OF(argv[2])));
+ rb_class2name(CLASS_OF(argv[2])));
}
}
break;
@@ -241,7 +241,7 @@ void parse_submatrix_args(int argc, VALUE *argv, size_t size1, size_t size2,
}
#endif
-VALUE FUNCTION(rb_gsl_matrix,do_something)(VALUE obj, void (*f)(GSL_TYPE(gsl_matrix) *))
+VALUE FUNCTION(rb_gsl_matrix,do_something)(VALUE obj, void (*f)(GSL_TYPE (gsl_matrix) *))
{
GSL_TYPE(gsl_matrix) *m = NULL;
Data_Get_Struct(obj, GSL_TYPE(gsl_matrix), m);
@@ -257,16 +257,13 @@ static VALUE FUNCTION(rb_gsl_matrix,alloc)(int argc, VALUE *argv, VALUE klass)
{
GSL_TYPE(gsl_matrix) *m = NULL;
size_t n1, n2;
-#ifdef HAVE_NARRAY_H
- size_t n;
- VALUE ary;
- struct NARRAY *na;
-#endif
- if (argc < 1) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for >= 1)", argc);
-
+ if (argc < 1) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for >= 1)", argc);
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv[0])) {
+ size_t n;
+ VALUE ary;
+ struct NARRAY *na;
GetNArray(argv[0], na);
n = na->shape[0]*na->shape[1];
m = FUNCTION(gsl_matrix,alloc)(na->shape[1], na->shape[0]);
@@ -282,8 +279,8 @@ static VALUE FUNCTION(rb_gsl_matrix,alloc)(int argc, VALUE *argv, VALUE klass)
#endif
switch (TYPE(argv[0])) {
case T_FIXNUM:
- if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
+ argc);
CHECK_FIXNUM(argv[1]);
n1 = FIX2INT(argv[0]); n2 = FIX2INT(argv[1]);
m = FUNCTION(gsl_matrix,calloc)(n1, n2);
@@ -300,38 +297,38 @@ static VALUE FUNCTION(rb_gsl_matrix,alloc)(int argc, VALUE *argv, VALUE klass)
break;
case T_FIXNUM:
if (argc != 3) rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)",
- argc);
+ argc);
CHECK_FIXNUM(argv[2]);
m = FUNCTION(gsl_matrix,alloc_from_array_sizes)(argv[0], argv[1], argv[2]);
break;
default:
- rb_raise(rb_eTypeError,
- "wrong argument type %s\nUsage: new(n1, n2), "
- "new([], [], [], ...), new([], n1, n2)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s\nUsage: new(n1, n2), "
+ "new([], [], [], ...), new([], n1, n2)",
+ rb_class2name(CLASS_OF(argv[1])));
break;
}
break;
default:
if (CLASS_OF(argv[0]) == rb_cRange) {
if (argc==3 && TYPE(argv[1]) == T_FIXNUM && TYPE(argv[2]) == T_FIXNUM)
- return FUNCTION(create_matrix,from_range_shape)(argv[0], argv[1], argv[2]);
+ return FUNCTION(create_matrix,from_range_shape)(argv[0], argv[1], argv[2]);
else
- return FUNCTION(create_matrix,from_ranges)(argc, argv);
+ return FUNCTION(create_matrix,from_ranges)(argc, argv);
} else if (VEC_P(argv[0])) {
if (argc == 3 && FIXNUM_P(argv[1]) && FIXNUM_P(argv[2])) {
- m = FUNCTION(gsl_matrix,alloc_from_vector_sizes)(argv[0], argv[1], argv[2]);
+ m = FUNCTION(gsl_matrix,alloc_from_vector_sizes)(argv[0], argv[1], argv[2]);
} else {
- if (VEC_COL_P(argv[0])) {
- m = FUNCTION(gsl_matrix,alloc_from_colvectors)(argc, argv);
- } else {
- m = FUNCTION(gsl_matrix,alloc_from_vectors)(argc, argv);
- }
+ if (VEC_COL_P(argv[0])) {
+ m = FUNCTION(gsl_matrix,alloc_from_colvectors)(argc, argv);
+ } else {
+ m = FUNCTION(gsl_matrix,alloc_from_vectors)(argc, argv);
+ }
}
} else {
rb_raise(rb_eTypeError, "wrong argument type %s\n"
- "Usage: new(n1, n2), new([], [], [], ...), new([], n1, n2)",
- rb_class2name(CLASS_OF(argv[0])));
+ "Usage: new(n1, n2), new([], [], [], ...), new([], n1, n2)",
+ rb_class2name(CLASS_OF(argv[0])));
}
break;
}
@@ -350,9 +347,9 @@ static GSL_TYPE(gsl_matrix)* FUNCTION(cr_matrix,from_ranges)(int argc, VALUE *ar
m = FUNCTION(gsl_matrix,calloc)(argc, n);
FUNCTION(set_ptr_data,by_range)(m->data, n, argv[0]);
for (i = 1; (int) i < argc; i++) {
- if (CLASS_OF(argv[i]) != rb_cRange)
+ if (CLASS_OF(argv[i]) != rb_cRange)
rb_raise(rb_eTypeError, "wrong argument type %s (Range expected)",
- rb_class2name(CLASS_OF(argv[i])));
+ rb_class2name(CLASS_OF(argv[i])));
FUNCTION(set_ptr_data,by_range)(m->data+i*n, n, argv[i]);
}
return m;
@@ -430,7 +427,7 @@ GSL_TYPE(gsl_matrix)* FUNCTION(gsl_matrix,alloc_from_colvectors)(int argc, VALUE
CHECK_VEC(argv[0]);
Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), v);
// m = FUNCTION(gsl_matrix,alloc)(argc, v->size);
- m = FUNCTION(gsl_matrix,alloc)(v->size, argc);
+ m = FUNCTION(gsl_matrix,alloc)(v->size, argc);
if (m == NULL) rb_raise(rb_eNoMemError, "gsl_matrix_alloc failed");
for (i = 0; (int) i < argc; i++) {
CHECK_VEC(argv[i]);
@@ -442,7 +439,7 @@ GSL_TYPE(gsl_matrix)* FUNCTION(gsl_matrix,alloc_from_colvectors)(int argc, VALUE
/* create a matrix from two sizes and an array */
GSL_TYPE(gsl_matrix)* FUNCTION(gsl_matrix,alloc_from_array_sizes)(VALUE ary,
- VALUE nn1, VALUE nn2)
+ VALUE nn1, VALUE nn2)
{
size_t n1, n2, len;
GSL_TYPE(gsl_matrix) *m = NULL;
@@ -458,17 +455,16 @@ GSL_TYPE(gsl_matrix)* FUNCTION(gsl_matrix,alloc_from_array_sizes)(VALUE ary,
for (i = 0; i < n1; i++) {
for (j = 0; j < n2; j++, k++) {
if (k >= len)
- FUNCTION(gsl_matrix,set)(m, i, j, (BASE) 0);
+ FUNCTION(gsl_matrix,set)(m, i, j, (BASE) 0);
else
- FUNCTION(gsl_matrix,set)(m, i, j, (BASE) NUMCONV2(rb_ary_entry(ary, k)));
-
+ FUNCTION(gsl_matrix,set)(m, i, j, (BASE) NUMCONV2(rb_ary_entry(ary, k)));
}
}
return m;
}
GSL_TYPE(gsl_matrix)* FUNCTION(gsl_matrix,alloc_from_vector_sizes)(VALUE ary,
- VALUE nn1, VALUE nn2)
+ VALUE nn1, VALUE nn2)
{
size_t n1, n2;
GSL_TYPE(gsl_matrix) *m = NULL;
@@ -483,10 +479,10 @@ GSL_TYPE(gsl_matrix)* FUNCTION(gsl_matrix,alloc_from_vector_sizes)(VALUE ary,
k = 0;
for (i = 0; i < n1; i++) {
for (j = 0; j < n2; j++, k++) {
- if (k >= v->size)
- FUNCTION(gsl_matrix,set)(m, i, j, (BASE) 0);
+ if (k >= v->size)
+ FUNCTION(gsl_matrix,set)(m, i, j, (BASE) 0);
else
- FUNCTION(gsl_matrix,set)(m, i, j, FUNCTION(gsl_vector,get)(v, k));
+ FUNCTION(gsl_matrix,set)(m, i, j, FUNCTION(gsl_vector,get)(v, k));
}
}
return m;
@@ -515,7 +511,7 @@ static VALUE FUNCTION(rb_gsl_matrix,diagonal_singleton)(int argc, VALUE *argv, V
len = FIX2INT(argv[0]);
m = FUNCTION(gsl_matrix,alloc)(len, len);
for (i = 0; i < len; i++)
- FUNCTION(gsl_matrix,set)(m, i, i, 1);
+ FUNCTION(gsl_matrix,set)(m, i, i, 1);
return Data_Wrap_Struct(klass, 0, FUNCTION(gsl_matrix,free), m);
break;
default:
@@ -530,8 +526,8 @@ static VALUE FUNCTION(rb_gsl_matrix,diagonal_singleton)(int argc, VALUE *argv, V
len = RARRAY_LEN(ary);
m = FUNCTION(gsl_matrix,calloc)(len, len);
for (i = 0; i < len; i++) {
- tmp = rb_ary_entry(ary, i);
- FUNCTION(gsl_matrix,set)(m, i, i, NUMCONV2(tmp));
+ tmp = rb_ary_entry(ary, i);
+ FUNCTION(gsl_matrix,set)(m, i, i, NUMCONV2(tmp));
}
break;
default:
@@ -540,7 +536,7 @@ static VALUE FUNCTION(rb_gsl_matrix,diagonal_singleton)(int argc, VALUE *argv, V
len = v->size;
m = FUNCTION(gsl_matrix,calloc)(len, len);
for (i = 0; i < len; i++) {
- FUNCTION(gsl_matrix,set)(m, i, i, FUNCTION(gsl_vector,get)(v, i));
+ FUNCTION(gsl_matrix,set)(m, i, i, FUNCTION(gsl_vector,get)(v, i));
}
break;
}
@@ -711,7 +707,6 @@ static VALUE FUNCTION(rb_gsl_matrix,get)(int argc, VALUE *argv, VALUE obj)
} else {
retval = FUNCTION(rb_gsl_matrix,submatrix)(argc, argv, obj);
}
-
return retval;
}
@@ -729,7 +724,6 @@ static VALUE FUNCTION(rb_gsl_matrix,set)(int argc, VALUE *argv, VALUE obj)
if(argc < 1 || argc > 5) {
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1-5)", argc);
}
-
Data_Get_Struct(obj, GSL_TYPE(gsl_matrix), m);
other = argv[argc-1];
@@ -783,7 +777,7 @@ static VALUE FUNCTION(rb_gsl_matrix,set)(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(other, GSL_TYPE(gsl_matrix), mother);
if(n1 * n2 != mother->size1 * mother->size2) {
rb_raise(rb_eRangeError, "sizes do not match (%d x %d != %d x %d)",
- (int) n1, (int) n2, (int) mother->size1, (int) mother->size2);
+ (int) n1, (int) n2, (int) mother->size1, (int) mother->size2);
}
// TODO Change to gsl_matrix_memmove if/when GSL has such a function
// because gsl_matrix_memcpy does not handle overlapping regions (e.g.
@@ -801,7 +795,7 @@ static VALUE FUNCTION(rb_gsl_matrix,set)(int argc, VALUE *argv, VALUE obj)
// m[...] = [[row0], [row1], ...] # multiple rows
if((int) n1 != RARRAY_LEN(other)) {
rb_raise(rb_eRangeError, "row counts do not match (%d != %d)",
- (int) n1, (int) RARRAY_LEN(other));
+ (int) n1, (int) RARRAY_LEN(other));
}
for(k = 0; k < n1; k++) {
vv = FUNCTION(gsl_matrix,row)(&mv.matrix, k);
@@ -824,7 +818,6 @@ static VALUE FUNCTION(rb_gsl_matrix,set)(int argc, VALUE *argv, VALUE obj)
FUNCTION(gsl_matrix,set_all)(&mv.matrix, NUMCONV2(other));
}
}
-
return obj;
}
@@ -893,7 +886,7 @@ static VALUE FUNCTION(rb_gsl_matrix,to_s)(VALUE obj)
strcpy(format2, format);
#else
strcpy(format, PRINTF_FORMAT);
- strcpy(format2, " "PRINTF_FORMAT);
+ strcpy(format2, " " PRINTF_FORMAT);
#endif
str = rb_str_new2("[ ");
for (i = 0; i < m->size1; i++) {
@@ -904,9 +897,9 @@ static VALUE FUNCTION(rb_gsl_matrix,to_s)(VALUE obj)
for (j = 0; j < m->size2; j++) {
x = FUNCTION(gsl_matrix,get)(m, i, j);
if (x < 0)
- sprintf(buf, format, x);
+ sprintf(buf, format, x);
else
- sprintf(buf, format2, x);
+ sprintf(buf, format2, x);
rb_str_cat(str, buf, strlen(buf));
if ((int) j >= (55/dig)) {
strcpy(buf, "... ");
@@ -1015,11 +1008,11 @@ static VALUE FUNCTION(rb_gsl_matrix,set_diagonal)(VALUE obj, VALUE diag)
Data_Get_Struct(diag, GSL_TYPE(gsl_vector), v);
len = GSL_MIN_INT(m->size1, v->size);
for (i = 0; i < len; i++) {
- FUNCTION(gsl_matrix,set)(m, i, i, FUNCTION(gsl_vector,get)(v, i));
+ FUNCTION(gsl_matrix,set)(m, i, i, FUNCTION(gsl_vector,get)(v, i));
}
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Vector or Array expected)",
- rb_class2name(CLASS_OF(diag)));
+ rb_class2name(CLASS_OF(diag)));
}
break;
}
@@ -1268,7 +1261,7 @@ static VALUE FUNCTION(rb_gsl_matrix,minmax_index)(VALUE obj)
Data_Get_Struct(obj, GSL_TYPE(gsl_matrix), m);
FUNCTION(gsl_matrix,minmax_index)(m, &imin, &jmin, &imax, &jmax);
return rb_ary_new3(2, rb_ary_new3(2, INT2FIX(imin), INT2FIX(jmin)),
- rb_ary_new3(2, INT2FIX(imax), INT2FIX(jmax)));
+ rb_ary_new3(2, INT2FIX(imax), INT2FIX(jmax)));
}
static VALUE FUNCTION(rb_gsl_matrix,fwrite)(VALUE obj, VALUE io)
@@ -1333,7 +1326,7 @@ VALUE FUNCTION(rb_gsl_matrix,power)(VALUE obj, VALUE bb)
size_t i, b;
CHECK_FIXNUM(bb);
Data_Get_Struct(obj, GSL_TYPE(gsl_matrix), m);
- b = FIX2INT(bb);
+ b = FIX2INT(bb);
mtmp = FUNCTION(gsl_matrix,alloc)(m->size1, m->size2);
mnew = FUNCTION(gsl_matrix,alloc)(m->size1, m->size2);
FUNCTION(gsl_matrix,memcpy)(mnew, m);
@@ -1374,8 +1367,8 @@ static VALUE FUNCTION(rb_gsl_matrix,submatrix)(int argc, VALUE *argv, VALUE obj)
}
static VALUE FUNCTION(rb_gsl_matrix,return_vector_view)(VALUE obj, VALUE index,
- QUALIFIED_VIEW(gsl_vector,view) (*f)(GSL_TYPE(gsl_matrix)*,
- size_t))
+ QUALIFIED_VIEW(gsl_vector,view) (*f)(GSL_TYPE(gsl_matrix)*,
+ size_t))
{
GSL_TYPE(gsl_matrix) *m = NULL;
QUALIFIED_VIEW(gsl_vector,view) *vv = NULL;
@@ -1402,9 +1395,8 @@ static VALUE FUNCTION(rb_gsl_matrix,column)(VALUE obj, VALUE j)
return Data_Wrap_Struct(QUALIFIED_VIEW(cgsl_vector,col_view), 0, free, vv);
}
-#ifdef GSL_1_10_LATER
static VALUE FUNCTION(rb_gsl_matrix,subrow)(VALUE obj, VALUE i, VALUE offset,
- VALUE n)
+ VALUE n)
{
GSL_TYPE(gsl_matrix) *m = NULL;
QUALIFIED_VIEW(gsl_vector,view) *vv = NULL;
@@ -1414,7 +1406,7 @@ static VALUE FUNCTION(rb_gsl_matrix,subrow)(VALUE obj, VALUE i, VALUE offset,
return Data_Wrap_Struct(QUALIFIED_VIEW(cgsl_vector,view), 0, free, vv);
}
static VALUE FUNCTION(rb_gsl_matrix,subcolumn)(VALUE obj, VALUE j, VALUE offset,
- VALUE n)
+ VALUE n)
{
GSL_TYPE(gsl_matrix) *m = NULL;
QUALIFIED_VIEW(gsl_vector,view) *vv = NULL;
@@ -1423,7 +1415,6 @@ static VALUE FUNCTION(rb_gsl_matrix,subcolumn)(VALUE obj, VALUE j, VALUE offset,
*vv = FUNCTION(gsl_matrix,subcolumn)(m, FIX2INT(j), FIX2INT(offset), FIX2INT(n));
return Data_Wrap_Struct(QUALIFIED_VIEW(cgsl_vector,col_view), 0, free, vv);
}
-#endif
static VALUE FUNCTION(rb_gsl_matrix,diagonal)(VALUE obj)
{
@@ -1499,7 +1490,7 @@ static VALUE FUNCTION(rb_gsl_matrix,scale_bang)(VALUE obj, VALUE x)
{
GSL_TYPE(gsl_matrix) *m;
Data_Get_Struct(obj, GSL_TYPE(gsl_matrix), m);
- FUNCTION(gsl_matrix,scale)(m, NUMCONV(x));
+ FUNCTION(gsl_matrix,scale)(m, NUMCONV2(x));
return obj;
}
@@ -1508,7 +1499,7 @@ static VALUE FUNCTION(rb_gsl_matrix,scale)(VALUE obj, VALUE b)
GSL_TYPE(gsl_matrix) *m = NULL, *mnew;
Data_Get_Struct(obj, GSL_TYPE(gsl_matrix), m);
mnew = FUNCTION(make_matrix,clone)(m);
- FUNCTION(gsl_matrix,scale)(mnew, NUMCONV(b));
+ FUNCTION(gsl_matrix,scale)(mnew, NUMCONV2(b));
return Data_Wrap_Struct(GSL_TYPE(cgsl_matrix), 0, FUNCTION(gsl_matrix,free), mnew);
}
@@ -1516,7 +1507,7 @@ static VALUE FUNCTION(rb_gsl_matrix,add_constant_bang)(VALUE obj, VALUE x)
{
GSL_TYPE(gsl_matrix) *m;
Data_Get_Struct(obj, GSL_TYPE(gsl_matrix), m);
- FUNCTION(gsl_matrix,add_constant)(m, NUMCONV(x));
+ FUNCTION(gsl_matrix,add_constant)(m, NUMCONV2(x));
return obj;
}
@@ -1525,7 +1516,7 @@ static VALUE FUNCTION(rb_gsl_matrix,add_constant)(VALUE obj, VALUE b)
GSL_TYPE(gsl_matrix) *m = NULL, *mnew;
Data_Get_Struct(obj, GSL_TYPE(gsl_matrix), m);
mnew = FUNCTION(make_matrix,clone)(m);
- FUNCTION(gsl_matrix,add_constant)(mnew, NUMCONV(b));
+ FUNCTION(gsl_matrix,add_constant)(mnew, NUMCONV2(b));
return Data_Wrap_Struct(GSL_TYPE(cgsl_matrix), 0, FUNCTION(gsl_matrix,free), mnew);
}
@@ -1543,7 +1534,7 @@ static int FUNCTION(mygsl_matrix,equal)(GSL_TYPE(gsl_matrix) *a, GSL_TYPE(gsl_ma
}
return 1;
}
-
+
#ifdef HAVE_TENSOR_TENSOR_H
EXTERN VALUE cgsl_tensor, cgsl_tensor_int;
VALUE rb_gsl_tensor_equal(int argc, VALUE *argv, VALUE obj);
@@ -1711,7 +1702,7 @@ static VALUE FUNCTION(rb_gsl_matrix,pascal1)(VALUE obj, VALUE n)
for (i = 1; i < dim; i++) {
FUNCTION(gsl_matrix,set)(m, i, 0, (BASE) 1);
for (j = 1; j < dim; j++) {
- x=FUNCTION(gsl_matrix,get)(m,i-1,j)+FUNCTION(gsl_matrix,get)(m,i,j-1);
+ x = FUNCTION(gsl_matrix,get)(m,i-1,j)+FUNCTION(gsl_matrix,get)(m,i,j-1);
FUNCTION(gsl_matrix,set)(m, i, j, x);
}
}
@@ -1785,7 +1776,7 @@ static VALUE FUNCTION(rb_gsl_matrix,vandermonde)(VALUE obj, VALUE vv)
Data_Get_Struct(vv, GSL_TYPE(gsl_vector), v);
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Array or Vector expected)",
- rb_class2name(CLASS_OF(vv)));
+ rb_class2name(CLASS_OF(vv)));
}
m = FUNCTION(gsl_matrix,alloc)(v->size, v->size);
FUNCTION(mygsl_matrix,vandermonde)(m, v);
@@ -1798,10 +1789,10 @@ static void FUNCTION(mygsl_matrix,toeplitz)(GSL_TYPE(gsl_matrix) *m, GSL_TYPE(gs
size_t i, j;
for (i = 0; i < v->size; i++) {
for (j = 0; j < v->size; j++) {
- if (j >= i)
- FUNCTION(gsl_matrix,set)(m, i, j, FUNCTION(gsl_vector,get)(v, j-i));
+ if (j >= i)
+ FUNCTION(gsl_matrix,set)(m, i, j, FUNCTION(gsl_vector,get)(v, j-i));
else
- FUNCTION(gsl_matrix,set)(m, i, j, FUNCTION(gsl_vector,get)(v, i-j));
+ FUNCTION(gsl_matrix,set)(m, i, j, FUNCTION(gsl_vector,get)(v, i-j));
}
}
}
@@ -1818,7 +1809,7 @@ static VALUE FUNCTION(rb_gsl_matrix,toeplitz)(VALUE obj, VALUE vv)
Data_Get_Struct(vv, GSL_TYPE(gsl_vector), v);
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Array or Vector expected)",
- rb_class2name(CLASS_OF(vv)));
+ rb_class2name(CLASS_OF(vv)));
}
m = FUNCTION(gsl_matrix,alloc)(v->size, v->size);
FUNCTION(mygsl_matrix,toeplitz)(m, v);
@@ -1839,7 +1830,7 @@ static VALUE FUNCTION(rb_gsl_matrix,circulant)(VALUE obj, VALUE vv)
Data_Get_Struct(vv, GSL_TYPE(gsl_vector), v);
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Array or Vector expected)",
- rb_class2name(CLASS_OF(vv)));
+ rb_class2name(CLASS_OF(vv)));
}
m = FUNCTION(gsl_matrix,alloc)(v->size, v->size);
FUNCTION(mygsl_vector,to_m_circulant)(m, v);
@@ -1848,7 +1839,7 @@ static VALUE FUNCTION(rb_gsl_matrix,circulant)(VALUE obj, VALUE vv)
}
static void FUNCTION(mygsl_matrix,indgen)(GSL_TYPE(gsl_matrix) *m,
- BASE start, BASE step)
+ BASE start, BASE step)
{
size_t i, j;
BASE n;
@@ -1869,10 +1860,10 @@ static VALUE FUNCTION(rb_gsl_matrix,indgen_singleton)(int argc, VALUE *argv, VAL
switch (argc) {
case 4:
step = NUMCONV2(argv[3]);
- /* no break */
+ /* no break */
case 3:
start = NUMCONV2(argv[2]);
- /* no break */
+ /* no break */
case 2:
n1 = NUM2INT(argv[0]);
n2 = NUM2INT(argv[1]);
@@ -1893,7 +1884,7 @@ static VALUE FUNCTION(rb_gsl_matrix,indgen)(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 2:
step = NUMCONV2(argv[1]);
- /* no break */
+ /* no break */
case 1:
start = NUMCONV2(argv[0]);
break;
@@ -1916,7 +1907,7 @@ static VALUE FUNCTION(rb_gsl_matrix,indgen_bang)(int argc, VALUE *argv, VALUE ob
switch (argc) {
case 2:
step = NUMCONV2(argv[1]);
- /* no break */
+ /* no break */
case 1:
start = NUMCONV2(argv[0]);
break;
@@ -1938,10 +1929,10 @@ static VALUE FUNCTION(rb_gsl_matrix,to_a)(VALUE obj)
size_t i, j;
Data_Get_Struct(obj, GSL_TYPE(gsl_matrix), m);
ma = rb_ary_new2(m->size1);
- for(i=0; i < m->size1; i++) {
+ for(i = 0; i < m->size1; i++) {
ra = rb_ary_new2(m->size2);
rb_ary_store(ma, i, ra);
- for(j=0; j < m->size2; j++) {
+ for(j = 0; j < m->size2; j++) {
rb_ary_store(ra, j, C_TO_VALUE(FUNCTION(gsl_matrix,get)(m, i, j)));
}
}
@@ -1961,7 +1952,6 @@ static VALUE FUNCTION(rb_gsl_matrix,to_v)(VALUE obj)
FUNCTION(gsl_vector,set)(v, k, FUNCTION(gsl_matrix,get)(m, i, j));
}
}
-
if(m->size1 > 1 && m->size2 == 1) {
return Data_Wrap_Struct(CONCAT2(GSL_TYPE(cgsl_vector),col), 0, FUNCTION(gsl_vector,free), v);
} else {
@@ -1994,7 +1984,7 @@ static VALUE FUNCTION(rb_gsl_matrix,norm)(VALUE obj)
}
static int FUNCTION(mygsl_matrix,reverse_columns)(GSL_TYPE(gsl_matrix) *dst,
- GSL_TYPE(gsl_matrix) *src)
+ GSL_TYPE(gsl_matrix) *src)
{
size_t j;
QUALIFIED_VIEW(gsl_vector,view) col;
@@ -2008,7 +1998,7 @@ static int FUNCTION(mygsl_matrix,reverse_columns)(GSL_TYPE(gsl_matrix) *dst,
}
static int FUNCTION(mygsl_matrix,reverse_rows)(GSL_TYPE(gsl_matrix) *dst,
- GSL_TYPE(gsl_matrix) *src)
+ GSL_TYPE(gsl_matrix) *src)
{
size_t i;
QUALIFIED_VIEW(gsl_vector,view) row;
@@ -2112,14 +2102,14 @@ static VALUE FUNCTION(rb_gsl_matrix,all)(VALUE obj)
vv = FUNCTION(gsl_matrix,column)(m, j);
v = &vv.vector;
/* if (FUNCTION(gsl_vector,isnull(v))) gsl_vector_int_set(vnew, j, 0);
- else gsl_vector_int_set(vnew, j, 1);*/
+ else gsl_vector_int_set(vnew, j, 1);*/
for (i = 0; i < v->size; i++) {
if (FUNCTION(gsl_vector,get)(v, i) == (BASE) 0) {
- gsl_vector_int_set(vnew, j, 0);
- flag = 0;
- break;
+ gsl_vector_int_set(vnew, j, 0);
+ flag = 0;
+ break;
} else {
- flag = 1;
+ flag = 1;
}
}
if (flag == 1) gsl_vector_int_set(vnew, j, 1);
@@ -2181,7 +2171,7 @@ static VALUE FUNCTION(rb_gsl_matrix,rot90)(int argc, VALUE *argv, VALUE obj)
}
void FUNCTION(mygsl_vector,diff)(GSL_TYPE(gsl_vector) *vdst,
- GSL_TYPE(gsl_vector) *vsrc, size_t n);
+ GSL_TYPE(gsl_vector) *vsrc, size_t n);
static VALUE FUNCTION(rb_gsl_matrix,diff)(int argc, VALUE *argv, VALUE obj)
{
@@ -2254,7 +2244,6 @@ static VALUE FUNCTION(rb_gsl_matrix,sgn)(VALUE obj)
FUNCTION(gsl_matrix,set)(mnew, i, j, (BASE)(x>0 ? 1 : (x<0 ? -1 : 0)));
}
}
-
return Data_Wrap_Struct(GSL_TYPE(cgsl_matrix), 0, FUNCTION(gsl_matrix,free), mnew);
}
@@ -2269,7 +2258,6 @@ static VALUE FUNCTION(rb_gsl_matrix,abs)(VALUE obj)
FUNCTION(gsl_matrix,set)(mnew, i, j, (BASE) fabs(FUNCTION(gsl_matrix,get)(m, i, j)));
}
}
-
return Data_Wrap_Struct(GSL_TYPE(cgsl_matrix), 0, FUNCTION(gsl_matrix,free), mnew);
}
@@ -2281,9 +2269,9 @@ static VALUE FUNCTION(rb_gsl_matrix,horzcat)(VALUE obj, VALUE mm2)
CHECK_MAT(mm2);
Data_Get_Struct(obj, GSL_TYPE(gsl_matrix), m);
Data_Get_Struct(mm2, GSL_TYPE(gsl_matrix), m2);
- if (m->size1 != m2->size1)
+ if (m->size1 != m2->size1)
rb_raise(rb_eRuntimeError, "Different number of rows (%d and %d).",
- (int) m->size1, (int) m2->size1);
+ (int) m->size1, (int) m2->size1);
mnew = FUNCTION(gsl_matrix,alloc)(m->size1, m->size2 + m2->size2);
for (j = 0, k = 0; j < m->size2; j++, k++) {
v = FUNCTION(gsl_matrix,column)(m, j);
@@ -2311,9 +2299,9 @@ static VALUE FUNCTION(rb_gsl_matrix,vertcat)(VALUE obj, VALUE mm2)
CHECK_MAT(mm2);
Data_Get_Struct(obj, GSL_TYPE(gsl_matrix), m);
Data_Get_Struct(mm2, GSL_TYPE(gsl_matrix), m2);
- if (m->size2 != m2->size2)
+ if (m->size2 != m2->size2)
rb_raise(rb_eRuntimeError, "Different number of columns (%d and %d).",
- (int) m->size2, (int) m2->size2);
+ (int) m->size2, (int) m2->size2);
mnew = FUNCTION(gsl_matrix,alloc)(m->size1 + m2->size1, m->size2);
for (i = 0, k = 0; i < m->size1; i++, k++) {
v = FUNCTION(gsl_matrix,row)(m, i);
@@ -2332,17 +2320,16 @@ static VALUE FUNCTION(rb_gsl_matrix,vertcat_singleton)(VALUE klass, VALUE mm, VA
return FUNCTION(rb_gsl_matrix,vertcat)(mm, mm2);
}
-#ifdef GSL_1_9_LATER
static VALUE FUNCTION(rb_gsl_matrix,property)(VALUE obj,
- int (*f)(const GSL_TYPE(gsl_matrix)*)) {
+ int (*f)(const GSL_TYPE (gsl_matrix)*)) {
GSL_TYPE(gsl_matrix) *m;
Data_Get_Struct(obj, GSL_TYPE(gsl_matrix), m);
- return INT2FIX((*f)(m));
+ return INT2FIX((*f)(m));
}
static VALUE FUNCTION(rb_gsl_matrix,property2)(VALUE obj,
- int (*f)(const GSL_TYPE(gsl_matrix) *)) {
- GSL_TYPE(gsl_matrix) *m;
+ int (*f)(const GSL_TYPE (gsl_matrix) *)) {
+ GSL_TYPE(gsl_matrix) *m;
Data_Get_Struct(obj, GSL_TYPE(gsl_matrix), m);
if ((*f)(m)) return Qtrue;
else return Qfalse;
@@ -2353,28 +2340,25 @@ static VALUE FUNCTION(rb_gsl_matrix,ispos)(VALUE obj)
}
static VALUE FUNCTION(rb_gsl_matrix,ispos2)(VALUE obj)
{
- return FUNCTION(rb_gsl_matrix,property2)(obj, FUNCTION(gsl_matrix,ispos));
+ return FUNCTION(rb_gsl_matrix,property2)(obj, FUNCTION(gsl_matrix,ispos));
}
static VALUE FUNCTION(rb_gsl_matrix,isneg)(VALUE obj)
{
- return FUNCTION(rb_gsl_matrix,property)(obj, FUNCTION(gsl_matrix,isneg));
+ return FUNCTION(rb_gsl_matrix,property)(obj, FUNCTION(gsl_matrix,isneg));
}
static VALUE FUNCTION(rb_gsl_matrix,isneg2)(VALUE obj)
{
- return FUNCTION(rb_gsl_matrix,property2)(obj, FUNCTION(gsl_matrix,isneg));
+ return FUNCTION(rb_gsl_matrix,property2)(obj, FUNCTION(gsl_matrix,isneg));
}
-#endif
-#ifdef GSL_1_10_LATER
static VALUE FUNCTION(rb_gsl_matrix,isnonneg)(VALUE obj)
{
- return FUNCTION(rb_gsl_matrix,property)(obj, FUNCTION(gsl_matrix,isnonneg));
+ return FUNCTION(rb_gsl_matrix,property)(obj, FUNCTION(gsl_matrix,isnonneg));
}
static VALUE FUNCTION(rb_gsl_matrix,isnonneg2)(VALUE obj)
{
- return FUNCTION(rb_gsl_matrix,property2)(obj, FUNCTION(gsl_matrix,isnonneg));
+ return FUNCTION(rb_gsl_matrix,property2)(obj, FUNCTION(gsl_matrix,isnonneg));
}
-#endif
static VALUE FUNCTION(rb_gsl_matrix,symmetrize)(VALUE obj)
{
@@ -2419,26 +2403,26 @@ void FUNCTION(Init_gsl_matrix,init)(VALUE module)
rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "eye", FUNCTION(rb_gsl_matrix,eye), -1);
rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "ones", FUNCTION(rb_gsl_matrix,ones), -1);
rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "zeros", FUNCTION(rb_gsl_matrix,zeros), -1);
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "diagonal",
- FUNCTION(rb_gsl_matrix,diagonal_singleton), -1);
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "diag",
- FUNCTION(rb_gsl_matrix,diagonal_singleton), -1);
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "identity",
- FUNCTION(rb_gsl_matrix,identity), 1);
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "scalar",
- FUNCTION(rb_gsl_matrix,identity), 1);
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "unit",
- FUNCTION(rb_gsl_matrix,identity), 1);
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "I",
- FUNCTION(rb_gsl_matrix,identity), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "diagonal",
+ FUNCTION(rb_gsl_matrix,diagonal_singleton), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "diag",
+ FUNCTION(rb_gsl_matrix,diagonal_singleton), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "identity",
+ FUNCTION(rb_gsl_matrix,identity), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "scalar",
+ FUNCTION(rb_gsl_matrix,identity), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "unit",
+ FUNCTION(rb_gsl_matrix,identity), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "I",
+ FUNCTION(rb_gsl_matrix,identity), 1);
/*****/
- rb_define_method(GSL_TYPE(cgsl_matrix), "size1",
- FUNCTION(rb_gsl_matrix,size1), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "size2",
- FUNCTION(rb_gsl_matrix,size2), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "shape",
- FUNCTION(rb_gsl_matrix,shape), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "size1",
+ FUNCTION(rb_gsl_matrix,size1), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "size2",
+ FUNCTION(rb_gsl_matrix,size2), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "shape",
+ FUNCTION(rb_gsl_matrix,shape), 0);
rb_define_alias(GSL_TYPE(cgsl_matrix), "size", "shape");
rb_define_method(GSL_TYPE(cgsl_matrix), "get", FUNCTION(rb_gsl_matrix,get), -1);
@@ -2446,238 +2430,236 @@ void FUNCTION(Init_gsl_matrix,init)(VALUE module)
rb_define_method(GSL_TYPE(cgsl_matrix), "set", FUNCTION(rb_gsl_matrix,set), -1);
rb_define_alias(GSL_TYPE(cgsl_matrix), "[]=", "set");
- rb_define_method(GSL_TYPE(cgsl_matrix), "set_all",
- FUNCTION(rb_gsl_matrix,set_all), 1);
- rb_define_method(GSL_TYPE(cgsl_matrix), "set_zero",
- FUNCTION(rb_gsl_matrix,set_zero), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "set_identity",
- FUNCTION(rb_gsl_matrix,set_identity), 0);
-
- rb_define_method(GSL_TYPE(cgsl_matrix), "print",
- FUNCTION(rb_gsl_matrix,print), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "inspect",
- FUNCTION(rb_gsl_matrix,inspect), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "to_s",
- FUNCTION(rb_gsl_matrix,to_s), 0);
-
- rb_define_method(GSL_TYPE(cgsl_matrix), "set_diagonal",
- FUNCTION(rb_gsl_matrix,set_diagonal), 1);
-
- rb_define_method(GSL_TYPE(cgsl_matrix), "get_row",
- FUNCTION(rb_gsl_matrix,get_row), 1);
- rb_define_method(GSL_TYPE(cgsl_matrix), "get_column",
- FUNCTION(rb_gsl_matrix,get_col), 1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "set_all",
+ FUNCTION(rb_gsl_matrix,set_all), 1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "set_zero",
+ FUNCTION(rb_gsl_matrix,set_zero), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "set_identity",
+ FUNCTION(rb_gsl_matrix,set_identity), 0);
+
+ rb_define_method(GSL_TYPE(cgsl_matrix), "print",
+ FUNCTION(rb_gsl_matrix,print), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "inspect",
+ FUNCTION(rb_gsl_matrix,inspect), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "to_s",
+ FUNCTION(rb_gsl_matrix,to_s), 0);
+
+ rb_define_method(GSL_TYPE(cgsl_matrix), "set_diagonal",
+ FUNCTION(rb_gsl_matrix,set_diagonal), 1);
+
+ rb_define_method(GSL_TYPE(cgsl_matrix), "get_row",
+ FUNCTION(rb_gsl_matrix,get_row), 1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "get_column",
+ FUNCTION(rb_gsl_matrix,get_col), 1);
rb_define_alias(GSL_TYPE(cgsl_matrix), "get_col", "get_column");
- rb_define_method(GSL_TYPE(cgsl_matrix), "set_column",
- FUNCTION(rb_gsl_matrix,set_col), 2);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "set_column",
+ FUNCTION(rb_gsl_matrix,set_col), 2);
rb_define_alias(GSL_TYPE(cgsl_matrix), "set_col", "set_column");
- rb_define_method(GSL_TYPE(cgsl_matrix), "set_row",
- FUNCTION(rb_gsl_matrix,set_row), 2);
-
- rb_define_method(GSL_TYPE(cgsl_matrix), "clone",
- FUNCTION(rb_gsl_matrix,clone), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "set_row",
+ FUNCTION(rb_gsl_matrix,set_row), 2);
+
+ rb_define_method(GSL_TYPE(cgsl_matrix), "clone",
+ FUNCTION(rb_gsl_matrix,clone), 0);
rb_define_alias(GSL_TYPE(cgsl_matrix), "duplicate", "clone");
rb_define_alias(GSL_TYPE(cgsl_matrix), "dup", "clone");
- rb_define_method(GSL_TYPE(cgsl_matrix), "isnull",
- FUNCTION(rb_gsl_matrix,isnull), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "isnull?",
- FUNCTION(rb_gsl_matrix,isnull2), 0);
-
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "memcpy",
- FUNCTION(rb_gsl_matrix,memcpy), 2);
-
- rb_define_method(GSL_TYPE(cgsl_matrix), "swap_rows",
- FUNCTION(rb_gsl_matrix,swap_rows), 2);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "isnull",
+ FUNCTION(rb_gsl_matrix,isnull), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "isnull?",
+ FUNCTION(rb_gsl_matrix,isnull2), 0);
+
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "memcpy",
+ FUNCTION(rb_gsl_matrix,memcpy), 2);
+
+ rb_define_method(GSL_TYPE(cgsl_matrix), "swap_rows",
+ FUNCTION(rb_gsl_matrix,swap_rows), 2);
rb_define_method(GSL_TYPE(cgsl_matrix), "swap_rows!",
- FUNCTION(rb_gsl_matrix,swap_rows_bang), 2);
+ FUNCTION(rb_gsl_matrix,swap_rows_bang), 2);
rb_define_method(GSL_TYPE(cgsl_matrix), "swap_columns",
- FUNCTION(rb_gsl_matrix,swap_columns), 2);
+ FUNCTION(rb_gsl_matrix,swap_columns), 2);
rb_define_alias(GSL_TYPE(cgsl_matrix), "swap_cols", "swap_columns");
rb_define_method(GSL_TYPE(cgsl_matrix), "swap_columns!",
- FUNCTION(rb_gsl_matrix,swap_columns_bang), 2);
+ FUNCTION(rb_gsl_matrix,swap_columns_bang), 2);
rb_define_alias(GSL_TYPE(cgsl_matrix), "swap_cols!", "swap_columns!");
- rb_define_method(GSL_TYPE(cgsl_matrix), "swap_rowcol",
- FUNCTION(rb_gsl_matrix,swap_rowcol), 2);
- rb_define_method(GSL_TYPE(cgsl_matrix), "swap_rowcol!",
- FUNCTION(rb_gsl_matrix,swap_rowcol_bang), 2);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "swap_rowcol",
+ FUNCTION(rb_gsl_matrix,swap_rowcol), 2);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "swap_rowcol!",
+ FUNCTION(rb_gsl_matrix,swap_rowcol_bang), 2);
rb_define_method(GSL_TYPE(cgsl_matrix), "transpose_memcpy",
- FUNCTION(rb_gsl_matrix,transpose_memcpy), 0);
+ FUNCTION(rb_gsl_matrix,transpose_memcpy), 0);
rb_define_alias(GSL_TYPE(cgsl_matrix), "transpose", "transpose_memcpy");
rb_define_alias(GSL_TYPE(cgsl_matrix), "trans", "transpose_memcpy");
- rb_define_method(GSL_TYPE(cgsl_matrix), "transpose!",
- FUNCTION(rb_gsl_matrix,transpose_bang), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "transpose!",
+ FUNCTION(rb_gsl_matrix,transpose_bang), 0);
rb_define_alias(GSL_TYPE(cgsl_matrix), "trans!", "transpose!");
- rb_define_method(GSL_TYPE(cgsl_matrix), "reverse_columns",
- FUNCTION(rb_gsl_matrix,reverse_columns), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "reverse_columns",
+ FUNCTION(rb_gsl_matrix,reverse_columns), 0);
rb_define_alias(GSL_TYPE(cgsl_matrix), "fliplr", "reverse_columns");
- rb_define_method(GSL_TYPE(cgsl_matrix), "reverse_columns!",
- FUNCTION(rb_gsl_matrix,reverse_columns_bang), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "reverse_rows",
- FUNCTION(rb_gsl_matrix,reverse_rows), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "reverse_columns!",
+ FUNCTION(rb_gsl_matrix,reverse_columns_bang), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "reverse_rows",
+ FUNCTION(rb_gsl_matrix,reverse_rows), 0);
rb_define_alias(GSL_TYPE(cgsl_matrix), "flipud", "reverse_rows");
- rb_define_method(GSL_TYPE(cgsl_matrix), "reverse_rows!",
- FUNCTION(rb_gsl_matrix,reverse_rows_bang), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "reverse_rows!",
+ FUNCTION(rb_gsl_matrix,reverse_rows_bang), 0);
/*****/
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "swap",
- FUNCTION(rb_gsl_matrix,swap), 2);
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "swap",
+ FUNCTION(rb_gsl_matrix,swap), 2);
rb_define_method(GSL_TYPE(cgsl_matrix), "max", FUNCTION(rb_gsl_matrix,max), 0);
rb_define_method(GSL_TYPE(cgsl_matrix), "min", FUNCTION(rb_gsl_matrix,min), 0);
rb_define_method(GSL_TYPE(cgsl_matrix), "minmax",
- FUNCTION(rb_gsl_matrix,minmax), 0);
+ FUNCTION(rb_gsl_matrix,minmax), 0);
rb_define_method(GSL_TYPE(cgsl_matrix), "max_index",
- FUNCTION(rb_gsl_matrix,max_index), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "min_index",
- FUNCTION(rb_gsl_matrix,min_index), 0);
+ FUNCTION(rb_gsl_matrix,max_index), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "min_index",
+ FUNCTION(rb_gsl_matrix,min_index), 0);
rb_define_method(GSL_TYPE(cgsl_matrix), "minmax_index",
- FUNCTION(rb_gsl_matrix,minmax_index), 0);
+ FUNCTION(rb_gsl_matrix,minmax_index), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "fwrite",
- FUNCTION(rb_gsl_matrix,fwrite), 1);
- rb_define_method(GSL_TYPE(cgsl_matrix), "fread",
- FUNCTION(rb_gsl_matrix,fread), 1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "fwrite",
+ FUNCTION(rb_gsl_matrix,fwrite), 1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "fread",
+ FUNCTION(rb_gsl_matrix,fread), 1);
rb_define_method(GSL_TYPE(cgsl_matrix), "fprintf",
- FUNCTION(rb_gsl_matrix,fprintf), -1);
- rb_define_method(GSL_TYPE(cgsl_matrix), "printf",
- FUNCTION(rb_gsl_matrix,printf), -1);
+ FUNCTION(rb_gsl_matrix,fprintf), -1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "printf",
+ FUNCTION(rb_gsl_matrix,printf), -1);
rb_define_method(GSL_TYPE(cgsl_matrix), "fscanf",
- FUNCTION(rb_gsl_matrix,fscanf), 1);
+ FUNCTION(rb_gsl_matrix,fscanf), 1);
- rb_define_method(GSL_TYPE(cgsl_matrix), "trace",
- FUNCTION(rb_gsl_matrix,trace), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "trace",
+ FUNCTION(rb_gsl_matrix,trace), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "-@",
- FUNCTION(rb_gsl_matrix,uminus), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "+@",
- FUNCTION(rb_gsl_matrix,uplus), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "-@",
+ FUNCTION(rb_gsl_matrix,uminus), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "+@",
+ FUNCTION(rb_gsl_matrix,uplus), 0);
/*****/
- rb_define_method(GSL_TYPE(cgsl_matrix), "submatrix",
- FUNCTION(rb_gsl_matrix,submatrix), -1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "submatrix",
+ FUNCTION(rb_gsl_matrix,submatrix), -1);
rb_define_alias(GSL_TYPE(cgsl_matrix), "view", "submatrix");
rb_define_method(GSL_TYPE(cgsl_matrix), "row", FUNCTION(rb_gsl_matrix,row), 1);
/* rb_define_alias(GSL_TYPE(cgsl_matrix), "[]", "row");*/
- rb_define_method(GSL_TYPE(cgsl_matrix), "column",
- FUNCTION(rb_gsl_matrix,column), 1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "column",
+ FUNCTION(rb_gsl_matrix,column), 1);
rb_define_alias(GSL_TYPE(cgsl_matrix), "col", "column");
-#ifdef GSL_1_10_LATER
- rb_define_method(GSL_TYPE(cgsl_matrix), "subrow",
- FUNCTION(rb_gsl_matrix,subrow), 3);
- rb_define_method(GSL_TYPE(cgsl_matrix), "subcolumn",
- FUNCTION(rb_gsl_matrix,subcolumn), 3);
- rb_define_alias(GSL_TYPE(cgsl_matrix), "subcol", "subcolumn");
-#endif
+ rb_define_method(GSL_TYPE(cgsl_matrix), "subrow",
+ FUNCTION(rb_gsl_matrix,subrow), 3);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "subcolumn",
+ FUNCTION(rb_gsl_matrix,subcolumn), 3);
+ rb_define_alias(GSL_TYPE(cgsl_matrix), "subcol", "subcolumn");
- rb_define_method(GSL_TYPE(cgsl_matrix), "diagonal",
- FUNCTION(rb_gsl_matrix,diagonal), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "diagonal",
+ FUNCTION(rb_gsl_matrix,diagonal), 0);
rb_define_alias(GSL_TYPE(cgsl_matrix), "diag", "diagonal");
- rb_define_method(GSL_TYPE(cgsl_matrix), "subdiagonal",
- FUNCTION(rb_gsl_matrix,subdiagonal), 1);
- rb_define_method(GSL_TYPE(cgsl_matrix), "superdiagonal",
- FUNCTION(rb_gsl_matrix,superdiagonal), 1);
- rb_define_method(GSL_TYPE(cgsl_matrix), "vector_view",
- FUNCTION(rb_gsl_matrix,vector_view), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "subdiagonal",
+ FUNCTION(rb_gsl_matrix,subdiagonal), 1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "superdiagonal",
+ FUNCTION(rb_gsl_matrix,superdiagonal), 1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "vector_view",
+ FUNCTION(rb_gsl_matrix,vector_view), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "each_row",
- FUNCTION(rb_gsl_matrix,each_row), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "each_row",
+ FUNCTION(rb_gsl_matrix,each_row), 0);
rb_define_method(GSL_TYPE(cgsl_matrix), "each_col",
- FUNCTION(rb_gsl_matrix,each_col), 0);
+ FUNCTION(rb_gsl_matrix,each_col), 0);
rb_define_alias(GSL_TYPE(cgsl_matrix), "each_column", "each_col");
- rb_define_method(GSL_TYPE(cgsl_matrix), "scale",
- FUNCTION(rb_gsl_matrix,scale), 1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "scale",
+ FUNCTION(rb_gsl_matrix,scale), 1);
rb_define_method(GSL_TYPE(cgsl_matrix), "scale!",
- FUNCTION(rb_gsl_matrix,scale_bang), 1);
+ FUNCTION(rb_gsl_matrix,scale_bang), 1);
rb_define_method(GSL_TYPE(cgsl_matrix), "add_constant",
- FUNCTION(rb_gsl_matrix,add_constant), 1);
- rb_define_method(GSL_TYPE(cgsl_matrix), "add_constant!",
- FUNCTION(rb_gsl_matrix,add_constant_bang), 1);
+ FUNCTION(rb_gsl_matrix,add_constant), 1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "add_constant!",
+ FUNCTION(rb_gsl_matrix,add_constant_bang), 1);
- rb_define_method(GSL_TYPE(cgsl_matrix), "equal?",
- FUNCTION(rb_gsl_matrix,equal), -1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "equal?",
+ FUNCTION(rb_gsl_matrix,equal), -1);
rb_define_alias(GSL_TYPE(cgsl_matrix), "==", "equal?");
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "equal?",
- FUNCTION(rb_gsl_matrix,equal_singleton), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "equal?",
+ FUNCTION(rb_gsl_matrix,equal_singleton), -1);
- rb_define_method(GSL_TYPE(cgsl_matrix), "power",
- FUNCTION(rb_gsl_matrix,power), 1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "power",
+ FUNCTION(rb_gsl_matrix,power), 1);
rb_define_alias(GSL_TYPE(cgsl_matrix), "**", "power");
rb_define_alias(GSL_TYPE(cgsl_matrix), "^", "power");
- rb_define_method(GSL_TYPE(cgsl_matrix), "collect",
- FUNCTION(rb_gsl_matrix,collect), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "collect!",
- FUNCTION(rb_gsl_matrix,collect_bang), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "collect",
+ FUNCTION(rb_gsl_matrix,collect), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "collect!",
+ FUNCTION(rb_gsl_matrix,collect_bang), 0);
rb_define_alias(GSL_TYPE(cgsl_matrix), "map", "collect");
rb_define_alias(GSL_TYPE(cgsl_matrix), "map!", "collect!");
#ifdef HAVE_TENSOR_TENSOR_H
- rb_define_method(GSL_TYPE(cgsl_matrix), "to_tensor",
- FUNCTION(rb_gsl_matrix,to_tensor), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "to_tensor",
+ FUNCTION(rb_gsl_matrix,to_tensor), 0);
#endif
/*****/
- rb_define_method(GSL_TYPE(cgsl_matrix), "to_a",
- FUNCTION(rb_gsl_matrix,to_a), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "to_v",
- FUNCTION(rb_gsl_matrix,to_v), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "to_vview",
- FUNCTION(rb_gsl_matrix,to_vview), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "to_a",
+ FUNCTION(rb_gsl_matrix,to_a), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "to_v",
+ FUNCTION(rb_gsl_matrix,to_v), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "to_vview",
+ FUNCTION(rb_gsl_matrix,to_vview), 0);
rb_define_alias(GSL_TYPE(cgsl_matrix), "data", "to_vview");
rb_define_method(GSL_TYPE(cgsl_matrix), "norm",
- FUNCTION(rb_gsl_matrix,norm), 0);
+ FUNCTION(rb_gsl_matrix,norm), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "upper",
- FUNCTION(rb_gsl_matrix,upper), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "lower",
- FUNCTION(rb_gsl_matrix,lower), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "block",
- FUNCTION(rb_gsl_matrix,block), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "upper",
+ FUNCTION(rb_gsl_matrix,upper), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "lower",
+ FUNCTION(rb_gsl_matrix,lower), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "block",
+ FUNCTION(rb_gsl_matrix,block), 0);
/***** Special matrices *****/
rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "pascal",
- FUNCTION(rb_gsl_matrix,pascal1), 1);
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "vandermonde",
- FUNCTION(rb_gsl_matrix,vandermonde), 1);
+ FUNCTION(rb_gsl_matrix,pascal1), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "vandermonde",
+ FUNCTION(rb_gsl_matrix,vandermonde), 1);
rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "vander",
- FUNCTION(rb_gsl_matrix,vandermonde), 1);
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "toeplitz",
- FUNCTION(rb_gsl_matrix,toeplitz), 1);
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "circulant",
- FUNCTION(rb_gsl_matrix,circulant), 1);
+ FUNCTION(rb_gsl_matrix,vandermonde), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "toeplitz",
+ FUNCTION(rb_gsl_matrix,toeplitz), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "circulant",
+ FUNCTION(rb_gsl_matrix,circulant), 1);
rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "indgen",
- FUNCTION(rb_gsl_matrix,indgen_singleton), -1);
- rb_define_method(GSL_TYPE(cgsl_matrix), "indgen",
- FUNCTION(rb_gsl_matrix,indgen), -1);
- rb_define_method(GSL_TYPE(cgsl_matrix), "indgen!",
- FUNCTION(rb_gsl_matrix,indgen_bang), -1);
-
- rb_define_method(GSL_TYPE(cgsl_matrix), "info",
- FUNCTION(rb_gsl_matrix,info), 0);
+ FUNCTION(rb_gsl_matrix,indgen_singleton), -1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "indgen",
+ FUNCTION(rb_gsl_matrix,indgen), -1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "indgen!",
+ FUNCTION(rb_gsl_matrix,indgen_bang), -1);
+
+ rb_define_method(GSL_TYPE(cgsl_matrix), "info",
+ FUNCTION(rb_gsl_matrix,info), 0);
#ifdef BASE_DOUBLE
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "hilbert",
- FUNCTION(rb_gsl_matrix,hilbert), 1);
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "hilb",
- FUNCTION(rb_gsl_matrix,hilbert), 1);
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "invhilbert",
- FUNCTION(rb_gsl_matrix,invhilbert), 1);
- rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "invhilb",
- FUNCTION(rb_gsl_matrix,invhilbert), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "hilbert",
+ FUNCTION(rb_gsl_matrix,hilbert), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "hilb",
+ FUNCTION(rb_gsl_matrix,hilbert), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "invhilbert",
+ FUNCTION(rb_gsl_matrix,invhilbert), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "invhilb",
+ FUNCTION(rb_gsl_matrix,invhilbert), 1);
#endif
- rb_define_method(GSL_TYPE(cgsl_matrix), "any",
- FUNCTION(rb_gsl_matrix,any), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "all",
- FUNCTION(rb_gsl_matrix,all), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "rot90",
- FUNCTION(rb_gsl_matrix,rot90), -1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "any",
+ FUNCTION(rb_gsl_matrix,any), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "all",
+ FUNCTION(rb_gsl_matrix,all), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "rot90",
+ FUNCTION(rb_gsl_matrix,rot90), -1);
- rb_define_method(GSL_TYPE(cgsl_matrix), "diff",
- FUNCTION(rb_gsl_matrix,diff), -1);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "diff",
+ FUNCTION(rb_gsl_matrix,diff), -1);
rb_define_method(GSL_TYPE(cgsl_matrix), "isnan", FUNCTION(rb_gsl_matrix,isnan), 0);
rb_define_method(GSL_TYPE(cgsl_matrix), "isinf", FUNCTION(rb_gsl_matrix,isinf), 0);
rb_define_method(GSL_TYPE(cgsl_matrix), "finite", FUNCTION(rb_gsl_matrix,finite), 0);
@@ -2694,17 +2676,13 @@ void FUNCTION(Init_gsl_matrix,init)(VALUE module)
rb_define_method(GSL_TYPE(cgsl_matrix), "vertcat", FUNCTION(rb_gsl_matrix,vertcat), 1);
rb_define_singleton_method(GSL_TYPE(cgsl_matrix), "vertcat", FUNCTION(rb_gsl_matrix,vertcat_singleton), 2);
-#ifdef GSL_1_9_LATER
rb_define_method(GSL_TYPE(cgsl_matrix), "ispos", FUNCTION(rb_gsl_matrix,ispos), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "ispos?", FUNCTION(rb_gsl_matrix,ispos2), 0);
+ rb_define_method(GSL_TYPE(cgsl_matrix), "ispos?", FUNCTION(rb_gsl_matrix,ispos2), 0);
rb_define_method(GSL_TYPE(cgsl_matrix), "isneg", FUNCTION(rb_gsl_matrix,isneg), 0);
- rb_define_method(GSL_TYPE(cgsl_matrix), "isneg?", FUNCTION(rb_gsl_matrix,isneg2), 0);
-#endif
+ rb_define_method(GSL_TYPE(cgsl_matrix), "isneg?", FUNCTION(rb_gsl_matrix,isneg2), 0);
-#ifdef GSL_1_10_LATER
rb_define_method(GSL_TYPE(cgsl_matrix), "isnonneg", FUNCTION(rb_gsl_matrix,isnonneg), 0);
rb_define_method(GSL_TYPE(cgsl_matrix), "isnonneg?", FUNCTION(rb_gsl_matrix,isnonneg2), 0);
-#endif
rb_define_method(GSL_TYPE(cgsl_matrix), "symmetrize", FUNCTION(rb_gsl_matrix,symmetrize), 0);
rb_define_method(GSL_TYPE(cgsl_matrix), "symmetrize!", FUNCTION(rb_gsl_matrix,symmetrize_bang), 0);
diff --git a/ext/gsl/min.c b/ext/gsl_native/min.c
similarity index 72%
rename from ext/gsl/min.c
rename to ext/gsl_native/min.c
index ae26380..485a017 100644
--- a/ext/gsl/min.c
+++ b/ext/gsl_native/min.c
@@ -13,56 +13,50 @@
#include "include/rb_gsl_function.h"
#include <gsl/gsl_min.h>
-double rb_gsl_function_f(double x, void *p);
+double rb_gsl_function_f(double x, void *p);
enum {
GSL_MIN_FMINIMIZER_GOLDENSECTION,
GSL_MIN_FMINIMIZER_BRENT,
-#ifdef GSL_1_13_LATER
GSL_MIN_FMINIMIZER_QUAD_GOLDEN,
-#endif
};
static const gsl_min_fminimizer_type* rb_gsl_min_fminimizer_type_get(VALUE t);
-static const gsl_min_fminimizer_type* rb_gsl_min_fminimizer_type_get(VALUE t)
+static const gsl_min_fminimizer_type* rb_gsl_min_fminimizer_type_get(VALUE t)
{
char name[32];
switch (TYPE(t)) {
case T_STRING:
strcpy(name, STR2CSTR(t));
- if (str_tail_grep(name, "goldensection") == 0)
+ if (str_tail_grep(name, "goldensection") == 0)
return gsl_min_fminimizer_goldensection;
- else if (str_tail_grep(name, "brent") == 0)
+ else if (str_tail_grep(name, "brent") == 0)
return gsl_min_fminimizer_brent;
-#ifdef GSL_1_13_LATER
- else if (str_tail_grep(name, "quad_golden") == 0)
+ else if (str_tail_grep(name, "quad_golden") == 0)
return gsl_min_fminimizer_quad_golden;
-#endif
- else
+ else
rb_raise(rb_eTypeError, "unknown type %s (goldensection, brent or quad_golden expected)",
- name);
+ name);
break;
case T_FIXNUM:
switch (FIX2INT(t)) {
- case GSL_MIN_FMINIMIZER_GOLDENSECTION:
- return gsl_min_fminimizer_goldensection;
+ case GSL_MIN_FMINIMIZER_GOLDENSECTION:
+ return gsl_min_fminimizer_goldensection;
break;
- case GSL_MIN_FMINIMIZER_BRENT:
- return gsl_min_fminimizer_brent;
+ case GSL_MIN_FMINIMIZER_BRENT:
+ return gsl_min_fminimizer_brent;
break;
-#ifdef GSL_1_13_LATER
- case GSL_MIN_FMINIMIZER_QUAD_GOLDEN:
- return gsl_min_fminimizer_quad_golden;
+ case GSL_MIN_FMINIMIZER_QUAD_GOLDEN:
+ return gsl_min_fminimizer_quad_golden;
break;
-#endif
- default:
- rb_raise(rb_eTypeError, "unknown type (GOLDENSECION or BRENT or QUAD_GOLDEN expected)");
+ default:
+ rb_raise(rb_eTypeError, "unknown type (GOLDENSECION or BRENT or QUAD_GOLDEN expected)");
break;
}
break;
default:
rb_raise(rb_eTypeError, "wrong argument type %s (String of Fixnum)",
- rb_class2name(CLASS_OF(t)));
+ rb_class2name(CLASS_OF(t)));
break;
}
}
@@ -83,35 +77,35 @@ static VALUE rb_gsl_min_fminimizer_name(VALUE obj)
return rb_str_new2(gsl_min_fminimizer_name(gmf));
}
-static VALUE rb_gsl_min_fminimizer_set(VALUE obj, VALUE ff, VALUE xmin,
- VALUE xl, VALUE xu)
+static VALUE rb_gsl_min_fminimizer_set(VALUE obj, VALUE ff, VALUE xmin,
+ VALUE xl, VALUE xu)
{
gsl_min_fminimizer *gmf = NULL;
gsl_function *f = NULL;
- Need_Float(xmin); Need_Float(xl); Need_Float(xu);
+ Need_Float(xmin); Need_Float(xl); Need_Float(xu);
CHECK_FUNCTION(ff);
Data_Get_Struct(obj, gsl_min_fminimizer, gmf);
Data_Get_Struct(ff, gsl_function, f);
- return INT2FIX(gsl_min_fminimizer_set(gmf, f, NUM2DBL(xmin),
- NUM2DBL(xl), NUM2DBL(xu)));
+ return INT2FIX(gsl_min_fminimizer_set(gmf, f, NUM2DBL(xmin),
+ NUM2DBL(xl), NUM2DBL(xu)));
}
-static VALUE rb_gsl_min_fminimizer_set_with_values(VALUE obj, VALUE ff,
- VALUE xmin, VALUE fmin,
- VALUE xl, VALUE fl,
- VALUE xu, VALUE fu)
+static VALUE rb_gsl_min_fminimizer_set_with_values(VALUE obj, VALUE ff,
+ VALUE xmin, VALUE fmin,
+ VALUE xl, VALUE fl,
+ VALUE xu, VALUE fu)
{
gsl_min_fminimizer *gmf = NULL;
gsl_function *f = NULL;
- Need_Float(xmin); Need_Float(xl); Need_Float(xu);
- Need_Float(fl); Need_Float(fu);
+ Need_Float(xmin); Need_Float(xl); Need_Float(xu);
+ Need_Float(fl); Need_Float(fu);
CHECK_FUNCTION(ff);
Data_Get_Struct(obj, gsl_min_fminimizer, gmf);
Data_Get_Struct(ff, gsl_function, f);
- return INT2FIX(gsl_min_fminimizer_set_with_values(gmf, f, NUM2DBL(xmin),
- NUM2DBL(fmin),
- NUM2DBL(xl), NUM2DBL(fl),
- NUM2DBL(xu), NUM2DBL(fu)));
+ return INT2FIX(gsl_min_fminimizer_set_with_values(gmf, f, NUM2DBL(xmin),
+ NUM2DBL(fmin),
+ NUM2DBL(xl), NUM2DBL(fl),
+ NUM2DBL(xu), NUM2DBL(fu)));
}
static VALUE rb_gsl_min_fminimizer_iterate(VALUE obj)
@@ -135,29 +129,6 @@ static VALUE rb_gsl_min_fminimizer_x_upper(VALUE obj)
return rb_float_new(gsl_min_fminimizer_x_upper(gmf));
}
-#ifndef GSL_1_2_LATER
-static double gsl_min_fminimizer_x_minimum(const gsl_min_fminimizer * s)
-{
- /* return s->x_minimum;*/
- return s->minimum;
-}
-
-static double gsl_min_fminimizer_f_minimum(const gsl_min_fminimizer * s)
-{
- return s->f_minimum;
-}
-
-static double gsl_min_fminimizer_f_lower(const gsl_min_fminimizer * s)
-{
- return s->f_lower;
-}
-
-static double gsl_min_fminimizer_f_upper(const gsl_min_fminimizer * s)
-{
- return s->f_upper;
-}
-#endif
-
static VALUE rb_gsl_min_fminimizer_x_minimum(VALUE obj)
{
gsl_min_fminimizer *gmf = NULL;
@@ -198,12 +169,12 @@ static VALUE rb_gsl_min_fminimizer_test_interval(VALUE obj, VALUE ea, VALUE er)
}
static VALUE rb_gsl_fminimizer_test_interval(VALUE obj, VALUE xl, VALUE xu,
- VALUE ea, VALUE er)
+ VALUE ea, VALUE er)
{
Need_Float(xl); Need_Float(xu);
Need_Float(ea); Need_Float(er);
return INT2FIX(gsl_min_test_interval(NUM2DBL(xl), NUM2DBL(xu),
- NUM2DBL(ea), NUM2DBL(er)));
+ NUM2DBL(ea), NUM2DBL(er)));
}
void Init_gsl_min(VALUE module)
@@ -211,21 +182,19 @@ void Init_gsl_min(VALUE module)
VALUE mgsl_min, cgsl_fminimizer;
mgsl_min = rb_define_module_under(module, "Min");
-
+
cgsl_fminimizer = rb_define_class_under(mgsl_min, "FMinimizer", cGSL_Object);
- rb_define_const(cgsl_fminimizer, "GOLDENSECTION",
- INT2FIX(GSL_MIN_FMINIMIZER_GOLDENSECTION));
- rb_define_const(cgsl_fminimizer, "Goldensection",
- INT2FIX(GSL_MIN_FMINIMIZER_GOLDENSECTION));
+ rb_define_const(cgsl_fminimizer, "GOLDENSECTION",
+ INT2FIX(GSL_MIN_FMINIMIZER_GOLDENSECTION));
+ rb_define_const(cgsl_fminimizer, "Goldensection",
+ INT2FIX(GSL_MIN_FMINIMIZER_GOLDENSECTION));
rb_define_const(cgsl_fminimizer, "BRENT",
- INT2FIX(GSL_MIN_FMINIMIZER_BRENT));
+ INT2FIX(GSL_MIN_FMINIMIZER_BRENT));
rb_define_const(cgsl_fminimizer, "Brent",
- INT2FIX(GSL_MIN_FMINIMIZER_BRENT));
-#ifdef GSL_1_13_LATER
+ INT2FIX(GSL_MIN_FMINIMIZER_BRENT));
rb_define_const(cgsl_fminimizer, "QUAD_GOLDEN",
- INT2FIX(GSL_MIN_FMINIMIZER_QUAD_GOLDEN));
-#endif
+ INT2FIX(GSL_MIN_FMINIMIZER_QUAD_GOLDEN));
rb_define_singleton_method(cgsl_fminimizer, "new", rb_gsl_min_fminimizer_new, 1);
rb_define_singleton_method(cgsl_fminimizer, "alloc", rb_gsl_min_fminimizer_new, 1);
@@ -239,8 +208,8 @@ void Init_gsl_min(VALUE module)
rb_define_method(cgsl_fminimizer, "x_upper", rb_gsl_min_fminimizer_x_upper, 0);
rb_define_method(cgsl_fminimizer, "test_interval", rb_gsl_min_fminimizer_test_interval, 2);
- rb_define_singleton_method(mgsl_min, "test_interval",
- rb_gsl_fminimizer_test_interval, 4);
+ rb_define_singleton_method(mgsl_min, "test_interval",
+ rb_gsl_fminimizer_test_interval, 4);
rb_define_method(cgsl_fminimizer, "x_minimum", rb_gsl_min_fminimizer_x_minimum, 0);
rb_define_method(cgsl_fminimizer, "f_minimum", rb_gsl_min_fminimizer_f_minimum, 0);
diff --git a/ext/gsl/monte.c b/ext/gsl_native/monte.c
similarity index 93%
rename from ext/gsl/monte.c
rename to ext/gsl_native/monte.c
index 0c2b404..3559001 100644
--- a/ext/gsl/monte.c
+++ b/ext/gsl_native/monte.c
@@ -16,7 +16,7 @@
#include <gsl/gsl_monte_vegas.h>
#ifndef CHECK_MONTE_FUNCTION
-#define CHECK_MONTE_FUNCTION(x) if(!rb_obj_is_kind_of(x,cgsl_monte_function))\
+#define CHECK_MONTE_FUNCTION(x) if(!rb_obj_is_kind_of(x,cgsl_monte_function)) \
rb_raise(rb_eTypeError, "wrong type (Function expected)");
#endif
@@ -24,9 +24,7 @@ static VALUE cgsl_monte_plain;
static VALUE cgsl_monte_miser;
static VALUE cgsl_monte_vegas;
static VALUE cgsl_monte_function;
-#ifdef GSL_1_13_LATER
static VALUE cgsl_monte_miser_params, cgsl_monte_vegas_params;
-#endif
EXTERN VALUE cgsl_vector;
enum {
@@ -102,7 +100,7 @@ static VALUE rb_gsl_monte_function_new(int argc, VALUE *argv, VALUE klass)
obj = Data_Wrap_Struct(klass, gsl_monte_function_mark, gsl_monte_function_free, f);
rb_gsl_monte_function_set_f(argc, argv, obj);
return obj;
-}
+}
static double rb_gsl_monte_function_f(double *x, size_t dim, void *p)
{
@@ -237,16 +235,16 @@ static VALUE rb_gsl_monte_integrate(int argc, VALUE *argv, VALUE obj)
int itmp = 0, flagr = 0, type;
double result, abserr;
- if (argc < 4)
+ if (argc < 4)
rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 4)", argc);
switch (TYPE(obj)) {
case T_MODULE:
case T_CLASS:
case T_OBJECT:
if (!rb_obj_is_kind_of(argv[0], cgsl_monte_function))
- rb_raise(rb_eTypeError,
- "wrong type argument %s (GSL::Monte::Function expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_raise(rb_eTypeError,
+ "wrong type argument %s (GSL::Monte::Function expected)",
+ rb_class2name(CLASS_OF(argv[0])));
Data_Get_Struct(argv[0], gsl_monte_function, F);
itmp = 1;
break;
@@ -267,14 +265,12 @@ static VALUE rb_gsl_monte_integrate(int argc, VALUE *argv, VALUE obj)
dim = F->dim;
calls = FIX2INT(argv[itmp+2]);
}
-
if (rb_obj_is_kind_of(argv[argc-2], cgsl_rng)) {
Data_Get_Struct(argv[argc-2], gsl_rng, r);
} else {
r = gsl_rng_alloc(gsl_rng_default);
flagr = 1;
}
-
type = get_monte_type(argv[argc-1]);
switch (type) {
@@ -285,8 +281,8 @@ static VALUE rb_gsl_monte_integrate(int argc, VALUE *argv, VALUE obj)
gsl_monte_plain_init(plain);
} else {
if (!rb_obj_is_kind_of(argv[argc-1], cgsl_monte_plain))
- rb_raise(rb_eTypeError, "wrong argument type %s (Monte::Plain expected)",
- rb_class2name(CLASS_OF(argv[argc-1])));
+ rb_raise(rb_eTypeError, "wrong argument type %s (Monte::Plain expected)",
+ rb_class2name(CLASS_OF(argv[argc-1])));
Data_Get_Struct(argv[argc-1], gsl_monte_plain_state, plain);
}
gsl_monte_plain_integrate(F, xl->data, xu->data, dim, calls, r, plain, &result, &abserr);
@@ -299,8 +295,8 @@ static VALUE rb_gsl_monte_integrate(int argc, VALUE *argv, VALUE obj)
gsl_monte_miser_init(miser);
} else {
if (!rb_obj_is_kind_of(argv[argc-1], cgsl_monte_miser))
- rb_raise(rb_eTypeError, "wrong argument type %s (Monte::Miser expected)",
- rb_class2name(CLASS_OF(argv[argc-1])));
+ rb_raise(rb_eTypeError, "wrong argument type %s (Monte::Miser expected)",
+ rb_class2name(CLASS_OF(argv[argc-1])));
Data_Get_Struct(argv[argc-1], gsl_monte_miser_state, miser);
}
gsl_monte_miser_integrate(F, xl->data, xu->data, dim, calls, r, miser, &result, &abserr);
@@ -312,10 +308,9 @@ static VALUE rb_gsl_monte_integrate(int argc, VALUE *argv, VALUE obj)
vegas = gsl_monte_vegas_alloc(dim);
gsl_monte_vegas_init(vegas);
} else { if (!rb_obj_is_kind_of(argv[argc-1], cgsl_monte_vegas))
- rb_raise(rb_eTypeError, "wrong argument type %s (Monte::Vegas expected)",
- rb_class2name(CLASS_OF(argv[argc-1])));
- Data_Get_Struct(argv[argc-1], gsl_monte_vegas_state, vegas);
- }
+ rb_raise(rb_eTypeError, "wrong argument type %s (Monte::Vegas expected)",
+ rb_class2name(CLASS_OF(argv[argc-1])));
+ Data_Get_Struct(argv[argc-1], gsl_monte_vegas_state, vegas); }
gsl_monte_vegas_integrate(F, xl->data, xu->data, dim, calls, r, vegas, &result, &abserr);
if (type > 100) gsl_monte_vegas_free(vegas);
break;
@@ -334,7 +329,7 @@ static VALUE rb_gsl_monte_plain_integrate(int argc, VALUE *argv, VALUE obj)
int flagr = 0;
double result, abserr;
- if (argc < 4)
+ if (argc < 4)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 4, 5 or 6)", argc);
CHECK_MONTE_FUNCTION(argv[0]);
CHECK_VECTOR(argv[1]); CHECK_VECTOR(argv[2]);
@@ -349,15 +344,14 @@ static VALUE rb_gsl_monte_plain_integrate(int argc, VALUE *argv, VALUE obj)
dim = F->dim;
calls = FIX2INT(argv[3]);
}
-
if (rb_obj_is_kind_of(argv[argc-1], cgsl_rng)) {
Data_Get_Struct(argv[argc-1], gsl_rng, r);
} else {
r = gsl_rng_alloc(gsl_rng_default);
flagr = 1;
}
- gsl_monte_plain_integrate(F, xl->data, xu->data, dim, calls, r, plain,
- &result, &abserr);
+ gsl_monte_plain_integrate(F, xl->data, xu->data, dim, calls, r, plain,
+ &result, &abserr);
if (flagr == 1) gsl_rng_free(r);
return rb_ary_new3(2, rb_float_new(result), rb_float_new(abserr));
}
@@ -387,15 +381,14 @@ static VALUE rb_gsl_monte_miser_integrate(int argc, VALUE *argv, VALUE obj)
dim = F->dim;
calls = FIX2INT(argv[3]);
}
-
if (rb_obj_is_kind_of(argv[argc-1], cgsl_rng)) {
Data_Get_Struct(argv[argc-1], gsl_rng, r);
} else {
r = gsl_rng_alloc(gsl_rng_default);
flagr = 1;
}
- gsl_monte_miser_integrate(F, xl->data, xu->data, dim, calls, r, miser,
- &result, &abserr);
+ gsl_monte_miser_integrate(F, xl->data, xu->data, dim, calls, r, miser,
+ &result, &abserr);
if (flagr == 1) gsl_rng_free(r);
return rb_ary_new3(2, rb_float_new(result), rb_float_new(abserr));
}
@@ -410,7 +403,7 @@ static VALUE rb_gsl_monte_vegas_integrate(int argc, VALUE *argv, VALUE obj)
int flagr = 0;
double result, abserr;
- if (argc < 4)
+ if (argc < 4)
rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 4)", argc);
CHECK_MONTE_FUNCTION(argv[0]);
CHECK_VECTOR(argv[1]); CHECK_VECTOR(argv[2]);
@@ -425,15 +418,14 @@ static VALUE rb_gsl_monte_vegas_integrate(int argc, VALUE *argv, VALUE obj)
dim = F->dim;
calls = FIX2INT(argv[3]);
}
-
if (rb_obj_is_kind_of(argv[argc-1], cgsl_rng)) {
Data_Get_Struct(argv[argc-1], gsl_rng, r);
} else {
r = gsl_rng_alloc(gsl_rng_default);
flagr = 1;
}
- gsl_monte_vegas_integrate(F, xl->data, xu->data, dim, calls, r, vegas,
- &result, &abserr);
+ gsl_monte_vegas_integrate(F, xl->data, xu->data, dim, calls, r, vegas,
+ &result, &abserr);
if (flagr == 1) gsl_rng_free(r);
return rb_ary_new3(2, rb_float_new(result), rb_float_new(abserr));
}
@@ -447,7 +439,6 @@ static int get_monte_type(VALUE vt)
else {
/* do next */
}
-
switch(TYPE(vt)) {
case T_STRING:
strcpy(name, STR2CSTR(vt));
@@ -555,8 +546,8 @@ static VALUE rb_gsl_monte_miser_state(VALUE obj)
gsl_monte_miser_state *s = NULL;
Data_Get_Struct(obj, gsl_monte_miser_state, s);
return rb_ary_new3(5, rb_float_new(s->estimate_frac), INT2FIX(s->min_calls),
- INT2FIX(s->min_calls_per_bisection), rb_float_new(s->alpha),
- rb_float_new(s->dither));
+ INT2FIX(s->min_calls_per_bisection), rb_float_new(s->alpha),
+ rb_float_new(s->dither));
}
static VALUE rb_gsl_monte_vegas_result(VALUE obj)
@@ -655,20 +646,19 @@ static VALUE rb_gsl_monte_vegas_state(VALUE obj)
{
gsl_monte_vegas_state *s = NULL;
Data_Get_Struct(obj, gsl_monte_vegas_state, s);
- return rb_ary_new3(8, rb_float_new(s->result), rb_float_new(s->sigma),
- rb_float_new(s->chisq), rb_float_new(s->alpha),
- INT2FIX(s->iterations), INT2FIX(s->stage),
- INT2FIX(s->mode), INT2FIX(s->verbose));
+ return rb_ary_new3(8, rb_float_new(s->result), rb_float_new(s->sigma),
+ rb_float_new(s->chisq), rb_float_new(s->alpha),
+ INT2FIX(s->iterations), INT2FIX(s->stage),
+ INT2FIX(s->mode), INT2FIX(s->verbose));
}
-#ifdef GSL_1_13_LATER
static VALUE rb_gsl_monte_miser_params_get(VALUE obj)
{
gsl_monte_miser_state *s = NULL;
gsl_monte_miser_params *p = NULL;
Data_Get_Struct(obj, gsl_monte_miser_state, s);
p = (gsl_monte_miser_params *) malloc(sizeof(gsl_monte_miser_params));
- gsl_monte_miser_params_get(s, p);
+ gsl_monte_miser_params_get(s, p);
return Data_Wrap_Struct(cgsl_monte_miser_params, 0, free, p);
}
static VALUE rb_gsl_monte_miser_params_set(VALUE obj, VALUE params)
@@ -677,7 +667,7 @@ static VALUE rb_gsl_monte_miser_params_set(VALUE obj, VALUE params)
gsl_monte_miser_params *p = NULL;
Data_Get_Struct(obj, gsl_monte_miser_state, s);
Data_Get_Struct(params, gsl_monte_miser_params, p);
- gsl_monte_miser_params_set(s, p);
+ gsl_monte_miser_params_set(s, p);
return Qtrue;
}
static VALUE rb_gsl_monte_miser_params_get_estimate_frac(VALUE obj)
@@ -752,7 +742,7 @@ static VALUE rb_gsl_monte_vegas_params_get(VALUE obj)
gsl_monte_vegas_params *p = NULL;
Data_Get_Struct(obj, gsl_monte_vegas_state, s);
p = (gsl_monte_vegas_params *) malloc(sizeof(gsl_monte_vegas_params));
- gsl_monte_vegas_params_get(s, p);
+ gsl_monte_vegas_params_get(s, p);
return Data_Wrap_Struct(cgsl_monte_vegas_params, 0, free, p);
}
static VALUE rb_gsl_monte_vegas_params_set(VALUE obj, VALUE params)
@@ -761,7 +751,7 @@ static VALUE rb_gsl_monte_vegas_params_set(VALUE obj, VALUE params)
gsl_monte_vegas_params *p = NULL;
Data_Get_Struct(obj, gsl_monte_vegas_state, s);
Data_Get_Struct(params, gsl_monte_vegas_params, p);
- gsl_monte_vegas_params_set(s, p);
+ gsl_monte_vegas_params_set(s, p);
return Qtrue;
}
static VALUE rb_gsl_monte_vegas_params_get_alpha(VALUE obj)
@@ -841,7 +831,6 @@ static VALUE rb_gsl_monte_vegas_runval(VALUE obj)
rb_ary_store(ary, 1, rb_float_new(sig));
return ary;
}
-#endif
void Init_gsl_monte(VALUE module)
{
@@ -926,20 +915,19 @@ void Init_gsl_monte(VALUE module)
/*****/
- rb_define_singleton_method(cgsl_monte_plain, "integrate",
- rb_gsl_monte_integrate, -1);
- rb_define_method(cgsl_monte_plain, "integrate",
- rb_gsl_monte_plain_integrate, -1);
- rb_define_singleton_method(cgsl_monte_miser, "integrate",
- rb_gsl_monte_integrate, -1);
- rb_define_method(cgsl_monte_miser, "integrate",
- rb_gsl_monte_miser_integrate, -1);
- rb_define_singleton_method(cgsl_monte_vegas, "integrate",
- rb_gsl_monte_integrate, -1);
- rb_define_method(cgsl_monte_vegas, "integrate",
- rb_gsl_monte_vegas_integrate, -1);
-
-#ifdef GSL_1_13_LATER
+ rb_define_singleton_method(cgsl_monte_plain, "integrate",
+ rb_gsl_monte_integrate, -1);
+ rb_define_method(cgsl_monte_plain, "integrate",
+ rb_gsl_monte_plain_integrate, -1);
+ rb_define_singleton_method(cgsl_monte_miser, "integrate",
+ rb_gsl_monte_integrate, -1);
+ rb_define_method(cgsl_monte_miser, "integrate",
+ rb_gsl_monte_miser_integrate, -1);
+ rb_define_singleton_method(cgsl_monte_vegas, "integrate",
+ rb_gsl_monte_integrate, -1);
+ rb_define_method(cgsl_monte_vegas, "integrate",
+ rb_gsl_monte_vegas_integrate, -1);
+
cgsl_monte_miser_params = rb_define_class_under(cgsl_monte_miser, "Params", cGSL_Object);
cgsl_monte_vegas_params = rb_define_class_under(cgsl_monte_vegas, "Params", cGSL_Object);
@@ -982,10 +970,8 @@ void Init_gsl_monte(VALUE module)
rb_define_method(cgsl_monte_vegas, "runval", rb_gsl_monte_vegas_runval, 0);
rb_define_const(cgsl_monte_vegas, "MODE_IMPORTANCE", INT2FIX(GSL_VEGAS_MODE_IMPORTANCE));
- rb_define_const(cgsl_monte_vegas, "MODE_IMPORTANCE_ONLY", INT2FIX(GSL_VEGAS_MODE_IMPORTANCE_ONLY));
+ rb_define_const(cgsl_monte_vegas, "MODE_IMPORTANCE_ONLY", INT2FIX(GSL_VEGAS_MODE_IMPORTANCE_ONLY));
rb_define_const(cgsl_monte_vegas, "MODE_STRATIFIED", INT2FIX(GSL_VEGAS_MODE_STRATIFIED));
-#endif
-
}
#ifdef CHECK_MONTE_FUNCTION
#undef CHECK_MONTE_FUNCTION
diff --git a/ext/gsl/multifit.c b/ext/gsl_native/multifit.c
similarity index 89%
rename from ext/gsl/multifit.c
rename to ext/gsl_native/multifit.c
index 8f8cb49..55e4f02 100644
--- a/ext/gsl/multifit.c
+++ b/ext/gsl_native/multifit.c
@@ -19,23 +19,23 @@ void Init_ndlinear(VALUE module);
#endif
#ifndef CHECK_WORKSPACE
-#define CHECK_WORKSPACE(x) if(CLASS_OF(x)!=cgsl_multifit_workspace)\
- rb_raise(rb_eTypeError,\
- "wrong argument type %s (GSL::MultiFit::Workspace expected)",\
- rb_class2name(CLASS_OF(x)));
+#define CHECK_WORKSPACE(x) if(CLASS_OF(x)!=cgsl_multifit_workspace) \
+ rb_raise(rb_eTypeError, \
+ "wrong argument type %s (GSL::MultiFit::Workspace expected)", \
+ rb_class2name(CLASS_OF(x)));
#endif
#ifndef CHECK_MULTIFIT_FUNCTION_FDF
-#define CHECK_MULTIFIT_FUNCTION_FDF(x) if(CLASS_OF(x)!=cgsl_multifit_function_fdf)\
- rb_raise(rb_eTypeError,\
- "wrong argument type %s (GSL::MultiFit::Workspace expected)",\
- rb_class2name(CLASS_OF(x)));
+#define CHECK_MULTIFIT_FUNCTION_FDF(x) if(CLASS_OF(x)!=cgsl_multifit_function_fdf) \
+ rb_raise(rb_eTypeError, \
+ "wrong argument type %s (GSL::MultiFit::Workspace expected)", \
+ rb_class2name(CLASS_OF(x)));
#endif
static VALUE cgsl_multifit_workspace;
static VALUE cgsl_multifit_function_fdf;
-enum MultiFit_Solver_Type{
+enum MultiFit_Solver_Type {
GSL_MULTIFIT_FDFSOLVER_LMSDER,
GSL_MULTIFIT_FDFSOLVER_LMDER,
};
@@ -56,7 +56,7 @@ static VALUE rb_gsl_multifit_linear(int argc, VALUE *argv, VALUE obj)
double chisq;
int status, flag = 0;
VALUE vc, vcov;
- if (argc != 2 && argc != 3)
+ if (argc != 2 && argc != 3)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
Data_Get_Matrix(argv[0], x);
Data_Get_Vector(argv[1], y);
@@ -84,7 +84,7 @@ static VALUE rb_gsl_multifit_wlinear(int argc, VALUE *argv, VALUE obj)
double chisq;
int status, flag = 0;
VALUE vc, vcov;
- if (argc != 3 && argc != 4)
+ if (argc != 3 && argc != 4)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3 or 4)", argc);
Data_Get_Matrix(argv[0], x);
Data_Get_Vector(argv[1], w);
@@ -139,7 +139,7 @@ static void calc_X_legendre(gsl_matrix *X, gsl_vector *v, size_t order)
}
static VALUE rb_gsl_multifit_XXXfit(int argc, VALUE *argv, VALUE obj,
- void (*fn)(gsl_matrix*, gsl_vector*,size_t))
+ void (*fn)(gsl_matrix*, gsl_vector*,size_t))
{
gsl_multifit_linear_workspace *space = NULL;
gsl_matrix *X = NULL, *cov = NULL;
@@ -149,7 +149,7 @@ static VALUE rb_gsl_multifit_XXXfit(int argc, VALUE *argv, VALUE obj,
double chisq;
int status, flag = 0, flagw = 0;
VALUE vc, verr;
- if (argc != 3 && argc != 4 && argc != 5)
+ if (argc != 3 && argc != 4 && argc != 5)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3 or 4)", argc);
x = &xx.vector;
w = &ww.vector;
@@ -181,9 +181,8 @@ static VALUE rb_gsl_multifit_XXXfit(int argc, VALUE *argv, VALUE obj,
err = gsl_vector_alloc(order + 1);
vc = Data_Wrap_Struct(cgsl_poly, 0, gsl_vector_free, c);
verr = Data_Wrap_Struct(cgsl_poly, 0, gsl_vector_free, err);
- for (i = 0; i < err->size; i++)
+ for (i = 0; i < err->size; i++)
gsl_vector_set(err, i, sqrt(chisq/((double)x->size-err->size)*gsl_matrix_get(cov, i, i)));
-
gsl_matrix_free(X);
gsl_matrix_free(cov);
return rb_ary_new3(4, vc, verr, rb_float_new(chisq), INT2FIX(status));
@@ -213,31 +212,31 @@ static VALUE rb_gsl_multifit_fdfsolver_new(int argc, VALUE *argv, VALUE klass)
case T_STRING:
strcpy(name, STR2CSTR(argv[0]));
if (str_tail_grep(name, "lmsder") == 0) {
- T = gsl_multifit_fdfsolver_lmsder;
+ T = gsl_multifit_fdfsolver_lmsder;
} else if (str_tail_grep(name, "lmder") == 0) {
- T = gsl_multifit_fdfsolver_lmder;
+ T = gsl_multifit_fdfsolver_lmder;
} else {
- rb_raise(rb_eTypeError, "unknown solver type %s (lmsder of lmder)",
- name);
+ rb_raise(rb_eTypeError, "unknown solver type %s (lmsder of lmder)",
+ name);
}
break;
case T_FIXNUM:
switch (FIX2INT(argv[0])) {
case GSL_MULTIFIT_FDFSOLVER_LMSDER:
- T = gsl_multifit_fdfsolver_lmsder;
- break;
+ T = gsl_multifit_fdfsolver_lmsder;
+ break;
case GSL_MULTIFIT_FDFSOLVER_LMDER:
- T = gsl_multifit_fdfsolver_lmder;
- break;
+ T = gsl_multifit_fdfsolver_lmder;
+ break;
default:
- rb_raise(rb_eTypeError,
- "unknown solver type (GSL::MultiFit::FdfSolver::LMSDER or LMDER expected)");
- break;
+ rb_raise(rb_eTypeError,
+ "unknown solver type (GSL::MultiFit::FdfSolver::LMSDER or LMDER expected)");
+ break;
}
break;
default:
rb_raise(rb_eTypeError, "wrong argument type %s (Fixnum or String)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
break;
}
CHECK_FIXNUM(argv[1]); CHECK_FIXNUM(argv[2]);
@@ -301,8 +300,8 @@ static VALUE rb_gsl_multifit_fdfsolver_print_state(VALUE obj, VALUE i)
CHECK_FIXNUM(i);
Data_Get_Struct(obj, gsl_multifit_fdfsolver, solver);
printf("iter: %d x = %15.8f %15.8f %15.8f |f(x)| = %g\n",
- (int) FIX2INT(i), gsl_vector_get(solver->x, 0), gsl_vector_get(solver->x, 1),
- gsl_vector_get(solver->x, 2), gsl_blas_dnrm2(solver->f));
+ (int) FIX2INT(i), gsl_vector_get(solver->x, 0), gsl_vector_get(solver->x, 1),
+ gsl_vector_get(solver->x, 2), gsl_blas_dnrm2(solver->f));
return Qtrue;
}
@@ -449,15 +448,15 @@ static VALUE rb_gsl_multifit_gradient(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 2:
Data_Get_Matrix(argv[0], J);
- Data_Get_Vector(argv[1], f);
+ Data_Get_Vector(argv[1], f);
g = gsl_vector_alloc(f->size);
/*status =*/ gsl_multifit_gradient(J, f, g);
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, g);
- break;
+ break;
case 3:
Data_Get_Matrix(argv[0], J);
- Data_Get_Vector(argv[1], f);
- Data_Get_Vector(argv[2], g);
+ Data_Get_Vector(argv[1], f);
+ Data_Get_Vector(argv[2], g);
return INT2FIX(gsl_multifit_gradient(J, f, g));
break;
default:
@@ -496,15 +495,15 @@ static VALUE rb_gsl_multifit_covar(int argc, VALUE *argv, VALUE obj)
static void rb_gsl_multifit_define_const(VALUE klass)
{
- rb_define_const(klass, "LMSDER",
- INT2FIX(GSL_MULTIFIT_FDFSOLVER_LMSDER));
- rb_define_const(klass, "LMDER",
- INT2FIX(GSL_MULTIFIT_FDFSOLVER_LMDER));
+ rb_define_const(klass, "LMSDER",
+ INT2FIX(GSL_MULTIFIT_FDFSOLVER_LMSDER));
+ rb_define_const(klass, "LMDER",
+ INT2FIX(GSL_MULTIFIT_FDFSOLVER_LMDER));
- rb_define_const(klass, "Lmsder",
- INT2FIX(GSL_MULTIFIT_FDFSOLVER_LMSDER));
- rb_define_const(klass, "Lmder",
- INT2FIX(GSL_MULTIFIT_FDFSOLVER_LMDER));
+ rb_define_const(klass, "Lmsder",
+ INT2FIX(GSL_MULTIFIT_FDFSOLVER_LMSDER));
+ rb_define_const(klass, "Lmder",
+ INT2FIX(GSL_MULTIFIT_FDFSOLVER_LMDER));
}
static void gsl_multifit_function_fdf_free(gsl_multifit_function_fdf *f);
@@ -520,11 +519,11 @@ static void gsl_multifit_function_fdf_mark(gsl_multifit_function_fdf *F)
}
static int gsl_multifit_function_fdf_f(const gsl_vector *x, void *params,
- gsl_vector *f);
+ gsl_vector *f);
static int gsl_multifit_function_fdf_df(const gsl_vector *x, void *params,
- gsl_matrix *J);
+ gsl_matrix *J);
static int gsl_multifit_function_fdf_fdf(const gsl_vector *x, void *params,
- gsl_vector *f, gsl_matrix *J);
+ gsl_vector *f, gsl_matrix *J);
static VALUE rb_gsl_multifit_function_fdf_set_procs(int argc, VALUE *argv, VALUE obj);
@@ -551,7 +550,7 @@ static VALUE rb_gsl_multifit_function_fdf_new(int argc, VALUE *argv, VALUE klass
break;
}
return obj;
-}
+}
static VALUE rb_gsl_multifit_function_fdf_set_procs(int argc, VALUE *argv, VALUE obj)
{
@@ -568,8 +567,8 @@ static VALUE rb_gsl_multifit_function_fdf_set_procs(int argc, VALUE *argv, VALUE
rb_ary_store(ary, 0, argv[0]);
rb_ary_store(ary, 1, argv[1]);
switch (argc) {
- case 2:
- break;
+ case 2:
+ break;
case 3:
if (TYPE(argv[2]) == T_FIXNUM) {
func->p = FIX2INT(argv[2]);
@@ -621,7 +620,7 @@ static VALUE rb_gsl_multifit_function_fdf_set_data(int argc, VALUE *argv, VALUE
}
static int gsl_multifit_function_fdf_f(const gsl_vector *x, void *params,
- gsl_vector *f)
+ gsl_vector *f)
{
VALUE vt_y_sigma, vt, vy, vsigma, vf, vx, proc, ary;
ary = (VALUE) params;
@@ -643,13 +642,13 @@ static int gsl_multifit_function_fdf_f(const gsl_vector *x, void *params,
break;
default:
rb_raise(rb_eArgError, "bad argument");
- break;
+ break;
}
return GSL_SUCCESS;
}
static int gsl_multifit_function_fdf_df(const gsl_vector *x, void *params,
- gsl_matrix *J)
+ gsl_matrix *J)
{
VALUE vt_y_sigma, vt, vy, vsigma, vJ, vx, proc, ary;
ary = (VALUE) params;
@@ -671,13 +670,13 @@ static int gsl_multifit_function_fdf_df(const gsl_vector *x, void *params,
break;
default:
rb_raise(rb_eArgError, "bad argument");
- break;
+ break;
}
return GSL_SUCCESS;
}
static int gsl_multifit_function_fdf_fdf(const gsl_vector *x, void *params,
- gsl_vector *f, gsl_matrix *J)
+ gsl_vector *f, gsl_matrix *J)
{
VALUE vt_y_sigma, vt, vy, vsigma, vf, vJ, vx, proc_f, proc_df, proc_fdf;
VALUE ary;
@@ -696,7 +695,7 @@ static int gsl_multifit_function_fdf_fdf(const gsl_vector *x, void *params,
if (NIL_P(proc_fdf)) {
rb_funcall(proc_f, RBGSL_ID_call, 4, vx, vt, vy, vf);
rb_funcall(proc_df, RBGSL_ID_call, 4, vx, vt, vy, vJ);
- } else
+ } else
rb_funcall(proc_fdf, RBGSL_ID_call, 5, vx, vt, vy, vf, vJ);
break;
case 3:
@@ -706,12 +705,12 @@ static int gsl_multifit_function_fdf_fdf(const gsl_vector *x, void *params,
if (NIL_P(proc_fdf)) {
rb_funcall(proc_f, RBGSL_ID_call, 5, vx, vt, vy, vsigma, vf);
rb_funcall(proc_df, RBGSL_ID_call, 5, vx, vt, vy, vsigma, vJ);
- } else
+ } else
rb_funcall(proc_fdf, RBGSL_ID_call, 6, vx, vt, vy, vsigma, vf, vJ);
break;
default:
rb_raise(rb_eArgError, "bad argument");
- break;
+ break;
}
return GSL_SUCCESS;
}
@@ -750,7 +749,7 @@ struct fitting_xydata {
gsl_vector *x, *y, *w;
};
-/* Gaussian fit
+/* Gaussian fit
y = y0 + A exp(-(x-x0/sigma)^2)
v[0] = y0
v[1] = A
@@ -807,14 +806,14 @@ static int Gaussian_df(const gsl_vector *v, void *data, gsl_matrix *J)
}
static int Gaussian_fdf(const gsl_vector *v, void *data,
- gsl_vector *f, gsl_matrix *J)
+ gsl_vector *f, gsl_matrix *J)
{
Gaussian_f(v, data, f);
Gaussian_df(v, data, J);
return GSL_SUCCESS;
}
-/* 2 Gaussian fit
+/* 2 Gaussian fit
y = y0 + A1 exp(-(x-x01/sigma1)^2) + A2 exp(-(x-x02/sigma2)^2)
v[0] = y0
v[1] = A1
@@ -885,14 +884,14 @@ static int Gaussian_2peaks_df(const gsl_vector *v, void *data, gsl_matrix *J)
}
static int Gaussian_2peaks_fdf(const gsl_vector *v, void *data,
- gsl_vector *f, gsl_matrix *J)
+ gsl_vector *f, gsl_matrix *J)
{
Gaussian_2peaks_f(v, data, f);
Gaussian_2peaks_df(v, data, J);
return GSL_SUCCESS;
}
-/* Exponential fit
+/* Exponential fit
y = y0 + A exp(-bx)
v[0] = y0
v[1] = A
@@ -938,14 +937,14 @@ static int Exponential_df(const gsl_vector *v, void *data, gsl_matrix *J)
else wi = 1.0;
yy = exp(-xi*b);
gsl_matrix_set(J, i, 0, 1.0*wi);
- gsl_matrix_set(J, i, 1, yy*wi);
+ gsl_matrix_set(J, i, 1, yy*wi);
gsl_matrix_set(J, i, 2, -A*yy*xi*wi);
}
return GSL_SUCCESS;
}
static int Exponential_fdf(const gsl_vector *v, void *data,
- gsl_vector *f, gsl_matrix *J)
+ gsl_vector *f, gsl_matrix *J)
{
Exponential_f(v, data, f);
Exponential_df(v, data, J);
@@ -953,7 +952,7 @@ static int Exponential_fdf(const gsl_vector *v, void *data,
}
-/* Double Exponential fit
+/* Double Exponential fit
y = y0 + A1 exp(-b1 x) + A2 exp(-b2 x)
v[0] = y0
v[1] = A1
@@ -1006,23 +1005,23 @@ static int DblExponential_df(const gsl_vector *v, void *data, gsl_matrix *J)
yy1 = exp(-xi*b1);
yy2 = exp(-xi*b2);
gsl_matrix_set(J, i, 0, 1.0*wi);
- gsl_matrix_set(J, i, 1, yy1*wi);
+ gsl_matrix_set(J, i, 1, yy1*wi);
gsl_matrix_set(J, i, 2, -A1*yy1*xi*wi);
- gsl_matrix_set(J, i, 3, yy2*wi);
+ gsl_matrix_set(J, i, 3, yy2*wi);
gsl_matrix_set(J, i, 4, -A2*yy2*xi*wi);
}
return GSL_SUCCESS;
}
static int DblExponential_fdf(const gsl_vector *v, void *data,
- gsl_vector *f, gsl_matrix *J)
+ gsl_vector *f, gsl_matrix *J)
{
DblExponential_f(v, data, f);
DblExponential_df(v, data, J);
return GSL_SUCCESS;
}
-/* Lorentzian fit
+/* Lorentzian fit
y = y0 + A/((x-x0)^2 + B)
v[0] = y0
v[1] = A
@@ -1071,7 +1070,7 @@ static int Lorentzian_df(const gsl_vector *v, void *data, gsl_matrix *J)
else wi = 1.0;
yy = gsl_pow_2(xi-x0)+B;
gsl_matrix_set(J, i, 0, 1.0*wi);
- gsl_matrix_set(J, i, 1, 1.0/yy*wi);
+ gsl_matrix_set(J, i, 1, 1.0/yy*wi);
gsl_matrix_set(J, i, 2, 2.0*A*(xi-x0)/yy/yy*wi);
gsl_matrix_set(J, i, 3, -A/yy/yy*wi);
}
@@ -1079,7 +1078,7 @@ static int Lorentzian_df(const gsl_vector *v, void *data, gsl_matrix *J)
}
static int Lorentzian_fdf(const gsl_vector *v, void *data,
- gsl_vector *f, gsl_matrix *J)
+ gsl_vector *f, gsl_matrix *J)
{
Lorentzian_f(v, data, f);
Lorentzian_df(v, data, J);
@@ -1136,7 +1135,7 @@ static int Sin_df(const gsl_vector *v, void *data, gsl_matrix *J)
ys = sin(fc*xi + phi);
yc = cos(fc*xi + phi);
gsl_matrix_set(J, i, 0, 1.0*wi);
- gsl_matrix_set(J, i, 1, ys*wi);
+ gsl_matrix_set(J, i, 1, ys*wi);
gsl_matrix_set(J, i, 2, A*yc*xi*wi);
gsl_matrix_set(J, i, 3, A*yc*wi);
}
@@ -1144,7 +1143,7 @@ static int Sin_df(const gsl_vector *v, void *data, gsl_matrix *J)
}
static int Sin_fdf(const gsl_vector *v, void *data,
- gsl_vector *f, gsl_matrix *J)
+ gsl_vector *f, gsl_matrix *J)
{
Sin_f(v, data, f);
Sin_df(v, data, J);
@@ -1202,7 +1201,7 @@ static int Hill_df(const gsl_vector *v, void *data, gsl_matrix *J)
a = pow(xhalf/xi, r);
yy = (1.0 + a);
gsl_matrix_set(J, i, 0, (1.0 - 1.0/yy)*wi);
- gsl_matrix_set(J, i, 1, 1.0/yy*wi);
+ gsl_matrix_set(J, i, 1, 1.0/yy*wi);
gsl_matrix_set(J, i, 2, -(m-y0)*r/xhalf*a/yy/yy*wi);
gsl_matrix_set(J, i, 3, -(m-y0)/yy/yy*a*log(xhalf/xi)*wi);
}
@@ -1210,7 +1209,7 @@ static int Hill_df(const gsl_vector *v, void *data, gsl_matrix *J)
}
static int Hill_fdf(const gsl_vector *v, void *data,
- gsl_vector *f, gsl_matrix *J)
+ gsl_vector *f, gsl_matrix *J)
{
Hill_f(v, data, f);
Hill_df(v, data, J);
@@ -1267,7 +1266,7 @@ static int Sigmoid_df(const gsl_vector *v, void *data, gsl_matrix *J)
a = exp((x0 - xi)/r);
yy = 1.0 + a;
gsl_matrix_set(J, i, 0, wi);
- gsl_matrix_set(J, i, 1, 1.0/yy*wi);
+ gsl_matrix_set(J, i, 1, 1.0/yy*wi);
gsl_matrix_set(J, i, 2, -m*a/r/yy/yy*wi);
gsl_matrix_set(J, i, 3, m*a*(x0-xi)/r/r/yy/yy*wi);
}
@@ -1275,7 +1274,7 @@ static int Sigmoid_df(const gsl_vector *v, void *data, gsl_matrix *J)
}
static int Sigmoid_fdf(const gsl_vector *v, void *data,
- gsl_vector *f, gsl_matrix *J)
+ gsl_vector *f, gsl_matrix *J)
{
Sigmoid_f(v, data, f);
Sigmoid_df(v, data, J);
@@ -1329,15 +1328,15 @@ static int Power_df(const gsl_vector *v, void *data, gsl_matrix *J)
else wi = 1.0;
a = pow(xi, r);
gsl_matrix_set(J, i, 0, wi);
- gsl_matrix_set(J, i, 1, a*wi);
+ gsl_matrix_set(J, i, 1, a*wi);
gsl_matrix_set(J, i, 2, A*a*log(xi)*wi);
-
+
}
return GSL_SUCCESS;
}
static int Power_fdf(const gsl_vector *v, void *data,
- gsl_vector *f, gsl_matrix *J)
+ gsl_vector *f, gsl_matrix *J)
{
Power_f(v, data, f);
Power_df(v, data, J);
@@ -1395,7 +1394,7 @@ static int Lognormal_df(const gsl_vector *v, void *data, gsl_matrix *J)
a = log(xi/x0)/width;
b = exp(-a*a);
gsl_matrix_set(J, i, 0, wi);
- gsl_matrix_set(J, i, 1, b*wi);
+ gsl_matrix_set(J, i, 1, b*wi);
gsl_matrix_set(J, i, 2, 2.0*A*b*a*a*a/width/x0*wi);
gsl_matrix_set(J, i, 3, 2.0*A*b*a*a*a*a/width*wi);
}
@@ -1403,14 +1402,14 @@ static int Lognormal_df(const gsl_vector *v, void *data, gsl_matrix *J)
}
static int Lognormal_fdf(const gsl_vector *v, void *data,
- gsl_vector *f, gsl_matrix *J)
+ gsl_vector *f, gsl_matrix *J)
{
Lognormal_f(v, data, f);
Lognormal_df(v, data, J);
return GSL_SUCCESS;
}
-/* Rayleigh fit
+/* Rayleigh fit
y = A exp(-x*x/2/var)
v[0] = A
v[1] = var = sigma^2
@@ -1460,7 +1459,7 @@ static int Rayleigh_df(const gsl_vector *v, void *data, gsl_matrix *J)
}
static int Rayleigh_fdf(const gsl_vector *v, void *data,
- gsl_vector *f, gsl_matrix *J)
+ gsl_vector *f, gsl_matrix *J)
{
Rayleigh_f(v, data, f);
Rayleigh_df(v, data, J);
@@ -1507,10 +1506,10 @@ static void set_fittype(gsl_multifit_function_fdf *f, const char *fittype, size_
*v = gsl_vector_alloc(*p);
gsl_vector_set(*v, 0, 0); /* y0 = 0 */
gsl_vector_set(*v, 1, 1); /* A = 1 */
- gsl_vector_set(*v, 2, 1);
+ gsl_vector_set(*v, 2, 1);
*flag = 1;
}
- } else if (str_head_grep(fittype, "rayleigh") == 0) {
+ } else if (str_head_grep(fittype, "rayleigh") == 0) {
f->f = Rayleigh_f;
f->df = Rayleigh_df;
f->fdf = Rayleigh_fdf;
@@ -1530,9 +1529,9 @@ static void set_fittype(gsl_multifit_function_fdf *f, const char *fittype, size_
*v = gsl_vector_alloc(*p);
gsl_vector_set(*v, 0, 0); /* y0 = 0 */
gsl_vector_set(*v, 1, 1); /* A = 1 */
- gsl_vector_set(*v, 2, 1);
+ gsl_vector_set(*v, 2, 1);
gsl_vector_set(*v, 3, 1); /* A = 1 */
- gsl_vector_set(*v, 4, 1);
+ gsl_vector_set(*v, 4, 1);
*flag = 1;
}
} else if (str_head_grep(fittype, "lor") == 0) {
@@ -1542,10 +1541,10 @@ static void set_fittype(gsl_multifit_function_fdf *f, const char *fittype, size_
*p = 4;
if (*v == NULL) {
*v = gsl_vector_alloc(*p);
- gsl_vector_set(*v, 0, 0);
+ gsl_vector_set(*v, 0, 0);
gsl_vector_set(*v, 1, 1);
- gsl_vector_set(*v, 2, 0);
- gsl_vector_set(*v, 3, 1);
+ gsl_vector_set(*v, 2, 0);
+ gsl_vector_set(*v, 3, 1);
*flag = 1;
}
} else if (str_head_grep(fittype, "sin") == 0) {
@@ -1555,10 +1554,10 @@ static void set_fittype(gsl_multifit_function_fdf *f, const char *fittype, size_
*p = 4;
if (*v == NULL) {
*v = gsl_vector_alloc(*p);
- gsl_vector_set(*v, 0, 0);
+ gsl_vector_set(*v, 0, 0);
gsl_vector_set(*v, 1, 1);
- gsl_vector_set(*v, 2, 1);
- gsl_vector_set(*v, 3, 0);
+ gsl_vector_set(*v, 2, 1);
+ gsl_vector_set(*v, 3, 0);
*flag = 1;
}
} else if (str_head_grep(fittype, "hill") == 0) {
@@ -1568,10 +1567,10 @@ static void set_fittype(gsl_multifit_function_fdf *f, const char *fittype, size_
*p = 4;
if (*v == NULL) {
*v = gsl_vector_alloc(*p);
- gsl_vector_set(*v, 0, 0);
+ gsl_vector_set(*v, 0, 0);
gsl_vector_set(*v, 1, 1);
- gsl_vector_set(*v, 2, 1);
- gsl_vector_set(*v, 3, 1);
+ gsl_vector_set(*v, 2, 1);
+ gsl_vector_set(*v, 3, 1);
*flag = 1;
}
} else if (str_head_grep(fittype, "sigmoid") == 0 || str_head_grep(fittype, "fermi") == 0) {
@@ -1581,10 +1580,10 @@ static void set_fittype(gsl_multifit_function_fdf *f, const char *fittype, size_
*p = 4;
if (*v == NULL) {
*v = gsl_vector_alloc(*p);
- gsl_vector_set(*v, 0, 0);
+ gsl_vector_set(*v, 0, 0);
gsl_vector_set(*v, 1, 1);
- gsl_vector_set(*v, 2, 0);
- gsl_vector_set(*v, 3, 1);
+ gsl_vector_set(*v, 2, 0);
+ gsl_vector_set(*v, 3, 1);
*flag = 1;
}
} else if (str_head_grep(fittype, "power") == 0) {
@@ -1594,9 +1593,9 @@ static void set_fittype(gsl_multifit_function_fdf *f, const char *fittype, size_
*p = 3;
if (*v == NULL) {
*v = gsl_vector_alloc(*p);
- gsl_vector_set(*v, 0, 0);
+ gsl_vector_set(*v, 0, 0);
gsl_vector_set(*v, 1, 1);
- gsl_vector_set(*v, 2, -1);
+ gsl_vector_set(*v, 2, -1);
*flag = 1;
}
} else if (str_head_grep(fittype, "lognormal") == 0) {
@@ -1606,16 +1605,15 @@ static void set_fittype(gsl_multifit_function_fdf *f, const char *fittype, size_
*p = 4;
if (*v == NULL) {
*v = gsl_vector_alloc(*p);
- gsl_vector_set(*v, 0, 0);
+ gsl_vector_set(*v, 0, 0);
gsl_vector_set(*v, 1, 1);
- gsl_vector_set(*v, 2, 1);
- gsl_vector_set(*v, 3, 1);
+ gsl_vector_set(*v, 2, 1);
+ gsl_vector_set(*v, 3, 1);
*flag = 1;
}
} else {
rb_raise(rb_eRuntimeError, "Unknown fit type (gaussian expected)");
}
-
}
/* Singleton method */
@@ -1708,12 +1706,11 @@ static VALUE rb_gsl_multifit_fit(int argc, VALUE *argv, VALUE klass)
if (flag == 1) gsl_vector_free(v);
gsl_multifit_fdfsolver_free(solver);
return rb_ary_new3(4,
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vout),
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, verr),
- rb_float_new(chi2), INT2FIX(dof));
+ Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vout),
+ Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, verr),
+ rb_float_new(chi2), INT2FIX(dof));
}
-#ifdef GSL_1_8_LATER
static VALUE rb_gsl_multifit_linear_est(VALUE module, VALUE xx, VALUE cc, VALUE ccov)
{
gsl_vector *x, *c;
@@ -1726,8 +1723,7 @@ static VALUE rb_gsl_multifit_linear_est(VALUE module, VALUE xx, VALUE cc, VALUE
gsl_multifit_linear_est(x, c, cov, &y, &y_err);
return rb_ary_new3(2, rb_float_new(y), rb_float_new(y_err));
}
-#endif
-#ifdef GSL_1_11_LATER
+
static VALUE rb_gsl_multifit_linear_residuals(int argc, VALUE argv[], VALUE module)
{
gsl_vector *y, *c, *r;
@@ -1755,8 +1751,6 @@ static VALUE rb_gsl_multifit_linear_residuals(int argc, VALUE argv[], VALUE modu
return ret;
}
-#endif
-
void Init_gsl_multifit(VALUE module)
{
VALUE mgsl_multifit;
@@ -1765,34 +1759,34 @@ void Init_gsl_multifit(VALUE module)
mgsl_multifit = rb_define_module_under(module, "MultiFit");
- cgsl_multifit_workspace = rb_define_class_under(mgsl_multifit, "Workspace",
- cGSL_Object);
- rb_define_singleton_method(cgsl_multifit_workspace, "new",
- rb_gsl_multifit_workspace_new, 2);
- rb_define_singleton_method(cgsl_multifit_workspace, "alloc",
- rb_gsl_multifit_workspace_new, 2);
- rb_define_singleton_method(mgsl_multifit, "alloc",
- rb_gsl_multifit_workspace_new, 2);
+ cgsl_multifit_workspace = rb_define_class_under(mgsl_multifit, "Workspace",
+ cGSL_Object);
+ rb_define_singleton_method(cgsl_multifit_workspace, "new",
+ rb_gsl_multifit_workspace_new, 2);
+ rb_define_singleton_method(cgsl_multifit_workspace, "alloc",
+ rb_gsl_multifit_workspace_new, 2);
+ rb_define_singleton_method(mgsl_multifit, "alloc",
+ rb_gsl_multifit_workspace_new, 2);
rb_define_module_function(mgsl_multifit, "linear", rb_gsl_multifit_linear, -1);
rb_define_module_function(mgsl_multifit, "wlinear", rb_gsl_multifit_wlinear, -1);
cgsl_multifit_solver = rb_define_class_under(mgsl_multifit, "Solver", cGSL_Object);
- cgsl_multifit_fdfsolver = rb_define_class_under(mgsl_multifit, "FdfSolver",
- cgsl_multifit_solver);
+ cgsl_multifit_fdfsolver = rb_define_class_under(mgsl_multifit, "FdfSolver",
+ cgsl_multifit_solver);
cgsl_multifit_function_fdf = rb_define_class_under(mgsl_multifit, "Function_fdf",
- cGSL_Object);
+ cGSL_Object);
/*****/
- rb_define_singleton_method(cgsl_multifit_fdfsolver, "new",
- rb_gsl_multifit_fdfsolver_new, -1);
- rb_define_singleton_method(cgsl_multifit_fdfsolver, "alloc",
- rb_gsl_multifit_fdfsolver_new, -1);
+ rb_define_singleton_method(cgsl_multifit_fdfsolver, "new",
+ rb_gsl_multifit_fdfsolver_new, -1);
+ rb_define_singleton_method(cgsl_multifit_fdfsolver, "alloc",
+ rb_gsl_multifit_fdfsolver_new, -1);
- rb_define_singleton_method(cgsl_multifit_function_fdf, "new",
- rb_gsl_multifit_function_fdf_new, -1);
- rb_define_singleton_method(cgsl_multifit_function_fdf, "alloc",
- rb_gsl_multifit_function_fdf_new, -1);
+ rb_define_singleton_method(cgsl_multifit_function_fdf, "new",
+ rb_gsl_multifit_function_fdf_new, -1);
+ rb_define_singleton_method(cgsl_multifit_function_fdf, "alloc",
+ rb_gsl_multifit_function_fdf_new, -1);
/*****/
@@ -1827,35 +1821,32 @@ void Init_gsl_multifit(VALUE module)
rb_gsl_multifit_define_const(cgsl_multifit_fdfsolver);
- rb_define_method(cgsl_multifit_function_fdf, "set_procs",
- rb_gsl_multifit_function_fdf_set_procs, -1);
- rb_define_method(cgsl_multifit_function_fdf, "set_data",
- rb_gsl_multifit_function_fdf_set_data, -1);
- rb_define_method(cgsl_multifit_function_fdf, "params",
- rb_gsl_multifit_function_fdf_params, 0);
+ rb_define_method(cgsl_multifit_function_fdf, "set_procs",
+ rb_gsl_multifit_function_fdf_set_procs, -1);
+ rb_define_method(cgsl_multifit_function_fdf, "set_data",
+ rb_gsl_multifit_function_fdf_set_data, -1);
+ rb_define_method(cgsl_multifit_function_fdf, "params",
+ rb_gsl_multifit_function_fdf_params, 0);
rb_define_alias(cgsl_multifit_function_fdf, "param", "params");
- rb_define_method(cgsl_multifit_function_fdf, "n",
- rb_gsl_multifit_function_fdf_n, 0);
- rb_define_method(cgsl_multifit_function_fdf, "set_n",
- rb_gsl_multifit_function_fdf_set_n, 1);
+ rb_define_method(cgsl_multifit_function_fdf, "n",
+ rb_gsl_multifit_function_fdf_n, 0);
+ rb_define_method(cgsl_multifit_function_fdf, "set_n",
+ rb_gsl_multifit_function_fdf_set_n, 1);
rb_define_alias(cgsl_multifit_function_fdf, "n=", "set_n");
- rb_define_method(cgsl_multifit_function_fdf, "p",
- rb_gsl_multifit_function_fdf_p, 0);
+ rb_define_method(cgsl_multifit_function_fdf, "p",
+ rb_gsl_multifit_function_fdf_p, 0);
rb_define_alias(cgsl_multifit_function_fdf, "np", "p");
/*****/
rb_define_singleton_method(cgsl_multifit_fdfsolver, "fit", rb_gsl_multifit_fit, -1);
/***/
-#ifdef GSL_1_8_LATER
rb_define_module_function(mgsl_multifit, "linear_est", rb_gsl_multifit_linear_est, 3);
rb_define_module_function(module, "multifit_linear_est", rb_gsl_multifit_linear_est, 3);
-#endif
-#ifdef GSL_1_11_LATER
+
rb_define_module_function(mgsl_multifit, "linear_residuals", rb_gsl_multifit_linear_residuals, -1);
rb_define_module_function(module, "multifit_linear_residuals", rb_gsl_multifit_linear_residuals, -1);
-#endif
#ifdef HAVE_NDLINEAR_GSL_MULTIFIT_NDLINEAR_H
Init_ndlinear(mgsl_multifit);
diff --git a/ext/gsl/multimin.c b/ext/gsl_native/multimin.c
similarity index 90%
rename from ext/gsl/multimin.c
rename to ext/gsl_native/multimin.c
index bdbcdbc..60aa966 100644
--- a/ext/gsl/multimin.c
+++ b/ext/gsl_native/multimin.c
@@ -15,17 +15,17 @@
#include <gsl/gsl_multimin.h>
#ifndef CHECK_MULTIMIN_FUNCTION
-#define CHECK_MULTIMIN_FUNCTION(x) if(CLASS_OF(x)!=cgsl_multimin_function)\
- rb_raise(rb_eTypeError,\
- "wrong argument type %s (GSL::MultiMin::Function expected)",\
- rb_class2name(CLASS_OF(x)));
+#define CHECK_MULTIMIN_FUNCTION(x) if(CLASS_OF(x)!=cgsl_multimin_function) \
+ rb_raise(rb_eTypeError, \
+ "wrong argument type %s (GSL::MultiMin::Function expected)", \
+ rb_class2name(CLASS_OF(x)));
#endif
#ifndef CHECK_MULTIMIN_FUNCTION_FDF
-#define CHECK_MULTIMIN_FUNCTION_FDF(x) if(CLASS_OF(x)!=cgsl_multimin_function_fdf)\
- rb_raise(rb_eTypeError,\
- "wrong argument type %s (GSL::MultiMin::Function_fdf expected)",\
- rb_class2name(CLASS_OF(x)));
+#define CHECK_MULTIMIN_FUNCTION_FDF(x) if(CLASS_OF(x)!=cgsl_multimin_function_fdf) \
+ rb_raise(rb_eTypeError, \
+ "wrong argument type %s (GSL::MultiMin::Function_fdf expected)", \
+ rb_class2name(CLASS_OF(x)));
#endif
VALUE cgsl_multimin_function_fdf; /* Used also in multimin_fsdf.c */
@@ -37,18 +37,12 @@ enum {
GSL_FDFMINIMIZER_VECTOR_BFGS,
GSL_FDFMINIMIZER_STEEPEST_DESCENT,
GSL_FMINIMIZER_NMSIMPLEX,
-#ifdef GSL_1_9_LATER
GSL_FDFMINIMIZER_VECTOR_BFGS2,
-#endif
-#ifdef GSL_1_13_LATER
GSL_FMINIMIZER_NMSIMPLEX2RAND,
-#endif
};
static const gsl_multimin_fdfminimizer_type* get_fdfminimizer_type(VALUE t);
-#ifdef GSL_1_3_LATER
static const gsl_multimin_fminimizer_type* get_fminimizer_type(VALUE t);
-#endif
static void define_const();
static void gsl_multimin_function_free(gsl_multimin_function *f);
@@ -57,11 +51,11 @@ static void set_function(int i, VALUE *argv, gsl_multimin_function *F);
static void gsl_multimin_function_fdf_free(gsl_multimin_function_fdf *f);
-double rb_gsl_multimin_function_fdf_f(const gsl_vector *x, void *p);
-void rb_gsl_multimin_function_fdf_df(const gsl_vector *x, void *p,
- gsl_vector *g);
-void rb_gsl_multimin_function_fdf_fdf(const gsl_vector *x, void *p,
- double *f, gsl_vector *g);
+double rb_gsl_multimin_function_fdf_f(const gsl_vector *x, void *p);
+void rb_gsl_multimin_function_fdf_df(const gsl_vector *x, void *p,
+ gsl_vector *g);
+void rb_gsl_multimin_function_fdf_fdf(const gsl_vector *x, void *p,
+ double *f, gsl_vector *g);
static void set_function_fdf(int i, VALUE *argv, gsl_multimin_function_fdf *F);
/*** multimin_funcion ***/
@@ -148,10 +142,10 @@ static void set_function(int i, VALUE *argv, gsl_multimin_function *F)
VALUE ary;
ary = (VALUE) F->params;
if (TYPE(argv[i]) == T_FIXNUM) F->n = FIX2INT(argv[i]);
- else if (rb_obj_is_kind_of(argv[i], rb_cProc))
+ else if (rb_obj_is_kind_of(argv[i], rb_cProc))
rb_ary_store(ary, 0, argv[i]);
else if (TYPE(argv[i]) == T_ARRAY || rb_obj_is_kind_of(argv[i], cgsl_vector)
- || TYPE(argv[i]) == T_FIXNUM || TYPE(argv[i]) == T_FLOAT) {
+ || TYPE(argv[i]) == T_FIXNUM || TYPE(argv[i]) == T_FLOAT) {
rb_ary_store(ary, 1, argv[i]);
} else {
rb_raise(rb_eTypeError, "wrong type of argument %d (Fixnum or Proc)", i);
@@ -268,8 +262,8 @@ static void set_function_fdf(int argc, VALUE *argv, gsl_multimin_function_fdf *F
F->n = FIX2INT(argv[2]);
rb_ary_store(ary, 2, Qnil);
} else {
- rb_ary_store(ary, 2, argv[2]);
- }
+ rb_ary_store(ary, 2, argv[2]);
+ }
break;
case 4:
case 5:
@@ -316,8 +310,8 @@ static VALUE rb_gsl_multimin_function_fdf_set_procs(int argc, VALUE *argv, VALUE
F->n = FIX2INT(argv[2]);
rb_ary_store(ary, 2, Qnil);
} else {
- rb_ary_store(ary, 2, argv[2]);
- }
+ rb_ary_store(ary, 2, argv[2]);
+ }
break;
case 4:
case 5:
@@ -355,7 +349,7 @@ static VALUE rb_gsl_multimin_function_fdf_set_params(int argc, VALUE *argv, VALU
ary = (VALUE) F->params;
}
if (argc == 1) {
- rb_ary_store(ary, 3, argv[0]);
+ rb_ary_store(ary, 3, argv[0]);
} else {
ary2 = rb_ary_new2(argc);
for (i = 0; (int) i < argc; i++) rb_ary_store(ary2, i, argv[i]);
@@ -384,8 +378,8 @@ double rb_gsl_multimin_function_fdf_f(const gsl_vector *x, void *p)
return NUM2DBL(result);
}
-void rb_gsl_multimin_function_fdf_df(const gsl_vector *x, void *p,
- gsl_vector *g)
+void rb_gsl_multimin_function_fdf_df(const gsl_vector *x, void *p,
+ gsl_vector *g)
{
VALUE vx, vg, proc, vp, ary;
vx = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector *) x);
@@ -400,8 +394,8 @@ void rb_gsl_multimin_function_fdf_df(const gsl_vector *x, void *p,
}
}
-void rb_gsl_multimin_function_fdf_fdf(const gsl_vector *x, void *p,
- double *f, gsl_vector *g)
+void rb_gsl_multimin_function_fdf_fdf(const gsl_vector *x, void *p,
+ double *f, gsl_vector *g)
{
VALUE vx, vg, proc_f, proc_df, vp, ary, result;
vx = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector *) x);
@@ -431,26 +425,20 @@ static VALUE rb_gsl_multimin_function_fdf_params(VALUE obj)
static void define_const(VALUE klass1, VALUE klass2)
{
- rb_define_const(klass1,
- "CONJUGATE_FR", INT2FIX(GSL_FDFMINIMIZER_CONJUGATE_FR));
- rb_define_const(klass1,
- "CONJUGATE_PR", INT2FIX(GSL_FDFMINIMIZER_CONJUGATE_PR));
- rb_define_const(klass1,
- "VECTOR_BFGS", INT2FIX(GSL_FDFMINIMIZER_VECTOR_BFGS));
- rb_define_const(klass1,
- "STEEPEST_DESCENT", INT2FIX(GSL_FDFMINIMIZER_STEEPEST_DESCENT));
-#ifdef GSL_1_3_LATER
- rb_define_const(klass2,
- "NMSIMPLEX", INT2FIX(GSL_FMINIMIZER_NMSIMPLEX));
-#endif
-#ifdef GSL_1_9_LATER
- rb_define_const(klass1,
- "VECTOR_BFGS2", INT2FIX(GSL_FDFMINIMIZER_VECTOR_BFGS2));
-#endif
-#ifdef GSL_1_13_LATER
- rb_define_const(klass2,
- "NMSIMPLEX2RAND", INT2FIX(GSL_FMINIMIZER_NMSIMPLEX2RAND));
-#endif
+ rb_define_const(klass1,
+ "CONJUGATE_FR", INT2FIX(GSL_FDFMINIMIZER_CONJUGATE_FR));
+ rb_define_const(klass1,
+ "CONJUGATE_PR", INT2FIX(GSL_FDFMINIMIZER_CONJUGATE_PR));
+ rb_define_const(klass1,
+ "VECTOR_BFGS", INT2FIX(GSL_FDFMINIMIZER_VECTOR_BFGS));
+ rb_define_const(klass1,
+ "STEEPEST_DESCENT", INT2FIX(GSL_FDFMINIMIZER_STEEPEST_DESCENT));
+ rb_define_const(klass2,
+ "NMSIMPLEX", INT2FIX(GSL_FMINIMIZER_NMSIMPLEX));
+ rb_define_const(klass1,
+ "VECTOR_BFGS2", INT2FIX(GSL_FDFMINIMIZER_VECTOR_BFGS2));
+ rb_define_const(klass2,
+ "NMSIMPLEX2RAND", INT2FIX(GSL_FMINIMIZER_NMSIMPLEX2RAND));
}
static const gsl_multimin_fdfminimizer_type* get_fdfminimizer_type(VALUE t)
@@ -459,18 +447,16 @@ static const gsl_multimin_fdfminimizer_type* get_fdfminimizer_type(VALUE t)
switch (TYPE(t)) {
case T_STRING:
strcpy(name, STR2CSTR(t));
- if (str_tail_grep(name, "conjugate_fr") == 0)
+ if (str_tail_grep(name, "conjugate_fr") == 0)
return gsl_multimin_fdfminimizer_conjugate_fr;
- else if (str_tail_grep(name, "conjugate_pr") == 0)
+ else if (str_tail_grep(name, "conjugate_pr") == 0)
return gsl_multimin_fdfminimizer_conjugate_pr;
- else if (str_tail_grep(name, "vector_bfgs") == 0)
+ else if (str_tail_grep(name, "vector_bfgs") == 0)
return gsl_multimin_fdfminimizer_vector_bfgs;
- else if (str_tail_grep(name, "steepest_descent") == 0)
+ else if (str_tail_grep(name, "steepest_descent") == 0)
return gsl_multimin_fdfminimizer_steepest_descent;
-#ifdef GSL_1_9_LATER
- else if (str_tail_grep(name, "vector_bfgs2") == 0)
+ else if (str_tail_grep(name, "vector_bfgs2") == 0)
return gsl_multimin_fdfminimizer_vector_bfgs2;
-#endif
else
rb_raise(rb_eTypeError, "%s: unknown minimizer type", name);
break;
@@ -484,10 +470,8 @@ static const gsl_multimin_fdfminimizer_type* get_fdfminimizer_type(VALUE t)
return gsl_multimin_fdfminimizer_vector_bfgs; break;
case GSL_FDFMINIMIZER_STEEPEST_DESCENT:
return gsl_multimin_fdfminimizer_steepest_descent; break;
-#ifdef GSL_1_9_LATER
case GSL_FDFMINIMIZER_VECTOR_BFGS2:
return gsl_multimin_fdfminimizer_vector_bfgs2; break;
-#endif
default:
rb_raise(rb_eTypeError, "%d: unknown type", FIX2INT(t));
break;
@@ -508,8 +492,8 @@ static VALUE rb_gsl_fdfminimizer_new(VALUE klass, VALUE t, VALUE n)
return Data_Wrap_Struct(klass, 0, gsl_multimin_fdfminimizer_free, gmf);
}
-static VALUE rb_gsl_fdfminimizer_set(VALUE obj, VALUE ff, VALUE xx, VALUE ss,
- VALUE tt)
+static VALUE rb_gsl_fdfminimizer_set(VALUE obj, VALUE ff, VALUE xx, VALUE ss,
+ VALUE tt)
{
gsl_multimin_fdfminimizer *gmf = NULL;
gsl_multimin_function_fdf *F = NULL;
@@ -601,7 +585,6 @@ static VALUE rb_gsl_multimin_test_gradient(VALUE obj, VALUE gg, VALUE ea)
}
/*****/
-#ifdef GSL_1_3_LATER
static const gsl_multimin_fminimizer_type* get_fminimizer_type(VALUE t)
{
char name[64];
@@ -609,12 +592,10 @@ static const gsl_multimin_fminimizer_type* get_fminimizer_type(VALUE t)
switch (TYPE(t)) {
case T_STRING:
strcpy(name, STR2CSTR(t));
- if (str_tail_grep(name, "nmsimplex") == 0)
+ if (str_tail_grep(name, "nmsimplex") == 0)
return gsl_multimin_fminimizer_nmsimplex;
-#ifdef GSL_1_13_LATER
- if (str_tail_grep(name, "nmsimplex2rand") == 0)
+ if (str_tail_grep(name, "nmsimplex2rand") == 0)
return gsl_multimin_fminimizer_nmsimplex2rand;
-#endif
else
rb_raise(rb_eTypeError, "unknown type %s (nmsimplex and nmsimplex2rand supported)", name);
break;
@@ -622,10 +603,8 @@ static const gsl_multimin_fminimizer_type* get_fminimizer_type(VALUE t)
switch (FIX2INT(t)) {
case GSL_FMINIMIZER_NMSIMPLEX:
return gsl_multimin_fminimizer_nmsimplex; break;
-#ifdef GSL_1_13_LATER
case GSL_FMINIMIZER_NMSIMPLEX2RAND:
return gsl_multimin_fminimizer_nmsimplex2rand; break;
-#endif
default:
rb_raise(rb_eTypeError, "%d: unknown type (not supported)", FIX2INT(t));
break;
@@ -633,7 +612,7 @@ static const gsl_multimin_fminimizer_type* get_fminimizer_type(VALUE t)
break;
default:
rb_raise(rb_eTypeError, "wrong argument type %s (String or Fixnum expected)",
- rb_class2name(CLASS_OF(t)));
+ rb_class2name(CLASS_OF(t)));
break;
}
}
@@ -720,8 +699,6 @@ static VALUE rb_gsl_multimin_test_size(VALUE obj, VALUE ss, VALUE ea)
return INT2FIX(gsl_multimin_test_size(NUM2DBL(ss), NUM2DBL(ea)));
}
-#endif
-
#ifdef HAVE_GSL_GSL_MULTIMIN_FSDF_H
void Init_multimin_fsdf(VALUE module);
#endif
@@ -735,18 +712,16 @@ void Init_gsl_multimin(VALUE module)
mgsl_multimin = rb_define_module_under(module, "MultiMin");
rb_define_singleton_method(mgsl_multimin, "test_gradient", rb_gsl_multimin_test_gradient, 2);
-#ifdef GSL_1_3_LATER
rb_define_singleton_method(mgsl_multimin, "test_size", rb_gsl_multimin_test_size, 2);
-#endif
cgsl_multimin_fdfminimizer = rb_define_class_under(mgsl_multimin, "FdfMinimizer", cGSL_Object);
cgsl_multimin_fminimizer = rb_define_class_under(mgsl_multimin, "FMinimizer", cGSL_Object);
define_const(cgsl_multimin_fdfminimizer, cgsl_multimin_fminimizer);
cgsl_multimin_function = rb_define_class_under(mgsl_multimin, "Function",
- cgsl_function);
+ cgsl_function);
rb_define_singleton_method(cgsl_multimin_function, "alloc",
- rb_gsl_multimin_function_new, -1);
+ rb_gsl_multimin_function_new, -1);
rb_define_method(cgsl_multimin_function, "eval", rb_gsl_multimin_function_eval, 1);
rb_define_alias(cgsl_multimin_function, "call", "eval");
rb_define_method(cgsl_multimin_function, "set_proc", rb_gsl_multimin_function_set_f, -1);
@@ -756,9 +731,9 @@ void Init_gsl_multimin(VALUE module)
rb_define_method(cgsl_multimin_function, "n", rb_gsl_multimin_function_n, 0);
cgsl_multimin_function_fdf = rb_define_class_under(mgsl_multimin, "Function_fdf",
- cGSL_Object);
+ cGSL_Object);
rb_define_singleton_method(cgsl_multimin_function_fdf, "alloc",
- rb_gsl_multimin_function_fdf_new, -1);
+ rb_gsl_multimin_function_fdf_new, -1);
rb_define_method(cgsl_multimin_function_fdf, "set", rb_gsl_multimin_function_fdf_set, -1);
rb_define_method(cgsl_multimin_function_fdf, "set_params", rb_gsl_multimin_function_fdf_set_params, -1);
@@ -779,7 +754,6 @@ void Init_gsl_multimin(VALUE module)
rb_define_method(cgsl_multimin_fdfminimizer, "test_gradient", rb_gsl_fdfminimizer_test_gradient, 1);
/*****/
-#ifdef GSL_1_3_LATER
rb_define_singleton_method(cgsl_multimin_fminimizer, "alloc", rb_gsl_fminimizer_new, 2);
rb_define_method(cgsl_multimin_fminimizer, "set", rb_gsl_fminimizer_set, 3);
@@ -787,14 +761,12 @@ void Init_gsl_multimin(VALUE module)
rb_define_method(cgsl_multimin_fminimizer, "iterate", rb_gsl_fminimizer_iterate, 0);
rb_define_method(cgsl_multimin_fminimizer, "x", rb_gsl_fminimizer_x, 0);
rb_define_method(cgsl_multimin_fminimizer, "fval", rb_gsl_fminimizer_fval, 0);
- rb_define_method(cgsl_multimin_fminimizer, "minimum", rb_gsl_fminimizer_minimum, 0);
- rb_define_method(cgsl_multimin_fminimizer, "size", rb_gsl_fminimizer_size, 0);
+ rb_define_method(cgsl_multimin_fminimizer, "minimum", rb_gsl_fminimizer_minimum, 0);
+ rb_define_method(cgsl_multimin_fminimizer, "size", rb_gsl_fminimizer_size, 0);
rb_define_method(cgsl_multimin_fminimizer, "test_size", rb_gsl_fminimizer_test_size, 1);
-#endif
-
#ifdef HAVE_GSL_GSL_MULTIMIN_FSDF_H
- Init_multimin_fsdf(mgsl_multimin);
+ Init_multimin_fsdf(mgsl_multimin);
#endif
}
#ifdef CHECK_MULTIMIN_FUNCTION
diff --git a/ext/gsl/multimin_fsdf.c b/ext/gsl_native/multimin_fsdf.c
similarity index 88%
rename from ext/gsl/multimin_fsdf.c
rename to ext/gsl_native/multimin_fsdf.c
index 0c9123d..723ceef 100644
--- a/ext/gsl/multimin_fsdf.c
+++ b/ext/gsl_native/multimin_fsdf.c
@@ -4,10 +4,10 @@
static VALUE cfsdf;
#ifndef CHECK_MULTIMIN_FUNCTION_FSDF
-#define CHECK_MULTIMIN_FUNCTION_FSDF(x) if(CLASS_OF(x)!=cfsdf)\
- rb_raise(rb_eTypeError,\
- "wrong argument type %s (GSL::MultiMin::Function_fsdf expected)",\
- rb_class2name(CLASS_OF(x)));
+#define CHECK_MULTIMIN_FUNCTION_FSDF(x) if(CLASS_OF(x)!=cfsdf) \
+ rb_raise(rb_eTypeError, \
+ "wrong argument type %s (GSL::MultiMin::Function_fsdf expected)", \
+ rb_class2name(CLASS_OF(x)));
#endif
extern VALUE cgsl_multimin_function_fdf;
@@ -17,7 +17,7 @@ static const gsl_multimin_fsdfminimizer_type* get_fsdfminimizer_type(VALUE t)
switch (TYPE(t)) {
case T_STRING:
strcpy(name, STR2CSTR(t));
- if (strcmp(name, "bundle") == 0 || strcmp(name, "bundle_method") == 0)
+ if (strcmp(name, "bundle") == 0 || strcmp(name, "bundle_method") == 0)
return gsl_multimin_fsdfminimizer_bundle_method;
else
rb_raise(rb_eTypeError, "%s: unknown minimizer type", name);
@@ -42,13 +42,13 @@ static VALUE rb_gsl_fsdfminimizer_set(VALUE obj, VALUE ff, VALUE xx, VALUE ss)
gsl_multimin_fsdfminimizer *gmf = NULL;
gsl_multimin_function_fsdf *F = NULL;
gsl_vector *x;
- size_t bundle_size;
+ size_t bundle_size;
int status;
CHECK_MULTIMIN_FUNCTION_FSDF(ff);
Data_Get_Struct(obj, gsl_multimin_fsdfminimizer, gmf);
Data_Get_Struct(ff, gsl_multimin_function_fsdf, F);
Data_Get_Vector(xx, x);
- bundle_size = (size_t) FIX2INT(ss);
+ bundle_size = (size_t) FIX2INT(ss);
status = gsl_multimin_fsdfminimizer_set(gmf, F, x, bundle_size);
return INT2FIX(status);
}
@@ -134,12 +134,12 @@ static VALUE rb_gsl_fsdfminimizer_eps(VALUE obj)
void Init_multimin_fsdf(VALUE module)
{
- VALUE cmin;
-
- cmin = rb_define_class_under(module, "FsdfMinimizer", cGSL_Object);
- cfsdf = rb_define_class_under(module, "Function_fsdf", cgsl_multimin_function_fdf);
-
- rb_define_singleton_method(cmin, "alloc", rb_gsl_fsdfminimizer_alloc, 2);
+ VALUE cmin;
+
+ cmin = rb_define_class_under(module, "FsdfMinimizer", cGSL_Object);
+ cfsdf = rb_define_class_under(module, "Function_fsdf", cgsl_multimin_function_fdf);
+
+ rb_define_singleton_method(cmin, "alloc", rb_gsl_fsdfminimizer_alloc, 2);
rb_define_method(cmin, "set", rb_gsl_fsdfminimizer_set, 3);
rb_define_method(cmin, "name", rb_gsl_fsdfminimizer_name, 0);
rb_define_method(cmin, "iterate", rb_gsl_fsdfminimizer_iterate, 0);
@@ -149,8 +149,8 @@ void Init_multimin_fsdf(VALUE module)
rb_define_method(cmin, "minimum", rb_gsl_fsdfminimizer_minimum, 0);
rb_define_method(cmin, "restart", rb_gsl_fsdfminimizer_restart, 0);
rb_define_method(cmin, "test_gradient", rb_gsl_fsdfminimizer_test_gradient, 1);
- rb_define_method(cmin, "test_convergence", rb_gsl_fsdfminimizer_test_convergence, 1);
- rb_define_method(cmin, "eps", rb_gsl_fsdfminimizer_eps, 0);
+ rb_define_method(cmin, "test_convergence", rb_gsl_fsdfminimizer_test_convergence, 1);
+ rb_define_method(cmin, "eps", rb_gsl_fsdfminimizer_eps, 0);
}
#endif
diff --git a/ext/gsl/multiroots.c b/ext/gsl_native/multiroots.c
similarity index 91%
rename from ext/gsl/multiroots.c
rename to ext/gsl_native/multiroots.c
index 9e62b2d..45675aa 100644
--- a/ext/gsl/multiroots.c
+++ b/ext/gsl_native/multiroots.c
@@ -15,17 +15,17 @@
#include <gsl/gsl_multiroots.h>
#ifndef CHECK_MULTIROOT_FUNCTION
-#define CHECK_MULTIROOT_FUNCTION(x) if(CLASS_OF(x)!=cgsl_multiroot_function)\
- rb_raise(rb_eTypeError,\
- "wrong argument type %s (GSL::MultiRoot::Function expected)",\
- rb_class2name(CLASS_OF(x)));
+#define CHECK_MULTIROOT_FUNCTION(x) if(CLASS_OF(x)!=cgsl_multiroot_function) \
+ rb_raise(rb_eTypeError, \
+ "wrong argument type %s (GSL::MultiRoot::Function expected)", \
+ rb_class2name(CLASS_OF(x)));
#endif
#ifndef CHECK_MULTIROOT_FUNCTION_FDF
-#define CHECK_MULTIROOT_FUNCTION_FDF(x) if(CLASS_OF(x)!=cgsl_multiroot_function_fdf)\
- rb_raise(rb_eTypeError,\
- "wrong argument type %s (GSL::MultiRoot::Function_fdf expected)",\
- rb_class2name(CLASS_OF(x)));
+#define CHECK_MULTIROOT_FUNCTION_FDF(x) if(CLASS_OF(x)!=cgsl_multiroot_function_fdf) \
+ rb_raise(rb_eTypeError, \
+ "wrong argument type %s (GSL::MultiRoot::Function_fdf expected)", \
+ rb_class2name(CLASS_OF(x)));
#endif
static VALUE cgsl_multiroot_function;
@@ -49,12 +49,12 @@ static int rb_gsl_multiroot_function_f(const gsl_vector *x, void *p, gsl_vector
static void set_function(int i, VALUE *argv, gsl_multiroot_function *F);
static void gsl_multiroot_function_fdf_free(gsl_multiroot_function_fdf *f);
-static int rb_gsl_multiroot_function_fdf_f(const gsl_vector *x, void *p,
- gsl_vector *f);
-static int rb_gsl_multiroot_function_fdf_df(const gsl_vector *x, void *p,
- gsl_matrix *J);
-static int rb_gsl_multiroot_function_fdf_fdf(const gsl_vector *x, void *p,
- gsl_vector *f, gsl_matrix *J);
+static int rb_gsl_multiroot_function_fdf_f(const gsl_vector *x, void *p,
+ gsl_vector *f);
+static int rb_gsl_multiroot_function_fdf_df(const gsl_vector *x, void *p,
+ gsl_matrix *J);
+static int rb_gsl_multiroot_function_fdf_fdf(const gsl_vector *x, void *p,
+ gsl_vector *f, gsl_matrix *J);
static void set_function_fdf(int i, VALUE *argv, gsl_multiroot_function_fdf *F);
static const gsl_multiroot_fsolver_type* get_fsolver_type(VALUE t);
static const gsl_multiroot_fdfsolver_type* get_fdfsolver_type(VALUE t);
@@ -98,8 +98,8 @@ static void gsl_multiroot_function_mark(gsl_multiroot_function *f)
{
size_t i;
rb_gc_mark((VALUE) f->params);
- // for (i = 0; i < RARRAY(f->params)->len; i++)
- for (i = 0; (int) i < RARRAY_LEN(f->params); i++)
+ // for (i = 0; i < RARRAY(f->params)->len; i++)
+ for (i = 0; (int) i < RARRAY_LEN(f->params); i++)
rb_gc_mark(rb_ary_entry((VALUE) f->params, i));
}
@@ -137,10 +137,10 @@ static void set_function(int i, VALUE *argv, gsl_multiroot_function *F)
VALUE ary;
ary = (VALUE) F->params;
if (TYPE(argv[i]) == T_FIXNUM) F->n = FIX2INT(argv[i]);
- else if (rb_obj_is_kind_of(argv[i], rb_cProc))
+ else if (rb_obj_is_kind_of(argv[i], rb_cProc))
rb_ary_store(ary, 0, argv[i]);
else if (TYPE(argv[i]) == T_ARRAY || rb_obj_is_kind_of(argv[i], cgsl_vector)
- || TYPE(argv[i]) == T_FIXNUM || TYPE(argv[i]) == T_FLOAT) {
+ || TYPE(argv[i]) == T_FIXNUM || TYPE(argv[i]) == T_FLOAT) {
rb_ary_store(ary, 1, argv[i]);
} else {
rb_raise(rb_eTypeError, "wrong type of argument %d (Fixnum or Proc)", i);
@@ -235,8 +235,8 @@ static void gsl_multiroot_function_fdf_mark(gsl_multiroot_function_fdf *f)
{
size_t i;
rb_gc_mark((VALUE) f->params);
- // for (i = 0; i < RARRAY(f->params)->len; i++)
- for (i = 0; (int) i < RARRAY_LEN(f->params); i++)
+ // for (i = 0; i < RARRAY(f->params)->len; i++)
+ for (i = 0; (int) i < RARRAY_LEN(f->params); i++)
rb_gc_mark(rb_ary_entry((VALUE) f->params, i));
}
@@ -336,8 +336,8 @@ static VALUE rb_gsl_multiroot_function_fdf_set(int argc, VALUE *argv, VALUE obj)
return obj;
}
-static int rb_gsl_multiroot_function_fdf_f(const gsl_vector *x, void *p,
- gsl_vector *f)
+static int rb_gsl_multiroot_function_fdf_f(const gsl_vector *x, void *p,
+ gsl_vector *f)
{
VALUE vx, vf, ary;
VALUE proc, vp;
@@ -351,8 +351,8 @@ static int rb_gsl_multiroot_function_fdf_f(const gsl_vector *x, void *p,
return GSL_SUCCESS;
}
-static int rb_gsl_multiroot_function_fdf_df(const gsl_vector *x, void *p,
- gsl_matrix *J)
+static int rb_gsl_multiroot_function_fdf_df(const gsl_vector *x, void *p,
+ gsl_matrix *J)
{
VALUE vx, vJ, ary;
VALUE proc, vp;
@@ -366,8 +366,8 @@ static int rb_gsl_multiroot_function_fdf_df(const gsl_vector *x, void *p,
return GSL_SUCCESS;
}
-static int rb_gsl_multiroot_function_fdf_fdf(const gsl_vector *x, void *p,
- gsl_vector *f, gsl_matrix *J)
+static int rb_gsl_multiroot_function_fdf_fdf(const gsl_vector *x, void *p,
+ gsl_vector *f, gsl_matrix *J)
{
VALUE vx, vf, vJ, ary;
VALUE proc_f, proc_df, proc_fdf, vp;
@@ -671,8 +671,8 @@ static VALUE rb_gsl_multiroot_fdfsolver_test_residual(VALUE obj, VALUE ea)
return INT2FIX(gsl_multiroot_test_residual(s->f, NUM2DBL(ea)));
}
-static VALUE rb_gsl_multiroot_test_delta(VALUE obj, VALUE vdx, VALUE vx,
- VALUE ea, VALUE er)
+static VALUE rb_gsl_multiroot_test_delta(VALUE obj, VALUE vdx, VALUE vx,
+ VALUE ea, VALUE er)
{
gsl_vector *dx = NULL, *x = NULL;
Need_Float(ea); Need_Float(er);
@@ -717,22 +717,21 @@ static VALUE rb_gsl_multiroot_fsolver_fsolve(int argc, VALUE *argv, VALUE obj)
break;
default:
rb_raise(rb_eTypeError, "wrong type of argument %s (Fixnum or Float expected)",
- rb_class2name(CLASS_OF(argv[i])));
+ rb_class2name(CLASS_OF(argv[i])));
break;
}
}
-
do {
- iter ++;
+ iter++;
status = gsl_multiroot_fsolver_iterate (s);
if (status) break;
status = gsl_multiroot_test_residual(s->f, eps);
} while (status == GSL_CONTINUE && iter < max_iter);
xnew = gsl_vector_alloc(s->x->size);
gsl_vector_memcpy(xnew, gsl_multiroot_fsolver_root(s));
- return rb_ary_new3(3,
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, xnew),
- INT2FIX(iter), INT2FIX(status));
+ return rb_ary_new3(3,
+ Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, xnew),
+ INT2FIX(iter), INT2FIX(status));
}
/* singleton */
@@ -746,7 +745,6 @@ static VALUE rb_gsl_multiroot_fdjacobian(int argc, VALUE *argv, VALUE obj)
int status;
if (argc != 4 && argc != 5)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 4 or 5)", argc);
-
if (rb_obj_is_kind_of(argv[0], cgsl_multiroot_function_fdf)) {
Data_Get_Struct(argv[0], gsl_multiroot_function_fdf, fdf);
func.f = fdf->f;
@@ -758,7 +756,6 @@ static VALUE rb_gsl_multiroot_fdjacobian(int argc, VALUE *argv, VALUE obj)
} else {
rb_raise(rb_eArgError, "wrong argument type %s (MultiRoot::Function or MultiRoot::Function_fdf expected)", rb_class2name(CLASS_OF(argv[0])));
}
-
Need_Float(argv[3]);
Data_Get_Vector(argv[1], x);
Data_Get_Vector(argv[2], f);
@@ -767,7 +764,7 @@ static VALUE rb_gsl_multiroot_fdjacobian(int argc, VALUE *argv, VALUE obj)
J = gsl_matrix_alloc(F->n, F->n);
status = gsl_multiroot_fdjacobian(F, x, f, eps, J);
return rb_ary_new3(2, Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, J),
- INT2FIX(status));
+ INT2FIX(status));
} else {
Data_Get_Struct(argv[4], gsl_matrix, J);
status = gsl_multiroot_fdjacobian(F, x, f, eps, J);
@@ -803,7 +800,7 @@ static VALUE rb_gsl_multiroot_function_solve(int argc, VALUE *argv, VALUE obj)
int flag = 0;
double epsabs = 1e-7;
size_t max_iter = 10000, iter = 0, i;
- gsl_multiroot_fsolver_type *T
+ gsl_multiroot_fsolver_type *T
= (gsl_multiroot_fsolver_type *) gsl_multiroot_fsolver_hybrids;
gsl_multiroot_fsolver *s = NULL;
int status;
@@ -816,25 +813,25 @@ static VALUE rb_gsl_multiroot_function_solve(int argc, VALUE *argv, VALUE obj)
for (i = 1; (int) i < argc; i++) {
switch (TYPE(argv[i])) {
case T_STRING:
- T = (gsl_multiroot_fsolver_type *) get_fsolver_type(argv[i]);
- break;
+ T = (gsl_multiroot_fsolver_type *) get_fsolver_type(argv[i]);
+ break;
case T_FLOAT:
- epsabs = NUM2DBL(argv[i]);
- break;
+ epsabs = NUM2DBL(argv[i]);
+ break;
case T_FIXNUM:
- max_iter = FIX2INT(argv[i]);
- break;
+ max_iter = FIX2INT(argv[i]);
+ break;
}
}
- /* no break */
+ /* no break */
case 1:
if (TYPE(argv[0]) == T_ARRAY) {
// if (RARRAY(argv[0])->len != F->n)
if (RARRAY_LEN(argv[0]) != (int) F->n)
- rb_raise(rb_eRangeError, "array size are different.");
+ rb_raise(rb_eRangeError, "array size are different.");
x0 = gsl_vector_alloc(F->n);
- for (i = 0; i < x0->size; i++)
- gsl_vector_set(x0, i, NUM2DBL(rb_ary_entry(argv[0], i)));
+ for (i = 0; i < x0->size; i++)
+ gsl_vector_set(x0, i, NUM2DBL(rb_ary_entry(argv[0], i)));
flag = 1;
} else {
Data_Get_Vector(argv[0], x0);
@@ -858,7 +855,7 @@ static VALUE rb_gsl_multiroot_function_solve(int argc, VALUE *argv, VALUE obj)
gsl_multiroot_fsolver_free (s);
if (flag == 1) gsl_vector_free(x0);
return rb_ary_new3(3, Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, xnew),
- INT2FIX(iter), INT2FIX(status));
+ INT2FIX(iter), INT2FIX(status));
}
void Init_gsl_multiroot(VALUE module)
@@ -868,19 +865,19 @@ void Init_gsl_multiroot(VALUE module)
mgsl_multiroot = rb_define_module_under(module, "MultiRoot");
- rb_define_singleton_method(mgsl_multiroot, "test_delta",
- rb_gsl_multiroot_test_delta, 4);
- rb_define_singleton_method(mgsl_multiroot, "test_residual",
- rb_gsl_multiroot_test_residual, 2);
+ rb_define_singleton_method(mgsl_multiroot, "test_delta",
+ rb_gsl_multiroot_test_delta, 4);
+ rb_define_singleton_method(mgsl_multiroot, "test_residual",
+ rb_gsl_multiroot_test_residual, 2);
- rb_define_singleton_method(mgsl_multiroot, "fdjacobian",
- rb_gsl_multiroot_fdjacobian, -1);
+ rb_define_singleton_method(mgsl_multiroot, "fdjacobian",
+ rb_gsl_multiroot_fdjacobian, -1);
/* multiroot_function */
cgsl_multiroot_function = rb_define_class_under(mgsl_multiroot, "Function",
- cgsl_function);
+ cgsl_function);
rb_define_singleton_method(cgsl_multiroot_function, "alloc",
- rb_gsl_multiroot_function_new, -1);
+ rb_gsl_multiroot_function_new, -1);
rb_define_method(cgsl_multiroot_function, "eval", rb_gsl_multiroot_function_eval, 1);
rb_define_alias(cgsl_multiroot_function, "call", "eval");
rb_define_method(cgsl_multiroot_function, "set", rb_gsl_multiroot_function_set_f, -1);
@@ -891,9 +888,9 @@ void Init_gsl_multiroot(VALUE module)
/* multiroot_function_fdf */
cgsl_multiroot_function_fdf = rb_define_class_under(mgsl_multiroot, "Function_fdf",
- cgsl_multiroot_function);
+ cgsl_multiroot_function);
rb_define_singleton_method(cgsl_multiroot_function_fdf, "alloc",
- rb_gsl_multiroot_function_fdf_new, -1);
+ rb_gsl_multiroot_function_fdf_new, -1);
rb_define_method(cgsl_multiroot_function_fdf, "set", rb_gsl_multiroot_function_fdf_set, -1);
rb_define_method(cgsl_multiroot_function_fdf, "set_params", rb_gsl_multiroot_function_fdf_set_params, -1);
rb_define_method(cgsl_multiroot_function_fdf, "params", rb_gsl_multiroot_function_fdf_params, 0);
@@ -905,10 +902,10 @@ void Init_gsl_multiroot(VALUE module)
cgsl_multiroot_fsolver = rb_define_class_under(mgsl_multiroot, "FSolver", cGSL_Object);
cgsl_multiroot_fdfsolver = rb_define_class_under(mgsl_multiroot, "FdfSolver", cgsl_multiroot_fsolver);
- rb_define_singleton_method(cgsl_multiroot_fsolver, "alloc",
- rb_gsl_multiroot_fsolver_new, 2);
- rb_define_singleton_method(cgsl_multiroot_fdfsolver, "alloc",
- rb_gsl_multiroot_fdfsolver_new, 2);
+ rb_define_singleton_method(cgsl_multiroot_fsolver, "alloc",
+ rb_gsl_multiroot_fsolver_new, 2);
+ rb_define_singleton_method(cgsl_multiroot_fdfsolver, "alloc",
+ rb_gsl_multiroot_fdfsolver_new, 2);
rb_define_method(cgsl_multiroot_fsolver, "set", rb_gsl_multiroot_fsolver_set, 2);
rb_define_method(cgsl_multiroot_fsolver, "name", rb_gsl_multiroot_fsolver_name, 0);
@@ -935,7 +932,7 @@ void Init_gsl_multiroot(VALUE module)
rb_define_method(cgsl_multiroot_fdfsolver, "test_residual", rb_gsl_multiroot_fdfsolver_test_residual, 1);
- multiroot_define_const(cgsl_multiroot_fdfsolver, cgsl_multiroot_fsolver);
+ multiroot_define_const(cgsl_multiroot_fdfsolver, cgsl_multiroot_fsolver);
rb_define_method(cgsl_multiroot_fsolver, "fsolve", rb_gsl_multiroot_fsolver_fsolve, -1);
rb_define_alias(cgsl_multiroot_fsolver, "solve", "fsolve");
diff --git a/ext/gsl/multiset.c b/ext/gsl_native/multiset.c
similarity index 99%
rename from ext/gsl/multiset.c
rename to ext/gsl_native/multiset.c
index 9c64bf9..68ab1db 100644
--- a/ext/gsl/multiset.c
+++ b/ext/gsl_native/multiset.c
@@ -1,7 +1,5 @@
#include "include/rb_gsl.h"
-#ifdef GSL_1_14_LATER
-
VALUE cMultiset;
VALUE rb_gsl_multiset_alloc(VALUE klass, VALUE nn, VALUE kk)
@@ -18,7 +16,7 @@ VALUE rb_gsl_multiset_calloc(VALUE klass, VALUE nn, VALUE kk)
m = gsl_multiset_alloc(FIX2INT(nn), FIX2INT(kk));
return Data_Wrap_Struct(klass, 0, gsl_multiset_free, m);
}
-
+
VALUE rb_gsl_multiset_init_first(VALUE mm)
{
gsl_multiset *m;
@@ -180,14 +178,14 @@ VALUE rb_gsl_multiset_data2(VALUE mm, VALUE i)
p = gsl_multiset_data(m);
return INT2FIX(p[i]);
}
-
+
void Init_multiset(VALUE module)
{
cMultiset = rb_define_class_under(module, "Multiset", cGSL_Object);
rb_define_singleton_method(cMultiset, "alloc", rb_gsl_multiset_alloc, 2);
rb_define_singleton_method(cMultiset, "calloc", rb_gsl_multiset_calloc, 2);
rb_define_singleton_method(cMultiset, "memcpy", rb_gsl_multiset_memcpy, 2);
-
+
rb_define_method(cMultiset, "init_first", rb_gsl_multiset_init_first, 0);
rb_define_method(cMultiset, "init_last", rb_gsl_multiset_init_last, 0);
@@ -210,5 +208,3 @@ void Init_multiset(VALUE module)
rb_define_method(cMultiset, "fscanf", rb_gsl_multiset_fscanf, 1);
}
-#endif
-
diff --git a/ext/gsl/ndlinear.c b/ext/gsl_native/ndlinear.c
similarity index 74%
rename from ext/gsl/ndlinear.c
rename to ext/gsl_native/ndlinear.c
index 5c3a371..92ee1b2 100644
--- a/ext/gsl/ndlinear.c
+++ b/ext/gsl_native/ndlinear.c
@@ -1,321 +1,320 @@
-#include "include/rb_gsl.h"
-
-#ifdef HAVE_NDLINEAR_GSL_MULTIFIT_NDLINEAR_H
-#include <gsl/gsl_math.h>
-#include <gsl/gsl_matrix.h>
-#include <gsl/gsl_vector.h>
-#include <gsl/gsl_multifit.h>
-#include <ndlinear/gsl_multifit_ndlinear.h>
-
-static VALUE cWorkspace;
-
-enum Index_Ndlinear {
- INDEX_NDIM = 0,
- INDEX_N = 1,
- INDEX_PROCS = 2,
- INDEX_PARAMS = 3,
- INDEX_FUNCS = 4,
- INDEX_NDIM_I = 5,
-
- NDLINEAR_ARY_SIZE = 6,
-};
-
-static void multifit_ndlinear_mark(gsl_multifit_ndlinear_workspace *w)
-{
- rb_gc_mark((VALUE) w->params);
-}
-
-typedef int (*UFUNC)(double, double[], void*);
-typedef struct ufunc_struct
-{
- UFUNC *fptr;
-} ufunc_struct;
-
-static VALUE cUFunc;
-static ufunc_struct* ufunc_struct_alloc(size_t n_dim) {
- ufunc_struct *p;
- p = (ufunc_struct*) malloc(sizeof(ufunc_struct));
- p->fptr = malloc(sizeof(UFUNC)*n_dim);
- return p;
-}
-static void ufunc_struct_free(ufunc_struct *p)
-{
- free(p->fptr);
- free(p);
-}
-
-static int func_u(double x, double y[], void *data);
-static VALUE rb_gsl_multifit_ndlinear_alloc(int argc, VALUE *argv, VALUE klass)
-{
- gsl_multifit_ndlinear_workspace *w;
- int istart = 0;
- size_t n_dim = 0, *N, i;
- struct ufunc_struct *p;
- VALUE params, wspace, pp;
- switch (argc) {
- case 4:
- istart = 1;
- CHECK_FIXNUM(argv[0]);
- n_dim = FIX2INT(argv[0]);
- /* no break */
- case 3:
- if (TYPE(argv[istart]) != T_ARRAY) {
- rb_raise(rb_eTypeError, "Wrong argument type %s (Array expected)",
- rb_class2name(CLASS_OF(argv[istart])));
- }
- if (TYPE(argv[istart+1]) != T_ARRAY) {
- rb_raise(rb_eTypeError, "Wrong argument type %s (Array expected)",
- rb_class2name(CLASS_OF(argv[istart+1])));
- }
- // n_dim = RARRAY(argv[istart])->len;
- n_dim = RARRAY_LEN(argv[istart]);
- N = (size_t*) malloc(sizeof(size_t)*n_dim);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments (%d for 3 or 4)", argc);
- }
- for (i = 0; i < n_dim; i++) {
- N[i] = FIX2INT(rb_ary_entry(argv[istart], i));
- }
-
- params = rb_ary_new2(NDLINEAR_ARY_SIZE);
- rb_ary_store(params, INDEX_NDIM, INT2FIX((int) n_dim));
- rb_ary_store(params, INDEX_N, argv[istart]); /* N */
- rb_ary_store(params, INDEX_PROCS, argv[istart+1]); /* procs */
- rb_ary_store(params, INDEX_PARAMS, argv[istart+2]); /* params */
- rb_ary_store(params, INDEX_NDIM_I, INT2FIX(0)); /* for the first parameter */
-
- p = ufunc_struct_alloc(n_dim);
- for (i = 0; i < n_dim; i++) p->fptr[i] = func_u;
- pp = Data_Wrap_Struct(cUFunc, 0, ufunc_struct_free, p);
- rb_ary_store(params, INDEX_FUNCS, pp);
-
- w = gsl_multifit_ndlinear_alloc(n_dim, N, p->fptr, (void*) params);
-
- free((size_t*) N);
-
- wspace = Data_Wrap_Struct(cWorkspace, multifit_ndlinear_mark, gsl_multifit_ndlinear_free, w);
-
- return wspace;
-}
-
-static int func_u(double x, double y[], void *data)
-{
- VALUE ary, vN, procs, proc, vy, params;
- gsl_vector_view ytmp;
- size_t i, n_dim;
- int rslt;
- ary = (VALUE) data;
- n_dim = FIX2INT(rb_ary_entry(ary, INDEX_NDIM));
- vN = rb_ary_entry(ary, INDEX_N);
- procs = rb_ary_entry(ary, INDEX_PROCS);
- params = rb_ary_entry(ary, INDEX_PARAMS);
- i = FIX2INT(rb_ary_entry(ary, INDEX_NDIM_I));
- proc = rb_ary_entry(procs, i);
-
- ytmp.vector.data = (double*) y;
- ytmp.vector.stride = 1;
- ytmp.vector.size = FIX2INT(rb_ary_entry(vN, i));
- vy = Data_Wrap_Struct(cgsl_vector_view, 0, NULL, &ytmp);
-
- rslt = rb_funcall((VALUE) proc, RBGSL_ID_call, 3, rb_float_new(x), vy, params);
-
- /* for the next parameter */
- i += 1;
- if (i == n_dim) i = 0;
- rb_ary_store(ary, INDEX_NDIM_I, INT2FIX(i));
-
- return GSL_SUCCESS;
-}
-
-static VALUE rb_gsl_multifit_ndlinear_design(int argc, VALUE *argv, VALUE obj)
-{
- gsl_multifit_ndlinear_workspace *w;
- gsl_matrix *vars = NULL, *X = NULL;
- int argc2, flag = 0, ret;
- switch (TYPE(obj)) {
- case T_MODULE:
- case T_CLASS:
- case T_OBJECT:
- if (!rb_obj_is_kind_of(argv[argc-1], cWorkspace)) {
- rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::MultiFit::Ndlinear::Workspace expected)",
- rb_class2name(CLASS_OF(argv[argc-1])));
- }
- Data_Get_Struct(argv[argc-1], gsl_multifit_ndlinear_workspace, w);
- argc2 = argc-1;
- break;
- default:
- Data_Get_Struct(obj, gsl_multifit_ndlinear_workspace, w);
- argc2 = argc;
- }
- switch (argc2) {
- case 1:
- CHECK_MATRIX(argv[0]);
- Data_Get_Struct(argv[0], gsl_matrix, vars);
- X = gsl_matrix_alloc(vars->size1, w->n_coeffs);
- flag = 1;
- break;
- case 2:
- CHECK_MATRIX(argv[0]);
- CHECK_MATRIX(argv[1]);
- Data_Get_Struct(argv[0], gsl_matrix, vars);
- Data_Get_Struct(argv[1], gsl_matrix, X);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments.");
- }
- ret = gsl_multifit_ndlinear_design(vars, X, w);
-
- if (flag == 1) {
- return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, X);
- } else {
- return INT2FIX(ret);
- }
-}
-
-static VALUE rb_gsl_multifit_ndlinear_est(int argc, VALUE *argv, VALUE obj)
-{
- gsl_multifit_ndlinear_workspace *w;
- gsl_vector *x = NULL, *c = NULL;
- gsl_matrix *cov = NULL;
- double y, yerr;
- int argc2;
- switch (TYPE(obj)) {
- case T_MODULE:
- case T_CLASS:
- case T_OBJECT:
- if (!rb_obj_is_kind_of(argv[argc-1], cWorkspace)) {
- rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::MultiFit::Ndlinear::Workspace expected)",
- rb_class2name(CLASS_OF(argv[argc-1])));
- }
- Data_Get_Struct(argv[argc-1], gsl_multifit_ndlinear_workspace, w);
- argc2 = argc-1;
- break;
- default:
- Data_Get_Struct(obj, gsl_multifit_ndlinear_workspace, w);
- argc2 = argc;
- }
- switch (argc2) {
- case 3:
- CHECK_VECTOR(argv[0]);
- CHECK_VECTOR(argv[1]);
- CHECK_MATRIX(argv[2]);
- Data_Get_Struct(argv[0], gsl_vector, x);
- Data_Get_Struct(argv[1], gsl_vector, c);
- Data_Get_Struct(argv[2], gsl_matrix, cov);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments.");
- }
- gsl_multifit_ndlinear_est(x, c, cov, &y, &yerr, w);
- return rb_ary_new3(2, rb_float_new(y), rb_float_new(yerr));
-}
-
-static VALUE rb_gsl_multifit_ndlinear_calc(int argc, VALUE *argv, VALUE obj)
-{
- gsl_multifit_ndlinear_workspace *w;
- gsl_vector *x = NULL, *c = NULL;
- double val;
- int argc2;
- switch (TYPE(obj)) {
- case T_MODULE:
- case T_CLASS:
- case T_OBJECT:
- if (!rb_obj_is_kind_of(argv[argc-1], cWorkspace)) {
- rb_raise(rb_eTypeError,
- "Wrong argument type %s (GSL::MultiFit::Ndlinear::Workspace expected)",
- rb_class2name(CLASS_OF(argv[argc-1])));
- }
- Data_Get_Struct(argv[argc-1], gsl_multifit_ndlinear_workspace, w);
- argc2 = argc-1;
- break;
- default:
- Data_Get_Struct(obj, gsl_multifit_ndlinear_workspace, w);
- argc2 = argc;
- }
- switch (argc2) {
- case 2:
- CHECK_VECTOR(argv[0]);
- CHECK_VECTOR(argv[1]);
- Data_Get_Struct(argv[0], gsl_vector, x);
- Data_Get_Struct(argv[1], gsl_vector, c);
- break;
- default:
- rb_raise(rb_eArgError, "Wrong number of arguments.");
- }
- val = gsl_multifit_ndlinear_calc(x, c, w);
- return rb_float_new(val);
-}
-
-static VALUE rb_gsl_multifit_ndlinear_n_coeffs(VALUE obj)
-{
- gsl_multifit_ndlinear_workspace *w;
- Data_Get_Struct(obj, gsl_multifit_ndlinear_workspace, w);
- return INT2FIX(w->n_coeffs);
-}
-
-static VALUE rb_gsl_multifit_ndlinear_n_dim(VALUE obj)
-{
- gsl_multifit_ndlinear_workspace *w;
- Data_Get_Struct(obj, gsl_multifit_ndlinear_workspace, w);
- return INT2FIX(w->n_dim);
-}
-
-static VALUE rb_gsl_multifit_ndlinear_N(VALUE obj)
-{
- gsl_multifit_ndlinear_workspace *w;
- VALUE ary;
- Data_Get_Struct(obj, gsl_multifit_ndlinear_workspace, w);
- ary = (VALUE) w->params;
- return rb_ary_entry(ary, INDEX_N);
-}
-/*
-static VALUE rb_gsl_multifit_linear_Rsq(VALUE module, VALUE vy, VALUE vchisq)
-{
- gsl_vector *y;
- double chisq, Rsq;
- CHECK_VECTOR(vy);
- Data_Get_Struct(vy, gsl_vector, y);
- chisq = NUM2DBL(vchisq);
- gsl_multifit_linear_Rsq(y, chisq, &Rsq);
- return rb_float_new(Rsq);
-}
-*/
-void Init_ndlinear(VALUE module)
-{
- VALUE mNdlinear;
- mNdlinear = rb_define_module_under(module, "Ndlinear");
- cUFunc = rb_define_class_under(mNdlinear, "UFunc", rb_cObject);
- cWorkspace = rb_define_class_under(mNdlinear, "Workspace", cGSL_Object);
-
- rb_define_singleton_method(mNdlinear, "alloc",
- rb_gsl_multifit_ndlinear_alloc, -1);
- rb_define_singleton_method(cWorkspace, "alloc",
- rb_gsl_multifit_ndlinear_alloc, -1);
-
- rb_define_singleton_method(mNdlinear, "design",
- rb_gsl_multifit_ndlinear_design, -1);
- rb_define_singleton_method(cWorkspace, "design",
- rb_gsl_multifit_ndlinear_design, -1);
- rb_define_method(cWorkspace, "design",rb_gsl_multifit_ndlinear_est, -1);
- rb_define_singleton_method(mNdlinear, "est",
- rb_gsl_multifit_ndlinear_est, -1);
- rb_define_singleton_method(cWorkspace, "est",
- rb_gsl_multifit_ndlinear_est, -1);
- rb_define_method(cWorkspace, "est",rb_gsl_multifit_ndlinear_est, -1);
-
- rb_define_singleton_method(mNdlinear, "calc",
- rb_gsl_multifit_ndlinear_calc, -1);
- rb_define_singleton_method(cWorkspace, "calc",
- rb_gsl_multifit_ndlinear_calc, -1);
- rb_define_method(cWorkspace, "calc",rb_gsl_multifit_ndlinear_calc, -1);
-
- rb_define_method(cWorkspace, "n_coeffs",rb_gsl_multifit_ndlinear_n_coeffs, 0);
- rb_define_method(cWorkspace, "n_dim",rb_gsl_multifit_ndlinear_n_dim, 0);
- rb_define_method(cWorkspace, "N",rb_gsl_multifit_ndlinear_N, 0);
-
- // rb_define_module_function(module, "linear_Rsq", rb_gsl_multifit_linear_Rsq, 2);
-}
-
-#endif
-
+#include "include/rb_gsl.h"
+
+#ifdef HAVE_NDLINEAR_GSL_MULTIFIT_NDLINEAR_H
+#include <gsl/gsl_math.h>
+#include <gsl/gsl_matrix.h>
+#include <gsl/gsl_vector.h>
+#include <gsl/gsl_multifit.h>
+#include <ndlinear/gsl_multifit_ndlinear.h>
+
+static VALUE cWorkspace;
+
+enum Index_Ndlinear {
+ INDEX_NDIM = 0,
+ INDEX_N = 1,
+ INDEX_PROCS = 2,
+ INDEX_PARAMS = 3,
+ INDEX_FUNCS = 4,
+ INDEX_NDIM_I = 5,
+
+ NDLINEAR_ARY_SIZE = 6,
+};
+
+static void multifit_ndlinear_mark(gsl_multifit_ndlinear_workspace *w)
+{
+ rb_gc_mark((VALUE) w->params);
+}
+
+typedef int (*UFUNC)(double, double[], void*);
+typedef struct ufunc_struct
+{
+ UFUNC *fptr;
+} ufunc_struct;
+
+static VALUE cUFunc;
+static ufunc_struct* ufunc_struct_alloc(size_t n_dim) {
+ ufunc_struct *p;
+ p = (ufunc_struct*) malloc(sizeof(ufunc_struct));
+ p->fptr = malloc(sizeof(UFUNC)*n_dim);
+ return p;
+}
+static void ufunc_struct_free(ufunc_struct *p)
+{
+ free(p->fptr);
+ free(p);
+}
+
+static int func_u(double x, double y[], void *data);
+static VALUE rb_gsl_multifit_ndlinear_alloc(int argc, VALUE *argv, VALUE klass)
+{
+ gsl_multifit_ndlinear_workspace *w;
+ int istart = 0;
+ size_t n_dim = 0, *N, i;
+ struct ufunc_struct *p;
+ VALUE params, wspace, pp;
+ switch (argc) {
+ case 4:
+ istart = 1;
+ CHECK_FIXNUM(argv[0]);
+ n_dim = FIX2INT(argv[0]);
+ /* no break */
+ case 3:
+ if (TYPE(argv[istart]) != T_ARRAY) {
+ rb_raise(rb_eTypeError, "Wrong argument type %s (Array expected)",
+ rb_class2name(CLASS_OF(argv[istart])));
+ }
+ if (TYPE(argv[istart+1]) != T_ARRAY) {
+ rb_raise(rb_eTypeError, "Wrong argument type %s (Array expected)",
+ rb_class2name(CLASS_OF(argv[istart+1])));
+ }
+ // n_dim = RARRAY(argv[istart])->len;
+ n_dim = RARRAY_LEN(argv[istart]);
+ N = (size_t*) malloc(sizeof(size_t)*n_dim);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 3 or 4)", argc);
+ }
+ for (i = 0; i < n_dim; i++) {
+ N[i] = FIX2INT(rb_ary_entry(argv[istart], i));
+ }
+ params = rb_ary_new2(NDLINEAR_ARY_SIZE);
+ rb_ary_store(params, INDEX_NDIM, INT2FIX((int) n_dim));
+ rb_ary_store(params, INDEX_N, argv[istart]); /* N */
+ rb_ary_store(params, INDEX_PROCS, argv[istart+1]); /* procs */
+ rb_ary_store(params, INDEX_PARAMS, argv[istart+2]); /* params */
+ rb_ary_store(params, INDEX_NDIM_I, INT2FIX(0)); /* for the first parameter */
+
+ p = ufunc_struct_alloc(n_dim);
+ for (i = 0; i < n_dim; i++) p->fptr[i] = func_u;
+ pp = Data_Wrap_Struct(cUFunc, 0, ufunc_struct_free, p);
+ rb_ary_store(params, INDEX_FUNCS, pp);
+
+ w = gsl_multifit_ndlinear_alloc(n_dim, N, p->fptr, (void*) params);
+
+ free((size_t*) N);
+
+ wspace = Data_Wrap_Struct(cWorkspace, multifit_ndlinear_mark, gsl_multifit_ndlinear_free, w);
+
+ return wspace;
+}
+
+static int func_u(double x, double y[], void *data)
+{
+ VALUE ary, vN, procs, proc, vy, params;
+ gsl_vector_view ytmp;
+ size_t i, n_dim;
+ int rslt;
+ ary = (VALUE) data;
+ n_dim = FIX2INT(rb_ary_entry(ary, INDEX_NDIM));
+ vN = rb_ary_entry(ary, INDEX_N);
+ procs = rb_ary_entry(ary, INDEX_PROCS);
+ params = rb_ary_entry(ary, INDEX_PARAMS);
+ i = FIX2INT(rb_ary_entry(ary, INDEX_NDIM_I));
+ proc = rb_ary_entry(procs, i);
+
+ ytmp.vector.data = (double*) y;
+ ytmp.vector.stride = 1;
+ ytmp.vector.size = FIX2INT(rb_ary_entry(vN, i));
+ vy = Data_Wrap_Struct(cgsl_vector_view, 0, NULL, &ytmp);
+
+ rslt = rb_funcall((VALUE) proc, RBGSL_ID_call, 3, rb_float_new(x), vy, params);
+
+ /* for the next parameter */
+ i += 1;
+ if (i == n_dim) i = 0;
+ rb_ary_store(ary, INDEX_NDIM_I, INT2FIX(i));
+
+ return GSL_SUCCESS;
+}
+
+static VALUE rb_gsl_multifit_ndlinear_design(int argc, VALUE *argv, VALUE obj)
+{
+ gsl_multifit_ndlinear_workspace *w;
+ gsl_matrix *vars = NULL, *X = NULL;
+ int argc2, flag = 0, ret;
+ switch (TYPE(obj)) {
+ case T_MODULE:
+ case T_CLASS:
+ case T_OBJECT:
+ if (!rb_obj_is_kind_of(argv[argc-1], cWorkspace)) {
+ rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::MultiFit::Ndlinear::Workspace expected)",
+ rb_class2name(CLASS_OF(argv[argc-1])));
+ }
+ Data_Get_Struct(argv[argc-1], gsl_multifit_ndlinear_workspace, w);
+ argc2 = argc-1;
+ break;
+ default:
+ Data_Get_Struct(obj, gsl_multifit_ndlinear_workspace, w);
+ argc2 = argc;
+ }
+ switch (argc2) {
+ case 1:
+ CHECK_MATRIX(argv[0]);
+ Data_Get_Struct(argv[0], gsl_matrix, vars);
+ X = gsl_matrix_alloc(vars->size1, w->n_coeffs);
+ flag = 1;
+ break;
+ case 2:
+ CHECK_MATRIX(argv[0]);
+ CHECK_MATRIX(argv[1]);
+ Data_Get_Struct(argv[0], gsl_matrix, vars);
+ Data_Get_Struct(argv[1], gsl_matrix, X);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments.");
+ }
+ ret = gsl_multifit_ndlinear_design(vars, X, w);
+
+ if (flag == 1) {
+ return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, X);
+ } else {
+ return INT2FIX(ret);
+ }
+}
+
+static VALUE rb_gsl_multifit_ndlinear_est(int argc, VALUE *argv, VALUE obj)
+{
+ gsl_multifit_ndlinear_workspace *w;
+ gsl_vector *x = NULL, *c = NULL;
+ gsl_matrix *cov = NULL;
+ double y, yerr;
+ int argc2;
+ switch (TYPE(obj)) {
+ case T_MODULE:
+ case T_CLASS:
+ case T_OBJECT:
+ if (!rb_obj_is_kind_of(argv[argc-1], cWorkspace)) {
+ rb_raise(rb_eTypeError, "Wrong argument type %s (GSL::MultiFit::Ndlinear::Workspace expected)",
+ rb_class2name(CLASS_OF(argv[argc-1])));
+ }
+ Data_Get_Struct(argv[argc-1], gsl_multifit_ndlinear_workspace, w);
+ argc2 = argc-1;
+ break;
+ default:
+ Data_Get_Struct(obj, gsl_multifit_ndlinear_workspace, w);
+ argc2 = argc;
+ }
+ switch (argc2) {
+ case 3:
+ CHECK_VECTOR(argv[0]);
+ CHECK_VECTOR(argv[1]);
+ CHECK_MATRIX(argv[2]);
+ Data_Get_Struct(argv[0], gsl_vector, x);
+ Data_Get_Struct(argv[1], gsl_vector, c);
+ Data_Get_Struct(argv[2], gsl_matrix, cov);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments.");
+ }
+ gsl_multifit_ndlinear_est(x, c, cov, &y, &yerr, w);
+ return rb_ary_new3(2, rb_float_new(y), rb_float_new(yerr));
+}
+
+static VALUE rb_gsl_multifit_ndlinear_calc(int argc, VALUE *argv, VALUE obj)
+{
+ gsl_multifit_ndlinear_workspace *w;
+ gsl_vector *x = NULL, *c = NULL;
+ double val;
+ int argc2;
+ switch (TYPE(obj)) {
+ case T_MODULE:
+ case T_CLASS:
+ case T_OBJECT:
+ if (!rb_obj_is_kind_of(argv[argc-1], cWorkspace)) {
+ rb_raise(rb_eTypeError,
+ "Wrong argument type %s (GSL::MultiFit::Ndlinear::Workspace expected)",
+ rb_class2name(CLASS_OF(argv[argc-1])));
+ }
+ Data_Get_Struct(argv[argc-1], gsl_multifit_ndlinear_workspace, w);
+ argc2 = argc-1;
+ break;
+ default:
+ Data_Get_Struct(obj, gsl_multifit_ndlinear_workspace, w);
+ argc2 = argc;
+ }
+ switch (argc2) {
+ case 2:
+ CHECK_VECTOR(argv[0]);
+ CHECK_VECTOR(argv[1]);
+ Data_Get_Struct(argv[0], gsl_vector, x);
+ Data_Get_Struct(argv[1], gsl_vector, c);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments.");
+ }
+ val = gsl_multifit_ndlinear_calc(x, c, w);
+ return rb_float_new(val);
+}
+
+static VALUE rb_gsl_multifit_ndlinear_n_coeffs(VALUE obj)
+{
+ gsl_multifit_ndlinear_workspace *w;
+ Data_Get_Struct(obj, gsl_multifit_ndlinear_workspace, w);
+ return INT2FIX(w->n_coeffs);
+}
+
+static VALUE rb_gsl_multifit_ndlinear_n_dim(VALUE obj)
+{
+ gsl_multifit_ndlinear_workspace *w;
+ Data_Get_Struct(obj, gsl_multifit_ndlinear_workspace, w);
+ return INT2FIX(w->n_dim);
+}
+
+static VALUE rb_gsl_multifit_ndlinear_N(VALUE obj)
+{
+ gsl_multifit_ndlinear_workspace *w;
+ VALUE ary;
+ Data_Get_Struct(obj, gsl_multifit_ndlinear_workspace, w);
+ ary = (VALUE) w->params;
+ return rb_ary_entry(ary, INDEX_N);
+}
+/*
+static VALUE rb_gsl_multifit_linear_Rsq(VALUE module, VALUE vy, VALUE vchisq)
+{
+ gsl_vector *y;
+ double chisq, Rsq;
+ CHECK_VECTOR(vy);
+ Data_Get_Struct(vy, gsl_vector, y);
+ chisq = NUM2DBL(vchisq);
+ gsl_multifit_linear_Rsq(y, chisq, &Rsq);
+ return rb_float_new(Rsq);
+}
+*/
+void Init_ndlinear(VALUE module)
+{
+ VALUE mNdlinear;
+ mNdlinear = rb_define_module_under(module, "Ndlinear");
+ cUFunc = rb_define_class_under(mNdlinear, "UFunc", rb_cObject);
+ cWorkspace = rb_define_class_under(mNdlinear, "Workspace", cGSL_Object);
+
+ rb_define_singleton_method(mNdlinear, "alloc",
+ rb_gsl_multifit_ndlinear_alloc, -1);
+ rb_define_singleton_method(cWorkspace, "alloc",
+ rb_gsl_multifit_ndlinear_alloc, -1);
+
+ rb_define_singleton_method(mNdlinear, "design",
+ rb_gsl_multifit_ndlinear_design, -1);
+ rb_define_singleton_method(cWorkspace, "design",
+ rb_gsl_multifit_ndlinear_design, -1);
+ rb_define_method(cWorkspace, "design",rb_gsl_multifit_ndlinear_est, -1);
+ rb_define_singleton_method(mNdlinear, "est",
+ rb_gsl_multifit_ndlinear_est, -1);
+ rb_define_singleton_method(cWorkspace, "est",
+ rb_gsl_multifit_ndlinear_est, -1);
+ rb_define_method(cWorkspace, "est",rb_gsl_multifit_ndlinear_est, -1);
+
+ rb_define_singleton_method(mNdlinear, "calc",
+ rb_gsl_multifit_ndlinear_calc, -1);
+ rb_define_singleton_method(cWorkspace, "calc",
+ rb_gsl_multifit_ndlinear_calc, -1);
+ rb_define_method(cWorkspace, "calc",rb_gsl_multifit_ndlinear_calc, -1);
+
+ rb_define_method(cWorkspace, "n_coeffs",rb_gsl_multifit_ndlinear_n_coeffs, 0);
+ rb_define_method(cWorkspace, "n_dim",rb_gsl_multifit_ndlinear_n_dim, 0);
+ rb_define_method(cWorkspace, "N",rb_gsl_multifit_ndlinear_N, 0);
+
+ // rb_define_module_function(module, "linear_Rsq", rb_gsl_multifit_linear_Rsq, 2);
+}
+
+#endif
+
diff --git a/ext/gsl/nmf.c b/ext/gsl_native/nmf.c
similarity index 86%
rename from ext/gsl/nmf.c
rename to ext/gsl_native/nmf.c
index ac02878..d1d40c4 100644
--- a/ext/gsl/nmf.c
+++ b/ext/gsl_native/nmf.c
@@ -32,8 +32,8 @@ void pp(const gsl_matrix *m)
{
int r, c;
- for(r=0; r < (int) m->size1; r++) {
- for(c=0; c < (int) m->size2; c++) {
+ for(r = 0; r < (int) m->size1; r++) {
+ for(c = 0; c < (int) m->size2; c++) {
printf(" %.2f", gsl_matrix_get(m, r, c));
}
printf("\n");
@@ -45,15 +45,15 @@ void pp(const gsl_matrix *m)
double difcost(const gsl_matrix *a, const gsl_matrix *b)
{
int i, j;
- double dif=0, d;
+ double dif = 0, d;
- for (i=0; i < (int) a->size1; i++)
+ for (i = 0; i < (int) a->size1; i++)
{
- for (j=0; j < (int) a->size2; j++)
+ for (j = 0; j < (int) a->size2; j++)
{
d = gsl_matrix_get(a, i, j) - gsl_matrix_get(b, i, j);
dif += d*d;
- // dif += pow(gsl_matrix_get(a, i, j) - gsl_matrix_get(b, i, j), 2);
+ // dif += pow(gsl_matrix_get(a, i, j) - gsl_matrix_get(b, i, j), 2);
}
}
return dif;
@@ -66,9 +66,9 @@ static void initmatrix(gsl_matrix *m, double min, double max)
srand(time(NULL));
- for(i=0; i < (int) m->size1; i++)
+ for(i = 0; i < (int) m->size1; i++)
{
- for(j=0; j < (int) m->size2; j++)
+ for(j = 0; j < (int) m->size2; j++)
{
val = min + (int) (max * (rand() / (RAND_MAX + min)));
gsl_matrix_set(m, i, j, val);
@@ -79,10 +79,10 @@ static void initmatrix(gsl_matrix *m, double min, double max)
static double update(gsl_matrix *v, gsl_matrix *w, gsl_matrix *h)
{
double dist = 0;
- gsl_matrix *wt=NULL, *ht=NULL, *wh=NULL;
- gsl_matrix *w_h=NULL, *wt_w=NULL;
+ gsl_matrix *wt = NULL, *ht = NULL, *wh = NULL;
+ gsl_matrix *w_h = NULL, *wt_w = NULL;
gsl_matrix *wt_v = NULL;
- gsl_matrix *v_ht=NULL, *wt_w_h=NULL, *w_h_ht=NULL;
+ gsl_matrix *v_ht = NULL, *wt_w_h = NULL, *w_h_ht = NULL;
wt = gsl_matrix_alloc(w->size2, w->size1);
gsl_matrix_transpose_memcpy(wt, w);
diff --git a/ext/gsl/nmf_wrap.c b/ext/gsl_native/nmf_wrap.c
similarity index 97%
rename from ext/gsl/nmf_wrap.c
rename to ext/gsl_native/nmf_wrap.c
index b09299e..d4085a5 100644
--- a/ext/gsl/nmf_wrap.c
+++ b/ext/gsl_native/nmf_wrap.c
@@ -28,7 +28,7 @@ static VALUE nmf_wrap(VALUE obj, VALUE matrix, VALUE cols)
unsigned int c;
VALUE arr;
- if ( ! FIXNUM_P(cols) || (c=NUM2INT(cols)) <= 0 ) {
+ if ( !FIXNUM_P(cols) || (c = NUM2INT(cols)) <= 0 ) {
rb_raise(rb_eArgError, "Number of columns should be a positive integer.");
}
arr = rb_ary_new2(2);
diff --git a/ext/gsl/ntuple.c b/ext/gsl_native/ntuple.c
similarity index 94%
rename from ext/gsl/ntuple.c
rename to ext/gsl_native/ntuple.c
index 2900b67..fb674ff 100644
--- a/ext/gsl/ntuple.c
+++ b/ext/gsl_native/ntuple.c
@@ -372,7 +372,7 @@ static VALUE rb_gsl_ntuple_value_fn_new(int argc, VALUE *argv, VALUE klass)
/* singleton method */
static VALUE rb_gsl_ntuple_project(VALUE obj, VALUE hh, VALUE nn,
- VALUE vvfn, VALUE vsfn)
+ VALUE vvfn, VALUE vsfn)
{
gsl_histogram *h = NULL;
gsl_ntuple *n = NULL;
@@ -386,10 +386,10 @@ static VALUE rb_gsl_ntuple_project(VALUE obj, VALUE hh, VALUE nn,
if (!rb_obj_is_kind_of(nn, cgsl_ntuple))
rb_raise(rb_eTypeError, "argument 2: Ntuple expected");
Data_Get_Struct(nn, gsl_ntuple, n);
- if (!rb_obj_is_kind_of(vvfn, cgsl_ntuple_value_fn))
+ if (!rb_obj_is_kind_of(vvfn, cgsl_ntuple_value_fn))
rb_raise(rb_eTypeError, "argument 3: Ntuple::ValueFn expected");
Data_Get_Struct(vvfn, gsl_ntuple_value_fn, vfn);
- if (!rb_obj_is_kind_of(vsfn, cgsl_ntuple_select_fn))
+ if (!rb_obj_is_kind_of(vsfn, cgsl_ntuple_select_fn))
rb_raise(rb_eTypeError, "argument 4: Ntuple::SelectFn expected");
Data_Get_Struct(vsfn, gsl_ntuple_select_fn, sfn);
@@ -412,10 +412,10 @@ static VALUE rb_gsl_ntuple_project2(VALUE obj, VALUE hh, VALUE vvfn, VALUE vsfn)
CHECK_HISTOGRAM(hh);
Data_Get_Struct(obj, gsl_ntuple, n);
Data_Get_Struct(hh, gsl_histogram, h);
- if (!rb_obj_is_kind_of(vvfn, cgsl_ntuple_value_fn))
+ if (!rb_obj_is_kind_of(vvfn, cgsl_ntuple_value_fn))
rb_raise(rb_eTypeError, "argument 2: Ntuple::ValueFn expected");
Data_Get_Struct(vvfn, gsl_ntuple_value_fn, vfn);
- if (!rb_obj_is_kind_of(vsfn, cgsl_ntuple_select_fn))
+ if (!rb_obj_is_kind_of(vsfn, cgsl_ntuple_select_fn))
rb_raise(rb_eTypeError, "argument 3: Ntuple::SelectFn expected");
Data_Get_Struct(vsfn, gsl_ntuple_select_fn, sfn);
size = n->size/sizeof(double);
@@ -447,22 +447,22 @@ void Init_gsl_ntuple(VALUE module)
rb_define_alias(cgsl_ntuple, "ntuple_data", "data");
rb_define_singleton_method(cgsl_ntuple_select_fn, "alloc",
- rb_gsl_ntuple_select_fn_new, -1);
+ rb_gsl_ntuple_select_fn_new, -1);
rb_define_method(cgsl_ntuple_select_fn, "set",
- rb_gsl_ntuple_select_fn_set_f, -1);
+ rb_gsl_ntuple_select_fn_set_f, -1);
rb_define_method(cgsl_ntuple_select_fn, "set_params",
- rb_gsl_ntuple_select_fn_set_params, -1);
+ rb_gsl_ntuple_select_fn_set_params, -1);
rb_define_method(cgsl_ntuple_select_fn, "params",
- rb_gsl_ntuple_select_fn_params, 0);
+ rb_gsl_ntuple_select_fn_params, 0);
rb_define_singleton_method(cgsl_ntuple_value_fn, "alloc",
- rb_gsl_ntuple_value_fn_new, -1);
+ rb_gsl_ntuple_value_fn_new, -1);
rb_define_method(cgsl_ntuple_value_fn, "set",
- rb_gsl_ntuple_value_fn_set_f, -1);
+ rb_gsl_ntuple_value_fn_set_f, -1);
rb_define_method(cgsl_ntuple_value_fn, "set_params",
- rb_gsl_ntuple_value_fn_set_params, -1);
+ rb_gsl_ntuple_value_fn_set_params, -1);
rb_define_method(cgsl_ntuple_value_fn, "params",
- rb_gsl_ntuple_value_fn_params, 0);
+ rb_gsl_ntuple_value_fn_params, 0);
rb_define_singleton_method(cgsl_ntuple, "project", rb_gsl_ntuple_project, 4);
rb_define_method(cgsl_ntuple, "project", rb_gsl_ntuple_project2, 3);
diff --git a/ext/gsl/odeiv.c b/ext/gsl_native/odeiv.c
similarity index 85%
rename from ext/gsl/odeiv.c
rename to ext/gsl_native/odeiv.c
index fce6b0d..ab46ee4 100644
--- a/ext/gsl/odeiv.c
+++ b/ext/gsl_native/odeiv.c
@@ -14,38 +14,38 @@
#include "include/rb_gsl_function.h"
#ifndef CHECK_SYSTEM
-#define CHECK_SYSTEM(x) if(CLASS_OF(x)!=cgsl_odeiv_system)\
- rb_raise(rb_eTypeError,\
- "wrong argument type %s (GSL::Odeiv::System expected)",\
- rb_class2name(CLASS_OF(x)));
+#define CHECK_SYSTEM(x) if(CLASS_OF(x)!=cgsl_odeiv_system) \
+ rb_raise(rb_eTypeError, \
+ "wrong argument type %s (GSL::Odeiv::System expected)", \
+ rb_class2name(CLASS_OF(x)));
#endif
#ifndef CHECK_STEP
-#define CHECK_STEP(x) if(CLASS_OF(x)!=cgsl_odeiv_step)\
- rb_raise(rb_eTypeError,\
- "wrong argument type %s (GSL::Odeiv::Step expected)",\
- rb_class2name(CLASS_OF(x)));
+#define CHECK_STEP(x) if(CLASS_OF(x)!=cgsl_odeiv_step) \
+ rb_raise(rb_eTypeError, \
+ "wrong argument type %s (GSL::Odeiv::Step expected)", \
+ rb_class2name(CLASS_OF(x)));
#endif
#ifndef CHECK_CONTROL
-#define CHECK_CONTROL(x) if(CLASS_OF(x)!=cgsl_odeiv_control)\
- rb_raise(rb_eTypeError,\
- "wrong argument type %s (GSL::Odeiv::Control expected)",\
- rb_class2name(CLASS_OF(x)));
+#define CHECK_CONTROL(x) if(CLASS_OF(x)!=cgsl_odeiv_control) \
+ rb_raise(rb_eTypeError, \
+ "wrong argument type %s (GSL::Odeiv::Control expected)", \
+ rb_class2name(CLASS_OF(x)));
#endif
#ifndef CHECK_EVOLVE
-#define CHECK_EVOLVE(x) if(CLASS_OF(x)!=cgsl_odeiv_evolve)\
- rb_raise(rb_eTypeError,\
- "wrong argument type %s (GSL::Odeiv::Evolve expected)",\
- rb_class2name(CLASS_OF(x)));
+#define CHECK_EVOLVE(x) if(CLASS_OF(x)!=cgsl_odeiv_evolve) \
+ rb_raise(rb_eTypeError, \
+ "wrong argument type %s (GSL::Odeiv::Evolve expected)", \
+ rb_class2name(CLASS_OF(x)));
#endif
#ifndef CHECK_SOLVER
-#define CHECK_SOLVER(x) if(CLASS_OF(x)!=cgsl_odeiv_solver)\
- rb_raise(rb_eTypeError,\
- "wrong argument type %s (GSL::Odeiv::Solver expected)",\
- rb_class2name(CLASS_OF(x)));
+#define CHECK_SOLVER(x) if(CLASS_OF(x)!=cgsl_odeiv_solver) \
+ rb_raise(rb_eTypeError, \
+ "wrong argument type %s (GSL::Odeiv::Solver expected)", \
+ rb_class2name(CLASS_OF(x)));
#endif
static VALUE cgsl_odeiv_system;
@@ -101,10 +101,9 @@ static int calc_func(double t, const double y[], double dydt[], void *data)
vy = Data_Wrap_Struct(cgsl_vector_view_ro, 0, NULL, &ytmp);
vdydt = Data_Wrap_Struct(cgsl_vector_view, 0, NULL, &dydttmp);
- if (NIL_P(params)) /*result =*/ rb_funcall((VALUE) proc, RBGSL_ID_call, 3, rb_float_new(t),
- vy, vdydt);
+ if (NIL_P(params)) /*result =*/ rb_funcall((VALUE) proc, RBGSL_ID_call, 3, rb_float_new(t),
+ vy, vdydt);
else /*result =*/ rb_funcall((VALUE) proc, RBGSL_ID_call, 4, rb_float_new(t), vy, vdydt, params);
-
return GSL_SUCCESS;
}
@@ -118,11 +117,10 @@ static int calc_jac(double t, const double y[], double *dfdy, double dfdt[], voi
gsl_vector_view ytmp, dfdttmp;
gsl_matrix_view mv;
size_t dim;
-
+
ary = (VALUE) data;
proc = rb_ary_entry(ary, 1);
if (NIL_P(proc)) rb_raise(rb_eRuntimeError, "df function not given");
-
dim = FIX2INT(rb_ary_entry(ary, 2));
params = rb_ary_entry(ary, 3);
@@ -137,9 +135,9 @@ static int calc_jac(double t, const double y[], double *dfdy, double dfdt[], voi
vmjac = Data_Wrap_Struct(cgsl_matrix_view, 0, NULL, &mv);
vdfdt = Data_Wrap_Struct(cgsl_vector_view, 0, NULL, &dfdttmp);
if (NIL_P(params)) /*result =*/ rb_funcall((VALUE) proc, RBGSL_ID_call, 4, rb_float_new(t),
- vy, vmjac, vdfdt);
- else /*result =*/ rb_funcall((VALUE) proc, RBGSL_ID_call, 5, rb_float_new(t),
- vy, vmjac, vdfdt, params);
+ vy, vmjac, vdfdt);
+ else /*result =*/ rb_funcall((VALUE) proc, RBGSL_ID_call, 5, rb_float_new(t),
+ vy, vmjac, vdfdt, params);
return GSL_SUCCESS;
}
@@ -195,7 +193,6 @@ static void set_sys(int argc, VALUE *argv, gsl_odeiv_system *sys)
sys->function = &calc_func;
sys->jacobian = &calc_jac;
}
-
if (sys->params == NULL) {
ary = rb_ary_new2(4);
/* (VALUE) sys->params = ary;*/
@@ -213,7 +210,7 @@ static void set_sys(int argc, VALUE *argv, gsl_odeiv_system *sys)
} else {
vjac = Qnil;
}
- if ((dim =argv[itmp++]) == Qnil) dim = argv[itmp++];
+ if ((dim = argv[itmp++]) == Qnil) dim = argv[itmp++];
switch (argc - itmp) {
case 0:
vparams = Qnil;
@@ -227,10 +224,10 @@ static void set_sys(int argc, VALUE *argv, gsl_odeiv_system *sys)
}
dimension = FIX2INT(dim);
sys->dimension = dimension;
- rb_ary_store(ary, 0, argv[0]);
+ rb_ary_store(ary, 0, argv[0]);
rb_ary_store(ary, 1, vjac);
- rb_ary_store(ary, 2, dim);
- rb_ary_store(ary, 3, vparams);
+ rb_ary_store(ary, 2, dim);
+ rb_ary_store(ary, 3, vparams);
}
static VALUE rb_gsl_odeiv_system_set_params(int argc, VALUE *argv, VALUE obj);
@@ -254,7 +251,7 @@ static VALUE rb_gsl_odeiv_system_set_params(int argc, VALUE *argv, VALUE obj)
for (i = 0; (int) i < argc; i++) rb_ary_store(vparams, i, argv[i]);
}
// rb_ary_delete_at(ary, 3);
- rb_ary_store(ary, 3, vparams);
+ rb_ary_store(ary, 3, vparams);
return obj;
}
@@ -341,9 +338,7 @@ static const gsl_odeiv_step_type* rb_gsl_odeiv_step_type_get(VALUE tt)
case GSL_ODEIV_STEP_BSIMP: T = gsl_odeiv_step_bsimp; break;
case GSL_ODEIV_STEP_GEAR1: T = gsl_odeiv_step_gear1; break;
case GSL_ODEIV_STEP_GEAR2: T = gsl_odeiv_step_gear2; break;
-#ifdef GSL_1_6_LATER
case GSL_ODEIV_STEP_RK2SIMP: T = gsl_odeiv_step_rk2simp; break;
-#endif
default:
rb_raise(rb_eArgError, "wrong argument type (Fixnum expected)");
break;
@@ -361,16 +356,14 @@ static const gsl_odeiv_step_type* rb_gsl_odeiv_step_type_get(VALUE tt)
else if (str_tail_grep(name, "bsimp") == 0) T = gsl_odeiv_step_bsimp;
else if (str_tail_grep(name, "gear1") == 0) T = gsl_odeiv_step_gear1;
else if (str_tail_grep(name, "gear2") == 0) T = gsl_odeiv_step_gear2;
-#ifdef GSL_1_6_LATER
else if (str_tail_grep(name, "rk2simp") == 0) T = gsl_odeiv_step_rk2simp;
-#endif
else {
rb_raise(rb_eArgError, "wrong argument type %s", name);
}
break;
default:
rb_raise(rb_eArgError, "wrong argument type %s (String or Fixnum expected)",
- rb_class2name(CLASS_OF(tt)));
+ rb_class2name(CLASS_OF(tt)));
break;
}
return T;
@@ -420,7 +413,7 @@ static VALUE rb_gsl_odeiv_step_apply(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(argv[5], gsl_vector, vtmp2);
if (vtmp2) dydt_out = vtmp2->data;
}
- /* no break */
+ /* no break */
case 6:
if (VECTOR_P(argv[4])) {
Data_Get_Struct(argv[4], gsl_vector, vtmp1);
@@ -440,8 +433,8 @@ static VALUE rb_gsl_odeiv_step_apply(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(argv[2], gsl_vector, y);
Data_Get_Struct(argv[3], gsl_vector, yerr);
Data_Get_Struct(argv[argc-1], gsl_odeiv_system, sys);
- return INT2FIX(gsl_odeiv_step_apply(s, t, h, y->data, yerr->data,
- dydt_in, dydt_out, sys));
+ return INT2FIX(gsl_odeiv_step_apply(s, t, h, y->data, yerr->data,
+ dydt_in, dydt_out, sys));
}
static VALUE rb_gsl_odeiv_step_info(VALUE obj)
@@ -456,27 +449,27 @@ static VALUE rb_gsl_odeiv_step_info(VALUE obj)
return rb_str_new2(buf);
}
-static gsl_odeiv_control* make_control_standard(VALUE epsabs,
- VALUE epsrel,
- VALUE ay, VALUE adydt);
+static gsl_odeiv_control* make_control_standard(VALUE epsabs,
+ VALUE epsrel,
+ VALUE ay, VALUE adydt);
static gsl_odeiv_control* make_control_y(VALUE epsabs, VALUE epsrel);
-static VALUE rb_gsl_odeiv_control_standard_new(VALUE klass, VALUE epsabs,
- VALUE epsrel,
- VALUE ay, VALUE adydt)
+static VALUE rb_gsl_odeiv_control_standard_new(VALUE klass, VALUE epsabs,
+ VALUE epsrel,
+ VALUE ay, VALUE adydt)
{
gsl_odeiv_control *c = NULL;
- c = make_control_standard(epsabs, epsrel, ay, adydt);
+ c = make_control_standard(epsabs, epsrel, ay, adydt);
return Data_Wrap_Struct(klass, 0, gsl_odeiv_control_free, c);
}
-static gsl_odeiv_control* make_control_standard(VALUE epsabs,
- VALUE epsrel,
- VALUE ay, VALUE adydt)
+static gsl_odeiv_control* make_control_standard(VALUE epsabs,
+ VALUE epsrel,
+ VALUE ay, VALUE adydt)
{
Need_Float(epsabs); Need_Float(epsrel);
Need_Float(ay); Need_Float(adydt);
- return gsl_odeiv_control_standard_new(NUM2DBL(epsabs), NUM2DBL(epsrel),
- NUM2DBL(ay), NUM2DBL(adydt));
+ return gsl_odeiv_control_standard_new(NUM2DBL(epsabs), NUM2DBL(epsrel),
+ NUM2DBL(ay), NUM2DBL(adydt));
}
static gsl_odeiv_control* make_control_y(VALUE epsabs, VALUE epsrel)
@@ -485,16 +478,16 @@ static gsl_odeiv_control* make_control_y(VALUE epsabs, VALUE epsrel)
return gsl_odeiv_control_y_new(NUM2DBL(epsabs), NUM2DBL(epsrel));
}
-static VALUE rb_gsl_odeiv_control_y_new(VALUE klass, VALUE epsabs,
- VALUE epsrel)
+static VALUE rb_gsl_odeiv_control_y_new(VALUE klass, VALUE epsabs,
+ VALUE epsrel)
{
gsl_odeiv_control *c = NULL;
c = make_control_y(epsabs, epsrel);
return Data_Wrap_Struct(klass, 0, gsl_odeiv_control_free, c);
}
-static VALUE rb_gsl_odeiv_control_yp_new(VALUE klass, VALUE epsabs,
- VALUE epsrel)
+static VALUE rb_gsl_odeiv_control_yp_new(VALUE klass, VALUE epsabs,
+ VALUE epsrel)
{
gsl_odeiv_control *c = NULL;
Need_Float(epsabs); Need_Float(epsrel);
@@ -502,11 +495,10 @@ static VALUE rb_gsl_odeiv_control_yp_new(VALUE klass, VALUE epsabs,
return Data_Wrap_Struct(klass, 0, gsl_odeiv_control_free, c);
}
-#ifdef GSL_1_2_LATER
-static VALUE rb_gsl_odeiv_control_scaled_new(VALUE klass, VALUE epsabs,
- VALUE epsrel,
- VALUE ay, VALUE adydt,
- VALUE sc, VALUE dd)
+static VALUE rb_gsl_odeiv_control_scaled_new(VALUE klass, VALUE epsabs,
+ VALUE epsrel,
+ VALUE ay, VALUE adydt,
+ VALUE sc, VALUE dd)
{
gsl_odeiv_control *c = NULL;
gsl_vector *v = NULL;
@@ -515,23 +507,22 @@ static VALUE rb_gsl_odeiv_control_scaled_new(VALUE klass, VALUE epsabs,
CHECK_FIXNUM(dd);
CHECK_VECTOR(sc);
Data_Get_Struct(sc, gsl_vector, v);
- c = gsl_odeiv_control_scaled_new(NUM2DBL(epsabs), NUM2DBL(epsrel),
- NUM2DBL(ay), NUM2DBL(adydt), v->data,
- FIX2INT(dd));
+ c = gsl_odeiv_control_scaled_new(NUM2DBL(epsabs), NUM2DBL(epsrel),
+ NUM2DBL(ay), NUM2DBL(adydt), v->data,
+ FIX2INT(dd));
return Data_Wrap_Struct(klass, 0, gsl_odeiv_control_free, c);
}
-#endif
-static VALUE rb_gsl_odeiv_control_init(VALUE obj, VALUE epsabs,
- VALUE epsrel,
- VALUE ay, VALUE adydt)
+static VALUE rb_gsl_odeiv_control_init(VALUE obj, VALUE epsabs,
+ VALUE epsrel,
+ VALUE ay, VALUE adydt)
{
gsl_odeiv_control *c = NULL;
Need_Float(epsabs); Need_Float(epsrel);
Need_Float(ay); Need_Float(adydt);
Data_Get_Struct(obj, gsl_odeiv_control, c);
- gsl_odeiv_control_init(c, NUM2DBL(epsabs), NUM2DBL(epsrel),
- NUM2DBL(ay), NUM2DBL(adydt));
+ gsl_odeiv_control_init(c, NUM2DBL(epsabs), NUM2DBL(epsrel),
+ NUM2DBL(ay), NUM2DBL(adydt));
return obj;
}
@@ -543,7 +534,7 @@ static VALUE rb_gsl_odeiv_control_name(VALUE obj)
}
static VALUE rb_gsl_odeiv_control_hadjust(VALUE obj, VALUE ss, VALUE yy0,
- VALUE yyerr, VALUE ddydt, VALUE hh)
+ VALUE yyerr, VALUE ddydt, VALUE hh)
{
gsl_odeiv_control *c = NULL;
gsl_odeiv_step *s = NULL;
@@ -559,13 +550,13 @@ static VALUE rb_gsl_odeiv_control_hadjust(VALUE obj, VALUE ss, VALUE yy0,
Data_Get_Struct(yyerr, gsl_vector, yerr);
Data_Get_Struct(ddydt, gsl_vector, dydt);
h = NUM2DBL(hh);
- status = gsl_odeiv_control_hadjust(c, s, y0->data, yerr->data,
- dydt->data, &h);
+ status = gsl_odeiv_control_hadjust(c, s, y0->data, yerr->data,
+ dydt->data, &h);
return rb_ary_new3(2, rb_float_new(h), INT2FIX(status));
}
static gsl_odeiv_evolve* make_evolve(VALUE dim);
-static VALUE rb_gsl_odeiv_evolve_new(VALUE klass, VALUE dim)
+static VALUE rb_gsl_odeiv_evolve_new(VALUE klass, VALUE dim)
{
gsl_odeiv_evolve *e = NULL;
e = make_evolve(dim);
@@ -639,7 +630,7 @@ static VALUE rb_gsl_odeiv_evolve_yerr(VALUE obj)
}
static VALUE rb_gsl_odeiv_evolve_apply(VALUE obj, VALUE cc, VALUE ss, VALUE sss,
- VALUE tt, VALUE tt1, VALUE hh, VALUE yy)
+ VALUE tt, VALUE tt1, VALUE hh, VALUE yy)
{
gsl_odeiv_evolve *e = NULL;
gsl_odeiv_control *c = NULL;
@@ -654,7 +645,7 @@ static VALUE rb_gsl_odeiv_evolve_apply(VALUE obj, VALUE cc, VALUE ss, VALUE sss,
if (NIL_P(cc)) {
c = NULL;
} else {
- CHECK_CONTROL(cc);
+ CHECK_CONTROL(cc);
Data_Get_Struct(cc, gsl_odeiv_control, c);
}
Data_Get_Struct(ss, gsl_odeiv_step, s);
@@ -788,8 +779,8 @@ static VALUE rb_gsl_odeiv_solver_set_sys(VALUE obj, VALUE ss)
return obj;
}
-static VALUE rb_gsl_odeiv_solver_apply(VALUE obj, VALUE tt, VALUE tt1, VALUE hh,
- VALUE yy)
+static VALUE rb_gsl_odeiv_solver_apply(VALUE obj, VALUE tt, VALUE tt1, VALUE hh,
+ VALUE yy)
{
gsl_odeiv_solver *gos = NULL;
gsl_vector *y = NULL;
@@ -803,8 +794,8 @@ static VALUE rb_gsl_odeiv_solver_apply(VALUE obj, VALUE tt, VALUE tt1, VALUE hh,
if (TYPE(hh) != T_FLOAT) rb_raise(rb_eTypeError, "argument 2 Float expected");*/
t = NUM2DBL(tt);
h = NUM2DBL(hh);
- status = gsl_odeiv_evolve_apply(gos->e, gos->c, gos->s,
- gos->sys, &t, NUM2DBL(tt1), &h, y->data);
+ status = gsl_odeiv_evolve_apply(gos->e, gos->c, gos->s,
+ gos->sys, &t, NUM2DBL(tt1), &h, y->data);
/* RFLOAT(tt)->value = t;
RFLOAT(hh)->value = h;
return INT2FIX(status);*/
@@ -836,8 +827,8 @@ static VALUE rb_gsl_odeiv_solver_set_params(int argc, VALUE *argv, VALUE obj)
{
gsl_odeiv_solver *gos = NULL;
Data_Get_Struct(obj, gsl_odeiv_solver, gos);
- rb_gsl_odeiv_system_set_params(argc, argv,
- Data_Wrap_Struct(cgsl_odeiv_system, 0, NULL, gos->sys));
+ rb_gsl_odeiv_system_set_params(argc, argv,
+ Data_Wrap_Struct(cgsl_odeiv_system, 0, NULL, gos->sys));
return obj;
}
@@ -857,8 +848,8 @@ void Init_gsl_odeiv(VALUE module)
rb_define_const(mgsl_odeiv, "HADJ_DEC", INT2FIX(GSL_ODEIV_HADJ_DEC));
rb_define_const(mgsl_odeiv, "HADJ_INC", INT2FIX(GSL_ODEIV_HADJ_INC));
rb_define_const(mgsl_odeiv, "HADJ_NIL", INT2FIX(GSL_ODEIV_HADJ_NIL));
- cgsl_odeiv_step = rb_define_class_under(mgsl_odeiv, "Step",
- cGSL_Object);
+ cgsl_odeiv_step = rb_define_class_under(mgsl_odeiv, "Step",
+ cGSL_Object);
rb_define_singleton_method(cgsl_odeiv_step, "alloc", rb_gsl_odeiv_step_new, -1);
/*****/
@@ -885,23 +876,21 @@ void Init_gsl_odeiv(VALUE module)
/****/
- cgsl_odeiv_control = rb_define_class_under(mgsl_odeiv, "Control",
- cGSL_Object);
+ cgsl_odeiv_control = rb_define_class_under(mgsl_odeiv, "Control",
+ cGSL_Object);
rb_define_singleton_method(cgsl_odeiv_control, "alloc", rb_gsl_odeiv_control_standard_new, 4);
rb_define_singleton_method(cgsl_odeiv_control, "standard_alloc", rb_gsl_odeiv_control_standard_new, 4);
- rb_define_singleton_method(cgsl_odeiv_control, "y_new", rb_gsl_odeiv_control_y_new, 2);
- rb_define_singleton_method(cgsl_odeiv_control, "yp_new", rb_gsl_odeiv_control_yp_new, 2);
-#ifdef GSL_1_2_LATER
- rb_define_singleton_method(cgsl_odeiv_control, "scaled_alloc", rb_gsl_odeiv_control_scaled_new, 5);
-#endif
+ rb_define_singleton_method(cgsl_odeiv_control, "y_new", rb_gsl_odeiv_control_y_new, 2);
+ rb_define_singleton_method(cgsl_odeiv_control, "yp_new", rb_gsl_odeiv_control_yp_new, 2);
+ rb_define_singleton_method(cgsl_odeiv_control, "scaled_alloc", rb_gsl_odeiv_control_scaled_new, 5);
rb_define_method(cgsl_odeiv_control, "init", rb_gsl_odeiv_control_init, 4);
rb_define_method(cgsl_odeiv_control, "name", rb_gsl_odeiv_control_name, 0);
rb_define_method(cgsl_odeiv_control, "hadjust", rb_gsl_odeiv_control_hadjust, 5);
- /****/
- cgsl_odeiv_evolve = rb_define_class_under(mgsl_odeiv, "Evolve",
- cGSL_Object);
+ /****/
+ cgsl_odeiv_evolve = rb_define_class_under(mgsl_odeiv, "Evolve",
+ cGSL_Object);
rb_define_singleton_method(cgsl_odeiv_evolve, "alloc", rb_gsl_odeiv_evolve_new, 1);
rb_define_method(cgsl_odeiv_evolve, "reset", rb_gsl_odeiv_evolve_reset, 0);
@@ -914,19 +903,19 @@ void Init_gsl_odeiv(VALUE module)
rb_define_method(cgsl_odeiv_evolve, "yerr", rb_gsl_odeiv_evolve_yerr, 0);
/*****/
- cgsl_odeiv_system = rb_define_class_under(mgsl_odeiv, "System",
- cGSL_Object);
+ cgsl_odeiv_system = rb_define_class_under(mgsl_odeiv, "System",
+ cGSL_Object);
rb_define_singleton_method(cgsl_odeiv_system, "alloc", rb_gsl_odeiv_system_new, -1);
rb_define_method(cgsl_odeiv_system, "set", rb_gsl_odeiv_system_set, -1);
- rb_define_method(cgsl_odeiv_system, "set_params",
- rb_gsl_odeiv_system_set_params, -1);
- rb_define_method(cgsl_odeiv_system, "params",
- rb_gsl_odeiv_system_params, 0);
- rb_define_method(cgsl_odeiv_system, "function",
- rb_gsl_odeiv_system_function, 0);
+ rb_define_method(cgsl_odeiv_system, "set_params",
+ rb_gsl_odeiv_system_set_params, -1);
+ rb_define_method(cgsl_odeiv_system, "params",
+ rb_gsl_odeiv_system_params, 0);
+ rb_define_method(cgsl_odeiv_system, "function",
+ rb_gsl_odeiv_system_function, 0);
rb_define_alias(cgsl_odeiv_system, "func", "function");
- rb_define_method(cgsl_odeiv_system, "jacobian",
- rb_gsl_odeiv_system_jacobian, 0);
+ rb_define_method(cgsl_odeiv_system, "jacobian",
+ rb_gsl_odeiv_system_jacobian, 0);
rb_define_alias(cgsl_odeiv_system, "jac", "jacobian");
rb_define_method(cgsl_odeiv_system, "dimension", rb_gsl_odeiv_system_dimension, 0);
rb_define_alias(cgsl_odeiv_system, "dim", "dimension");
diff --git a/ext/gsl_native/ool.c b/ext/gsl_native/ool.c
new file mode 100644
index 0000000..ea8ade4
--- /dev/null
+++ b/ext/gsl_native/ool.c
@@ -0,0 +1,879 @@
+#ifdef HAVE_OOL_OOL_VERSION_H
+#include "include/rb_gsl.h"
+#include "include/rb_gsl_array.h"
+#include <ool/ool_conmin.h>
+
+static VALUE cool_conmin_function;
+static VALUE cool_conmin_constraint;
+static VALUE cool_conmin_pgrad;
+static VALUE cool_conmin_spg;
+static VALUE cool_conmin_gencan;
+static VALUE cool_conmin_pgrad_parameters;
+static VALUE cool_conmin_spg_parameters;
+static VALUE cool_conmin_gencan_parameters;
+
+#ifndef CHECK_OOL_CONMIN_FUNCTION
+#define CHECK_OOL_CONMIN_FUNCTION(x) if(CLASS_OF(x)!=cool_conmin_function) \
+ rb_raise(rb_eTypeError, \
+ "wrong argument type %s (OOL::Conmin::Function expected)", \
+ rb_class2name(CLASS_OF(x)));
+#endif
+
+enum enum_ool_conmin_minimizer_type {
+ OOL_CONMIN_PGRAD,
+ OOL_CONMIN_SPG,
+ OOL_CONMIN_GENCAN,
+};
+
+static const ool_conmin_minimizer_type* get_minimizer_type(VALUE t)
+{
+ char name[64];
+
+ switch (TYPE(t)) {
+ case T_STRING:
+ strcpy(name, STR2CSTR(t));
+ if (str_tail_grep(name, "pgrad") == 0) {
+ return ool_conmin_minimizer_pgrad;
+ } else if (str_tail_grep(name, "spg") == 0) {
+ return ool_conmin_minimizer_spg;
+ } else if (str_tail_grep(name, "gencan") == 0) {
+ return ool_conmin_minimizer_gencan;
+ } else {
+ rb_raise(rb_eTypeError, "%s: unknown minimizer type", name);
+ }
+ break;
+ case T_FIXNUM:
+ switch (FIX2INT(t)) {
+ case OOL_CONMIN_PGRAD:
+ return ool_conmin_minimizer_pgrad;
+ break;
+ case OOL_CONMIN_SPG:
+ return ool_conmin_minimizer_spg;
+ break;
+ case OOL_CONMIN_GENCAN:
+ return ool_conmin_minimizer_gencan;
+ break;
+ default:
+ rb_raise(rb_eTypeError, "%d: unknown minimizer type", FIX2INT(t));
+ break;
+ }
+ break;
+ default:
+ if (t == cool_conmin_pgrad) return ool_conmin_minimizer_pgrad;
+ else if (t == cool_conmin_spg) return ool_conmin_minimizer_spg;
+ else if (t == cool_conmin_gencan) return ool_conmin_minimizer_gencan;
+ else rb_raise(rb_eTypeError, "type is given by a String or a Fixnum");
+ break;
+ }
+}
+
+static void def_const(VALUE module)
+{
+ rb_define_const(module, "CONTINUE", INT2FIX(OOL_CONTINUE));
+ rb_define_const(module, "SUCCESS", INT2FIX(OOL_SUCCESS));
+}
+
+
+static VALUE rb_ool_conmin_minimizer_set(int argc, VALUE *argv, VALUE obj);
+static VALUE rb_ool_conmin_minimizer_alloc(int argc, VALUE *argv, VALUE klass)
+{
+ ool_conmin_minimizer *m;
+ VALUE obj;
+ if (argc < 2) rb_raise(rb_eArgError, "Too few arguments (%d for >= 2)", argc);
+ m = ool_conmin_minimizer_alloc(get_minimizer_type(argv[0]), FIX2INT(argv[1]));
+ obj = Data_Wrap_Struct(klass, 0, ool_conmin_minimizer_free, m);
+ if (argc > 2) rb_ool_conmin_minimizer_set(argc-2, argv+2, obj);
+ return obj;
+}
+
+static void* get_parameter(const ool_conmin_minimizer_type *T, ool_conmin_pgrad_parameters *Pp,
+ ool_conmin_spg_parameters *Ps, ool_conmin_gencan_parameters *Pg, VALUE ary);
+static VALUE rb_ool_conmin_minimizer_set(int argc, VALUE *argv, VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ ool_conmin_function *F;
+ ool_conmin_constraint *C;
+ gsl_vector *v;
+ ool_conmin_pgrad_parameters Pp;
+ ool_conmin_spg_parameters Ps;
+ ool_conmin_gencan_parameters Pg;
+ void *P;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ switch (argc) {
+ case 3:
+ if (CLASS_OF(argv[0]) != cool_conmin_function)
+ rb_raise(rb_eTypeError, "Wrong argument type 0 (OOL::Conmin::Function expected)");
+ if (CLASS_OF(argv[1]) != cool_conmin_constraint)
+ rb_raise(rb_eTypeError, "Wrong argument type 1 (OOL::Conmin::Constraint expected)");
+ if (!VECTOR_P(argv[2]))
+ rb_raise(rb_eTypeError, "Wrong argument type 2 (GSL::Vector expected)");
+ Data_Get_Struct(argv[0], ool_conmin_function, F);
+ Data_Get_Struct(argv[1], ool_conmin_constraint, C);
+ Data_Get_Struct(argv[2], gsl_vector, v);
+ P = get_parameter(m->type, &Pp, &Ps, &Pg, Qnil);
+ ool_conmin_minimizer_set(m, F, C, v, P);
+ break;
+ case 4:
+ if (CLASS_OF(argv[0]) != cool_conmin_function)
+ rb_raise(rb_eTypeError, "Wrong argument type 0 (OOL::Conmin::Function expected)");
+ if (CLASS_OF(argv[1]) != cool_conmin_constraint)
+ rb_raise(rb_eTypeError, "Wrong argument type 1 (OOL::Conmin::Constraint expected)");
+ if (!VECTOR_P(argv[2]))
+ rb_raise(rb_eTypeError, "Wrong argument type 2 (GSL::Vector expected)");
+ if (!rb_obj_is_kind_of(argv[3], rb_cArray) && argv[3] != Qnil)
+ rb_raise(rb_eTypeError, "Wrong argument type 3 (Array expected)");
+ Data_Get_Struct(argv[0], ool_conmin_function, F);
+ Data_Get_Struct(argv[1], ool_conmin_constraint, C);
+ Data_Get_Struct(argv[2], gsl_vector, v);
+ P = get_parameter(m->type, &Pp, &Ps, &Pg, argv[3]);
+ ool_conmin_minimizer_set(m, F, C, v, P);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 3 or 4)", argc);
+ }
+ return obj;
+}
+
+static void* get_parameter(const ool_conmin_minimizer_type *T, ool_conmin_pgrad_parameters *Pp,
+ ool_conmin_spg_parameters *Ps, ool_conmin_gencan_parameters *Pg, VALUE ary)
+{
+ if (T == ool_conmin_minimizer_pgrad) {
+ if (ary == Qnil) {
+ ool_conmin_parameters_default(T, (void*) Pp);
+ } else {
+ Pp->fmin = NUM2DBL(rb_ary_entry(ary, 0));
+ Pp->tol = NUM2DBL(rb_ary_entry(ary, 1));
+ Pp->alpha = NUM2DBL(rb_ary_entry(ary, 2));
+ Pp->sigma1 = NUM2DBL(rb_ary_entry(ary, 3));
+ Pp->sigma2 = NUM2DBL(rb_ary_entry(ary, 4));
+ }
+ return (void*) Pp;
+ } else if (T == ool_conmin_minimizer_spg) {
+ if (ary == Qnil) {
+ ool_conmin_parameters_default(T, (void*) Ps);
+ } else {
+ Ps->fmin = NUM2DBL(rb_ary_entry(ary, 0));
+ Ps->tol = NUM2DBL(rb_ary_entry(ary, 1));
+ Ps->M = NUM2DBL(rb_ary_entry(ary, 2));
+ Ps->alphamin = NUM2DBL(rb_ary_entry(ary, 3));
+ Ps->alphamax = NUM2DBL(rb_ary_entry(ary, 4));
+ Ps->gamma = NUM2DBL(rb_ary_entry(ary, 5));
+ Ps->sigma2 = NUM2DBL(rb_ary_entry(ary, 6));
+ Ps->sigma2 = NUM2DBL(rb_ary_entry(ary, 7));
+ }
+ return (void*) Ps;
+ } else {
+ if (ary == Qnil) {
+ ool_conmin_parameters_default(T, (void*) Pg);
+ } else {
+ Pg->epsgpen = NUM2DBL(rb_ary_entry(ary, 0));
+ Pg->epsgpsn = NUM2DBL(rb_ary_entry(ary, 1));
+ Pg->fmin = NUM2DBL(rb_ary_entry(ary, 2));
+ Pg->udelta0 = NUM2DBL(rb_ary_entry(ary, 3));
+ Pg->ucgmia = NUM2DBL(rb_ary_entry(ary, 4));
+ Pg->ucgmib = NUM2DBL(rb_ary_entry(ary, 5));
+ Pg->cg_scre = FIX2INT(rb_ary_entry(ary, 6));
+ Pg->cg_gpnf = NUM2DBL(rb_ary_entry(ary, 7));
+ Pg->cg_epsi = NUM2DBL(rb_ary_entry(ary, 8));
+ Pg->cg_epsf = NUM2DBL(rb_ary_entry(ary, 9));
+ Pg->cg_epsnqmp = NUM2DBL(rb_ary_entry(ary, 10));
+ Pg->cg_maxitnqmp = (size_t) FIX2INT(rb_ary_entry(ary, 11));
+ Pg->nearlyq = FIX2INT(rb_ary_entry(ary, 12));
+ Pg->nint = NUM2DBL(rb_ary_entry(ary, 13));
+ Pg->next = NUM2DBL(rb_ary_entry(ary, 14));
+ Pg->mininterp = (size_t) FIX2INT(rb_ary_entry(ary, 15));
+ Pg->maxextrap = (size_t) FIX2INT(rb_ary_entry(ary, 16));
+ Pg->trtype = FIX2INT(rb_ary_entry(ary, 17));
+ Pg->eta = NUM2DBL(rb_ary_entry(ary, 18));
+ Pg->delmin = NUM2DBL(rb_ary_entry(ary, 19));
+ Pg->lspgmi = NUM2DBL(rb_ary_entry(ary, 20));
+ Pg->lspgma = NUM2DBL(rb_ary_entry(ary, 21));
+ Pg->theta = NUM2DBL(rb_ary_entry(ary, 22));
+ Pg->gamma = NUM2DBL(rb_ary_entry(ary, 23));
+ Pg->beta = NUM2DBL(rb_ary_entry(ary, 24));
+ Pg->sigma1 = NUM2DBL(rb_ary_entry(ary, 25));
+ Pg->sigma2 = NUM2DBL(rb_ary_entry(ary, 26));
+ Pg->epsrel = NUM2DBL(rb_ary_entry(ary, 27));
+ Pg->epsabs = NUM2DBL(rb_ary_entry(ary, 28));
+ Pg->infrel = NUM2DBL(rb_ary_entry(ary, 29));
+ Pg->infabs = NUM2DBL(rb_ary_entry(ary, 30));
+ }
+ return (void*) Pg;
+ }
+}
+
+static VALUE create_parameters_ary_pgrad(ool_conmin_pgrad_parameters *Pp)
+{
+ VALUE ary;
+ ary = rb_ary_new2(5);
+ rb_ary_store(ary, 0, rb_float_new(Pp->fmin));
+ rb_ary_store(ary, 1, rb_float_new(Pp->tol));
+ rb_ary_store(ary, 2, rb_float_new(Pp->alpha));
+ rb_ary_store(ary, 3, rb_float_new(Pp->sigma1));
+ rb_ary_store(ary, 4, rb_float_new(Pp->sigma2));
+ return ary;
+}
+
+static VALUE create_parameters_ary_spg(ool_conmin_spg_parameters *Ps)
+{
+ VALUE ary;
+ ary = rb_ary_new2(8);
+ rb_ary_store(ary, 0, rb_float_new(Ps->fmin));
+ rb_ary_store(ary, 1, rb_float_new(Ps->tol));
+ rb_ary_store(ary, 2, rb_float_new(Ps->M));
+ rb_ary_store(ary, 3, rb_float_new(Ps->alphamin));
+ rb_ary_store(ary, 4, rb_float_new(Ps->alphamax));
+ rb_ary_store(ary, 5, rb_float_new(Ps->gamma));
+ rb_ary_store(ary, 6, rb_float_new(Ps->sigma2));
+ rb_ary_store(ary, 7, rb_float_new(Ps->sigma2));
+ return ary;
+}
+
+static VALUE create_parameters_ary_gencan(ool_conmin_gencan_parameters *Pg)
+{
+ VALUE ary;
+ ary = rb_ary_new2(31);
+ rb_ary_store(ary, 0, rb_float_new(Pg->epsgpen));
+ rb_ary_store(ary, 1, rb_float_new(Pg->epsgpsn));
+ rb_ary_store(ary, 2, rb_float_new(Pg->fmin));
+ rb_ary_store(ary, 3, rb_float_new(Pg->udelta0));
+ rb_ary_store(ary, 4, rb_float_new(Pg->ucgmia));
+ rb_ary_store(ary, 5, rb_float_new(Pg->ucgmib));
+ rb_ary_store(ary, 6, INT2FIX(Pg->cg_scre));
+ rb_ary_store(ary, 7, rb_float_new(Pg->cg_gpnf));
+ rb_ary_store(ary, 8, rb_float_new(Pg->cg_epsi));
+ rb_ary_store(ary, 9, rb_float_new(Pg->cg_epsf));
+ rb_ary_store(ary, 10, rb_float_new(Pg->cg_epsnqmp));
+ rb_ary_store(ary, 11, INT2FIX((int) Pg->cg_maxitnqmp));
+ rb_ary_store(ary, 12, INT2FIX(Pg->nearlyq));
+ rb_ary_store(ary, 13, rb_float_new(Pg->nint));
+ rb_ary_store(ary, 14, rb_float_new(Pg->next));
+ rb_ary_store(ary, 15, INT2FIX((int)Pg->mininterp));
+ rb_ary_store(ary, 16, INT2FIX((int)Pg->maxextrap));
+ rb_ary_store(ary, 17, INT2FIX(Pg->trtype));
+ rb_ary_store(ary, 18, rb_float_new(Pg->eta));
+ rb_ary_store(ary, 19, rb_float_new(Pg->delmin));
+ rb_ary_store(ary, 20, rb_float_new(Pg->lspgmi));
+ rb_ary_store(ary, 21, rb_float_new(Pg->lspgma));
+ rb_ary_store(ary, 22, rb_float_new(Pg->theta));
+ rb_ary_store(ary, 23, rb_float_new(Pg->gamma));
+ rb_ary_store(ary, 24, rb_float_new(Pg->beta));
+ rb_ary_store(ary, 25, rb_float_new(Pg->sigma1));
+ rb_ary_store(ary, 26, rb_float_new(Pg->sigma2));
+ rb_ary_store(ary, 27, rb_float_new(Pg->epsrel));
+ rb_ary_store(ary, 28, rb_float_new(Pg->epsabs));
+ rb_ary_store(ary, 29, rb_float_new(Pg->infrel));
+ rb_ary_store(ary, 30, rb_float_new(Pg->infabs));
+ return ary;
+}
+static VALUE rb_ool_conmin_minimizer_parameters_get(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ ool_conmin_pgrad_parameters *Pp;
+ ool_conmin_spg_parameters *Ps;
+ ool_conmin_gencan_parameters *Pg;
+ void *P;
+ VALUE ary;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ ool_conmin_parameters_get(m, P);
+ if (m->type == ool_conmin_minimizer_pgrad) {
+ Pp = (ool_conmin_pgrad_parameters*) P;
+ ary = create_parameters_ary_pgrad(Pp);
+ } else if (m->type == ool_conmin_minimizer_spg) {
+ Ps = (ool_conmin_spg_parameters*) P;
+ ary = create_parameters_ary_spg(Ps);
+ } else {
+ Pg = (ool_conmin_gencan_parameters*) P;
+ ary = create_parameters_ary_gencan(Pg);
+ }
+ return ary;
+}
+
+static VALUE rb_ool_conmin_minimizer_parameters_set(VALUE obj, VALUE params)
+{
+ ool_conmin_minimizer *m;
+ ool_conmin_pgrad_parameters *Pp;
+ ool_conmin_spg_parameters *Ps;
+ ool_conmin_gencan_parameters *Pg;
+ void *P;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ P = get_parameter(m->type, Pp, Ps, Pg, params);
+ ool_conmin_parameters_set(m, P);
+ return params;
+}
+
+static VALUE rb_ool_conmin_minimizer_name(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ return rb_str_new2(ool_conmin_minimizer_name(m));
+}
+static VALUE rb_ool_conmin_minimizer_f(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ return rb_float_new(m->f);
+}
+static VALUE rb_ool_conmin_minimizer_x(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ return Data_Wrap_Struct(cgsl_vector, 0, NULL, m->x);
+}
+static VALUE rb_ool_conmin_minimizer_gradient(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ return Data_Wrap_Struct(cgsl_vector, 0, NULL, m->gradient);
+}
+static VALUE rb_ool_conmin_minimizer_minimum(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ return rb_float_new(ool_conmin_minimizer_minimum(m));
+}
+static VALUE rb_ool_conmin_minimizer_dx(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ return Data_Wrap_Struct(cgsl_vector, 0, NULL, m->dx);
+}
+static VALUE rb_ool_conmin_minimizer_size(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ return rb_float_new(ool_conmin_minimizer_size(m));
+}
+static VALUE rb_ool_conmin_minimizer_fcount(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ return INT2FIX((int) ool_conmin_minimizer_fcount(m));
+}
+static VALUE rb_ool_conmin_minimizer_gcount(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ return INT2FIX((int) ool_conmin_minimizer_gcount(m));
+}
+static VALUE rb_ool_conmin_minimizer_hcount(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ return INT2FIX((int) ool_conmin_minimizer_hcount(m));
+}
+static VALUE rb_ool_conmin_minimizer_is_optimal(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ return INT2FIX((int) ool_conmin_is_optimal(m));
+}
+static VALUE rb_ool_conmin_minimizer_is_optimal2(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ if (ool_conmin_is_optimal(m)) return Qtrue;
+ else return Qfalse;
+}
+static VALUE rb_ool_conmin_minimizer_iterate(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ return INT2FIX((int) ool_conmin_minimizer_iterate(m));
+}
+static VALUE rb_ool_conmin_minimizer_restart(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ return INT2FIX((int) ool_conmin_minimizer_restart(m));
+}
+
+static VALUE rb_ool_conmin_pgrad_parameters_default(VALUE klass);
+static VALUE rb_ool_conmin_spg_parameters_default(VALUE klass);
+static VALUE rb_ool_conmin_gencan_parameters_default(VALUE klass);
+
+static VALUE rb_ool_conmin_minimizer_parameters_default(VALUE obj)
+{
+ ool_conmin_minimizer *m;
+ Data_Get_Struct(obj, ool_conmin_minimizer, m);
+ if (m->type == ool_conmin_minimizer_spg) {
+ return rb_ool_conmin_spg_parameters_default(cool_conmin_spg);
+ } else if (m->type == ool_conmin_minimizer_pgrad) {
+ return rb_ool_conmin_pgrad_parameters_default(cool_conmin_pgrad);
+ } else if (m->type == ool_conmin_minimizer_gencan) {
+ return rb_ool_conmin_gencan_parameters_default(cool_conmin_gencan);
+ } else {
+ rb_raise(rb_eRuntimeError, "Unkowm minimizer type.");
+ }
+ return Qnil; /* never reaches here */
+}
+
+/***/
+
+static void rb_ool_conmin_function_mark(ool_conmin_function *F)
+{
+ rb_gc_mark((VALUE) F->params);
+}
+
+static double rb_ool_conmin_function_f(const gsl_vector *x, void *p);
+static void rb_ool_conmin_function_df(const gsl_vector *x, void *p, gsl_vector *g);
+static void rb_ool_conmin_function_fdf(const gsl_vector *x, void *p,
+ double *f, gsl_vector *g);
+static void rb_ool_conmin_function_Hv(const gsl_vector *X, void *params,
+ const gsl_vector *V, gsl_vector *hv);
+static void set_functions(int argc, VALUE *argv, ool_conmin_function *F);
+static void set_params(ool_conmin_function *F, VALUE p);
+static VALUE rb_ool_conmin_function_set_n(VALUE obj, VALUE nn);
+static VALUE rb_ool_conmin_function_set_functions(int argc, VALUE *argv, VALUE obj);
+static VALUE rb_ool_conmin_function_set(int argc, VALUE *argv, VALUE obj);
+
+static VALUE rb_ool_conmin_function_alloc(int argc, VALUE *argv, VALUE klass)
+{
+ ool_conmin_function *F = NULL;
+ VALUE ary, obj;
+
+ F = ALLOC(ool_conmin_function);
+ F->f = &rb_ool_conmin_function_f;
+ F->df = &rb_ool_conmin_function_df;
+ F->fdf = &rb_ool_conmin_function_fdf;
+ F->Hv = &rb_ool_conmin_function_Hv;
+ F->n = 0;
+ ary = rb_ary_new2(5);
+
+ F->params = (void *) ary;
+ rb_ary_store(ary, 0, Qnil); /* proc f */
+ rb_ary_store(ary, 1, Qnil); /* proc df */
+ rb_ary_store(ary, 2, Qnil); /* proc fdf */
+ rb_ary_store(ary, 3, Qnil); /* proc Hv */
+ rb_ary_store(ary, 4, Qnil); /* params */
+// set_functions(argc, argv, F);
+ obj = Data_Wrap_Struct(klass, rb_ool_conmin_function_mark, free, F);
+ rb_ool_conmin_function_set(argc, argv, obj);
+ return obj;
+}
+
+static VALUE rb_ool_conmin_function_set(int argc, VALUE *argv, VALUE obj)
+{
+ ool_conmin_function *F;
+ Data_Get_Struct(obj, ool_conmin_function, F);
+ switch (argc) {
+ case 0:
+ break;
+ case 1:
+ rb_ool_conmin_function_set_n(obj, argv[0]);
+ break;
+ case 4:
+ set_functions(argc, argv, F);
+ break;
+ case 5:
+ if (FIXNUM_P(argv[0])) {
+ rb_ool_conmin_function_set_n(obj, argv[0]);
+ set_functions(argc-1, argv+1, F);
+ } else {
+ set_functions(argc-1, argv, F);
+ set_params(F, argv[argc-1]);
+ }
+ break;
+ case 6:
+ rb_ool_conmin_function_set_n(obj, argv[0]);
+ set_functions(argc-2, argv+1, F);
+ set_params(F, argv[argc-1]);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments.");
+ }
+ return obj;
+}
+
+static VALUE rb_ool_conmin_function_set_n(VALUE obj, VALUE nn)
+{
+ ool_conmin_function *F = NULL;
+ if (FIXNUM_P(nn)) {
+ Data_Get_Struct(obj, ool_conmin_function, F);
+ F->n = (size_t) FIX2INT(nn);
+ } else {
+ rb_raise(rb_eArgError, "Wrong argument type %s (Fixnum expected)",
+ rb_class2name(CLASS_OF(nn)));
+ }
+ return nn;
+}
+
+static VALUE rb_ool_conmin_function_n(VALUE obj)
+{
+ ool_conmin_function *F = NULL;
+ Data_Get_Struct(obj, ool_conmin_function, F);
+ return INT2FIX((int) F->n);
+}
+static double rb_ool_conmin_function_f(const gsl_vector *x, void *p)
+{
+ VALUE vx, proc, vp, result, ary;
+ vx = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector *) x);
+ ary = (VALUE) p;
+ proc = rb_ary_entry(ary, 0);
+ vp = rb_ary_entry(ary, RARRAY_LEN(ary)-1);
+ if (NIL_P(vp)) result = rb_funcall(proc, RBGSL_ID_call, 1, vx);
+ else result = rb_funcall(proc, RBGSL_ID_call, 2, vx, vp);
+ return NUM2DBL(result);
+}
+
+static void rb_ool_conmin_function_df(const gsl_vector *x, void *p, gsl_vector *g)
+{
+ VALUE vx, vg, proc, vp, ary;
+ vx = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector *) x);
+ vg = Data_Wrap_Struct(cgsl_vector, 0, NULL, g);
+ ary = (VALUE) p;
+ proc = rb_ary_entry(ary, 1);
+ vp = rb_ary_entry(ary, RARRAY_LEN(ary)-1);
+ if (NIL_P(vp)) {
+ rb_funcall(proc, RBGSL_ID_call, 2, vx, vg);
+ } else {
+ rb_funcall(proc, RBGSL_ID_call, 3, vx, vp, vg);
+ }
+}
+
+static void rb_ool_conmin_function_fdf(const gsl_vector *x, void *p,
+ double *f, gsl_vector *g)
+{
+ VALUE vx, vf, vg, proc_fdf, proc_f, proc_df, vp, ary, result;
+ vx = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector *) x);
+ vg = Data_Wrap_Struct(cgsl_vector, 0, NULL, g);
+ vf = rb_float_new(*f);
+ ary = (VALUE) p;
+ proc_f = rb_ary_entry(ary, 0);
+ proc_df = rb_ary_entry(ary, 1);
+ proc_fdf = rb_ary_entry(ary, 2);
+ vp = rb_ary_entry(ary, RARRAY_LEN(ary)-1);
+ if (NIL_P(vp)) {
+ result = rb_funcall(proc_f, RBGSL_ID_call, 1, vx);
+ rb_funcall(proc_df, RBGSL_ID_call, 2, vx, vg);
+ } else {
+ result = rb_funcall(proc_f, RBGSL_ID_call, 2, vx, vp);
+ rb_funcall(proc_df, RBGSL_ID_call, 3, vx, vp, vg);
+ }
+ *f = NUM2DBL(result);
+}
+
+static void rb_ool_conmin_function_Hv(const gsl_vector *X, void *params,
+ const gsl_vector *V, gsl_vector *hv)
+{
+ VALUE vX, vV, vHv, ary, proc_Hv, vp;
+ vX = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector*) X);
+ vV = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector*) V);
+ vHv = Data_Wrap_Struct(cgsl_vector, 0, NULL, (gsl_vector*) hv);
+ ary = (VALUE) params;
+ proc_Hv = rb_ary_entry(ary, 3);
+ vp = rb_ary_entry(ary, RARRAY_LEN(ary)-1);
+ if (NIL_P(vp)) {
+ rb_funcall(proc_Hv, RBGSL_ID_call, 3, vX, vV, vHv);
+ } else {
+ rb_funcall(proc_Hv, RBGSL_ID_call, 4, vX, vp, vV, vHv);
+ }
+}
+
+static VALUE rb_ool_conmin_function_set_functions(int argc, VALUE *argv, VALUE obj)
+{
+ ool_conmin_function *F;
+ Data_Get_Struct(obj, ool_conmin_function, F);
+ set_functions(argc, argv, F);
+ return obj;
+}
+
+static void set_functions(int argc, VALUE *argv, ool_conmin_function *F)
+{
+ VALUE ary;
+ size_t i;
+ if (F->params == NULL) {
+ ary = rb_ary_new2(5);
+ /* (VALUE) F->params = ary;*/
+ F->params = (void *) ary;
+ } else {
+ ary = (VALUE) F->params;
+ }
+ switch (argc) {
+ case 4:
+ for (i = 0; i < argc; i++) rb_ary_store(ary, i, argv[i]);
+ break;
+ default:
+ rb_raise(rb_eArgError,"Wrong number of arguments (%d for 4)", argc);
+ }
+}
+
+static VALUE rb_ool_conmin_function_set_f(VALUE obj, VALUE proc)
+{
+ ool_conmin_function *F;
+ VALUE ary;
+ Data_Get_Struct(obj, ool_conmin_function, F);
+ if (F->params == NULL) {
+ ary = rb_ary_new2(5);
+ F->params = (void *) ary;
+ } else {
+ ary = (VALUE) F->params;
+ }
+ rb_ary_store(ary, 0, proc);
+ return proc;
+}
+
+static VALUE rb_ool_conmin_function_set_df(VALUE obj, VALUE proc)
+{
+ ool_conmin_function *F;
+ VALUE ary;
+ Data_Get_Struct(obj, ool_conmin_function, F);
+ if (F->params == NULL) {
+ ary = rb_ary_new2(5);
+ F->params = (void *) ary;
+ } else {
+ ary = (VALUE) F->params;
+ }
+ rb_ary_store(ary, 1, proc);
+ return proc;
+}
+
+static VALUE rb_ool_conmin_function_set_fdf(VALUE obj, VALUE proc)
+{
+ ool_conmin_function *F;
+ VALUE ary;
+ Data_Get_Struct(obj, ool_conmin_function, F);
+ if (F->params == NULL) {
+ ary = rb_ary_new2(5);
+ F->params = (void *) ary;
+ } else {
+ ary = (VALUE) F->params;
+ }
+ rb_ary_store(ary, 2, proc);
+ return proc;
+}
+
+static VALUE rb_ool_conmin_function_set_Hv(VALUE obj, VALUE proc)
+{
+ ool_conmin_function *F;
+ VALUE ary;
+ Data_Get_Struct(obj, ool_conmin_function, F);
+ if (F->params == NULL) {
+ ary = rb_ary_new2(5);
+ F->params = (void *) ary;
+ } else {
+ ary = (VALUE) F->params;
+ }
+ rb_ary_store(ary, 3, proc);
+ return proc;
+}
+
+static VALUE rb_ool_conmin_function_set_params(VALUE obj, VALUE p)
+{
+ ool_conmin_function *F;
+ Data_Get_Struct(obj, ool_conmin_function, F);
+ set_params(F, p);
+ return p;
+}
+
+static void set_params(ool_conmin_function *F, VALUE p)
+{
+ VALUE ary;
+ if (F->params == NULL) {
+ ary = rb_ary_new2(5);
+ /* (VALUE) F->params = ary;*/
+ F->params = (void *) ary;
+ } else {
+ ary = (VALUE) F->params;
+ }
+ rb_ary_store(ary, 4, p);
+}
+
+static VALUE rb_ool_conmin_function_params(VALUE obj)
+{
+ ool_conmin_function *F;
+ Data_Get_Struct(obj, ool_conmin_function, F);
+ return rb_ary_entry((VALUE) F->params, 4);
+}
+
+static VALUE rb_ool_conmin_constraint_set(int argc, VALUE *argv, VALUE obj);
+static VALUE rb_ool_conmin_constraint_set_n(VALUE obj, VALUE n);
+static VALUE rb_ool_conmin_constraint_alloc(int argc, VALUE *argv, VALUE klass)
+{
+ ool_conmin_constraint *C;
+ VALUE obj;
+ C = ALLOC(ool_conmin_constraint);
+ C->n = 0;
+ C->L = NULL;
+ C->U = NULL;
+
+ obj = Data_Wrap_Struct(klass, 0, free, C);
+ rb_ool_conmin_constraint_set(argc, argv, obj);
+ return obj;
+}
+
+static VALUE rb_ool_conmin_constraint_set_n(VALUE obj, VALUE n)
+{
+ ool_conmin_constraint *C;
+ if (!FIXNUM_P(n)) rb_raise(rb_eArgError, "Wrong argument type %s (Fixnum expected)",
+ rb_class2name(CLASS_OF(n)));
+ Data_Get_Struct(obj, ool_conmin_constraint, C);
+ C->n = (size_t) FIX2INT(n);
+ return n;
+}
+
+static VALUE rb_ool_conmin_constraint_set_L(VALUE obj, VALUE vL)
+{
+ ool_conmin_constraint *C;
+ gsl_vector *L;
+ CHECK_VECTOR(vL);
+ Data_Get_Struct(obj, ool_conmin_constraint, C);
+ Data_Get_Struct(vL, gsl_vector, L);
+ C->L = L;
+ return vL;
+}
+
+static VALUE rb_ool_conmin_constraint_set_U(VALUE obj, VALUE vU)
+{
+ ool_conmin_constraint *C;
+ gsl_vector *U;
+ CHECK_VECTOR(vU);
+ Data_Get_Struct(obj, ool_conmin_constraint, C);
+ Data_Get_Struct(vU, gsl_vector, U);
+ C->U = U;
+ return vU;
+}
+
+static VALUE rb_ool_conmin_constraint_set_LU(VALUE obj, VALUE vL, VALUE vU)
+{
+ rb_ool_conmin_constraint_set_L(obj, vL);
+ rb_ool_conmin_constraint_set_U(obj, vU);
+ return obj;
+}
+
+static VALUE rb_ool_conmin_constraint_set(int argc, VALUE *argv, VALUE obj)
+{
+ ool_conmin_constraint *C;
+ Data_Get_Struct(obj, ool_conmin_constraint, C);
+ switch (argc) {
+ case 0:
+ break;
+ case 1:
+ rb_ool_conmin_constraint_set_n(obj, argv[0]);
+ break;
+ case 2:
+ rb_ool_conmin_constraint_set_LU(obj, argv[0], argv[1]);
+ break;
+ case 3:
+ rb_ool_conmin_constraint_set_n(obj, argv[0]);
+ rb_ool_conmin_constraint_set_LU(obj, argv[1], argv[2]);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 1-3)", argc);
+ }
+ return obj;
+}
+
+static VALUE rb_ool_conmin_pgrad_parameters_default(VALUE klass)
+{
+ ool_conmin_pgrad_parameters P;
+ VALUE ary;
+ ool_conmin_parameters_default(ool_conmin_minimizer_pgrad, (void*) &P);
+ ary = create_parameters_ary_pgrad(&P);
+ RBGSL_SET_CLASS(ary, cool_conmin_pgrad_parameters);
+ return ary;
+}
+
+static VALUE rb_ool_conmin_spg_parameters_default(VALUE klass)
+{
+ ool_conmin_spg_parameters P;
+ VALUE ary;
+ ool_conmin_parameters_default(ool_conmin_minimizer_spg, (void*) &P);
+ ary = create_parameters_ary_spg(&P);
+ RBGSL_SET_CLASS(ary, cool_conmin_spg_parameters);
+ return ary;
+}
+
+static VALUE rb_ool_conmin_gencan_parameters_default(VALUE klass)
+{
+ ool_conmin_gencan_parameters P;
+ VALUE ary;
+ ool_conmin_parameters_default(ool_conmin_minimizer_gencan, (void*) &P);
+ ary = create_parameters_ary_gencan(&P);
+ RBGSL_SET_CLASS(ary, cool_conmin_gencan_parameters);
+ return ary;
+}
+
+/*************************************************/
+void Init_ool(VALUE module)
+{
+ VALUE mOOL, mConmin;
+ VALUE cool_conmin_minimizer;
+
+ mOOL = rb_define_module("OOL");
+ mConmin = rb_define_module_under(mOOL, "Conmin");
+ cool_conmin_function = rb_define_class_under(mConmin, "Function", cgsl_function);
+ cool_conmin_constraint = rb_define_class_under(mConmin, "Constraint", cGSL_Object);
+ cool_conmin_minimizer = rb_define_class_under(mConmin, "Minimizer", cGSL_Object);
+ cool_conmin_pgrad = rb_define_class_under(cool_conmin_minimizer, "Pgrad", cGSL_Object);
+ cool_conmin_spg = rb_define_class_under(cool_conmin_minimizer, "Spg", cGSL_Object);
+ cool_conmin_gencan = rb_define_class_under(cool_conmin_minimizer, "Gencan", cGSL_Object);
+
+ def_const(mOOL);
+
+ rb_define_singleton_method(cool_conmin_minimizer, "alloc", rb_ool_conmin_minimizer_alloc, -1);
+ rb_define_method(cool_conmin_minimizer, "set", rb_ool_conmin_minimizer_set, -1);
+ rb_define_method(cool_conmin_minimizer, "parameters_default", rb_ool_conmin_minimizer_parameters_default, 0);
+ rb_define_method(cool_conmin_minimizer, "name", rb_ool_conmin_minimizer_name, 0);
+ rb_define_method(cool_conmin_minimizer, "size", rb_ool_conmin_minimizer_size, 0);
+ rb_define_method(cool_conmin_minimizer, "f", rb_ool_conmin_minimizer_f, 0);
+ rb_define_method(cool_conmin_minimizer, "x", rb_ool_conmin_minimizer_x, 0);
+ rb_define_method(cool_conmin_minimizer, "dx", rb_ool_conmin_minimizer_dx, 0);
+ rb_define_method(cool_conmin_minimizer, "gradient", rb_ool_conmin_minimizer_gradient, 0);
+ rb_define_method(cool_conmin_minimizer, "minimum", rb_ool_conmin_minimizer_minimum, 0);
+ rb_define_method(cool_conmin_minimizer, "fcount", rb_ool_conmin_minimizer_fcount, 0);
+ rb_define_method(cool_conmin_minimizer, "gcount", rb_ool_conmin_minimizer_gcount, 0);
+ rb_define_method(cool_conmin_minimizer, "hcount", rb_ool_conmin_minimizer_hcount, 0);
+ rb_define_method(cool_conmin_minimizer, "is_optimal", rb_ool_conmin_minimizer_is_optimal, 0);
+ rb_define_method(cool_conmin_minimizer, "is_optimal?", rb_ool_conmin_minimizer_is_optimal2, 0);
+ rb_define_method(cool_conmin_minimizer, "iterate", rb_ool_conmin_minimizer_iterate, 0);
+ rb_define_method(cool_conmin_minimizer, "restart", rb_ool_conmin_minimizer_restart, 0);
+ rb_define_method(cool_conmin_minimizer, "parameters_get", rb_ool_conmin_minimizer_parameters_get, 0);
+ rb_define_method(cool_conmin_minimizer, "parameters_set", rb_ool_conmin_minimizer_parameters_set, 1);
+
+ rb_define_singleton_method(cool_conmin_function, "alloc", rb_ool_conmin_function_alloc, -1);
+ rb_define_method(cool_conmin_function, "set", rb_ool_conmin_function_set, -1);
+ rb_define_method(cool_conmin_function, "set_n", rb_ool_conmin_function_set_n, 1);
+ rb_define_alias(cool_conmin_function, "n=", "set_n");
+ rb_define_method(cool_conmin_function, "n", rb_ool_conmin_function_n, 0);
+ rb_define_method(cool_conmin_function, "params", rb_ool_conmin_function_params, 0);
+ rb_define_method(cool_conmin_function, "set_params", rb_ool_conmin_function_set_params, 1);
+ rb_define_alias(cool_conmin_function, "params=", "set_params");
+ rb_define_method(cool_conmin_function, "set_functions", rb_ool_conmin_function_set_functions, 1);
+ rb_define_alias(cool_conmin_function, "functions=", "set_functions");
+ rb_define_method(cool_conmin_function, "set_f", rb_ool_conmin_function_set_f, 1);
+ rb_define_alias(cool_conmin_function, "f=", "set_f");
+ rb_define_method(cool_conmin_function, "set_df", rb_ool_conmin_function_set_df, 1);
+ rb_define_alias(cool_conmin_function, "df=", "set_df");
+ rb_define_method(cool_conmin_function, "set_fdf", rb_ool_conmin_function_set_fdf, 1);
+ rb_define_alias(cool_conmin_function, "fdf=", "set_fdf");
+ rb_define_method(cool_conmin_function, "set_Hv", rb_ool_conmin_function_set_Hv, 1);
+ rb_define_alias(cool_conmin_function, "Hv=", "set_Hv");
+
+ rb_define_singleton_method(cool_conmin_constraint, "alloc", rb_ool_conmin_constraint_alloc,
+ -1);
+ rb_define_method(cool_conmin_constraint, "set", rb_ool_conmin_constraint_set, -1);
+ rb_define_method(cool_conmin_constraint, "set_n", rb_ool_conmin_constraint_set_n, 1);
+ rb_define_alias(cool_conmin_constraint, "n=", "set_n");
+ rb_define_method(cool_conmin_constraint, "set_L", rb_ool_conmin_constraint_set_L, 1);
+ rb_define_alias(cool_conmin_constraint, "L=", "set_L");
+ rb_define_method(cool_conmin_constraint, "set_U", rb_ool_conmin_constraint_set_U, 1);
+ rb_define_alias(cool_conmin_constraint, "U=", "set_U");
+ rb_define_method(cool_conmin_constraint, "set_LU", rb_ool_conmin_constraint_set_LU, 2);
+ rb_define_alias(cool_conmin_constraint, "LU=", "set_LU");
+
+ cool_conmin_pgrad_parameters = rb_define_class_under(cool_conmin_pgrad, "Parameters",
+ rb_cArray);
+ cool_conmin_spg_parameters = rb_define_class_under(cool_conmin_spg, "Parameters",
+ rb_cArray);
+ cool_conmin_gencan_parameters = rb_define_class_under(cool_conmin_gencan, "Parameters",
+ rb_cArray);
+ rb_define_singleton_method(cool_conmin_pgrad, "parameters_default",
+ rb_ool_conmin_pgrad_parameters_default, 0);
+ rb_define_singleton_method(cool_conmin_spg, "parameters_default",
+ rb_ool_conmin_spg_parameters_default, 0);
+ rb_define_singleton_method(cool_conmin_gencan, "parameters_default",
+ rb_ool_conmin_gencan_parameters_default, 0);
+}
+
+#endif
diff --git a/ext/gsl/permutation.c b/ext/gsl_native/permutation.c
similarity index 91%
rename from ext/gsl/permutation.c
rename to ext/gsl_native/permutation.c
index 2740a47..6961829 100644
--- a/ext/gsl/permutation.c
+++ b/ext/gsl_native/permutation.c
@@ -16,9 +16,9 @@
VALUE rb_gsl_permutation_alloc(VALUE klass, VALUE nn);
/*
- * Creates a new permutation of size n. The permutation is not initialized
- * and its elements are undefined. Use the method calloc if you want to create
- * a permutation which is initialized to the identity.
+ * Creates a new permutation of size n. The permutation is not initialized
+ * and its elements are undefined. Use the method calloc if you want to create
+ * a permutation which is initialized to the identity.
*/
VALUE rb_gsl_permutation_alloc(VALUE klass, VALUE nn)
{
@@ -51,12 +51,17 @@ static VALUE rb_gsl_permutation_init(VALUE obj)
return obj;
}
-void get_range_int_beg_en_n(VALUE range, int *beg, int *en, size_t *n, int *step);
+#ifndef CHECK_RANGE_OFFSET
+#define CHECK_RANGE_OFFSET(i) if (i < -((int) b->size) || i >= ((int) b->size)) \
+ rb_raise(rb_eRangeError, "offset %d out of range", i);
+#endif
+
static VALUE rb_gsl_permutation_get(int argc, VALUE *argv, VALUE obj)
{
gsl_permutation *b, *bnew;
gsl_index *p;
- int beg, en, i, step;
+ long beg;
+ int i;
size_t n, j, k;
Data_Get_Struct(obj, gsl_permutation, b);
switch (argc) {
@@ -67,6 +72,7 @@ static VALUE rb_gsl_permutation_get(int argc, VALUE *argv, VALUE obj)
switch (TYPE(argv[0])) {
case T_FIXNUM:
i = FIX2INT(argv[0]);
+ CHECK_RANGE_OFFSET(i);
if (i < 0) j = b->size + i; else j = (size_t) i;
return INT2FIX((int) b->data[j]);
break;
@@ -75,27 +81,30 @@ static VALUE rb_gsl_permutation_get(int argc, VALUE *argv, VALUE obj)
n = RARRAY_LEN(argv[0]);
bnew = gsl_permutation_alloc(n);
for (j = 0; j < n; j++) {
- i = FIX2INT(rb_ary_entry(argv[0], j));
- if (i < 0) k = b->size + i; else k = i;
- bnew->data[j] = b->data[k];
+ i = FIX2INT(rb_ary_entry(argv[0], j));
+ CHECK_RANGE_OFFSET(i);
+ if (i < 0) k = b->size + i; else k = (size_t) i;
+ bnew->data[j] = b->data[k];
}
- return Data_Wrap_Struct(CLASS_OF(argv[0]), 0, gsl_permutation_free, bnew);
+ return Data_Wrap_Struct(CLASS_OF(obj), 0, gsl_permutation_free, bnew);
break;
default:
if (PERMUTATION_P(argv[0])) {
- Data_Get_Struct(argv[0], gsl_index, p);
- bnew = gsl_permutation_alloc(p->size);
- for (j = 0; j < p->size; j++) bnew->data[j] = b->data[p->data[j]];
- return Data_Wrap_Struct(CLASS_OF(argv[0]), 0, gsl_permutation_free, bnew);
+ Data_Get_Struct(argv[0], gsl_index, p);
+ bnew = gsl_permutation_alloc(p->size);
+ for (j = 0; j < p->size; j++) bnew->data[j] = b->data[p->data[j]];
+ return Data_Wrap_Struct(CLASS_OF(argv[0]), 0, gsl_permutation_free, bnew);
} else if (CLASS_OF(argv[0]) == rb_cRange) {
- get_range_int_beg_en_n(argv[0], &beg, &en, &n, &step);
- bnew = gsl_permutation_alloc(n);
- for (j = 0; j < n; j++)
- bnew->data[j] = b->data[beg+j];
- return Data_Wrap_Struct(CLASS_OF(obj), 0, gsl_permutation_free, bnew);
+ rb_range_beg_len(argv[0], &beg, (long *) &n, (long) b->size, 2);
+ if (n == 0) rb_raise(rb_eRangeError, "range overflow");
+ if (n > b->size) n = b->size;
+ bnew = gsl_permutation_alloc(n);
+ for (j = 0; j < n; j++)
+ bnew->data[j] = b->data[beg+j];
+ return Data_Wrap_Struct(CLASS_OF(obj), 0, gsl_permutation_free, bnew);
} else {
- rb_raise(rb_eArgError, "wrong argument type %s (Fixnum, Array, or Range expected)", rb_class2name(CLASS_OF(argv[0])));
- break;
+ rb_raise(rb_eArgError, "wrong argument type %s (Fixnum, Array, or Range expected)", rb_class2name(CLASS_OF(argv[0])));
+ break;
}
}
break;
@@ -112,7 +121,6 @@ static VALUE rb_gsl_permutation_get(int argc, VALUE *argv, VALUE obj)
return Qnil;
}
-#ifdef GSL_1_1_LATER
static VALUE rb_gsl_permutation_clone(VALUE obj)
{
gsl_permutation *p, *p2 = NULL;
@@ -133,7 +141,6 @@ static VALUE rb_gsl_permutation_memcpy(VALUE obj, VALUE pp1, VALUE pp2)
gsl_permutation_memcpy(p1, p2);
return pp1;
}
-#endif
static VALUE rb_gsl_permutation_swap(VALUE obj, VALUE i, VALUE j)
{
@@ -271,7 +278,6 @@ static VALUE rb_gsl_permute_vector_inverse(VALUE obj, VALUE pp, VALUE vv)
}
/* singleton method */
-#ifdef GSL_1_2_LATER
static VALUE rb_gsl_permutation_mul(VALUE obj, VALUE ppa, VALUE ppb)
{
gsl_permutation *p = NULL;
@@ -291,7 +297,6 @@ static VALUE rb_gsl_permutation_mul(VALUE obj, VALUE ppa, VALUE ppb)
if (flag == 1) return obj;
else return Data_Wrap_Struct(cgsl_permutation, 0, gsl_permutation_free, p);
}
-#endif
static VALUE rb_gsl_permutation_print(VALUE obj);
@@ -367,9 +372,8 @@ static VALUE rb_gsl_permutation_fprintf(int argc, VALUE *argv, VALUE obj)
FILE *fp = NULL;
int status, flag = 0;
- if (argc != 1 && argc != 2) rb_raise(rb_eArgError,
- "wrong number of arguments (%d for 1 or 2)", argc);
-
+ if (argc != 1 && argc != 2) rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for 1 or 2)", argc);
Data_Get_Struct(obj, gsl_permutation, h);
fp = rb_gsl_open_writefile(argv[0], &flag);
if (argc == 1) {
@@ -409,7 +413,6 @@ static VALUE rb_gsl_permutation_fscanf(VALUE obj, VALUE io)
return INT2FIX(status);
}
-#ifdef GSL_1_2_LATER
static VALUE rb_gsl_permutation_linear_to_canonical(int argc, VALUE *argv, VALUE obj)
{
gsl_permutation *p, *q;
@@ -476,7 +479,6 @@ static VALUE rb_gsl_permutation_canonical_cycles(VALUE obj)
Data_Get_Struct(obj, gsl_permutation, p);
return INT2FIX(gsl_permutation_canonical_cycles(p));
}
-#endif
static VALUE rb_gsl_vector_permute(VALUE obj, VALUE pp)
{
@@ -537,10 +539,8 @@ void Init_gsl_permutation(VALUE module)
rb_define_alias(cgsl_permutation, "[]", "get");
rb_define_method(cgsl_permutation, "set", rb_gsl_permutation_set, 2);
rb_define_alias(cgsl_permutation, "[]=", "set");
-#ifdef GSL_1_1_LATER
rb_define_singleton_method(cgsl_permutation, "memcpy", rb_gsl_permutation_memcpy, 2);
rb_define_method(cgsl_permutation, "clone", rb_gsl_permutation_clone, 0);
-#endif
rb_define_method(cgsl_permutation, "swap", rb_gsl_permutation_swap, 2);
rb_define_method(cgsl_permutation, "valid", rb_gsl_permutation_valid, 0);
rb_define_method(cgsl_permutation, "valid?", rb_gsl_permutation_valid2, 0);
@@ -556,7 +556,7 @@ void Init_gsl_permutation(VALUE module)
rb_define_alias(cgsl_permutation, "permute", "permute_vector");
rb_define_method(cgsl_permutation, "permute_vector_inverse", rb_gsl_permutation_permute_vector_inverse, 1);
rb_define_alias(cgsl_permutation, "permute_inverse", "permute_vector_inverse");
-
+
rb_define_singleton_method(cgsl_permutation, "permute_vector", rb_gsl_permute_vector, 2);
rb_define_singleton_method(cgsl_permutation, "permute_vector_inverse", rb_gsl_permute_vector_inverse, 2);
rb_define_module_function(module, "permute_vector", rb_gsl_permute_vector, 2);
@@ -574,7 +574,6 @@ void Init_gsl_permutation(VALUE module)
rb_define_method(cgsl_permutation, "fscanf", rb_gsl_permutation_fscanf, 1);
rb_define_method(cgsl_permutation, "print", rb_gsl_permutation_print, 0);
-#ifdef GSL_1_2_LATER
rb_define_singleton_method(cgsl_permutation, "mul", rb_gsl_permutation_mul, 2);
rb_define_method(cgsl_permutation, "mul", rb_gsl_permutation_mul, 2);
rb_define_method(cgsl_permutation, "linear_to_canonical", rb_gsl_permutation_linear_to_canonical, -1);
@@ -585,7 +584,6 @@ void Init_gsl_permutation(VALUE module)
rb_define_method(cgsl_permutation, "inversions", rb_gsl_permutation_inversions, 0);
rb_define_method(cgsl_permutation, "linear_cycles", rb_gsl_permutation_linear_cycles, 0);
rb_define_method(cgsl_permutation, "canonical_cycles", rb_gsl_permutation_canonical_cycles, 0);
-#endif
rb_define_method(cgsl_vector, "permute", rb_gsl_vector_permute, 1);
rb_define_method(cgsl_vector, "permute_inverse", rb_gsl_vector_permute_inverse, 1);
@@ -594,3 +592,7 @@ void Init_gsl_permutation(VALUE module)
rb_define_alias(cgsl_permutation, "==", "equal?");
}
+
+#ifdef CHECK_RANGE_OFFSET
+#undef CHECK_RANGE_OFFSET
+#endif
diff --git a/ext/gsl/poly.c b/ext/gsl_native/poly.c
similarity index 90%
rename from ext/gsl/poly.c
rename to ext/gsl_native/poly.c
index cf32c2d..079ee1b 100644
--- a/ext/gsl/poly.c
+++ b/ext/gsl_native/poly.c
@@ -12,9 +12,6 @@
#include "include/rb_gsl_poly.h"
#include "include/rb_gsl_array.h"
#include "include/rb_gsl_common.h"
-#ifdef HAVE_NARARY_H
-#include "narray.h"
-#endif
void Init_gsl_poly_init(VALUE module);
void Init_gsl_poly_int_init(VALUE module);
@@ -22,7 +19,7 @@ void Init_gsl_poly2(VALUE module);
#define BASE_DOUBLE
#include "include/templates_on.h"
-#include "poly_source.c"
+#include "poly_source.h"
#include "include/templates_off.h"
void Init_gsl_poly(VALUE module)
{
@@ -33,7 +30,7 @@ void Init_gsl_poly(VALUE module)
#define BASE_INT
#include "include/templates_on.h"
-#include "poly_source.c"
+#include "poly_source.h"
#include "include/templates_off.h"
void Init_gsl_poly_int(VALUE module)
{
diff --git a/ext/gsl/poly2.c b/ext/gsl_native/poly2.c
similarity index 96%
rename from ext/gsl/poly2.c
rename to ext/gsl_native/poly2.c
index 4069bbe..a775441 100644
--- a/ext/gsl/poly2.c
+++ b/ext/gsl_native/poly2.c
@@ -48,7 +48,7 @@ static gsl_poly_int* mygsl_poly_hermite(int n1)
gsl_vector_int_memcpy(p1, p0);
}
gsl_vector_int_free(p2);
- gsl_vector_int_free(p1);
+ gsl_vector_int_free(p1);
break;
}
return p0;
@@ -87,7 +87,7 @@ static gsl_poly_int* mygsl_poly_cheb(int n1)
gsl_vector_int_memcpy(p1, p0);
}
gsl_vector_int_free(p2);
- gsl_vector_int_free(p1);
+ gsl_vector_int_free(p1);
break;
}
return p0;
@@ -125,7 +125,7 @@ static gsl_poly_int* mygsl_poly_chebII(int n1)
gsl_vector_int_memcpy(p1, p0);
}
gsl_vector_int_free(p2);
- gsl_vector_int_free(p1);
+ gsl_vector_int_free(p1);
break;
}
return p0;
@@ -195,7 +195,7 @@ static gsl_poly_int* mygsl_poly_bell(int n1)
gsl_vector_int_memcpy(p0, p1);
mygsl_vector_int_shift(p0, n);
for (j = 0; j < n; j++) {
- gsl_vector_int_set(p1, j, gsl_vector_int_get(p1, j+1)*(j+1));
+ gsl_vector_int_set(p1, j, gsl_vector_int_get(p1, j+1)*(j+1));
}
gsl_vector_int_set(p1, n, 0);
mygsl_vector_int_shift(p1, n);
@@ -203,14 +203,14 @@ static gsl_poly_int* mygsl_poly_bell(int n1)
/* save for the next iteration */
gsl_vector_int_memcpy(p1, p0);
}
- gsl_vector_int_free(p1);
+ gsl_vector_int_free(p1);
break;
}
return p0;
}
static VALUE rb_gsl_poly_define_poly(VALUE klass, VALUE order,
- gsl_poly_int* (*f)(int n1)) {
+ gsl_poly_int* (*f)(int n1)) {
int n1;
gsl_poly_int *pnew = NULL;
CHECK_FIXNUM(order);
diff --git a/ext/gsl/poly_source.c b/ext/gsl_native/poly_source.h
similarity index 80%
rename from ext/gsl/poly_source.c
rename to ext/gsl_native/poly_source.h
index 52aa52e..914456a 100644
--- a/ext/gsl/poly_source.c
+++ b/ext/gsl_native/poly_source.h
@@ -51,28 +51,21 @@
VALUE cgsl_poly, cgsl_poly_int;
VALUE cgsl_poly_workspace;
VALUE cgsl_poly_complex_workspace;
-#ifdef GSL_1_1_LATER
VALUE cgsl_poly_dd;
VALUE cgsl_poly_taylor;
#endif
-#endif
#ifdef BASE_INT
double gsl_poly_int_eval(const BASE c[], const int len, const double x)
{
int i;
double ans = (double) c[len-1];
- for(i=len-1; i>0; i--) ans = (double) c[i-1] + x * ans;
+ for(i = len-1; i>0; i--) ans = (double) c[i-1] + x * ans;
return ans;
}
#endif
#ifdef BASE_DOUBLE
-#ifdef HAVE_NARRAY_H
-#include "include/rb_gsl_with_narray.h"
-#endif
-#ifdef GSL_1_11_LATER
static VALUE rb_gsl_complex_poly_complex_eval(VALUE a, VALUE b);
-#endif
static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
{
gsl_vector *v = NULL, *vx, *vnew;
@@ -82,22 +75,15 @@ static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
size_t i, N, n;
VALUE val;
double *ptr0;
- double *ptr1, *ptr2;
-#ifdef HAVE_NARRAY_H
- int shape[1];
-#endif
-#ifdef GSL_1_11_LATER
+ double *ptr1, *ptr2;
gsl_complex *z, zz;
gsl_vector_complex *vz, *vznew;
- if (rb_obj_is_kind_of(a, cgsl_vector_complex))
+ if (rb_obj_is_kind_of(a, cgsl_vector_complex))
return rb_gsl_complex_poly_complex_eval(a, x);
-#endif
switch (TYPE(a)) {
case T_ARRAY:
-#ifdef GSL_1_11_LATER
- if (rb_obj_is_kind_of(rb_ary_entry(a, 0), cgsl_complex))
+ if (rb_obj_is_kind_of(rb_ary_entry(a, 0), cgsl_complex))
return rb_gsl_complex_poly_complex_eval(a, x);
-#endif
v = make_cvector_from_rarray(a);
N = v->size;
ptr0 = v->data;
@@ -115,7 +101,7 @@ static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
#endif
} else {
rb_raise(rb_eTypeError, "Wrong argument type %s (Array, GSL::Vector or NArray expected)",
- rb_class2name(CLASS_OF(a)));
+ rb_class2name(CLASS_OF(a)));
}
}
switch (TYPE(x)) {
@@ -123,7 +109,7 @@ static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
case T_BIGNUM:
case T_FLOAT:
val = rb_float_new(gsl_poly_eval(ptr0, N, NUM2DBL(x)));
- break;
+ break;
case T_ARRAY:
n = RARRAY_LEN(x);
val = rb_ary_new2(n);
@@ -131,7 +117,7 @@ static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
rslt = gsl_poly_eval(ptr0, N, NUM2DBL(rb_ary_entry(x, i)));
rb_ary_store(val, i, rb_float_new(rslt));
}
- break;
+ break;
default:
if (rb_obj_is_kind_of(x, cgsl_vector)) {
Data_Get_Struct(x, gsl_vector, vx);
@@ -143,19 +129,19 @@ static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
} else if (rb_obj_is_kind_of(x, cgsl_matrix)) {
Data_Get_Struct(x, gsl_matrix, mx);
mnew = gsl_matrix_alloc(mx->size1, mx->size2);
- val = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
+ val = Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
n = mx->size1*mx->size2;
ptr1 = mx->data;
ptr2 = mnew->data;
#ifdef HAVE_NARRAY_H
} else if (NA_IsNArray(x)) {
+ int shape[1];
shape[0] = NA_TOTAL(x);
n = shape[0];
val = na_make_object(NA_DFLOAT, 1, shape, CLASS_OF(x));
ptr1 = NA_PTR_TYPE(x, double*);
- ptr2 = NA_PTR_TYPE(val, double*);
+ ptr2 = NA_PTR_TYPE(val, double*);
#endif
-#ifdef GSL_1_11_LATER
} else if (rb_obj_is_kind_of(x, cgsl_complex)) {
Data_Get_Struct(x, gsl_complex, z);
zz = gsl_poly_complex_eval(ptr0, N, *z);
@@ -166,15 +152,14 @@ static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
Data_Get_Struct(x, gsl_vector_complex, vz);
vznew = gsl_vector_complex_alloc(vz->size);
for (i = 0; i < vz->size; i++) {
- zz = gsl_poly_complex_eval(ptr0, N, gsl_vector_complex_get(vz, i));
- gsl_vector_complex_set(vznew, i, zz);
+ zz = gsl_poly_complex_eval(ptr0, N, gsl_vector_complex_get(vz, i));
+ gsl_vector_complex_set(vznew, i, zz);
}
if (flag == 1) gsl_vector_free(v);
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vznew);
-#endif
} else {
rb_raise(rb_eTypeError, "Wrong argument type %s (A number, Array, GSL::Vector or NArray expected)",
- rb_class2name(CLASS_OF(a)));
+ rb_class2name(CLASS_OF(a)));
}
for (i = 0; i < n; i++) {
ptr2[i] = gsl_poly_eval(ptr0, N, ptr1[i]);
@@ -183,7 +168,7 @@ static VALUE rb_gsl_poly_eval_singleton(VALUE klass, VALUE a, VALUE x)
if (flag == 1) gsl_vector_free(v);
return val;
}
-#ifdef GSL_1_11_LATER
+
static VALUE rb_gsl_complex_poly_complex_eval(VALUE a, VALUE b)
{
gsl_vector_complex *coef = NULL, *zb, *vnew;
@@ -207,7 +192,6 @@ static VALUE rb_gsl_complex_poly_complex_eval(VALUE a, VALUE b)
} else {
rb_raise(rb_eTypeError, "rb_gsl_complex_poly_complex_solve: wrong argument type %s (GSL::Vector::Complex or Array expected)\n", rb_class2name(CLASS_OF(a)));
}
-
switch (TYPE(b)) {
case T_FIXNUM:
case T_BIGNUM:
@@ -238,8 +222,8 @@ static VALUE rb_gsl_complex_poly_complex_eval(VALUE a, VALUE b)
vnew = gsl_vector_complex_alloc(zb->size);
ret = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vnew);
for (i = 0; i < zb->size; i++) {
- z = gsl_vector_complex_get(zb, i);
- gsl_vector_complex_set(vnew, i, gsl_complex_poly_complex_eval(zc, N, z));
+ z = gsl_vector_complex_get(zb, i);
+ gsl_vector_complex_set(vnew, i, gsl_complex_poly_complex_eval(zc, N, z));
}
} else {
rb_raise(rb_eTypeError, "Wrong argument type %s.\n", rb_class2name(CLASS_OF(b)));
@@ -249,7 +233,6 @@ static VALUE rb_gsl_complex_poly_complex_eval(VALUE a, VALUE b)
return ret;
}
#endif
-#endif
static VALUE FUNCTION(rb_gsl_poly,eval)(VALUE obj, VALUE xx)
{
@@ -261,16 +244,9 @@ static VALUE FUNCTION(rb_gsl_poly,eval)(VALUE obj, VALUE xx)
VALUE x, ary;
size_t i, j;
#ifdef BASE_DOUBLE
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- double *ptr1, *ptr2;
- size_t n;
-#endif
-#ifdef GSL_1_11_LATER
gsl_complex *z, zz;
gsl_vector_complex *vz, *vznew;
#endif
-#endif
Data_Get_Struct(obj, GSL_TYPE(gsl_poly), p);
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
@@ -293,6 +269,9 @@ static VALUE FUNCTION(rb_gsl_poly,eval)(VALUE obj, VALUE xx)
#ifdef BASE_DOUBLE
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *na;
+ double *ptr1, *ptr2;
+ size_t n;
GetNArray(xx, na);
ptr1 = (double*) na->ptr;
n = na->total;
@@ -307,21 +286,20 @@ static VALUE FUNCTION(rb_gsl_poly,eval)(VALUE obj, VALUE xx)
Data_Get_Struct(xx, GSL_TYPE(gsl_vector), v);
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- gsl_vector_set(vnew, i, FUNCTION(gsl_poly,eval)(p->data, p->size, FUNCTION(gsl_vector,get)(v, i)));
+ gsl_vector_set(vnew, i, FUNCTION(gsl_poly,eval)(p->data, p->size, FUNCTION(gsl_vector,get)(v, i)));
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
} else if (MAT_P(xx)) {
Data_Get_Struct(xx, GSL_TYPE(gsl_matrix), m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- gsl_matrix_set(mnew, i, j,
- FUNCTION(gsl_poly,eval)(p->data, p->size, FUNCTION(gsl_matrix,get)(m, i, j)));
- }
+ for (j = 0; j < m->size2; j++) {
+ gsl_matrix_set(mnew, i, j,
+ FUNCTION(gsl_poly,eval)(p->data, p->size, FUNCTION(gsl_matrix,get)(m, i, j)));
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
#ifdef BASE_DOUBLE
-#ifdef GSL_1_11_LATER
} else if (rb_obj_is_kind_of(xx, cgsl_complex)) {
Data_Get_Struct(xx, gsl_complex, z);
zz = gsl_poly_complex_eval(p->data, p->size, *z);
@@ -331,12 +309,11 @@ static VALUE FUNCTION(rb_gsl_poly,eval)(VALUE obj, VALUE xx)
Data_Get_Struct(xx, gsl_vector_complex, vz);
vznew = gsl_vector_complex_alloc(vz->size);
for (i = 0; i < vz->size; i++) {
- zz = gsl_poly_complex_eval(p->data, p->size, gsl_vector_complex_get(vz, i));
- gsl_vector_complex_set(vznew, i, zz);
+ zz = gsl_poly_complex_eval(p->data, p->size, gsl_vector_complex_get(vz, i));
+ gsl_vector_complex_set(vznew, i, zz);
}
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vznew);
#endif
-#endif
} else {
rb_raise(rb_eTypeError, "wrong argument type");
}
@@ -355,12 +332,6 @@ static VALUE FUNCTION(rb_gsl_poly,eval2)(int argc, VALUE *argv, VALUE obj)
gsl_matrix *mnew = NULL;
VALUE xx, x, ary;
size_t i, j, size;
-#ifdef BASE_DOUBLE
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- double *ptr1, *ptr2;
-#endif
-#endif
switch (argc) {
case 2:
Data_Get_Struct(argv[0], GSL_TYPE(gsl_poly), p);
@@ -396,6 +367,8 @@ static VALUE FUNCTION(rb_gsl_poly,eval2)(int argc, VALUE *argv, VALUE obj)
#ifdef BASE_DOUBLE
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *na;
+ double *ptr1, *ptr2;
GetNArray(xx, na);
ptr1 = (double*) na->ptr;
size = na->total;
@@ -410,17 +383,17 @@ static VALUE FUNCTION(rb_gsl_poly,eval2)(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(xx, GSL_TYPE(gsl_vector), v);
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- gsl_vector_set(vnew, i, FUNCTION(gsl_poly,eval)(p->data, size, FUNCTION(gsl_vector,get)(v, i)));
+ gsl_vector_set(vnew, i, FUNCTION(gsl_poly,eval)(p->data, size, FUNCTION(gsl_vector,get)(v, i)));
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
} else if (MAT_P(xx)) {
Data_Get_Struct(xx, GSL_TYPE(gsl_matrix), m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- gsl_matrix_set(mnew, i, j,
- FUNCTION(gsl_poly,eval)(p->data, size, FUNCTION(gsl_matrix,get)(m, i, j)));
- }
+ for (j = 0; j < m->size2; j++) {
+ gsl_matrix_set(mnew, i, j,
+ FUNCTION(gsl_poly,eval)(p->data, size, FUNCTION(gsl_matrix,get)(m, i, j)));
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -441,29 +414,29 @@ static VALUE FUNCTION(rb_gsl_poly,solve_quadratic)(int argc, VALUE *argv, VALUE
switch (argc) {
case 3:
n = gsl_poly_solve_quadratic(NUMCONV2(argv[0]), NUMCONV2(argv[1]), NUMCONV2(argv[2]),
- &x0, &x1);
+ &x0, &x1);
break;
case 1:
switch (TYPE(argv[0])) {
case T_ARRAY:
- n = gsl_poly_solve_quadratic(NUMCONV2(rb_ary_entry(argv[0], 0)),
- NUMCONV2(rb_ary_entry(argv[0], 1)),
- NUMCONV2(rb_ary_entry(argv[0], 2)),
- &x0, &x1);
+ n = gsl_poly_solve_quadratic(NUMCONV2(rb_ary_entry(argv[0], 0)),
+ NUMCONV2(rb_ary_entry(argv[0], 1)),
+ NUMCONV2(rb_ary_entry(argv[0], 2)),
+ &x0, &x1);
break;
default:
CHECK_VEC(argv[0]);
Data_Get_Struct(argv[0], GSL_TYPE(gsl_poly), v);
n = gsl_poly_solve_quadratic(FUNCTION(gsl_vector,get)(v, 0),
- FUNCTION(gsl_vector,get)(v, 1),
- FUNCTION(gsl_vector,get)(v, 2),
- &x0, &x1);
+ FUNCTION(gsl_vector,get)(v, 1),
+ FUNCTION(gsl_vector,get)(v, 2),
+ &x0, &x1);
break;
}
break;
default:
- rb_raise(rb_eArgError,
- "wrong number of arguments (3 numbers or 1 array or 1 vector)");
+ rb_raise(rb_eArgError,
+ "wrong number of arguments (3 numbers or 1 array or 1 vector)");
break;
}
// If n == 0, we want to return an empty gsl_vector, but gsl_vectors can'y be
@@ -473,8 +446,8 @@ static VALUE FUNCTION(rb_gsl_poly,solve_quadratic)(int argc, VALUE *argv, VALUE
}
r = gsl_vector_alloc(n);
switch(n) {
- case 2: gsl_vector_set(r, 1, x1); /* fall through */
- case 1: gsl_vector_set(r, 0, x0);
+ case 2: gsl_vector_set(r, 1, x1); /* fall through */
+ case 1: gsl_vector_set(r, 0, x0);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, r);
}
@@ -487,31 +460,31 @@ static VALUE FUNCTION(rb_gsl_poly,complex_solve_quadratic)(int argc, VALUE *argv
int n;
switch (argc) {
case 3:
- n = gsl_poly_complex_solve_quadratic(NUMCONV2(argv[0]),
- NUMCONV2(argv[1]), NUMCONV2(argv[2]),
- &z0, &z1);
+ n = gsl_poly_complex_solve_quadratic(NUMCONV2(argv[0]),
+ NUMCONV2(argv[1]), NUMCONV2(argv[2]),
+ &z0, &z1);
break;
case 1:
switch (TYPE(argv[0])) {
case T_ARRAY:
- n = gsl_poly_complex_solve_quadratic(NUMCONV2(rb_ary_entry(argv[0], 0)),
- NUMCONV2(rb_ary_entry(argv[0], 1)),
- NUMCONV2(rb_ary_entry(argv[0], 2)),
- &z0, &z1);
+ n = gsl_poly_complex_solve_quadratic(NUMCONV2(rb_ary_entry(argv[0], 0)),
+ NUMCONV2(rb_ary_entry(argv[0], 1)),
+ NUMCONV2(rb_ary_entry(argv[0], 2)),
+ &z0, &z1);
break;
default:
CHECK_VEC(argv[0]);
Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), v);
n = gsl_poly_complex_solve_quadratic(FUNCTION(gsl_vector,get)(v, 0),
- FUNCTION(gsl_vector,get)(v, 1),
- FUNCTION(gsl_vector,get)(v, 2),
- &z0, &z1);
+ FUNCTION(gsl_vector,get)(v, 1),
+ FUNCTION(gsl_vector,get)(v, 2),
+ &z0, &z1);
break;
}
break;
default:
- rb_raise(rb_eArgError,
- "wrong number of arguments (3 numbers or 1 array or 1 vector)");
+ rb_raise(rb_eArgError,
+ "wrong number of arguments (3 numbers or 1 array or 1 vector)");
break;
}
// If n == 0, we want to return an empty gsl_vector, but gsl_vectors can'y be
@@ -521,8 +494,8 @@ static VALUE FUNCTION(rb_gsl_poly,complex_solve_quadratic)(int argc, VALUE *argv
}
r = gsl_vector_complex_alloc(n);
switch(n) {
- case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
- case 1: gsl_vector_complex_set(r, 0, z0);
+ case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
+ case 1: gsl_vector_complex_set(r, 0, z0);
}
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, r);
}
@@ -536,36 +509,36 @@ static VALUE FUNCTION(rb_gsl_poly,solve_cubic)(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 3:
n = gsl_poly_solve_cubic(NUMCONV2(argv[0]), NUMCONV2(argv[1]), NUMCONV2(argv[2]),
- &x0, &x1, &x2);
+ &x0, &x1, &x2);
break;
case 1:
switch (TYPE(argv[0])) {
case T_ARRAY:
- n = gsl_poly_solve_cubic(NUMCONV2(rb_ary_entry(argv[0], 0)),
- NUMCONV2(rb_ary_entry(argv[0], 1)),
- NUMCONV2(rb_ary_entry(argv[0], 2)),
- &x0, &x1, &x2);
+ n = gsl_poly_solve_cubic(NUMCONV2(rb_ary_entry(argv[0], 0)),
+ NUMCONV2(rb_ary_entry(argv[0], 1)),
+ NUMCONV2(rb_ary_entry(argv[0], 2)),
+ &x0, &x1, &x2);
break;
default:
CHECK_VEC(argv[0]);
Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), v);
n = gsl_poly_solve_cubic(FUNCTION(gsl_vector,get)(v, 0),
- FUNCTION(gsl_vector,get)(v, 1),
- FUNCTION(gsl_vector,get)(v, 2),
- &x0, &x1, &x2);
+ FUNCTION(gsl_vector,get)(v, 1),
+ FUNCTION(gsl_vector,get)(v, 2),
+ &x0, &x1, &x2);
break;
}
break;
default:
- rb_raise(rb_eArgError,
- "wrong number of arguments (3 numbers or 1 array or 1 vector)");
+ rb_raise(rb_eArgError,
+ "wrong number of arguments (3 numbers or 1 array or 1 vector)");
break;
}
r = gsl_vector_alloc(n);
switch(n) {
- case 3: gsl_vector_set(r, 2, x2); /* fall through */
- case 2: gsl_vector_set(r, 1, x1); /* fall through */
- case 1: gsl_vector_set(r, 0, x0);
+ case 3: gsl_vector_set(r, 2, x2); /* fall through */
+ case 2: gsl_vector_set(r, 1, x1); /* fall through */
+ case 1: gsl_vector_set(r, 0, x0);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, r);
}
@@ -579,36 +552,36 @@ static VALUE FUNCTION(rb_gsl_poly,complex_solve_cubic)(int argc, VALUE *argv, VA
switch (argc) {
case 3:
n = gsl_poly_complex_solve_cubic(NUMCONV2(argv[0]), NUMCONV2(argv[1]), NUMCONV2(argv[2]),
- &z0, &z1, &z2);
+ &z0, &z1, &z2);
break;
case 1:
switch (TYPE(argv[0])) {
case T_ARRAY:
- n = gsl_poly_complex_solve_cubic(NUMCONV2(rb_ary_entry(argv[0], 0)),
- NUMCONV2(rb_ary_entry(argv[0], 1)),
- NUMCONV2(rb_ary_entry(argv[0], 2)),
- &z0, &z1, &z2);
+ n = gsl_poly_complex_solve_cubic(NUMCONV2(rb_ary_entry(argv[0], 0)),
+ NUMCONV2(rb_ary_entry(argv[0], 1)),
+ NUMCONV2(rb_ary_entry(argv[0], 2)),
+ &z0, &z1, &z2);
break;
default:
CHECK_VEC(argv[0]);
Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), v);
n = gsl_poly_complex_solve_cubic(FUNCTION(gsl_vector,get)(v, 0),
- FUNCTION(gsl_vector,get)(v, 1),
- FUNCTION(gsl_vector,get)(v, 2),
- &z0, &z1, &z2);
+ FUNCTION(gsl_vector,get)(v, 1),
+ FUNCTION(gsl_vector,get)(v, 2),
+ &z0, &z1, &z2);
break;
}
break;
default:
- rb_raise(rb_eArgError,
- "wrong number of arguments (3 numbers or 1 array or 1 vector)");
+ rb_raise(rb_eArgError,
+ "wrong number of arguments (3 numbers or 1 array or 1 vector)");
break;
}
r = gsl_vector_complex_alloc(n);
switch(n) {
- case 3: gsl_vector_complex_set(r, 2, z2); /* fall through */
- case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
- case 1: gsl_vector_complex_set(r, 0, z0);
+ case 3: gsl_vector_complex_set(r, 2, z2); /* fall through */
+ case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
+ case 1: gsl_vector_complex_set(r, 0, z0);
}
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, r);
}
@@ -623,40 +596,40 @@ static VALUE FUNCTION(rb_gsl_poly,solve_quartic)(int argc, VALUE *argv, VALUE ob
switch (argc) {
case 4:
n = gsl_poly_solve_quartic(NUMCONV2(argv[0]), NUMCONV2(argv[1]), NUMCONV2(argv[2]),
- NUMCONV2(argv[3]),
- &x0, &x1, &x2, &x3);
+ NUMCONV2(argv[3]),
+ &x0, &x1, &x2, &x3);
break;
case 1:
switch (TYPE(argv[0])) {
case T_ARRAY:
- n = gsl_poly_solve_quartic(NUMCONV2(rb_ary_entry(argv[0], 0)),
- NUMCONV2(rb_ary_entry(argv[0], 1)),
- NUMCONV2(rb_ary_entry(argv[0], 2)),
- NUMCONV2(rb_ary_entry(argv[0], 3)),
- &x0, &x1, &x2, &x3);
+ n = gsl_poly_solve_quartic(NUMCONV2(rb_ary_entry(argv[0], 0)),
+ NUMCONV2(rb_ary_entry(argv[0], 1)),
+ NUMCONV2(rb_ary_entry(argv[0], 2)),
+ NUMCONV2(rb_ary_entry(argv[0], 3)),
+ &x0, &x1, &x2, &x3);
break;
default:
CHECK_VEC(argv[0]);
Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), v);
n = gsl_poly_solve_quartic(FUNCTION(gsl_vector,get)(v, 0),
- FUNCTION(gsl_vector,get)(v, 1),
- FUNCTION(gsl_vector,get)(v, 2),
- FUNCTION(gsl_vector,get)(v, 3),
- &x0, &x1, &x2, &x3);
+ FUNCTION(gsl_vector,get)(v, 1),
+ FUNCTION(gsl_vector,get)(v, 2),
+ FUNCTION(gsl_vector,get)(v, 3),
+ &x0, &x1, &x2, &x3);
break;
}
break;
default:
- rb_raise(rb_eArgError,
- "wrong number of arguments (3 numbers or 1 array or 1 vector)");
+ rb_raise(rb_eArgError,
+ "wrong number of arguments (3 numbers or 1 array or 1 vector)");
break;
}
r = gsl_vector_alloc(n);
switch(n) {
- case 4: gsl_vector_set(r, 3, x3); /* fall through */
- case 3: gsl_vector_set(r, 2, x2); /* fall through */
- case 2: gsl_vector_set(r, 1, x1); /* fall through */
- case 1: gsl_vector_set(r, 0, x0);
+ case 4: gsl_vector_set(r, 3, x3); /* fall through */
+ case 3: gsl_vector_set(r, 2, x2); /* fall through */
+ case 2: gsl_vector_set(r, 1, x1); /* fall through */
+ case 1: gsl_vector_set(r, 0, x0);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, r);
}
@@ -669,41 +642,41 @@ static VALUE FUNCTION(rb_gsl_poly,complex_solve_quartic)(int argc, VALUE *argv,
int n;
switch (argc) {
case 4:
- n = gsl_poly_complex_solve_quartic(NUMCONV2(argv[0]), NUMCONV2(argv[1]),
- NUMCONV2(argv[2]), NUMCONV2(argv[3]),
- &z0, &z1, &z2, &z3);
+ n = gsl_poly_complex_solve_quartic(NUMCONV2(argv[0]), NUMCONV2(argv[1]),
+ NUMCONV2(argv[2]), NUMCONV2(argv[3]),
+ &z0, &z1, &z2, &z3);
break;
case 1:
switch (TYPE(argv[0])) {
case T_ARRAY:
- n = gsl_poly_complex_solve_quartic(NUMCONV2(rb_ary_entry(argv[0], 0)),
- NUMCONV2(rb_ary_entry(argv[0], 1)),
- NUMCONV2(rb_ary_entry(argv[0], 2)),
- NUMCONV2(rb_ary_entry(argv[0], 3)),
- &z0, &z1, &z2, &z3);
+ n = gsl_poly_complex_solve_quartic(NUMCONV2(rb_ary_entry(argv[0], 0)),
+ NUMCONV2(rb_ary_entry(argv[0], 1)),
+ NUMCONV2(rb_ary_entry(argv[0], 2)),
+ NUMCONV2(rb_ary_entry(argv[0], 3)),
+ &z0, &z1, &z2, &z3);
break;
default:
CHECK_VEC(argv[0]);
Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), v);
n = gsl_poly_complex_solve_quartic(FUNCTION(gsl_vector,get)(v, 0),
- FUNCTION(gsl_vector,get)(v, 1),
- FUNCTION(gsl_vector,get)(v, 2),
- FUNCTION(gsl_vector,get)(v, 3),
- &z0, &z1, &z2, &z3);
+ FUNCTION(gsl_vector,get)(v, 1),
+ FUNCTION(gsl_vector,get)(v, 2),
+ FUNCTION(gsl_vector,get)(v, 3),
+ &z0, &z1, &z2, &z3);
break;
}
break;
default:
- rb_raise(rb_eArgError,
- "wrong number of arguments (3 numbers or 1 array or 1 vector)");
+ rb_raise(rb_eArgError,
+ "wrong number of arguments (3 numbers or 1 array or 1 vector)");
break;
}
r = gsl_vector_complex_alloc(n);
switch(n) {
- case 4: gsl_vector_complex_set(r, 0, z0); /* fall through */
- case 3: gsl_vector_complex_set(r, 1, z1); /* fall through */
- case 2: gsl_vector_complex_set(r, 2, z2); /* fall through */
- case 1: gsl_vector_complex_set(r, 3, z3);
+ case 4: gsl_vector_complex_set(r, 0, z0); /* fall through */
+ case 3: gsl_vector_complex_set(r, 1, z1); /* fall through */
+ case 2: gsl_vector_complex_set(r, 2, z2); /* fall through */
+ case 1: gsl_vector_complex_set(r, 3, z3);
}
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, r);
}
@@ -809,20 +782,19 @@ static VALUE FUNCTION(rb_gsl_poly,solve_quadratic2)(VALUE obj)
n = gsl_poly_solve_quadratic(a2, a1, a0, &x0, &x1);
r = gsl_vector_alloc(n);
switch(n) {
- case 2: gsl_vector_set(r, 1, x1); /* fall through */
- case 1: gsl_vector_set(r, 0, x0);
+ case 2: gsl_vector_set(r, 1, x1); /* fall through */
+ case 1: gsl_vector_set(r, 0, x0);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, r);
} else {
n = gsl_poly_complex_solve_quadratic(a2, a1, a0, &z0, &z1);
r2 = gsl_vector_complex_alloc(n);
switch(n) {
- case 2: gsl_vector_complex_set(r2, 1, z1); /* fall through */
- case 1: gsl_vector_complex_set(r2, 0, z0);
+ case 2: gsl_vector_complex_set(r2, 1, z1); /* fall through */
+ case 1: gsl_vector_complex_set(r2, 0, z0);
}
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, r2);
}
-
}
@@ -843,8 +815,8 @@ static VALUE FUNCTION(rb_gsl_poly,complex_solve_quadratic2)(VALUE obj)
n = gsl_poly_complex_solve_quadratic(a2, a1, a0, &z0, &z1);
r = gsl_vector_complex_alloc(n);
switch(n) {
- case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
- case 1: gsl_vector_complex_set(r, 0, z0);
+ case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
+ case 1: gsl_vector_complex_set(r, 0, z0);
}
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, r);
}
@@ -862,16 +834,16 @@ static VALUE FUNCTION(rb_gsl_poly,solve_cubic2)(VALUE obj)
if (v->size < 4) {
rb_raise(rb_eArgError, "the order of the object is less than 4.");
}
- a3 = FUNCTION(gsl_vector,get)(v, 3);
+ a3 = FUNCTION(gsl_vector,get)(v, 3);
a2 = FUNCTION(gsl_vector,get)(v, 2)/a3; /* coefficients */
a1 = FUNCTION(gsl_vector,get)(v, 1)/a3;
a0 = FUNCTION(gsl_vector,get)(v, 0)/a3;
n = gsl_poly_solve_cubic(a2, a1, a0, &x0, &x1, &x2);
r = gsl_vector_alloc(n);
switch(n) {
- case 3: gsl_vector_set(r, 2, x2); /* fall through */
- case 2: gsl_vector_set(r, 1, x1); /* fall through */
- case 1: gsl_vector_set(r, 0, x0);
+ case 3: gsl_vector_set(r, 2, x2); /* fall through */
+ case 2: gsl_vector_set(r, 1, x1); /* fall through */
+ case 1: gsl_vector_set(r, 0, x0);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, r);
}
@@ -887,16 +859,16 @@ static VALUE FUNCTION(rb_gsl_poly,complex_solve_cubic2)(VALUE obj)
if (v->size < 4) {
rb_raise(rb_eArgError, "the order of the object is less than 4.");
}
- a3 = FUNCTION(gsl_vector,get)(v, 3);
+ a3 = FUNCTION(gsl_vector,get)(v, 3);
a2 = FUNCTION(gsl_vector,get)(v, 2)/a3; /* coefficients */
a1 = FUNCTION(gsl_vector,get)(v, 1)/a3;
a0 = FUNCTION(gsl_vector,get)(v, 0)/a3;
n = gsl_poly_complex_solve_cubic(a2, a1, a0, &z0, &z1, &z2);
r = gsl_vector_complex_alloc(n);
switch(n) {
- case 3: gsl_vector_complex_set(r, 2, z2); /* fall through */
- case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
- case 1: gsl_vector_complex_set(r, 0, z0);
+ case 3: gsl_vector_complex_set(r, 2, z2); /* fall through */
+ case 2: gsl_vector_complex_set(r, 1, z1); /* fall through */
+ case 1: gsl_vector_complex_set(r, 0, z0);
}
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, r);
}
@@ -915,8 +887,8 @@ static VALUE FUNCTION(rb_gsl_poly,solve_quartic2)(VALUE obj)
if (v->size < 5) {
rb_raise(rb_eArgError, "the order of the object is less than 4.");
}
- a4 = FUNCTION(gsl_vector,get)(v, 4);
- a3 = FUNCTION(gsl_vector,get)(v, 3)/a4;
+ a4 = FUNCTION(gsl_vector,get)(v, 4);
+ a3 = FUNCTION(gsl_vector,get)(v, 3)/a4;
a2 = FUNCTION(gsl_vector,get)(v, 2)/a4; /* coefficients */
a1 = FUNCTION(gsl_vector,get)(v, 1)/a4;
a0 = FUNCTION(gsl_vector,get)(v, 0)/a4;
@@ -941,8 +913,8 @@ static VALUE FUNCTION(rb_gsl_poly,complex_solve_quartic2)(VALUE obj)
if (v->size < 5) {
rb_raise(rb_eArgError, "the order of the object is less than 4.");
}
- a4 = FUNCTION(gsl_vector,get)(v, 4);
- a3 = FUNCTION(gsl_vector,get)(v, 3)/a4;
+ a4 = FUNCTION(gsl_vector,get)(v, 4);
+ a3 = FUNCTION(gsl_vector,get)(v, 3)/a4;
a2 = FUNCTION(gsl_vector,get)(v, 2)/a4; /* coefficients */
a1 = FUNCTION(gsl_vector,get)(v, 1)/a4;
a0 = FUNCTION(gsl_vector,get)(v, 0)/a4;
@@ -978,7 +950,6 @@ VALUE FUNCTION(rb_gsl_poly,complex_solve2)(int argc, VALUE *argv, VALUE obj)
for (i = 0; i < v->size; i++) {
gsl_vector_set(a, i, FUNCTION(gsl_vector,get)(v, i));
}
-
if (argc == 1 && rb_obj_is_kind_of(argv[0], cgsl_poly_workspace)) {
Data_Get_Struct(argv[0], gsl_poly_complex_workspace, w);
flag = 0;
@@ -986,7 +957,6 @@ VALUE FUNCTION(rb_gsl_poly,complex_solve2)(int argc, VALUE *argv, VALUE obj)
w = gsl_poly_complex_workspace_alloc(size);
flag = 1;
}
-
/*status =*/ gsl_poly_complex_solve(a->data, size, w, z->data);
r = gsl_vector_complex_alloc(size - 1);
@@ -1009,7 +979,7 @@ static VALUE rb_gsl_poly_int_to_f(VALUE obj)
size_t i;
Data_Get_Struct(obj, gsl_vector_int, vi);
v = gsl_vector_alloc(vi->size);
- for (i = 0; i < v->size; i++)
+ for (i = 0; i < v->size; i++)
gsl_vector_set(v, i, (double) gsl_vector_int_get(vi, i));
return Data_Wrap_Struct(cgsl_poly, 0, gsl_vector_free, v);
}
@@ -1023,7 +993,7 @@ static VALUE rb_gsl_poly_to_i(VALUE obj)
size_t i;
Data_Get_Struct(obj, gsl_vector, v);
vi = gsl_vector_int_alloc(v->size);
- for (i = 0; i < v->size; i++)
+ for (i = 0; i < v->size; i++)
gsl_vector_int_set(vi, i, (int) gsl_vector_get(v, i));
return Data_Wrap_Struct(cgsl_poly_int, 0, gsl_vector_int_free, vi);
}
@@ -1035,8 +1005,6 @@ static VALUE FUNCTION(rb_gsl_poly,workspace_new)(VALUE klass, VALUE n)
return Data_Wrap_Struct(klass, 0, gsl_poly_complex_workspace_free, w);
}
-#ifdef GSL_1_1_LATER
-
/* singleton method of the class Poly */
static VALUE rb_gsl_poly_dd_init(VALUE obj, VALUE vxa, VALUE vya)
{
@@ -1065,7 +1033,7 @@ static VALUE rb_gsl_poly_dd_eval(VALUE obj, VALUE xxa, VALUE xx)
case T_BIGNUM:
case T_FLOAT:
return rb_float_new(gsl_poly_dd_eval(dd->data, xa->data, dd->size,
- NUM2DBL(xx)));
+ NUM2DBL(xx)));
break;
case T_ARRAY:
size = RARRAY_LEN(xx);
@@ -1073,9 +1041,9 @@ static VALUE rb_gsl_poly_dd_eval(VALUE obj, VALUE xxa, VALUE xx)
for (i = 0; i < size; i++) {
x = rb_ary_entry(xx, i);
Need_Float(x);
- rb_ary_store(ary, i,
- rb_float_new(gsl_poly_dd_eval(dd->data, xa->data,
- dd->size, NUM2DBL(x))));
+ rb_ary_store(ary, i,
+ rb_float_new(gsl_poly_dd_eval(dd->data, xa->data,
+ dd->size, NUM2DBL(x))));
}
return ary;
break;
@@ -1085,9 +1053,9 @@ static VALUE rb_gsl_poly_dd_eval(VALUE obj, VALUE xxa, VALUE xx)
size = v->size;
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < size; i++) {
- gsl_vector_set(vnew, i,
- gsl_poly_dd_eval(dd->data, xa->data,
- dd->size, FUNCTION(gsl_vector,get)(v, i)));
+ gsl_vector_set(vnew, i,
+ gsl_poly_dd_eval(dd->data, xa->data,
+ dd->size, FUNCTION(gsl_vector,get)(v, i)));
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
} else if (MAT_P(xx)) {
@@ -1095,11 +1063,11 @@ static VALUE rb_gsl_poly_dd_eval(VALUE obj, VALUE xxa, VALUE xx)
size = m->size1;
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- gsl_matrix_set(mnew, i, j,
- gsl_poly_dd_eval(dd->data, xa->data,
- dd->size, gsl_matrix_get(m, i, j)));
- }
+ for (j = 0; j < m->size2; j++) {
+ gsl_matrix_set(mnew, i, j,
+ gsl_poly_dd_eval(dd->data, xa->data,
+ dd->size, gsl_matrix_get(m, i, j)));
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -1161,7 +1129,6 @@ static VALUE rb_gsl_poly_dd_taylor(int argc, VALUE *argv, VALUE obj)
}
#endif
-#endif
static VALUE FUNCTION(rb_gsl_poly,order)(VALUE obj)
{
@@ -1171,7 +1138,7 @@ static VALUE FUNCTION(rb_gsl_poly,order)(VALUE obj)
}
int FUNCTION(gsl_poly,conv)(const BASE *a, size_t na, const BASE *b, size_t nb,
- BASE *c, size_t *nc)
+ BASE *c, size_t *nc)
{
BASE x;
size_t i, j;
@@ -1192,7 +1159,7 @@ GSL_TYPE(gsl_vector)* FUNCTION(gsl_poly,conv_vector)(const GSL_TYPE(gsl_vector)
{
GSL_TYPE(gsl_vector) *vnew = NULL;
size_t n, tmp;
- if (v1->size == 1) {
+ if (v1->size == 1) {
vnew = FUNCTION(make_vector,clone)(v2);
FUNCTION(gsl_vector,scale)(vnew, FUNCTION(gsl_vector,get)(v1, 0));
return vnew;
@@ -1249,8 +1216,8 @@ GSL_TYPE(gsl_vector)* FUNCTION(gsl_poly,integ)(const GSL_TYPE(gsl_vector) *v)
return vnew;
}
-GSL_TYPE(gsl_vector)* FUNCTION(gsl_poly,deconv_vector)(const GSL_TYPE(gsl_vector) *c, const GSL_TYPE(gsl_vector) *a,
- GSL_TYPE(gsl_vector) **r)
+GSL_TYPE(gsl_vector)* FUNCTION(gsl_poly,deconv_vector)(const GSL_TYPE(gsl_vector) *c, const GSL_TYPE(gsl_vector) *a,
+ GSL_TYPE(gsl_vector) **r)
{
GSL_TYPE(gsl_vector) *vnew = NULL, *a2 = NULL, *c2 = NULL, *vtmp = NULL;
GSL_TYPE(gsl_vector) *rtmp = NULL;
@@ -1270,8 +1237,8 @@ GSL_TYPE(gsl_vector)* FUNCTION(gsl_poly,deconv_vector)(const GSL_TYPE(gsl_vector
jj = c2->size-1-k-j;
//if (jj > k || jj < 0) continue;
if (jj <= k) {
- y = FUNCTION(gsl_vector,get)(a2, jj);
- x -= y*z;
+ y = FUNCTION(gsl_vector,get)(a2, jj);
+ x -= y*z;
}
if (j == 0) break;
}
@@ -1357,11 +1324,11 @@ VALUE FUNCTION(rb_gsl_poly,deconv)(VALUE obj, VALUE bb)
}
vnew = FUNCTION(gsl_poly,deconv_vector)(v, v2, &r);
if (flag == 1) FUNCTION(gsl_vector,free)(v2);
- if (FUNCTION(gsl_vector,isnull)(r))
+ if (FUNCTION(gsl_vector,isnull)(r))
return Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), vnew);
else
return rb_ary_new3(2, Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), vnew),
- Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), r));
+ Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), r));
}
static VALUE FUNCTION(rb_gsl_poly,reduce)(VALUE obj)
@@ -1410,7 +1377,7 @@ static VALUE FUNCTION(rb_gsl_poly,conv2)(VALUE klass, VALUE v1, VALUE v2)
p3 = FUNCTION(gsl_poly,conv_vector)(p1, p2);
if (flag1 == 1) FUNCTION(gsl_vector,free)(p1);
if (flag2 == 1) FUNCTION(gsl_vector,free)(p2);
- if (flag1 == 1 && flag2 == 1) {
+ if (flag1 == 1 && flag2 == 1) {
ary = rb_ary_new2(p3->size);
for (i = 0; i < p3->size; i++)
rb_ary_store(ary, i, C_TO_VALUE2(FUNCTION(gsl_vector,get)(p3, i)));
@@ -1431,15 +1398,15 @@ static VALUE FUNCTION(rb_gsl_poly,deconv2)(VALUE klass, VALUE v1, VALUE v2)
vnew = FUNCTION(gsl_poly,deconv_vector)(p1, p2, &r);
if (flag1 == 1) FUNCTION(gsl_vector,free)(p1);
if (flag2 == 1) FUNCTION(gsl_vector,free)(p2);
- if (FUNCTION(gsl_vector,isnull)(r))
+ if (FUNCTION(gsl_vector,isnull)(r))
return Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), vnew);
else
return rb_ary_new3(2, Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), vnew),
- Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), r));
+ Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), r));
}
-GSL_TYPE(gsl_poly)* FUNCTION(gsl_poly,add)(const GSL_TYPE(gsl_poly) *a,
- const GSL_TYPE(gsl_poly) *b)
+GSL_TYPE(gsl_poly)* FUNCTION(gsl_poly,add)(const GSL_TYPE(gsl_poly) *a,
+ const GSL_TYPE(gsl_poly) *b)
{
GSL_TYPE(gsl_poly) *c = NULL;
const GSL_TYPE(gsl_poly) *longer;
@@ -1449,7 +1416,7 @@ GSL_TYPE(gsl_poly)* FUNCTION(gsl_poly,add)(const GSL_TYPE(gsl_poly) *a,
longer = a;
} else {
c = FUNCTION(gsl_vector,alloc)(b->size);
- longer = b;
+ longer = b;
}
n = GSL_MIN(a->size, b->size);
for (i = 0; i < n; i++) {
@@ -1521,7 +1488,7 @@ static VALUE FUNCTION(rb_gsl_poly,coerce)(VALUE obj, VALUE other)
vb = FUNCTION(gsl_vector,calloc)(1);
FUNCTION(gsl_vector,set)(vb, 0, (BASE) NUM2DBL(other));
return rb_ary_new3(2, Data_Wrap_Struct(CLASS_OF(obj), 0, FUNCTION(gsl_vector,free), vb),
- obj);
+ obj);
break;
default:
CHECK_VEC(other);
@@ -1548,10 +1515,10 @@ static VALUE FUNCTION(rb_gsl_poly,companion_matrix)(VALUE obj)
size = p->size - 1;
m = gsl_matrix_calloc(size, size);
z = FUNCTION(gsl_vector,get)(p, size);
- for (j = 0; j < size; j++)
+ for (j = 0; j < size; j++)
gsl_matrix_set(m, 0, size-j-1, -FUNCTION(gsl_vector,get)(p, j)/z);
for (i = 1; i < size; i++) {
- gsl_matrix_set(m, i, i-1, 1.0);
+ gsl_matrix_set(m, i, i-1, 1.0);
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, m);
}
@@ -1580,7 +1547,7 @@ static VALUE rb_gsl_poly_fit(int argc, VALUE *argv, VALUE obj)
double chisq, val;
int status, flag = 0;
VALUE vc, vcov;
- if (argc != 3 && argc != 4)
+ if (argc != 3 && argc != 4)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3 or 4)", argc);
x = &xx.vector;
y = &yy.vector;
@@ -1621,7 +1588,7 @@ static VALUE rb_gsl_poly_wfit(int argc, VALUE *argv, VALUE obj)
double chisq, val;
int status, flag = 0;
VALUE vc, vcov;
- if (argc != 4 && argc != 5)
+ if (argc != 4 && argc != 5)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 4 or 5)", argc);
Data_Get_Vector(argv[0], x);
Data_Get_Vector(argv[1], w);
@@ -1654,17 +1621,11 @@ static VALUE rb_gsl_poly_wfit(int argc, VALUE *argv, VALUE obj)
#endif
#ifdef BASE_DOUBLE
-#ifdef GSL_1_13_LATER
static VALUE rb_gsl_poly_eval_derivs_singleton(int argc, VALUE *argv, VALUE klass)
{
VALUE ary;
gsl_vector *v = NULL, *v2 = NULL;
size_t i, lenc, lenres;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- double *ptr1, *ptr2;
- int shape[1];
-#endif
if (argc < 2) rb_raise(rb_eArgError, "Wrong number of arguments (%d for >= 2)", argc);
if (rb_obj_is_kind_of(argv[0], rb_cArray)) {
@@ -1696,6 +1657,9 @@ static VALUE rb_gsl_poly_eval_derivs_singleton(int argc, VALUE *argv, VALUE klas
}
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv[0])) {
+ struct NARRAY *na;
+ double *ptr1, *ptr2;
+ int shape[1];
GetNArray(argv[0], na);
ptr1 = (double*) na->ptr;
lenc = na->total;
@@ -1731,7 +1695,6 @@ static VALUE rb_gsl_poly_eval_derivs(int argc, VALUE *argv, VALUE obj)
return Data_Wrap_Struct(cgsl_poly, 0, gsl_vector_free, v2);
}
#endif
-#endif
void FUNCTION(Init_gsl_poly,init)(VALUE module)
{
@@ -1742,78 +1705,78 @@ void FUNCTION(Init_gsl_poly,init)(VALUE module)
cgsl_poly_workspace = rb_define_class_under(cgsl_poly, "Workspace", cGSL_Object);
mgsl_poly_complex = rb_define_module_under(cgsl_poly, "Complex");
- cgsl_poly_complex_workspace = rb_define_class_under(mgsl_poly_complex,
- "Workspace", cGSL_Object);
- rb_define_singleton_method(cgsl_poly_workspace, "alloc",
- rb_gsl_poly_workspace_new, 1);
+ cgsl_poly_complex_workspace = rb_define_class_under(mgsl_poly_complex,
+ "Workspace", cGSL_Object);
+ rb_define_singleton_method(cgsl_poly_workspace, "alloc",
+ rb_gsl_poly_workspace_new, 1);
rb_define_singleton_method(cgsl_poly_complex_workspace, "alloc",
- rb_gsl_poly_workspace_new, 1);
+ rb_gsl_poly_workspace_new, 1);
- rb_define_singleton_method(mgsl_poly_complex, "solve_quadratic",
- FUNCTION(rb_gsl_poly,complex_solve_quadratic), -1);
+ rb_define_singleton_method(mgsl_poly_complex, "solve_quadratic",
+ FUNCTION(rb_gsl_poly,complex_solve_quadratic), -1);
rb_define_singleton_method(mgsl_poly_complex, "solve_cubic",
- FUNCTION(rb_gsl_poly,complex_solve_cubic), -1);
+ FUNCTION(rb_gsl_poly,complex_solve_cubic), -1);
#ifdef HAVE_GSL_POLY_SOLVE_QUARTIC
rb_define_singleton_method(mgsl_poly_complex, "solve_quartic",
- FUNCTION(rb_gsl_poly,complex_solve_quartic), -1);
+ FUNCTION(rb_gsl_poly,complex_solve_quartic), -1);
#endif
rb_define_singleton_method(mgsl_poly_complex, "solve",
- FUNCTION(rb_gsl_poly,complex_solve), -1);
- rb_define_singleton_method(mgsl_poly_complex, "roots",
- FUNCTION(rb_gsl_poly,complex_solve), -1);
+ FUNCTION(rb_gsl_poly,complex_solve), -1);
+ rb_define_singleton_method(mgsl_poly_complex, "roots",
+ FUNCTION(rb_gsl_poly,complex_solve), -1);
#endif
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "solve_quadratic",
- FUNCTION(rb_gsl_poly,solve_quadratic), -1);
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "solve_cubic",
- FUNCTION(rb_gsl_poly,solve_cubic), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "solve_quadratic",
+ FUNCTION(rb_gsl_poly,solve_quadratic), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "solve_cubic",
+ FUNCTION(rb_gsl_poly,solve_cubic), -1);
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "complex_solve_quadratic",
- FUNCTION(rb_gsl_poly,complex_solve_quadratic), -1);
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "complex_solve_cubic",
- FUNCTION(rb_gsl_poly,complex_solve_cubic), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "complex_solve_quadratic",
+ FUNCTION(rb_gsl_poly,complex_solve_quadratic), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "complex_solve_cubic",
+ FUNCTION(rb_gsl_poly,complex_solve_cubic), -1);
#ifdef HAVE_GSL_POLY_SOLVE_QUARTIC
rb_define_singleton_method(GSL_TYPE(cgsl_poly), "solve_quartic",
- FUNCTION(rb_gsl_poly,solve_quartic), -1);
+ FUNCTION(rb_gsl_poly,solve_quartic), -1);
rb_define_singleton_method(GSL_TYPE(cgsl_poly), "complex_solve_quartic",
- FUNCTION(rb_gsl_poly,complex_solve_quartic), -1);
+ FUNCTION(rb_gsl_poly,complex_solve_quartic), -1);
#endif
rb_define_singleton_method(GSL_TYPE(cgsl_poly), "complex_solve",
- FUNCTION(rb_gsl_poly,complex_solve), -1);
+ FUNCTION(rb_gsl_poly,complex_solve), -1);
rb_define_singleton_method(GSL_TYPE(cgsl_poly), "solve",
- FUNCTION(rb_gsl_poly,complex_solve), -1);
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "roots",
- FUNCTION(rb_gsl_poly,complex_solve), -1);
+ FUNCTION(rb_gsl_poly,complex_solve), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "roots",
+ FUNCTION(rb_gsl_poly,complex_solve), -1);
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "eval",
- FUNCTION(rb_gsl_poly,eval2), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "eval",
+ FUNCTION(rb_gsl_poly,eval2), -1);
rb_define_method(GSL_TYPE(cgsl_poly), "eval",
- FUNCTION(rb_gsl_poly,eval), 1);
+ FUNCTION(rb_gsl_poly,eval), 1);
rb_define_alias(GSL_TYPE(cgsl_poly), "at", "eval");
- rb_define_method(GSL_TYPE(cgsl_poly), "solve_quadratic",
- FUNCTION(rb_gsl_poly,solve_quadratic2), 0);
- rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve_quadratic",
- FUNCTION(rb_gsl_poly,complex_solve_quadratic2), 0);
+ rb_define_method(GSL_TYPE(cgsl_poly), "solve_quadratic",
+ FUNCTION(rb_gsl_poly,solve_quadratic2), 0);
+ rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve_quadratic",
+ FUNCTION(rb_gsl_poly,complex_solve_quadratic2), 0);
- rb_define_method(GSL_TYPE(cgsl_poly), "solve_cubic",
- FUNCTION(rb_gsl_poly,solve_cubic2), 0);
- rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve_cubic",
- FUNCTION(rb_gsl_poly,complex_solve_cubic2), 0);
+ rb_define_method(GSL_TYPE(cgsl_poly), "solve_cubic",
+ FUNCTION(rb_gsl_poly,solve_cubic2), 0);
+ rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve_cubic",
+ FUNCTION(rb_gsl_poly,complex_solve_cubic2), 0);
#ifdef HAVE_GSL_POLY_SOLVE_QUARTIC
- rb_define_method(GSL_TYPE(cgsl_poly), "solve_quartic",
- FUNCTION(rb_gsl_poly,solve_quartic2), 0);
- rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve_quartic",
- FUNCTION(rb_gsl_poly,complex_solve_quartic2), 0);
+ rb_define_method(GSL_TYPE(cgsl_poly), "solve_quartic",
+ FUNCTION(rb_gsl_poly,solve_quartic2), 0);
+ rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve_quartic",
+ FUNCTION(rb_gsl_poly,complex_solve_quartic2), 0);
#endif
- rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve",
- FUNCTION(rb_gsl_poly,complex_solve2), -1);
+ rb_define_method(GSL_TYPE(cgsl_poly), "complex_solve",
+ FUNCTION(rb_gsl_poly,complex_solve2), -1);
rb_define_alias(GSL_TYPE(cgsl_poly), "solve", "complex_solve");
rb_define_alias(GSL_TYPE(cgsl_poly), "roots", "complex_solve");
@@ -1824,11 +1787,8 @@ void FUNCTION(Init_gsl_poly,init)(VALUE module)
#ifdef BASE_DOUBLE
// rb_define_singleton_method(cgsl_poly, "eval", rb_gsl_poly_eval_singleton, 2);
rb_define_method(cgsl_poly, "to_i", rb_gsl_poly_to_i, 0);
-#ifdef GSL_1_11_LATER
rb_define_singleton_method(cgsl_poly, "complex_eval", rb_gsl_poly_eval_singleton, 2);
rb_define_method(cgsl_vector_complex, "eval", rb_gsl_complex_poly_complex_eval, 1);
-#endif
-#ifdef GSL_1_1_LATER
cgsl_poly_dd = rb_define_class_under(cgsl_poly, "DividedDifference", cgsl_poly);
cgsl_poly_taylor = rb_define_class_under(cgsl_poly, "Taylor", cgsl_poly);
rb_define_singleton_method(cgsl_poly, "dd_init", rb_gsl_poly_dd_init, 2);
@@ -1836,7 +1796,6 @@ void FUNCTION(Init_gsl_poly,init)(VALUE module)
rb_define_method(cgsl_poly_dd, "eval",rb_gsl_poly_dd_eval, 2);
rb_define_method(cgsl_poly_dd, "taylor", rb_gsl_poly_dd_taylor, -1);
#endif
-#endif
rb_define_method(GSL_TYPE(cgsl_poly), "order", FUNCTION(rb_gsl_poly,order), 0);
@@ -1844,15 +1803,15 @@ void FUNCTION(Init_gsl_poly,init)(VALUE module)
rb_define_method(GSL_TYPE(cgsl_poly), "conv", FUNCTION(rb_gsl_poly,conv), 1);
rb_define_alias(GSL_TYPE(cgsl_poly), "*", "conv");
rb_define_singleton_method(GSL_TYPE(cgsl_poly), "conv",
- FUNCTION(rb_gsl_poly,conv2), 2);
+ FUNCTION(rb_gsl_poly,conv2), 2);
rb_define_method(GSL_TYPE(cgsl_poly), "deconv",
- FUNCTION(rb_gsl_poly,deconv), 1);
+ FUNCTION(rb_gsl_poly,deconv), 1);
rb_define_singleton_method(GSL_TYPE(cgsl_poly), "deconv",
- FUNCTION(rb_gsl_poly,deconv2), 2);
+ FUNCTION(rb_gsl_poly,deconv2), 2);
- rb_define_method(GSL_TYPE(cgsl_poly), "reduce",
- FUNCTION(rb_gsl_poly,reduce), 1);
+ rb_define_method(GSL_TYPE(cgsl_poly), "reduce",
+ FUNCTION(rb_gsl_poly,reduce), 1);
rb_define_method(GSL_TYPE(cgsl_poly), "deriv", FUNCTION(rb_gsl_poly,deriv), 1);
rb_define_method(GSL_TYPE(cgsl_poly), "integ", FUNCTION(rb_gsl_poly,integ), 1);
@@ -1866,29 +1825,27 @@ void FUNCTION(Init_gsl_poly,init)(VALUE module)
rb_define_method(GSL_TYPE(cgsl_poly), "-@", FUNCTION(rb_gsl_poly,uminus), 0);
rb_define_method(GSL_TYPE(cgsl_poly), "+@", FUNCTION(rb_gsl_poly,uplus), 0);
- rb_define_method(GSL_TYPE(cgsl_poly), "coerce",
- FUNCTION(rb_gsl_poly,coerce), 1);
+ rb_define_method(GSL_TYPE(cgsl_poly), "coerce",
+ FUNCTION(rb_gsl_poly,coerce), 1);
rb_define_method(GSL_TYPE(cgsl_poly), "to_gv", FUNCTION(rb_gsl_poly,to_gv), 0);
rb_define_alias(GSL_TYPE(cgsl_poly), "to_v", "to_gv");
- rb_define_method(GSL_TYPE(cgsl_poly), "companion_matrix",
- FUNCTION(rb_gsl_poly,companion_matrix), 0);
+ rb_define_method(GSL_TYPE(cgsl_poly), "companion_matrix",
+ FUNCTION(rb_gsl_poly,companion_matrix), 0);
rb_define_alias(GSL_TYPE(cgsl_poly), "compan", "companion_matrix");
/*****/
- rb_define_method(GSL_TYPE(cgsl_poly), "info",
- FUNCTION(rb_gsl_poly,info), 0);
+ rb_define_method(GSL_TYPE(cgsl_poly), "info",
+ FUNCTION(rb_gsl_poly,info), 0);
#ifdef BASE_DOUBLE
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "fit",
- FUNCTION(rb_gsl_poly,fit), -1);
- rb_define_singleton_method(GSL_TYPE(cgsl_poly), "wfit",
- FUNCTION(rb_gsl_poly,wfit), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "fit",
+ FUNCTION(rb_gsl_poly,fit), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_poly), "wfit",
+ FUNCTION(rb_gsl_poly,wfit), -1);
-#ifdef GSL_1_13_LATER
rb_define_singleton_method(cgsl_poly, "eval_derivs", rb_gsl_poly_eval_derivs_singleton, -1);
rb_define_method(cgsl_vector, "eval_derivs", rb_gsl_poly_eval_derivs, -1);
-#endif
#endif
}
diff --git a/ext/gsl/qrng.c b/ext/gsl_native/qrng.c
similarity index 91%
rename from ext/gsl/qrng.c
rename to ext/gsl_native/qrng.c
index 22b1d0b..0890bf9 100644
--- a/ext/gsl/qrng.c
+++ b/ext/gsl_native/qrng.c
@@ -38,34 +38,29 @@ static const gsl_qrng_type* get_gsl_qrng_type(VALUE t)
strcpy(name, STR2CSTR(t));
if (strstr(name, "niederreiter_2")) return T = gsl_qrng_niederreiter_2;
#ifdef HAVE_QRNGEXTRA_QRNGEXTRA_H
- else if (strstr(name, "hdsobol")) return T = qrngextra_hdsobol;
+ else if (strstr(name, "hdsobol")) return T = qrngextra_hdsobol;
#endif
else if (strstr(name, "sobol")) return T = gsl_qrng_sobol;
-#ifdef GSL_1_11_LATER
else if (strstr(name, "reversehalton")) return T = gsl_qrng_reversehalton;
else if (strstr(name, "halton")) return T = gsl_qrng_halton;
-
-#endif
else rb_raise(rb_eArgError, "unknown type");
break;
case T_FIXNUM:
switch (FIX2INT(t)) {
case GSL_QRNG_NIEDERREITER_2: T = gsl_qrng_niederreiter_2; break;
case GSL_QRNG_SOBOL: T = gsl_qrng_sobol; break;
-#ifdef GSL_1_11_LATER
case GSL_QRNG_HALTON: T = gsl_qrng_halton; break;
case GSL_QRNG_REVERSEHALTON: T = gsl_qrng_reversehalton; break;
-#endif
#ifdef HAVE_QRNGEXTRA_QRNGEXTRA_H
- case GSL_QRNG_HDSOBOL: T = qrngextra_hdsobol; break;
+ case GSL_QRNG_HDSOBOL: T = qrngextra_hdsobol; break;
#endif
- default:
+ default:
rb_raise(rb_eArgError, "unknown type");
}
break;
- default:
+ default:
rb_raise(rb_eTypeError, "wrong argument type %s (String or Fixnum expected)",
- rb_class2name(CLASS_OF(t)));
+ rb_class2name(CLASS_OF(t)));
}
return T;
}
@@ -81,7 +76,6 @@ static VALUE rb_gsl_qrng_new(VALUE klass, VALUE t, VALUE dd)
return Data_Wrap_Struct(klass, 0, gsl_qrng_free, q);
}
-#ifdef GSL_1_2_LATER
static VALUE rb_gsl_qrng_init(VALUE obj)
{
gsl_qrng *q = NULL;
@@ -89,7 +83,6 @@ static VALUE rb_gsl_qrng_init(VALUE obj)
gsl_qrng_init(q);
return obj;
}
-#endif
static VALUE rb_gsl_qrng_name(VALUE obj)
{
@@ -148,9 +141,7 @@ void Init_gsl_qrng(VALUE module)
rb_define_singleton_method(cgsl_qrng, "new", rb_gsl_qrng_new, 2);
rb_define_singleton_method(cgsl_qrng, "alloc", rb_gsl_qrng_new, 2);
-#ifdef GSL_1_2_LATER
rb_define_method(cgsl_qrng, "init", rb_gsl_qrng_init, 0);
-#endif
rb_define_method(cgsl_qrng, "name", rb_gsl_qrng_name, 0);
rb_define_method(cgsl_qrng, "size", rb_gsl_qrng_size, 0);
rb_define_method(cgsl_qrng, "clone", rb_gsl_qrng_clone, 0);
@@ -161,11 +152,9 @@ void Init_gsl_qrng(VALUE module)
rb_define_const(cgsl_qrng, "NIEDERREITER_2", INT2FIX(GSL_QRNG_NIEDERREITER_2));
rb_define_const(cgsl_qrng, "SOBOL", INT2FIX(GSL_QRNG_SOBOL));
-#ifdef GSL_1_11_LATER
rb_define_const(cgsl_qrng, "HALTON", INT2FIX(GSL_QRNG_HALTON));
rb_define_const(cgsl_qrng, "REVERSEHALTON", INT2FIX(GSL_QRNG_REVERSEHALTON));
-#endif
#ifdef HAVE_QRNGEXTRA_QRNGEXTRA_H
- rb_define_const(cgsl_qrng, "HDSOBOL", INT2FIX(GSL_QRNG_HDSOBOL));
+ rb_define_const(cgsl_qrng, "HDSOBOL", INT2FIX(GSL_QRNG_HDSOBOL));
#endif
}
diff --git a/ext/gsl/randist.c b/ext/gsl_native/randist.c
similarity index 83%
rename from ext/gsl/randist.c
rename to ext/gsl_native/randist.c
index f52b294..2e5c21f 100644
--- a/ext/gsl/randist.c
+++ b/ext/gsl_native/randist.c
@@ -16,13 +16,13 @@
VALUE rb_gsl_eval_pdf_cdf(VALUE xx, double (*f)(double));
VALUE rb_gsl_eval_pdf_cdf2(VALUE xx, VALUE aa, double (*f)(double, double));
-VALUE rb_gsl_eval_pdf_cdf3(VALUE xx, VALUE aa, VALUE bb,
- double (*f)(double, double, double));
-VALUE rb_gsl_eval_pdf_cdf2_uint(VALUE xx, VALUE aa,
- double (*f)(unsigned int, double));
+VALUE rb_gsl_eval_pdf_cdf3(VALUE xx, VALUE aa, VALUE bb,
+ double (*f)(double, double, double));
+VALUE rb_gsl_eval_pdf_cdf2_uint(VALUE xx, VALUE aa,
+ double (*f)(unsigned int, double));
static VALUE rb_gsl_ran_eval0(int argc, VALUE *argv, VALUE obj,
- double (*f)(const gsl_rng*))
+ double (*f)(const gsl_rng*))
{
gsl_rng *r;
switch (TYPE(obj)) {
@@ -30,7 +30,7 @@ static VALUE rb_gsl_ran_eval0(int argc, VALUE *argv, VALUE obj,
switch (argc) {
case 1:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
@@ -45,14 +45,14 @@ static VALUE rb_gsl_ran_eval0(int argc, VALUE *argv, VALUE obj,
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc);
break;
}
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
break;
}
return rb_float_new((*f)(r));
}
static VALUE rb_gsl_ran_eval1(int argc, VALUE *argv, VALUE obj,
- double (*f)(const gsl_rng*, double))
+ double (*f)(const gsl_rng*, double))
{
gsl_rng *r;
gsl_vector *v;
@@ -65,15 +65,15 @@ static VALUE rb_gsl_ran_eval1(int argc, VALUE *argv, VALUE obj,
n = NUM2INT(argv[2]);
a = NUM2DBL(argv[1]);
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
v = gsl_vector_alloc(n);
- for (i = 0; i < n; i++)
- gsl_vector_set(v, i, (*f)(r, a));
+ for (i = 0; i < n; i++)
+ gsl_vector_set(v, i, (*f)(r, a));
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
break;
case 2:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
a = NUM2DBL(argv[1]);
break;
default:
@@ -86,10 +86,10 @@ static VALUE rb_gsl_ran_eval1(int argc, VALUE *argv, VALUE obj,
case 2:
n = NUM2INT(argv[1]);
a = NUM2DBL(argv[0]);
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
v = gsl_vector_alloc(n);
- for (i = 0; i < n; i++)
- gsl_vector_set(v, i, (*f)(r, a));
+ for (i = 0; i < n; i++)
+ gsl_vector_set(v, i, (*f)(r, a));
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
break;
case 1:
@@ -99,14 +99,14 @@ static VALUE rb_gsl_ran_eval1(int argc, VALUE *argv, VALUE obj,
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
break;
}
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
break;
}
return rb_float_new((*f)(r, a));
}
static VALUE rb_gsl_ran_eval1_uint(int argc, VALUE *argv, VALUE obj,
- unsigned int (*f)(const gsl_rng*, double))
+ unsigned int (*f)(const gsl_rng*, double))
{
gsl_rng *r;
gsl_vector_int *v;
@@ -119,15 +119,15 @@ static VALUE rb_gsl_ran_eval1_uint(int argc, VALUE *argv, VALUE obj,
n = NUM2INT(argv[2]);
a = NUM2DBL(argv[1]);
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
v = gsl_vector_int_alloc(n);
- for (i = 0; i < n; i++)
- gsl_vector_int_set(v, i, (int) (*f)(r, a));
+ for (i = 0; i < n; i++)
+ gsl_vector_int_set(v, i, (int) (*f)(r, a));
return Data_Wrap_Struct(cgsl_vector_int, 0, gsl_vector_int_free, v);
break;
case 2:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
a = NUM2DBL(argv[1]);
break;
default:
@@ -140,10 +140,10 @@ static VALUE rb_gsl_ran_eval1_uint(int argc, VALUE *argv, VALUE obj,
case 2:
n = NUM2INT(argv[1]);
a = NUM2DBL(argv[0]);
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
v = gsl_vector_int_alloc(n);
- for (i = 0; i < n; i++)
- gsl_vector_int_set(v, i, (*f)(r, a));
+ for (i = 0; i < n; i++)
+ gsl_vector_int_set(v, i, (*f)(r, a));
return Data_Wrap_Struct(cgsl_vector_int, 0, gsl_vector_int_free, v);
break;
case 1:
@@ -153,14 +153,14 @@ static VALUE rb_gsl_ran_eval1_uint(int argc, VALUE *argv, VALUE obj,
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
break;
}
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
break;
}
return INT2FIX((*f)(r, a));
}
static VALUE rb_gsl_ran_eval2(int argc, VALUE *argv, VALUE obj,
- double (*f)(const gsl_rng*, double, double))
+ double (*f)(const gsl_rng*, double, double))
{
gsl_rng *r;
gsl_vector *v;
@@ -171,7 +171,7 @@ static VALUE rb_gsl_ran_eval2(int argc, VALUE *argv, VALUE obj,
switch (argc) {
case 4:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
a = NUM2DBL(argv[1]); b = NUM2DBL(argv[2]);
n = NUM2INT(argv[3]);
v = gsl_vector_alloc(n);
@@ -180,7 +180,7 @@ static VALUE rb_gsl_ran_eval2(int argc, VALUE *argv, VALUE obj,
break;
case 3:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
a = NUM2DBL(argv[1]); b = NUM2DBL(argv[2]);
break;
default:
@@ -191,7 +191,7 @@ static VALUE rb_gsl_ran_eval2(int argc, VALUE *argv, VALUE obj,
default:
switch (argc) {
case 3:
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
a = NUM2DBL(argv[0]); b = NUM2DBL(argv[1]);
n = NUM2INT(argv[2]);
v = gsl_vector_alloc(n);
@@ -205,14 +205,14 @@ static VALUE rb_gsl_ran_eval2(int argc, VALUE *argv, VALUE obj,
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
break;
}
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
break;
}
return rb_float_new((*f)(r, a, b));
}
static VALUE rb_gsl_ran_eval3(int argc, VALUE *argv, VALUE obj,
- double (*f)(const gsl_rng*, double, double, double))
+ double (*f)(const gsl_rng*, double, double, double))
{
gsl_rng *r;
gsl_vector *v;
@@ -223,7 +223,7 @@ static VALUE rb_gsl_ran_eval3(int argc, VALUE *argv, VALUE obj,
switch (argc) {
case 5:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
a = NUM2DBL(argv[1]); b = NUM2DBL(argv[2]); c = NUM2DBL(argv[3]);
n = NUM2INT(argv[4]);
v = gsl_vector_alloc(n);
@@ -232,7 +232,7 @@ static VALUE rb_gsl_ran_eval3(int argc, VALUE *argv, VALUE obj,
break;
case 4:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
a = NUM2DBL(argv[1]); b = NUM2DBL(argv[2]); c = NUM2DBL(argv[3]);
break;
default:
@@ -243,7 +243,7 @@ static VALUE rb_gsl_ran_eval3(int argc, VALUE *argv, VALUE obj,
default:
switch (argc) {
case 4:
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
a = NUM2DBL(argv[0]); b = NUM2DBL(argv[1]); c = NUM2DBL(argv[2]);
n = NUM2INT(argv[3]);
v = gsl_vector_alloc(n);
@@ -257,7 +257,7 @@ static VALUE rb_gsl_ran_eval3(int argc, VALUE *argv, VALUE obj,
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)", argc);
break;
}
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
break;
}
return rb_float_new((*f)(r, a, b, c));
@@ -265,7 +265,7 @@ static VALUE rb_gsl_ran_eval3(int argc, VALUE *argv, VALUE obj,
static VALUE rb_gsl_ran_gaussian(int argc, VALUE *argv, VALUE obj)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
gsl_vector *v;
size_t n, i;
double sigma = 1.0;
@@ -276,18 +276,18 @@ static VALUE rb_gsl_ran_gaussian(int argc, VALUE *argv, VALUE obj)
n = NUM2INT(argv[2]);
sigma = NUM2DBL(argv[1]);
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
v = gsl_vector_alloc(n);
- for (i = 0; i < n; i++)
- gsl_vector_set(v, i, gsl_ran_gaussian(r, sigma));
+ for (i = 0; i < n; i++)
+ gsl_vector_set(v, i, gsl_ran_gaussian(r, sigma));
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
break;
case 2:
sigma = NUM2DBL(argv[1]);
- /* no break */
+ /* no break */
case 1:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
return rb_float_new(gsl_ran_gaussian(r, sigma));
break;
default:
@@ -297,19 +297,19 @@ static VALUE rb_gsl_ran_gaussian(int argc, VALUE *argv, VALUE obj)
}
break;
default:
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
switch (argc) {
case 2:
n = NUM2INT(argv[1]);
sigma = NUM2DBL(argv[0]);
v = gsl_vector_alloc(n);
- for (i = 0; i < n; i++)
- gsl_vector_set(v, i, gsl_ran_gaussian(r, sigma));
+ for (i = 0; i < n; i++)
+ gsl_vector_set(v, i, gsl_ran_gaussian(r, sigma));
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
break;
case 1:
sigma = NUM2DBL(argv[0]);
- /* no break */
+ /* no break */
case 0:
return rb_float_new(gsl_ran_gaussian(r, sigma));
break;
@@ -325,17 +325,17 @@ static VALUE rb_gsl_ran_gaussian(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_ran_gaussian_ratio_method(int argc, VALUE *argv, VALUE obj)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
double sigma = 1.0;
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
switch (argc) {
case 2:
sigma = NUM2DBL(argv[1]);
- /* no break */
+ /* no break */
case 1:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
return rb_float_new(gsl_ran_gaussian_ratio_method(r, sigma));
break;
default:
@@ -344,11 +344,11 @@ static VALUE rb_gsl_ran_gaussian_ratio_method(int argc, VALUE *argv, VALUE obj)
}
break;
default:
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
switch (argc) {
case 1:
sigma = NUM2DBL(argv[0]);
- /* no break */
+ /* no break */
case 0:
return rb_float_new(gsl_ran_gaussian_ratio_method(r, sigma));
break;
@@ -374,7 +374,7 @@ static VALUE rb_gsl_ran_gaussian_pdf(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_ran_gaussian_tail(int argc, VALUE *argv, VALUE obj)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
gsl_vector *v;
size_t n, i;
double a, sigma = 1.0;
@@ -386,18 +386,18 @@ static VALUE rb_gsl_ran_gaussian_tail(int argc, VALUE *argv, VALUE obj)
sigma = NUM2DBL(argv[2]);
a = NUM2DBL(argv[1]);
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
v = gsl_vector_alloc(n);
- for (i = 0; i < n; i++)
- gsl_vector_set(v, i, gsl_ran_gaussian_tail(r, a, sigma));
+ for (i = 0; i < n; i++)
+ gsl_vector_set(v, i, gsl_ran_gaussian_tail(r, a, sigma));
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
break;
case 3:
sigma = NUM2DBL(argv[2]);
- /* no break */
+ /* no break */
case 2:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
a = NUM2DBL(argv[1]);
return rb_float_new(gsl_ran_gaussian_tail(r, a, sigma));
break;
@@ -407,20 +407,20 @@ static VALUE rb_gsl_ran_gaussian_tail(int argc, VALUE *argv, VALUE obj)
}
break;
default:
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
switch (argc) {
case 3:
n = NUM2INT(argv[2]);
sigma = NUM2DBL(argv[1]);
a = NUM2DBL(argv[0]);
v = gsl_vector_alloc(n);
- for (i = 0; i < n; i++)
- gsl_vector_set(v, i, gsl_ran_gaussian_tail(r, a, sigma));
+ for (i = 0; i < n; i++)
+ gsl_vector_set(v, i, gsl_ran_gaussian_tail(r, a, sigma));
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
break;
case 2:
sigma = NUM2DBL(argv[1]);
- /* no break */
+ /* no break */
case 1:
a = NUM2DBL(argv[0]);
return rb_float_new(gsl_ran_gaussian_tail(r, a, sigma));
@@ -450,14 +450,14 @@ static VALUE rb_gsl_ran_gaussian_tail_pdf(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_ran_bivariate_gaussian(int argc, VALUE *argv, VALUE obj)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
double sigmax, sigmay, x, y, rho;
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
switch (argc) {
case 4:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
sigmax = NUM2DBL(argv[1]); sigmay = NUM2DBL(argv[2]);
rho = NUM2DBL(argv[3]);
break;
@@ -469,7 +469,7 @@ static VALUE rb_gsl_ran_bivariate_gaussian(int argc, VALUE *argv, VALUE obj)
default:
switch (argc) {
case 3:
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
sigmax = NUM2DBL(argv[0]); sigmay = NUM2DBL(argv[1]);
rho = NUM2DBL(argv[2]);
break;
@@ -720,7 +720,7 @@ static VALUE rb_gsl_ran_binomial(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 3:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
p = NUM2DBL(argv[1]);
n = FIX2UINT(argv[2]);
break;
@@ -739,16 +739,15 @@ static VALUE rb_gsl_ran_binomial(int argc, VALUE *argv, VALUE obj)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
break;
}
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
break;
}
return UINT2NUM(gsl_ran_binomial(r, p, n));
}
-#ifdef GSL_1_4_LATER
static VALUE rb_gsl_ran_binomial_tpe(int argc, VALUE *argv, VALUE obj)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
double p;
unsigned int n;
switch (TYPE(obj)) {
@@ -756,7 +755,7 @@ static VALUE rb_gsl_ran_binomial_tpe(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 3:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
p = NUM2DBL(argv[1]);
n = FIX2UINT(argv[2]);
break;
@@ -775,12 +774,11 @@ static VALUE rb_gsl_ran_binomial_tpe(int argc, VALUE *argv, VALUE obj)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
break;
}
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
break;
}
return UINT2NUM(gsl_ran_binomial_tpe(r, p, n));
}
-#endif
static VALUE rb_gsl_ran_binomial_pdf(VALUE obj, VALUE x, VALUE p, VALUE n)
{
@@ -797,7 +795,7 @@ static VALUE rb_gsl_ran_negative_binomial(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 3:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
p = NUM2DBL(argv[1]);
n = FIX2UINT(argv[2]);
break;
@@ -816,7 +814,7 @@ static VALUE rb_gsl_ran_negative_binomial(int argc, VALUE *argv, VALUE obj)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
break;
}
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
break;
}
return UINT2NUM(gsl_ran_negative_binomial(r, p, n));
@@ -829,7 +827,7 @@ static VALUE rb_gsl_ran_negative_binomial_pdf(VALUE obj, VALUE x, VALUE p, VALUE
static VALUE rb_gsl_ran_pascal(int argc, VALUE *argv, VALUE obj)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
double p;
unsigned int n;
switch (TYPE(obj)) {
@@ -837,7 +835,7 @@ static VALUE rb_gsl_ran_pascal(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 3:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
p = NUM2DBL(argv[1]);
n = FIX2UINT(argv[2]);
break;
@@ -856,7 +854,7 @@ static VALUE rb_gsl_ran_pascal(int argc, VALUE *argv, VALUE obj)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
break;
}
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
break;
}
return UINT2NUM(gsl_ran_pascal(r, p, n));
@@ -886,7 +884,7 @@ static VALUE rb_gsl_ran_hypergeometric(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 4:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
n1 = FIX2UINT(argv[1]);
n2 = FIX2UINT(argv[2]);
t = FIX2UINT(argv[3]);
@@ -907,7 +905,7 @@ static VALUE rb_gsl_ran_hypergeometric(int argc, VALUE *argv, VALUE obj)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 3)", argc);
break;
}
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
break;
}
return UINT2NUM(gsl_ran_hypergeometric(r, n1, n2, t));
@@ -930,14 +928,14 @@ static VALUE rb_gsl_ran_logarithmic_pdf(VALUE obj, VALUE x, VALUE mu)
static VALUE rb_gsl_ran_dir_2d(int argc, VALUE *argv, VALUE obj)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
double x, y;
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
switch (argc) {
case 1:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
@@ -947,7 +945,7 @@ static VALUE rb_gsl_ran_dir_2d(int argc, VALUE *argv, VALUE obj)
default:
switch (argc) {
case 0:
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc);
@@ -960,14 +958,14 @@ static VALUE rb_gsl_ran_dir_2d(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_ran_dir_2d_trig_method(int argc, VALUE *argv, VALUE obj)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
double x, y;
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
switch (argc) {
case 1:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
@@ -977,7 +975,7 @@ static VALUE rb_gsl_ran_dir_2d_trig_method(int argc, VALUE *argv, VALUE obj)
default:
switch (argc) {
case 0:
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc);
@@ -990,14 +988,14 @@ static VALUE rb_gsl_ran_dir_2d_trig_method(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_ran_dir_3d(int argc, VALUE *argv, VALUE obj)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
double x, y, z;
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
switch (argc) {
case 1:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)", argc);
@@ -1007,7 +1005,7 @@ static VALUE rb_gsl_ran_dir_3d(int argc, VALUE *argv, VALUE obj)
default:
switch (argc) {
case 0:
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc);
@@ -1020,7 +1018,7 @@ static VALUE rb_gsl_ran_dir_3d(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_ran_dir_nd(int argc, VALUE *argv, VALUE obj)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
size_t n;
gsl_vector *v;
switch (TYPE(obj)) {
@@ -1028,7 +1026,7 @@ static VALUE rb_gsl_ran_dir_nd(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 2:
CHECK_RNG(argv[0]); CHECK_FIXNUM(argv[1]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
n = FIX2INT(argv[1]);
break;
default:
@@ -1041,7 +1039,7 @@ static VALUE rb_gsl_ran_dir_nd(int argc, VALUE *argv, VALUE obj)
case 1:
CHECK_FIXNUM(argv[0]);
n = FIX2INT(argv[0]);
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc);
@@ -1055,7 +1053,7 @@ static VALUE rb_gsl_ran_dir_nd(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_ran_shuffle(int argc, VALUE *argv, VALUE obj)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
gsl_vector *v = NULL;
gsl_permutation *p = NULL;
switch (TYPE(obj)) {
@@ -1067,13 +1065,13 @@ static VALUE rb_gsl_ran_shuffle(int argc, VALUE *argv, VALUE obj)
CHECK_RNG(argv[0]);
Data_Get_Struct(argv[0], gsl_rng, r);
if (VECTOR_P(argv[1])) {
- Data_Get_Struct(argv[1], gsl_vector, v);
- gsl_ran_shuffle(r, v->data, v->size, sizeof(double));
+ Data_Get_Struct(argv[1], gsl_vector, v);
+ gsl_ran_shuffle(r, v->data, v->size, sizeof(double));
} else if (PERMUTATION_P(argv[1])) {
- Data_Get_Struct(argv[1], gsl_permutation, p);
- gsl_ran_shuffle(r, p->data, p->size, sizeof(size_t));
+ Data_Get_Struct(argv[1], gsl_permutation, p);
+ gsl_ran_shuffle(r, p->data, p->size, sizeof(size_t));
} else {
- rb_raise(rb_eTypeError, "wrong argument type %s (Vector or Permutation expected)", rb_class2name(CLASS_OF(argv[1])));
+ rb_raise(rb_eTypeError, "wrong argument type %s (Vector or Permutation expected)", rb_class2name(CLASS_OF(argv[1])));
}
break;
case 3:
@@ -1081,15 +1079,15 @@ static VALUE rb_gsl_ran_shuffle(int argc, VALUE *argv, VALUE obj)
CHECK_FIXNUM(argv[2]);
Data_Get_Struct(argv[0], gsl_rng, r);
if (VECTOR_P(argv[1])) {
- Data_Get_Struct(argv[1], gsl_vector, v);
- gsl_ran_shuffle(r, v->data, FIX2INT(argv[2]), sizeof(double));
+ Data_Get_Struct(argv[1], gsl_vector, v);
+ gsl_ran_shuffle(r, v->data, FIX2INT(argv[2]), sizeof(double));
} else if (PERMUTATION_P(argv[1])) {
- Data_Get_Struct(argv[1], gsl_permutation, p);
- gsl_ran_shuffle(r, p->data, FIX2INT(argv[2]), sizeof(size_t));
+ Data_Get_Struct(argv[1], gsl_permutation, p);
+ gsl_ran_shuffle(r, p->data, FIX2INT(argv[2]), sizeof(size_t));
} else {
- rb_raise(rb_eTypeError,
- "wrong argument type %s (Vector or Permutation expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s (Vector or Permutation expected)",
+ rb_class2name(CLASS_OF(argv[1])));
}
break;
default:
@@ -1098,31 +1096,31 @@ static VALUE rb_gsl_ran_shuffle(int argc, VALUE *argv, VALUE obj)
}
break;
default:
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
switch (argc) {
case 1:
if (VECTOR_P(argv[0])) {
- Data_Get_Struct(argv[0], gsl_vector, v);
- gsl_ran_shuffle(r, v->data, v->size, sizeof(double));
+ Data_Get_Struct(argv[0], gsl_vector, v);
+ gsl_ran_shuffle(r, v->data, v->size, sizeof(double));
} else if (PERMUTATION_P(argv[0])) {
- Data_Get_Struct(argv[0], gsl_permutation, p);
- gsl_ran_shuffle(r, p->data, p->size, sizeof(size_t));
+ Data_Get_Struct(argv[0], gsl_permutation, p);
+ gsl_ran_shuffle(r, p->data, p->size, sizeof(size_t));
} else {
- rb_raise(rb_eTypeError, "wrong argument type %s (Vector or Permutation expected)", rb_class2name(CLASS_OF(argv[0])));
+ rb_raise(rb_eTypeError, "wrong argument type %s (Vector or Permutation expected)", rb_class2name(CLASS_OF(argv[0])));
}
break;
case 2:
CHECK_FIXNUM(argv[1]);
if (VECTOR_P(argv[0])) {
- Data_Get_Struct(argv[0], gsl_vector, v);
- gsl_ran_shuffle(r, v->data, FIX2INT(argv[1]), sizeof(double));
+ Data_Get_Struct(argv[0], gsl_vector, v);
+ gsl_ran_shuffle(r, v->data, FIX2INT(argv[1]), sizeof(double));
} else if (PERMUTATION_P(argv[0])) {
- Data_Get_Struct(argv[0], gsl_permutation, p);
- gsl_ran_shuffle(r, p->data, FIX2INT(argv[1]), sizeof(size_t));
+ Data_Get_Struct(argv[0], gsl_permutation, p);
+ gsl_ran_shuffle(r, p->data, FIX2INT(argv[1]), sizeof(size_t));
} else {
- rb_raise(rb_eTypeError,
- "wrong argument type %s (Vector or Permutation expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s (Vector or Permutation expected)",
+ rb_class2name(CLASS_OF(argv[0])));
}
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
@@ -1135,31 +1133,31 @@ static VALUE rb_gsl_ran_shuffle(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_ran_choose(int argc, VALUE *argv, VALUE obj)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
gsl_vector *v = NULL, *v2 = NULL;
size_t k, n;
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
switch (argc) {
case 2:
CHECK_VECTOR(argv[0]);
CHECK_FIXNUM(argv[1]);
- Data_Get_Struct(argv[0], gsl_vector, v);
+ Data_Get_Struct(argv[0], gsl_vector, v);
n = v->size;
k = FIX2INT(argv[1]);
if (k > n) rb_raise(rb_eArgError, "the argument 1 must be less than or equal to the size of the vector.");
v2 = gsl_vector_alloc(k);
gsl_ran_choose(r, v2->data, k, v->data, n, sizeof(double));
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);;
+ return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);
break;
case 1:
CHECK_VECTOR(argv[0]);
- Data_Get_Struct(argv[0], gsl_vector, v);
+ Data_Get_Struct(argv[0], gsl_vector, v);
n = v->size;
k = v->size;
if (k > n) rb_raise(rb_eArgError, "the argument 1 must be less than or equal to the size of the vector.");
v2 = gsl_vector_alloc(k);
gsl_ran_choose(r, v2->data, k, v->data, n, sizeof(double));
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);;
+ return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 2)", argc);
@@ -1169,7 +1167,7 @@ static VALUE rb_gsl_ran_choose(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_ran_choose_singleton(int argc, VALUE *argv, VALUE obj)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
gsl_vector *v = NULL, *v2 = NULL;
size_t k, n;
switch (argc) {
@@ -1177,26 +1175,26 @@ static VALUE rb_gsl_ran_choose_singleton(int argc, VALUE *argv, VALUE obj)
CHECK_RNG(argv[0]);
CHECK_VECTOR(argv[1]);
CHECK_FIXNUM(argv[2]);
- Data_Get_Struct(argv[0], gsl_rng, r);
- Data_Get_Struct(argv[1], gsl_vector, v);
+ Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[1], gsl_vector, v);
n = v->size;
k = FIX2INT(argv[2]);
if (k > n) rb_raise(rb_eArgError, "the argument 1 must be less than or equal to the size of the vector.");
v2 = gsl_vector_alloc(k);
gsl_ran_choose(r, v2->data, k, v->data, n, sizeof(double));
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);;
+ return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);
break;
case 2:
CHECK_RNG(argv[0]);
CHECK_VECTOR(argv[1]);
- Data_Get_Struct(argv[0], gsl_rng, r);
- Data_Get_Struct(argv[1], gsl_vector, v);
+ Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[1], gsl_vector, v);
n = v->size;
k = v->size;
if (k > n) rb_raise(rb_eArgError, "the argument 1 must be less than or equal to the size of the vector.");
v2 = gsl_vector_alloc(k);
gsl_ran_choose(r, v2->data, k, v->data, n, sizeof(double));
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);;
+ return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
@@ -1206,32 +1204,31 @@ static VALUE rb_gsl_ran_choose_singleton(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_ran_sample(VALUE obj, VALUE vv, VALUE kk)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
gsl_vector *v = NULL, *v2 = NULL;
size_t k, n;
- Data_Get_Struct(obj, gsl_rng, r);
- Data_Get_Struct(vv, gsl_vector, v);
+ Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(vv, gsl_vector, v);
n = v->size;
k = FIX2INT(kk);
v2 = gsl_vector_alloc(k);
gsl_ran_sample(r, v2->data, k, v->data, n, sizeof(double));
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);;
+ return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);
}
-#ifdef GSL_1_3_LATER
static VALUE rb_gsl_ran_dirichlet(int argc, VALUE *argv, VALUE obj)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
gsl_vector *v = NULL, *v2 = NULL;
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
if (argc == 1) {
- Data_Get_Struct(argv[0], gsl_vector, v);
+ Data_Get_Struct(argv[0], gsl_vector, v);
v2 = gsl_vector_alloc(v->size);
gsl_ran_dirichlet(r, v->size, v->data, v2->data);
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2);
} else if (argc == 2) {
- Data_Get_Struct(argv[0], gsl_vector, v);
- Data_Get_Struct(argv[1], gsl_vector, v2);
+ Data_Get_Struct(argv[0], gsl_vector, v);
+ Data_Get_Struct(argv[1], gsl_vector, v2);
gsl_ran_dirichlet(r, v->size, v->data, v2->data);
return obj;
} else {
@@ -1242,18 +1239,17 @@ static VALUE rb_gsl_ran_dirichlet(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_ran_dirichlet_pdf(VALUE obj, VALUE a, VALUE t)
{
gsl_vector *alpha = NULL, *theta = NULL;
- Data_Get_Struct(a, gsl_vector, alpha);
- Data_Get_Struct(t, gsl_vector, theta);
+ Data_Get_Struct(a, gsl_vector, alpha);
+ Data_Get_Struct(t, gsl_vector, theta);
return rb_float_new(gsl_ran_dirichlet_pdf(alpha->size, alpha->data, theta->data));
}
static VALUE rb_gsl_ran_dirichlet_lnpdf(VALUE obj, VALUE a, VALUE t)
{
gsl_vector *alpha = NULL, *theta = NULL;
- Data_Get_Struct(a, gsl_vector, alpha);
- Data_Get_Struct(t, gsl_vector, theta);
+ Data_Get_Struct(a, gsl_vector, alpha);
+ Data_Get_Struct(t, gsl_vector, theta);
return rb_float_new(gsl_ran_dirichlet_lnpdf(alpha->size, alpha->data, theta->data));
}
-#endif
static VALUE rb_gsl_ran_discrete_new(VALUE klass, VALUE vv)
{
@@ -1280,21 +1276,13 @@ static VALUE rb_gsl_ran_discrete_pdf(VALUE obj, VALUE k, VALUE gg)
return rb_float_new(gsl_ran_discrete_pdf(FIX2INT(k), g));
}
-#ifdef HAVE_NARRAY_H
-#include "narray.h"
-#endif
-
/*****/
VALUE rb_gsl_eval_pdf_cdf(VALUE xx, double (*f)(double))
{
VALUE x, ary;
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *m = NULL, *mnew = NULL;
- size_t i, j, n;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- double *ptr1, *ptr2;
-#endif
+ size_t i, j, n;
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
switch(TYPE(xx)) {
case T_FIXNUM:
@@ -1316,6 +1304,8 @@ VALUE rb_gsl_eval_pdf_cdf(VALUE xx, double (*f)(double))
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *na;
+ double *ptr1, *ptr2;
xx = na_change_type(xx, NA_DFLOAT);
GetNArray(xx, na);
ptr1 = (double *) na->ptr;
@@ -1330,16 +1320,16 @@ VALUE rb_gsl_eval_pdf_cdf(VALUE xx, double (*f)(double))
Data_Get_Struct(xx, gsl_vector, v);
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- gsl_vector_set(vnew, i, (*f)(gsl_vector_get(v, i)));
+ gsl_vector_set(vnew, i, (*f)(gsl_vector_get(v, i)));
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
} else if (MATRIX_P(xx)) {
Data_Get_Struct(xx, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- gsl_matrix_set(mnew, i, j, (*f)(gsl_matrix_get(m, i, j)));
- }
+ for (j = 0; j < m->size2; j++) {
+ gsl_matrix_set(mnew, i, j, (*f)(gsl_matrix_get(m, i, j)));
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -1351,18 +1341,14 @@ VALUE rb_gsl_eval_pdf_cdf(VALUE xx, double (*f)(double))
return Qnil;
}
-VALUE rb_gsl_eval_pdf_cdf2(VALUE xx, VALUE aa,
- double (*f)(double, double))
+VALUE rb_gsl_eval_pdf_cdf2(VALUE xx, VALUE aa,
+ double (*f)(double, double))
{
VALUE x, ary;
double a;
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *m = NULL, *mnew = NULL;
size_t i, j, n;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- double *ptr1, *ptr2;
-#endif
Need_Float(aa);
a = NUM2DBL(aa);
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
@@ -1386,6 +1372,8 @@ VALUE rb_gsl_eval_pdf_cdf2(VALUE xx, VALUE aa,
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *na;
+ double *ptr1, *ptr2;
xx = na_change_type(xx, NA_DFLOAT);
GetNArray(xx, na);
ptr1 = (double *) na->ptr;
@@ -1400,16 +1388,16 @@ VALUE rb_gsl_eval_pdf_cdf2(VALUE xx, VALUE aa,
Data_Get_Struct(xx, gsl_vector, v);
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- gsl_vector_set(vnew, i, (*f)(gsl_vector_get(v, i), a));
+ gsl_vector_set(vnew, i, (*f)(gsl_vector_get(v, i), a));
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
} else if (MATRIX_P(xx)) {
Data_Get_Struct(xx, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- gsl_matrix_set(mnew, i, j, (*f)(gsl_matrix_get(m, i, j), a));
- }
+ for (j = 0; j < m->size2; j++) {
+ gsl_matrix_set(mnew, i, j, (*f)(gsl_matrix_get(m, i, j), a));
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -1421,18 +1409,14 @@ VALUE rb_gsl_eval_pdf_cdf2(VALUE xx, VALUE aa,
return Qnil;
}
-VALUE rb_gsl_eval_pdf_cdf3(VALUE xx, VALUE aa, VALUE bb,
- double (*f)(double, double, double))
+VALUE rb_gsl_eval_pdf_cdf3(VALUE xx, VALUE aa, VALUE bb,
+ double (*f)(double, double, double))
{
VALUE x, ary;
double a, b;
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *m = NULL, *mnew = NULL;
size_t i, j, n;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- double *ptr1, *ptr2;
-#endif
Need_Float(aa); Need_Float(bb);
a = NUM2DBL(aa); b = NUM2DBL(bb);
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
@@ -1456,6 +1440,8 @@ VALUE rb_gsl_eval_pdf_cdf3(VALUE xx, VALUE aa, VALUE bb,
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *na;
+ double *ptr1, *ptr2;
xx = na_change_type(xx, NA_DFLOAT);
GetNArray(xx, na);
ptr1 = (double *) na->ptr;
@@ -1470,16 +1456,16 @@ VALUE rb_gsl_eval_pdf_cdf3(VALUE xx, VALUE aa, VALUE bb,
Data_Get_Struct(xx, gsl_vector, v);
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- gsl_vector_set(vnew, i, (*f)(gsl_vector_get(v, i), a, b));
+ gsl_vector_set(vnew, i, (*f)(gsl_vector_get(v, i), a, b));
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
} else if (MATRIX_P(xx)) {
Data_Get_Struct(xx, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- gsl_matrix_set(mnew, i, j, (*f)(gsl_matrix_get(m, i, j), a, b));
- }
+ for (j = 0; j < m->size2; j++) {
+ gsl_matrix_set(mnew, i, j, (*f)(gsl_matrix_get(m, i, j), a, b));
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -1491,8 +1477,8 @@ VALUE rb_gsl_eval_pdf_cdf3(VALUE xx, VALUE aa, VALUE bb,
return Qnil;
}
-VALUE rb_gsl_eval_pdf_cdf2_uint(VALUE xx, VALUE aa,
- double (*f)(unsigned int, double))
+VALUE rb_gsl_eval_pdf_cdf2_uint(VALUE xx, VALUE aa,
+ double (*f)(unsigned int, double))
{
VALUE x, ary;
double a;
@@ -1501,10 +1487,6 @@ VALUE rb_gsl_eval_pdf_cdf2_uint(VALUE xx, VALUE aa,
gsl_matrix *m = NULL, *mnew = NULL;
gsl_matrix_int *mi = NULL;
size_t i, j, n;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *na;
- char *ptr1, *ptr2;
-#endif
Need_Float(aa);
a = NUM2DBL(aa);
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
@@ -1527,6 +1509,8 @@ VALUE rb_gsl_eval_pdf_cdf2_uint(VALUE xx, VALUE aa,
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ struct NARRAY *na;
+ char *ptr1, *ptr2;
GetNArray(xx, na);
n = na->total;
ary = na_make_object(na->type, na->rank, na->shape, CLASS_OF(xx));
@@ -1534,13 +1518,13 @@ VALUE rb_gsl_eval_pdf_cdf2_uint(VALUE xx, VALUE aa,
ptr2 = (char *)NA_STRUCT(ary)->ptr;
switch (na->type) {
case NA_LINT:
- for (i = 0; i < n; i++)
- ((int*)ptr2)[i] = (*f)((unsigned int) ((int*)ptr1)[i], a);
- break;
+ for (i = 0; i < n; i++)
+ ((int*)ptr2)[i] = (*f)((unsigned int) ((int*)ptr1)[i], a);
+ break;
default:
- for (i = 0; i < n; i++)
- ((double*)ptr2)[i] = (*f)((unsigned int) ((double*)ptr1)[i], a);
- break;
+ for (i = 0; i < n; i++)
+ ((double*)ptr2)[i] = (*f)((unsigned int) ((double*)ptr1)[i], a);
+ break;
}
return ary;
}
@@ -1549,32 +1533,32 @@ VALUE rb_gsl_eval_pdf_cdf2_uint(VALUE xx, VALUE aa,
Data_Get_Struct(xx, gsl_vector, v);
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- gsl_vector_set(vnew, i, (*f)((unsigned int) gsl_vector_get(v, i), a));
+ gsl_vector_set(vnew, i, (*f)((unsigned int) gsl_vector_get(v, i), a));
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
} else if (VECTOR_INT_P(xx)) {
Data_Get_Struct(xx, gsl_vector_int, vi);
vnew = gsl_vector_alloc(vi->size);
for (i = 0; i < vi->size; i++) {
- gsl_vector_set(vnew, i, (*f)((unsigned int) gsl_vector_int_get(vi, i), a));
+ gsl_vector_set(vnew, i, (*f)((unsigned int) gsl_vector_int_get(vi, i), a));
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
} else if (MATRIX_P(xx)) {
Data_Get_Struct(xx, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- gsl_matrix_set(mnew, i, j, (*f)((unsigned int) gsl_matrix_get(m, i, j), a));
- }
+ for (j = 0; j < m->size2; j++) {
+ gsl_matrix_set(mnew, i, j, (*f)((unsigned int) gsl_matrix_get(m, i, j), a));
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else if (MATRIX_INT_P(xx)) {
Data_Get_Struct(xx, gsl_matrix_int, mi);
mnew = gsl_matrix_alloc(mi->size1, mi->size2);
for (i = 0; i < mi->size1; i++) {
- for (j = 0; j < mi->size2; j++) {
- gsl_matrix_set(mnew, i, j, (*f)((unsigned int) gsl_matrix_int_get(mi, i, j), a));
- }
+ for (j = 0; j < mi->size2; j++) {
+ gsl_matrix_set(mnew, i, j, (*f)((unsigned int) gsl_matrix_int_get(mi, i, j), a));
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -1600,11 +1584,10 @@ static VALUE rb_gsl_ran_erlang_pdf(VALUE obj, VALUE x, VALUE a, VALUE n)
}
*/
-#ifdef GSL_1_8_LATER
static VALUE rb_gsl_ran_gaussian_ziggurat(int argc, VALUE *argv, VALUE obj)
{
- gsl_rng *r = NULL;
+ gsl_rng *r = NULL;
gsl_vector *v;
size_t n, i;
double sigma = 1.0;
@@ -1615,18 +1598,18 @@ static VALUE rb_gsl_ran_gaussian_ziggurat(int argc, VALUE *argv, VALUE obj)
n = NUM2INT(argv[2]);
sigma = NUM2DBL(argv[1]);
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
v = gsl_vector_alloc(n);
- for (i = 0; i < n; i++)
- gsl_vector_set(v, i, gsl_ran_gaussian_ziggurat(r, sigma));
+ for (i = 0; i < n; i++)
+ gsl_vector_set(v, i, gsl_ran_gaussian_ziggurat(r, sigma));
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
break;
case 2:
sigma = NUM2DBL(argv[1]);
- /* no break */
+ /* no break */
case 1:
CHECK_RNG(argv[0]);
- Data_Get_Struct(argv[0], gsl_rng, r);
+ Data_Get_Struct(argv[0], gsl_rng, r);
return rb_float_new(gsl_ran_gaussian_ziggurat(r, sigma));
break;
default:
@@ -1636,19 +1619,19 @@ static VALUE rb_gsl_ran_gaussian_ziggurat(int argc, VALUE *argv, VALUE obj)
}
break;
default:
- Data_Get_Struct(obj, gsl_rng, r);
+ Data_Get_Struct(obj, gsl_rng, r);
switch (argc) {
case 2:
n = NUM2INT(argv[1]);
sigma = NUM2DBL(argv[0]);
v = gsl_vector_alloc(n);
- for (i = 0; i < n; i++)
- gsl_vector_set(v, i, gsl_ran_gaussian_ziggurat(r, sigma));
+ for (i = 0; i < n; i++)
+ gsl_vector_set(v, i, gsl_ran_gaussian_ziggurat(r, sigma));
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
break;
case 1:
sigma = NUM2DBL(argv[0]);
- /* no break */
+ /* no break */
case 0:
return rb_float_new(gsl_ran_gaussian_ziggurat(r, sigma));
break;
@@ -1666,7 +1649,6 @@ static VALUE rb_gsl_ran_gamma_mt(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_ran_eval2(argc, argv, obj, gsl_ran_gamma_mt);
}
-#endif
void Init_gsl_ran(VALUE module)
{
@@ -1674,18 +1656,18 @@ void Init_gsl_ran(VALUE module)
VALUE cgsl_ran_discrete;
mgsl_ran = rb_define_module_under(module, "Ran");
-
+
rb_define_module_function(mgsl_ran, "gaussian", rb_gsl_ran_gaussian, -1);
rb_define_module_function(mgsl_ran, "ugaussian", rb_gsl_ran_gaussian, -1);
rb_define_method(cgsl_rng, "gaussian", rb_gsl_ran_gaussian, -1);
rb_define_alias(cgsl_rng, "ugaussian", "gaussian");
- rb_define_module_function(mgsl_ran, "gaussian_ratio_method",
- rb_gsl_ran_gaussian_ratio_method, -1);
+ rb_define_module_function(mgsl_ran, "gaussian_ratio_method",
+ rb_gsl_ran_gaussian_ratio_method, -1);
rb_define_module_function(mgsl_ran, "ugaussian_ratio_method",
- rb_gsl_ran_gaussian_ratio_method, -1);
- rb_define_method(cgsl_rng, "gaussian_ratio_method",
- rb_gsl_ran_gaussian_ratio_method, -1);
+ rb_gsl_ran_gaussian_ratio_method, -1);
+ rb_define_method(cgsl_rng, "gaussian_ratio_method",
+ rb_gsl_ran_gaussian_ratio_method, -1);
rb_define_alias(cgsl_rng, "ugaussian_ratio_method", "gaussian_ratio_method");
rb_define_module_function(mgsl_ran, "gaussian_pdf", rb_gsl_ran_gaussian_pdf, -1);
rb_define_module_function(mgsl_ran, "ugaussian_pdf", rb_gsl_ran_gaussian_pdf, -1);
@@ -1694,22 +1676,22 @@ void Init_gsl_ran(VALUE module)
rb_define_module_function(mgsl_ran, "ugaussian_tail", rb_gsl_ran_gaussian_tail, -1);
rb_define_method(cgsl_rng, "gaussian_tail", rb_gsl_ran_gaussian_tail, -1);
rb_define_alias(cgsl_rng, "ugaussian_tail", "gaussian_tail");
- rb_define_module_function(mgsl_ran, "gaussian_tail_pdf",
- rb_gsl_ran_gaussian_tail_pdf, -1);
- rb_define_module_function(mgsl_ran, "ugaussian_tail_pdf",
- rb_gsl_ran_gaussian_tail_pdf, -1);
-
- rb_define_module_function(mgsl_ran, "bivariate_gaussian",
- rb_gsl_ran_bivariate_gaussian, -1);
- rb_define_method(cgsl_rng, "bivariate_gaussian",
- rb_gsl_ran_bivariate_gaussian, -1);
- rb_define_module_function(mgsl_ran, "bivariate_gaussian_pdf",
- rb_gsl_ran_bivariate_gaussian_pdf, 5);
+ rb_define_module_function(mgsl_ran, "gaussian_tail_pdf",
+ rb_gsl_ran_gaussian_tail_pdf, -1);
+ rb_define_module_function(mgsl_ran, "ugaussian_tail_pdf",
+ rb_gsl_ran_gaussian_tail_pdf, -1);
+
+ rb_define_module_function(mgsl_ran, "bivariate_gaussian",
+ rb_gsl_ran_bivariate_gaussian, -1);
+ rb_define_method(cgsl_rng, "bivariate_gaussian",
+ rb_gsl_ran_bivariate_gaussian, -1);
+ rb_define_module_function(mgsl_ran, "bivariate_gaussian_pdf",
+ rb_gsl_ran_bivariate_gaussian_pdf, 5);
rb_define_module_function(mgsl_ran, "exponential", rb_gsl_ran_exponential, -1);
rb_define_method(cgsl_rng, "exponential", rb_gsl_ran_exponential, -1);
- rb_define_module_function(mgsl_ran, "exponential_pdf",
- rb_gsl_ran_exponential_pdf, 2);
+ rb_define_module_function(mgsl_ran, "exponential_pdf",
+ rb_gsl_ran_exponential_pdf, 2);
rb_define_module_function(mgsl_ran, "laplace", rb_gsl_ran_laplace, -1);
rb_define_method(cgsl_rng, "laplace", rb_gsl_ran_laplace, -1);
@@ -1729,8 +1711,8 @@ void Init_gsl_ran(VALUE module)
rb_define_module_function(mgsl_ran, "rayleigh_tail", rb_gsl_ran_rayleigh_tail, -1);
rb_define_method(cgsl_rng, "rayleigh_tail", rb_gsl_ran_rayleigh_tail, -1);
- rb_define_module_function(mgsl_ran, "rayleigh_tail_pdf",
- rb_gsl_ran_rayleigh_tail_pdf, 3);
+ rb_define_module_function(mgsl_ran, "rayleigh_tail_pdf",
+ rb_gsl_ran_rayleigh_tail_pdf, 3);
rb_define_module_function(mgsl_ran, "landau", rb_gsl_ran_landau, -1);
rb_define_method(cgsl_rng, "landau", rb_gsl_ran_landau, -1);
@@ -1799,14 +1781,12 @@ void Init_gsl_ran(VALUE module)
rb_define_module_function(mgsl_ran, "binomial", rb_gsl_ran_binomial, -1);
rb_define_method(cgsl_rng, "binomial", rb_gsl_ran_binomial, -1);
-#ifdef GSL_1_4_LATER
rb_define_module_function(mgsl_ran, "binomial_tpe", rb_gsl_ran_binomial_tpe, -1);
rb_define_method(cgsl_rng, "binomial_tpe", rb_gsl_ran_binomial_tpe, -1);
-#endif
rb_define_module_function(mgsl_ran, "binomial_pdf", rb_gsl_ran_binomial_pdf, 3);
- rb_define_module_function(mgsl_ran, "negative_binomial",
- rb_gsl_ran_negative_binomial, -1);
+ rb_define_module_function(mgsl_ran, "negative_binomial",
+ rb_gsl_ran_negative_binomial, -1);
rb_define_method(cgsl_rng, "negative_binomial", rb_gsl_ran_negative_binomial, -1);
rb_define_module_function(mgsl_ran, "negative_binomial_pdf", rb_gsl_ran_negative_binomial_pdf, 3);
@@ -1820,17 +1800,17 @@ void Init_gsl_ran(VALUE module)
rb_define_module_function(mgsl_ran, "hypergeometric", rb_gsl_ran_hypergeometric, -1);
rb_define_method(cgsl_rng, "hypergeometric", rb_gsl_ran_hypergeometric, -1);
- rb_define_module_function(mgsl_ran, "hypergeometric_pdf",
- rb_gsl_ran_hypergeometric_pdf, 4);
+ rb_define_module_function(mgsl_ran, "hypergeometric_pdf",
+ rb_gsl_ran_hypergeometric_pdf, 4);
rb_define_module_function(mgsl_ran, "logarithmic", rb_gsl_ran_logarithmic, -1);
rb_define_method(cgsl_rng, "logarithmic", rb_gsl_ran_logarithmic, -1);
rb_define_module_function(mgsl_ran, "logarithmic_pdf",
- rb_gsl_ran_logarithmic_pdf, 2);
+ rb_gsl_ran_logarithmic_pdf, 2);
rb_define_module_function(mgsl_ran, "dir_2d", rb_gsl_ran_dir_2d, -1);
- rb_define_module_function(mgsl_ran, "dir_2d_trig_method",
- rb_gsl_ran_dir_2d_trig_method, -1);
+ rb_define_module_function(mgsl_ran, "dir_2d_trig_method",
+ rb_gsl_ran_dir_2d_trig_method, -1);
rb_define_module_function(mgsl_ran, "dir_3d", rb_gsl_ran_dir_3d, -1);
rb_define_module_function(mgsl_ran, "dir_nd", rb_gsl_ran_dir_nd, -1);
@@ -1853,21 +1833,16 @@ void Init_gsl_ran(VALUE module)
rb_define_method(cgsl_rng, "discrete", rb_gsl_ran_discrete, 1);
rb_define_module_function(mgsl_ran, "discrete_pdf", rb_gsl_ran_discrete_pdf, 2);
-#ifdef GSL_1_3_LATER
rb_define_method(cgsl_rng, "dirichlet", rb_gsl_ran_dirichlet, -1);
rb_define_module_function(mgsl_ran, "dirichlet_pdf", rb_gsl_ran_dirichlet_pdf, 2);
rb_define_module_function(mgsl_ran, "dirichlet_lnpdf", rb_gsl_ran_dirichlet_lnpdf, 2);
-#endif
/* rb_define_method(cgsl_rng, "erlang", rb_gsl_ran_erlang, 2);
rb_define_method(module, "ran_erlang_pdf", rb_gsl_ran_erlang_pdf, 3);
rb_define_method(mgsl_ran, "erlang_pdf", rb_gsl_ran_erlang_pdf, 3);*/
-#ifdef GSL_1_8_LATER
rb_define_module_function(mgsl_ran, "gaussian_ziggurat", rb_gsl_ran_gaussian_ziggurat, -1);
rb_define_method(cgsl_rng, "gaussian_ziggurat", rb_gsl_ran_gaussian_ziggurat, -1);
rb_define_module_function(mgsl_ran, "gamma_mt", rb_gsl_ran_gamma_mt, -1);
rb_define_method(cgsl_rng, "gamma_mt", rb_gsl_ran_gamma_mt, -1);
-#endif
-
}
diff --git a/ext/gsl/rational.c b/ext/gsl_native/rational.c
similarity index 96%
rename from ext/gsl/rational.c
rename to ext/gsl_native/rational.c
index 22fe230..6ec7028 100644
--- a/ext/gsl/rational.c
+++ b/ext/gsl_native/rational.c
@@ -199,7 +199,7 @@ static VALUE rb_gsl_poly_make_rational(VALUE obj, VALUE other)
case T_ARRAY:
p2 = gsl_vector_alloc(RARRAY_LEN(other));
for (i = 0; i < p2->size; i++)
- gsl_vector_set(p2, i, NUM2DBL(rb_ary_entry(other, i)));
+ gsl_vector_set(p2, i, NUM2DBL(rb_ary_entry(other, i)));
rnew = gsl_rational_new(p, p2);
gsl_vector_free(p2);
break;
@@ -210,8 +210,8 @@ static VALUE rb_gsl_poly_make_rational(VALUE obj, VALUE other)
return Data_Wrap_Struct(cgsl_poly, 0, gsl_vector_free, p2);
break;
default:
- rb_raise(rb_eTypeError, "wrong argument type %s",
- rb_class2name(CLASS_OF(other)));
+ rb_raise(rb_eTypeError, "wrong argument type %s",
+ rb_class2name(CLASS_OF(other)));
break;
}
}
@@ -280,7 +280,7 @@ static VALUE rb_gsl_rational_uminus(VALUE obj)
if (RATIONAL_P(obj)) {
Data_Get_Struct(obj, gsl_rational, r);
rnew = gsl_rational_new(r->pnum, r->pden);
- for (i = 0; i < rnew->pnum->size; i++)
+ for (i = 0; i < rnew->pnum->size; i++)
gsl_vector_set(rnew->pnum, i, -gsl_vector_get(r->pnum, i));
return Data_Wrap_Struct(cgsl_rational, gsl_rational_mark, gsl_rational_free, rnew);
} else {
@@ -342,7 +342,7 @@ static VALUE rb_gsl_rational_div(VALUE obj, VALUE other)
case T_ARRAY:
p = gsl_vector_alloc(RARRAY_LEN(other));
for (i = 0; i < p->size; i++)
- gsl_vector_set(p, i, NUM2DBL(rb_ary_entry(other, i)));
+ gsl_vector_set(p, i, NUM2DBL(rb_ary_entry(other, i)));
rnew = gsl_rational_div_poly(r, p);
gsl_vector_free(p);
break;
@@ -352,8 +352,8 @@ static VALUE rb_gsl_rational_div(VALUE obj, VALUE other)
gsl_vector_scale(rnew->pnum, 1.0/NUM2DBL(other));
break;
default:
- rb_raise(rb_eTypeError, "wrong argument type %s",
- rb_class2name(CLASS_OF(other)));
+ rb_raise(rb_eTypeError, "wrong argument type %s",
+ rb_class2name(CLASS_OF(other)));
break;
}
}
@@ -407,8 +407,8 @@ static VALUE rb_gsl_rational_coerce(VALUE obj, VALUE other)
ptmp = gsl_vector_alloc(1);
gsl_vector_set(ptmp, 0, 1.0);
r = gsl_rational_new2(p, ptmp);
- return rb_ary_new3(2,
- Data_Wrap_Struct(cgsl_rational, gsl_rational_mark, gsl_rational_free, r), obj);
+ return rb_ary_new3(2,
+ Data_Wrap_Struct(cgsl_rational, gsl_rational_mark, gsl_rational_free, r), obj);
}
static VALUE rb_gsl_rational_zero(VALUE obj)
diff --git a/ext/gsl/rng.c b/ext/gsl_native/rng.c
similarity index 96%
rename from ext/gsl/rng.c
rename to ext/gsl_native/rng.c
index 3bb31f6..568b3ed 100644
--- a/ext/gsl/rng.c
+++ b/ext/gsl_native/rng.c
@@ -9,7 +9,7 @@
WITHOUT ANY WARRANTY.
*/
-/*
+/*
Document-class: <i>GSL::Rng</i>
Random number generator
*/
@@ -24,22 +24,22 @@ VALUE cgsl_rng;
enum rb_gsl_rng_generator {
GSL_RNG_DEFAULT,
- GSL_RNG_MT19937, GSL_RNG_MT19937_1999, GSL_RNG_MT19937_1998,
- GSL_RNG_RANLXS0, GSL_RNG_RANLXS1, GSL_RNG_RANLXS2,
- GSL_RNG_RANLXD1, GSL_RNG_RANLXD2,
+ GSL_RNG_MT19937, GSL_RNG_MT19937_1999, GSL_RNG_MT19937_1998,
+ GSL_RNG_RANLXS0, GSL_RNG_RANLXS1, GSL_RNG_RANLXS2,
+ GSL_RNG_RANLXD1, GSL_RNG_RANLXD2,
GSL_RNG_RANLUX, GSL_RNG_RANLUX389,
- GSL_RNG_CMRG, GSL_RNG_MRG,
+ GSL_RNG_CMRG, GSL_RNG_MRG,
GSL_RNG_TAUS, GSL_RNG_TAUS2, GSL_RNG_TAUS113, GSL_RNG_GFSR4,
- GSL_RNG_RAND,
+ GSL_RNG_RAND,
GSL_RNG_RANDOM_BSD, GSL_RNG_RANDOM_GLIBC2,
- GSL_RNG_RANDOM8_GLIBC2, GSL_RNG_RANDOM32_GLIBC2, GSL_RNG_RANDOM64_GLIBC2,
+ GSL_RNG_RANDOM8_GLIBC2, GSL_RNG_RANDOM32_GLIBC2, GSL_RNG_RANDOM64_GLIBC2,
GSL_RNG_RANDOM128_GLIBC2, GSL_RNG_RANDOM256_GLIBC2,
- GSL_RNG_RANDOM8_BSD, GSL_RNG_RANDOM32_BSD, GSL_RNG_RANDOM64_BSD,
+ GSL_RNG_RANDOM8_BSD, GSL_RNG_RANDOM32_BSD, GSL_RNG_RANDOM64_BSD,
GSL_RNG_RANDOM128_BSD, GSL_RNG_RANDOM256_BSD,
- GSL_RNG_RANDOM_LIBC5, GSL_RNG_RANDOM8_LIBC5, GSL_RNG_RANDOM32_LIBC5,
- GSL_RNG_RANDOM64_LIBC5, GSL_RNG_RANDOM128_LIBC5, GSL_RNG_RANDOM256_LIBC5,
- GSL_RNG_RAND48,
- GSL_RNG_RAN0, GSL_RNG_RAN1, GSL_RNG_RAN2, GSL_RNG_RAN3,
+ GSL_RNG_RANDOM_LIBC5, GSL_RNG_RANDOM8_LIBC5, GSL_RNG_RANDOM32_LIBC5,
+ GSL_RNG_RANDOM64_LIBC5, GSL_RNG_RANDOM128_LIBC5, GSL_RNG_RANDOM256_LIBC5,
+ GSL_RNG_RAND48,
+ GSL_RNG_RAN0, GSL_RNG_RAN1, GSL_RNG_RAN2, GSL_RNG_RAN3,
GSL_RNG_RANF, GSL_RNG_RANMAR, GSL_RNG_R250, GSL_RNG_TT800, GSL_RNG_VAX,
GSL_RNG_TRANSPUTER, GSL_RNG_RANDU, GSL_RNG_MINSTD,
GSL_RNG_UNI, GSL_RNG_UNI32, GSL_RNG_SLATEC, GSL_RNG_ZUF,
@@ -70,16 +70,16 @@ static VALUE rb_gsl_rng_alloc(int argc, VALUE *argv, VALUE klass)
T = gsl_rng_default;
seed = gsl_rng_default_seed;
} else {
- T = get_gsl_rng_type(argv[0]);
+ T = get_gsl_rng_type(argv[0]);
if (argc == 1) {
seed = gsl_rng_default_seed;
} else if (argc == 2) {
itype = TYPE(argv[1]);
if (itype == T_FIXNUM || itype == T_BIGNUM) {
- seed = FIX2INT(argv[1]);
+ seed = FIX2INT(argv[1]);
} else {
- rb_raise(rb_eArgError,
- "bad argument 2, seed must be an integer.");
+ rb_raise(rb_eArgError,
+ "bad argument 2, seed must be an integer.");
}
} else {
rb_raise(rb_eArgError, "too many arguments (%d for 0 or 1)", argc);
@@ -110,7 +110,6 @@ static const gsl_rng_type* get_gsl_rng_type_name(char *name)
{
if (str_tail_grep(name, "default") == 0) return gsl_rng_default;
else if (str_tail_grep(name, "mt19937") == 0) return gsl_rng_mt19937;
-#ifdef GSL_1_1_LATER
else if (str_tail_grep(name, "borosh13") == 0) return gsl_rng_borosh13;
else if (str_tail_grep(name, "coveyou") == 0) return gsl_rng_coveyou;
else if (str_tail_grep(name, "fishman18") == 0) return gsl_rng_fishman18;
@@ -120,15 +119,12 @@ static const gsl_rng_type* get_gsl_rng_type_name(char *name)
else if (str_tail_grep(name, "waterman14") == 0) return gsl_rng_waterman14;
else if (str_tail_grep(name, "knuthran") == 0) return gsl_rng_knuthran;
else if (str_tail_grep(name, "knuthran2") == 0) return gsl_rng_knuthran2;
-#endif
-#ifdef GSL_1_2_LATER
else if (str_tail_grep(name, "mt19937_1999") == 0) return gsl_rng_mt19937_1999;
else if (str_tail_grep(name, "mt19937-1999") == 0) return gsl_rng_mt19937_1999;
- else if (str_tail_grep(name, "mt19937_1998") == 0) return gsl_rng_mt19937_1998;
- else if (str_tail_grep(name, "mt19937-1998") == 0) return gsl_rng_mt19937_1998;
+ else if (str_tail_grep(name, "mt19937_1998") == 0) return gsl_rng_mt19937_1998;
+ else if (str_tail_grep(name, "mt19937-1998") == 0) return gsl_rng_mt19937_1998;
else if (str_tail_grep(name, "taus113") == 0) return gsl_rng_taus113;
else if (str_tail_grep(name, "taus2") == 0) return gsl_rng_taus2;
-#endif
else if (str_tail_grep(name, "mt19937") == 0) return gsl_rng_mt19937;
else if (str_tail_grep(name, "ranlxs0") == 0) return gsl_rng_ranlxs0;
else if (str_tail_grep(name, "ranlxs1") == 0) return gsl_rng_ranlxs1;
@@ -147,7 +143,7 @@ static const gsl_rng_type* get_gsl_rng_type_name(char *name)
else if (str_tail_grep(name, "random32_libc5") == 0) return gsl_rng_random32_libc5;
else if (str_tail_grep(name, "random64_libc5") == 0) return gsl_rng_random64_libc5;
else if (str_tail_grep(name, "random128_libc5") == 0) return gsl_rng_random128_libc5;
- else if (str_tail_grep(name, "random256_libc5") == 0) return gsl_rng_random256_libc5;
+ else if (str_tail_grep(name, "random256_libc5") == 0) return gsl_rng_random256_libc5;
else if (str_tail_grep(name, "random-libc5") == 0) return gsl_rng_random_libc5;
else if (str_tail_grep(name, "random8-libc5") == 0) return gsl_rng_random8_libc5;
else if (str_tail_grep(name, "random32-libc5") == 0) return gsl_rng_random32_libc5;
@@ -201,18 +197,16 @@ static const gsl_rng_type* get_gsl_rng_type_name(char *name)
else if (str_tail_grep(name, "rngextra-rng1") == 0) return rngextra_rng1;
else if (str_tail_grep(name, "rngextra-rng2") == 0) return rngextra_rng2;
#else
- else if (str_tail_grep(name, "rngextra_rng1")*str_tail_grep(name, "rngextra_rng2") == 0)
+ else if (str_tail_grep(name, "rngextra_rng1")*str_tail_grep(name, "rngextra_rng2") == 0)
rb_raise(rb_eNotImpError, "Install the rngextra package found at <http://www.network-theory.co.uk/download/rngextra/>.");
- else if (str_tail_grep(name, "rngextra_rng2")*str_tail_grep(name, "rngextra_rng2") == 0)
+ else if (str_tail_grep(name, "rngextra_rng2")*str_tail_grep(name, "rngextra_rng2") == 0)
rb_raise(rb_eNotImpError, "Install the rngextra package found at <http://www.network-theory.co.uk/download/rngextra/>.");
- else if (str_tail_grep(name, "rngextra-rng1")*str_tail_grep(name, "rngextra_rng2") == 0)
+ else if (str_tail_grep(name, "rngextra-rng1")*str_tail_grep(name, "rngextra_rng2") == 0)
rb_raise(rb_eNotImpError, "Install the rngextra package found at <http://www.network-theory.co.uk/download/rngextra/>.");
- else if (str_tail_grep(name, "rngextra-rng2")*str_tail_grep(name, "rngextra_rng2") == 0)
+ else if (str_tail_grep(name, "rngextra-rng2")*str_tail_grep(name, "rngextra_rng2") == 0)
rb_raise(rb_eNotImpError, "Install the rngextra package found at <http://www.network-theory.co.uk/download/rngextra/>.");
#endif
-#ifdef GSL_1_9_LATER
else if (str_tail_grep(name, "knuthran2002") == 0) return gsl_rng_knuthran2002;
-#endif
else
rb_raise(rb_eArgError, "unknown generator type \"%s\"", name);
}
@@ -224,12 +218,10 @@ static const gsl_rng_type* get_gsl_rng_type_int(int itype)
switch (itype) {
case GSL_RNG_DEFAULT: T = gsl_rng_default; break;
case GSL_RNG_MT19937: T = gsl_rng_mt19937; break; /* default */
-#ifdef GSL_1_2_LATER
case GSL_RNG_MT19937_1999: T = gsl_rng_mt19937_1999; break;
case GSL_RNG_MT19937_1998: T = gsl_rng_mt19937_1998; break;
case GSL_RNG_TAUS113: T = gsl_rng_taus113; break;
case GSL_RNG_TAUS2: T = gsl_rng_taus2; break;
-#endif
case GSL_RNG_RANLXS0: T = gsl_rng_ranlxs0; break;
case GSL_RNG_RANLXS1: T = gsl_rng_ranlxs1; break;
case GSL_RNG_RANLXS2: T = gsl_rng_ranlxs2; break;
@@ -277,7 +269,6 @@ static const gsl_rng_type* get_gsl_rng_type_int(int itype)
case GSL_RNG_UNI32: T = gsl_rng_uni32; break;
case GSL_RNG_SLATEC: T = gsl_rng_slatec; break;
case GSL_RNG_ZUF: T = gsl_rng_zuf; break;
-#ifdef GSL_1_1_LATER
case GSL_RNG_BOROSH13: T = gsl_rng_borosh13; break;
case GSL_RNG_COVEYOU: T = gsl_rng_coveyou; break;
case GSL_RNG_FISHMAN18: T = gsl_rng_fishman18; break;
@@ -287,7 +278,6 @@ static const gsl_rng_type* get_gsl_rng_type_int(int itype)
case GSL_RNG_KNUTHRAN2: T = gsl_rng_knuthran2; break;
case GSL_RNG_LECUYER21: T = gsl_rng_lecuyer21; break;
case GSL_RNG_WATERMAN14: T = gsl_rng_waterman14; break;
-#endif
#ifdef HAVE_RNGEXTRA_RNGEXTRA_H
case GSL_RNGEXTRA_RNG1: T = rngextra_rng1; break;
case GSL_RNGEXTRA_RNG2: T = rngextra_rng2; break;
@@ -297,14 +287,12 @@ static const gsl_rng_type* get_gsl_rng_type_int(int itype)
rb_raise(rb_eNotImpError, "Install the rngextra package found at <http://www.network-theory.co.uk/download/rngextra/>.");
break;
#endif
-#ifdef GSL_1_9_LATER
case GSL_RNG_KNUTHRAN2002: T = gsl_rng_knuthran2002; break;
-#endif
default:
rb_raise(rb_eTypeError, "wrong generator type");
}
- return T;
+ return T;
}
static void rb_gsl_rng_define_const_type(VALUE module)
@@ -404,10 +392,10 @@ static VALUE rb_gsl_rng_set(VALUE obj, VALUE s)
/*
Document-method: <i>GSL::Rng#get</i>
- Returns a random integer from the generator.
- The minimum and maximum values depend on the algorithm used,
- but all integers in the range [min,max] are equally likely.
- The values of min and max can determined using the auxiliary
+ Returns a random integer from the generator.
+ The minimum and maximum values depend on the algorithm used,
+ but all integers in the range [min,max] are equally likely.
+ The values of min and max can determined using the auxiliary
methodss GSL::Rng#max and GSL::Rng#min.
*/
static VALUE rb_gsl_rng_get(int argc, VALUE *argv, VALUE obj)
@@ -533,7 +521,6 @@ static VALUE rb_gsl_rng_print_state(VALUE obj)
return obj;
}
-#ifdef GSL_1_4_LATER
static VALUE rb_gsl_rng_fwrite(VALUE obj, VALUE io)
{
gsl_rng *h = NULL;
@@ -557,7 +544,6 @@ static VALUE rb_gsl_rng_fread(VALUE obj, VALUE io)
if (flag == 1) fclose(f);
return INT2FIX(status);
}
-#endif
static VALUE rb_gsl_rng_memcpy(VALUE obj, VALUE dst, VALUE org)
{
@@ -574,7 +560,7 @@ void Init_gsl_rng(VALUE module)
cgsl_rng = rb_define_class_under(module, "Rng", cGSL_Object);
rb_gsl_rng_define_const_type(module);
-
+
rb_define_singleton_method(cgsl_rng, "alloc", rb_gsl_rng_alloc, -1);
rb_define_singleton_method(cgsl_rng, "default_seed", rb_gsl_rng_default_seed, 0);
@@ -603,9 +589,7 @@ void Init_gsl_rng(VALUE module)
rb_define_alias(cgsl_rng, "duplicate", "clone");
rb_define_method(cgsl_rng, "print_state", rb_gsl_rng_print_state, 0);
-#ifdef GSL_1_4_LATER
rb_define_method(cgsl_rng, "fwrite", rb_gsl_rng_fwrite, 1);
rb_define_method(cgsl_rng, "fread", rb_gsl_rng_fread, 1);
-#endif
rb_define_singleton_method(cgsl_rng, "memcpy", rb_gsl_rng_memcpy, 2);
}
diff --git a/ext/gsl/root.c b/ext/gsl_native/root.c
similarity index 89%
rename from ext/gsl/root.c
rename to ext/gsl_native/root.c
index 9a9b5af..dfed2c8 100644
--- a/ext/gsl/root.c
+++ b/ext/gsl_native/root.c
@@ -2,7 +2,7 @@
root.c
Ruby/GSL: Ruby extension library for GSL (GNU Scientific Library)
(C) Copyright 2004 by Yoshiki Tsunesada
-
+
Ruby/GSL is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License.
This library is distributed in the hope that it will be useful, but
@@ -42,8 +42,8 @@ static VALUE rb_gsl_fsolver_new(VALUE klass, VALUE t)
} else if (!str_tail_grep(name, "brent")) {
T = gsl_root_fsolver_brent;
} else {
- rb_raise(rb_eTypeError,
- "type must be \"bisection\" or \"falsepos\", or \"brent\".");
+ rb_raise(rb_eTypeError,
+ "type must be \"bisection\" or \"falsepos\", or \"brent\".");
}
break;
case T_FIXNUM:
@@ -64,7 +64,7 @@ static VALUE rb_gsl_fsolver_new(VALUE klass, VALUE t)
break;
default:
rb_raise(rb_eTypeError, "wrong argument type %s (String or Fixnum expected)",
- rb_class2name(CLASS_OF(t)));
+ rb_class2name(CLASS_OF(t)));
break;
}
s = gsl_root_fsolver_alloc(T);
@@ -124,28 +124,28 @@ static VALUE rb_gsl_fsolver_name(VALUE obj)
static VALUE rb_gsl_fsolver_test_interval(VALUE obj, VALUE eabs, VALUE erel)
{
gsl_root_fsolver *s = NULL;
- Need_Float(eabs); Need_Float(erel);
+ Need_Float(eabs); Need_Float(erel);
Data_Get_Struct(obj, gsl_root_fsolver, s);
return INT2FIX(gsl_root_test_interval(s->x_lower, s->x_upper,
- NUM2DBL(eabs), NUM2DBL(erel)));
+ NUM2DBL(eabs), NUM2DBL(erel)));
}
static VALUE rb_gsl_root_test_interval(VALUE obj, VALUE xl, VALUE xu, VALUE eabs,
- VALUE erel)
+ VALUE erel)
{
Need_Float(xl); Need_Float(xu);
- Need_Float(eabs); Need_Float(erel);
+ Need_Float(eabs); Need_Float(erel);
return INT2FIX(gsl_root_test_interval(NUM2DBL(xl), NUM2DBL(xu),
- NUM2DBL(eabs), NUM2DBL(erel)));
+ NUM2DBL(eabs), NUM2DBL(erel)));
}
static VALUE rb_gsl_root_test_delta(VALUE obj, VALUE xl, VALUE xu, VALUE eabs,
- VALUE erel)
+ VALUE erel)
{
Need_Float(xl); Need_Float(xu);
- Need_Float(eabs); Need_Float(erel);
+ Need_Float(eabs); Need_Float(erel);
return INT2FIX(gsl_root_test_delta(NUM2DBL(xl), NUM2DBL(xu),
- NUM2DBL(eabs), NUM2DBL(erel)));
+ NUM2DBL(eabs), NUM2DBL(erel)));
}
static VALUE rb_gsl_root_test_residual(VALUE obj, VALUE xl,VALUE eabs)
@@ -154,7 +154,7 @@ static VALUE rb_gsl_root_test_residual(VALUE obj, VALUE xl,VALUE eabs)
return INT2FIX(gsl_root_test_residual(NUM2DBL(xl), NUM2DBL(eabs)));
}
-static VALUE rb_gsl_fsolver_solve(int argc, VALUE *argv, VALUE *obj)
+static VALUE rb_gsl_fsolver_solve(int argc, VALUE *argv, VALUE obj)
{
gsl_root_fsolver *s = NULL;
gsl_function *F = NULL;
@@ -165,15 +165,15 @@ static VALUE rb_gsl_fsolver_solve(int argc, VALUE *argv, VALUE *obj)
Check_Type(argv[2], T_ARRAY);
epsabs = NUM2DBL(rb_ary_entry(argv[2], 0));
epsrel = NUM2DBL(rb_ary_entry(argv[2], 1));
- /* no break */
+ /* no break */
case 2:
Check_Type(argv[1], T_ARRAY);
xl = NUM2DBL(rb_ary_entry(argv[1], 0));
xh = NUM2DBL(rb_ary_entry(argv[1], 1));
break;
default:
- rb_raise(rb_eArgError,
- "Usage: solve(f = Function, range = Array, eps = Array)");
+ rb_raise(rb_eArgError,
+ "Usage: solve(f = Function, range = Array, eps = Array)");
break;
}
CHECK_FUNCTION(argv[0]);
@@ -228,7 +228,7 @@ static VALUE rb_gsl_fdfsolver_new(VALUE klass, VALUE t)
break;
default:
rb_raise(rb_eTypeError, "wrong argument type %s (String or Fixnum expected)",
- rb_class2name(CLASS_OF(t)));
+ rb_class2name(CLASS_OF(t)));
break;
}
s = gsl_root_fdfsolver_alloc(T);
@@ -269,7 +269,7 @@ static VALUE rb_gsl_fdfsolver_name(VALUE obj)
return rb_str_new2(gsl_root_fdfsolver_name(s));
}
-static VALUE rb_gsl_fdfsolver_solve(int argc, VALUE *argv, VALUE *obj)
+static VALUE rb_gsl_fdfsolver_solve(int argc, VALUE *argv, VALUE obj)
{
gsl_root_fdfsolver *s = NULL;
double x = 0.0, x0, epsabs = 0.0, epsrel = 1e-6;
@@ -280,7 +280,7 @@ static VALUE rb_gsl_fdfsolver_solve(int argc, VALUE *argv, VALUE *obj)
Check_Type(argv[2], T_ARRAY);
epsabs = NUM2DBL(rb_ary_entry(argv[2], 0));
epsrel = NUM2DBL(rb_ary_entry(argv[2], 1));
- /* no break */
+ /* no break */
case 2:
Need_Float(argv[1]);
x0 = NUM2DBL(argv[1]);
@@ -292,7 +292,7 @@ static VALUE rb_gsl_fdfsolver_solve(int argc, VALUE *argv, VALUE *obj)
CHECK_FUNCTION_FDF(argv[0]);
Data_Get_Struct(argv[0], gsl_function_fdf, F);
Data_Get_Struct(obj, gsl_root_fdfsolver, s);
- gsl_root_fdfsolver_set(s, F, x0);
+ gsl_root_fdfsolver_set(s, F, x0);
do {
iter++;
status = gsl_root_fdfsolver_iterate (s);
@@ -361,32 +361,32 @@ void Init_gsl_root(VALUE module)
mgsl_root = rb_define_module_under(module, "Root");
cgsl_fsolver = rb_define_class_under(mgsl_root, "FSolver", cGSL_Object);
- rb_define_singleton_method(cgsl_fsolver, "alloc", rb_gsl_fsolver_new, 1);
-
- rb_define_method(cgsl_fsolver, "set", rb_gsl_fsolver_set, 3);
- rb_define_method(cgsl_fsolver, "iterate", rb_gsl_fsolver_iterate, 0);
- rb_define_method(cgsl_fsolver, "root", rb_gsl_fsolver_root, 0);
- rb_define_method(cgsl_fsolver, "name", rb_gsl_fsolver_name, 0);
- rb_define_method(cgsl_fsolver, "x_lower", rb_gsl_fsolver_x_lower, 0);
- rb_define_method(cgsl_fsolver, "x_upper", rb_gsl_fsolver_x_upper, 0);
- rb_define_method(cgsl_fsolver, "test_interval", rb_gsl_fsolver_test_interval, 2);
- rb_define_method(cgsl_fsolver, "solve", rb_gsl_fsolver_solve, -1);
-
- rb_define_singleton_method(mgsl_root, "test_interval",
- rb_gsl_root_test_interval, 4);
- rb_define_singleton_method(mgsl_root, "test_delta",
- rb_gsl_root_test_delta, 4);
- rb_define_singleton_method(mgsl_root, "test_residual",
- rb_gsl_root_test_residual, 2);
+ rb_define_singleton_method(cgsl_fsolver, "alloc", rb_gsl_fsolver_new, 1);
+
+ rb_define_method(cgsl_fsolver, "set", rb_gsl_fsolver_set, 3);
+ rb_define_method(cgsl_fsolver, "iterate", rb_gsl_fsolver_iterate, 0);
+ rb_define_method(cgsl_fsolver, "root", rb_gsl_fsolver_root, 0);
+ rb_define_method(cgsl_fsolver, "name", rb_gsl_fsolver_name, 0);
+ rb_define_method(cgsl_fsolver, "x_lower", rb_gsl_fsolver_x_lower, 0);
+ rb_define_method(cgsl_fsolver, "x_upper", rb_gsl_fsolver_x_upper, 0);
+ rb_define_method(cgsl_fsolver, "test_interval", rb_gsl_fsolver_test_interval, 2);
+ rb_define_method(cgsl_fsolver, "solve", rb_gsl_fsolver_solve, -1);
+
+ rb_define_singleton_method(mgsl_root, "test_interval",
+ rb_gsl_root_test_interval, 4);
+ rb_define_singleton_method(mgsl_root, "test_delta",
+ rb_gsl_root_test_delta, 4);
+ rb_define_singleton_method(mgsl_root, "test_residual",
+ rb_gsl_root_test_residual, 2);
cgsl_fdfsolver = rb_define_class_under(mgsl_root, "FdfSolver", cGSL_Object);
- rb_define_singleton_method(cgsl_fdfsolver, "alloc", rb_gsl_fdfsolver_new, 1);
+ rb_define_singleton_method(cgsl_fdfsolver, "alloc", rb_gsl_fdfsolver_new, 1);
- rb_define_method(cgsl_fdfsolver, "set", rb_gsl_fdfsolver_set, 2);
- rb_define_method(cgsl_fdfsolver, "iterate", rb_gsl_fdfsolver_iterate, 0);
- rb_define_method(cgsl_fdfsolver, "root", rb_gsl_fdfsolver_root, 0);
- rb_define_method(cgsl_fdfsolver, "name", rb_gsl_fdfsolver_name, 0);
- rb_define_method(cgsl_fdfsolver, "solve", rb_gsl_fdfsolver_solve, -1);
+ rb_define_method(cgsl_fdfsolver, "set", rb_gsl_fdfsolver_set, 2);
+ rb_define_method(cgsl_fdfsolver, "iterate", rb_gsl_fdfsolver_iterate, 0);
+ rb_define_method(cgsl_fdfsolver, "root", rb_gsl_fdfsolver_root, 0);
+ rb_define_method(cgsl_fdfsolver, "name", rb_gsl_fdfsolver_name, 0);
+ rb_define_method(cgsl_fdfsolver, "solve", rb_gsl_fdfsolver_solve, -1);
rb_define_method(cgsl_function, "fsolve", rb_gsl_function_rootfinder, -1);
rb_define_alias(cgsl_function, "solve", "fsolve");
diff --git a/ext/gsl/sf.c b/ext/gsl_native/sf.c
similarity index 85%
rename from ext/gsl/sf.c
rename to ext/gsl_native/sf.c
index 6059ef2..aa50546 100644
--- a/ext/gsl/sf.c
+++ b/ext/gsl_native/sf.c
@@ -12,9 +12,6 @@
#include "include/rb_gsl_array.h"
#include "include/rb_gsl_sf.h"
-#ifdef HAVE_NARRAY_H
-#include "narray.h"
-#endif
VALUE cgsl_sf_result, cgsl_sf_result_e10;
@@ -154,10 +151,6 @@ VALUE rb_gsl_sf_eval_int_double(double (*func)(int, double), VALUE jj, VALUE arg
VALUE ary, xx;
size_t i, j, k, n;
double val;
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
CHECK_FIXNUM(jj);
j = FIX2INT(jj);
if (CLASS_OF(argv) == rb_cRange) argv = rb_gsl_range2ary(argv);
@@ -181,6 +174,8 @@ VALUE rb_gsl_sf_eval_int_double(double (*func)(int, double), VALUE jj, VALUE arg
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
argv = na_change_type(argv, NA_DFLOAT);
ptr1 = NA_PTR_TYPE(argv, double*);
GetNArray(argv, na);
@@ -195,10 +190,10 @@ VALUE rb_gsl_sf_eval_int_double(double (*func)(int, double), VALUE jj, VALUE arg
Data_Get_Struct(argv, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (k = 0; k < m->size2; k++) {
- val = (*func)(j, gsl_matrix_get(m, i, k));
- gsl_matrix_set(mnew, i, k, val);
- }
+ for (k = 0; k < m->size2; k++) {
+ val = (*func)(j, gsl_matrix_get(m, i, k));
+ gsl_matrix_set(mnew, i, k, val);
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -207,8 +202,8 @@ VALUE rb_gsl_sf_eval_int_double(double (*func)(int, double), VALUE jj, VALUE arg
n = v->size;
vnew = gsl_vector_alloc(n);
for (i = 0; i < n; i++) {
- val = (*func)(j, gsl_vector_get(v, i));
- gsl_vector_set(vnew, i, val);
+ val = (*func)(j, gsl_vector_get(v, i));
+ gsl_vector_set(vnew, i, val);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
}
@@ -223,10 +218,6 @@ VALUE rb_gsl_sf_eval_double_int(double (*func)(double, int), VALUE argv, VALUE j
VALUE ary, xx;
size_t i, j, k, n;
double val;
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
CHECK_FIXNUM(jj);
j = FIX2INT(jj);
if (CLASS_OF(argv) == rb_cRange) argv = rb_gsl_range2ary(argv);
@@ -250,6 +241,8 @@ VALUE rb_gsl_sf_eval_double_int(double (*func)(double, int), VALUE argv, VALUE j
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
argv = na_change_type(argv, NA_DFLOAT);
ptr1 = NA_PTR_TYPE(argv, double*);
GetNArray(argv, na);
@@ -264,10 +257,10 @@ VALUE rb_gsl_sf_eval_double_int(double (*func)(double, int), VALUE argv, VALUE j
Data_Get_Struct(argv, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (k = 0; k < m->size2; k++) {
- val = (*func)(gsl_matrix_get(m, i, k), j);
- gsl_matrix_set(mnew, i, k, val);
- }
+ for (k = 0; k < m->size2; k++) {
+ val = (*func)(gsl_matrix_get(m, i, k), j);
+ gsl_matrix_set(mnew, i, k, val);
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -276,8 +269,8 @@ VALUE rb_gsl_sf_eval_double_int(double (*func)(double, int), VALUE argv, VALUE j
n = v->size;
vnew = gsl_vector_alloc(n);
for (i = 0; i < n; i++) {
- val = (*func)(gsl_vector_get(v, i), j);
- gsl_vector_set(vnew, i, val);
+ val = (*func)(gsl_vector_get(v, i), j);
+ gsl_vector_set(vnew, i, val);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
}
@@ -287,17 +280,13 @@ VALUE rb_gsl_sf_eval_double_int(double (*func)(double, int), VALUE argv, VALUE j
}
VALUE rb_gsl_sf_eval_int_int_double(double (*func)(int, int, double), VALUE jj,
- VALUE jj2, VALUE argv)
+ VALUE jj2, VALUE argv)
{
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *m = NULL, *mnew = NULL;
VALUE ary, xx;
size_t i, j, k, j2, n;
double val;
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
CHECK_FIXNUM(jj); CHECK_FIXNUM(jj2);
j = FIX2INT(jj);
j2 = FIX2INT(jj2);
@@ -322,6 +311,8 @@ VALUE rb_gsl_sf_eval_int_int_double(double (*func)(int, int, double), VALUE jj,
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
argv = na_change_type(argv, NA_DFLOAT);
ptr1 = NA_PTR_TYPE(argv, double*);
GetNArray(argv, na);
@@ -357,18 +348,14 @@ VALUE rb_gsl_sf_eval_int_int_double(double (*func)(int, int, double), VALUE jj,
}
}
-VALUE rb_gsl_sf_eval_int_double_double(double (*func)(int, double, double), VALUE jj,
- VALUE ff, VALUE argv)
+VALUE rb_gsl_sf_eval_int_double_double(double (*func)(int, double, double), VALUE jj,
+ VALUE ff, VALUE argv)
{
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *m = NULL, *mnew = NULL;
VALUE ary, xx;
size_t i, j, k, n;
double f, val;
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
CHECK_FIXNUM(jj);
Need_Float(ff);
j = FIX2INT(jj);
@@ -394,6 +381,8 @@ VALUE rb_gsl_sf_eval_int_double_double(double (*func)(int, double, double), VALU
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
argv = na_change_type(argv, NA_DFLOAT);
ptr1 = NA_PTR_TYPE(argv, double*);
GetNArray(argv, na);
@@ -408,10 +397,10 @@ VALUE rb_gsl_sf_eval_int_double_double(double (*func)(int, double, double), VALU
Data_Get_Struct(argv, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (k = 0; k < m->size2; k++) {
- val = (*func)(j, f, gsl_matrix_get(m, i, k));
- gsl_matrix_set(mnew, i, k, val);
- }
+ for (k = 0; k < m->size2; k++) {
+ val = (*func)(j, f, gsl_matrix_get(m, i, k));
+ gsl_matrix_set(mnew, i, k, val);
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -420,8 +409,8 @@ VALUE rb_gsl_sf_eval_int_double_double(double (*func)(int, double, double), VALU
n = v->size;
vnew = gsl_vector_alloc(n);
for (i = 0; i < n; i++) {
- val = (*func)(j, f, gsl_vector_get(v, i));
- gsl_vector_set(vnew, i, val);
+ val = (*func)(j, f, gsl_vector_get(v, i));
+ gsl_vector_set(vnew, i, val);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
}
@@ -436,10 +425,6 @@ VALUE rb_gsl_sf_eval_double_double(double (*func)(double, double), VALUE ff, VAL
VALUE ary, xx;
size_t i, k, n;
double val, f;
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
Need_Float(ff);
f = NUM2DBL(ff);
if (CLASS_OF(argv) == rb_cRange) argv = rb_gsl_range2ary(argv);
@@ -463,6 +448,8 @@ VALUE rb_gsl_sf_eval_double_double(double (*func)(double, double), VALUE ff, VAL
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
argv = na_change_type(argv, NA_DFLOAT);
ptr1 = NA_PTR_TYPE(argv, double*);
GetNArray(argv, na);
@@ -477,9 +464,9 @@ VALUE rb_gsl_sf_eval_double_double(double (*func)(double, double), VALUE ff, VAL
Data_Get_Struct(argv, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (k = 0; k < m->size2; k++) {
- gsl_matrix_set(mnew, i, k, (*func)(f, gsl_matrix_get(m, i, k)));
- }
+ for (k = 0; k < m->size2; k++) {
+ gsl_matrix_set(mnew, i, k, (*func)(f, gsl_matrix_get(m, i, k)));
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -487,7 +474,7 @@ VALUE rb_gsl_sf_eval_double_double(double (*func)(double, double), VALUE ff, VAL
Data_Get_Struct(argv, gsl_vector, v);
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- gsl_vector_set(vnew, i, (*func)(f, gsl_vector_get(v, i)));
+ gsl_vector_set(vnew, i, (*func)(f, gsl_vector_get(v, i)));
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
}
@@ -495,18 +482,14 @@ VALUE rb_gsl_sf_eval_double_double(double (*func)(double, double), VALUE ff, VAL
}
}
-VALUE rb_gsl_sf_eval_double3(double (*func)(double, double, double),
- VALUE ff, VALUE ff2, VALUE argv)
+VALUE rb_gsl_sf_eval_double3(double (*func)(double, double, double),
+ VALUE ff, VALUE ff2, VALUE argv)
{
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *m = NULL, *mnew = NULL;
VALUE ary, xx;
size_t i, k, n;
double val, f, f2;
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
Need_Float(ff); Need_Float(ff2);
f = NUM2DBL(ff);
f2 = NUM2DBL(ff2);
@@ -531,6 +514,8 @@ VALUE rb_gsl_sf_eval_double3(double (*func)(double, double, double),
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
argv = na_change_type(argv, NA_DFLOAT);
ptr1 = NA_PTR_TYPE(argv, double*);
GetNArray(argv, na);
@@ -545,10 +530,10 @@ VALUE rb_gsl_sf_eval_double3(double (*func)(double, double, double),
Data_Get_Struct(argv, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (k = 0; k < m->size2; k++) {
- val = (*func)(f, f2, gsl_matrix_get(m, i, k));
- gsl_matrix_set(mnew, i, k, val);
- }
+ for (k = 0; k < m->size2; k++) {
+ val = (*func)(f, f2, gsl_matrix_get(m, i, k));
+ gsl_matrix_set(mnew, i, k, val);
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -557,8 +542,8 @@ VALUE rb_gsl_sf_eval_double3(double (*func)(double, double, double),
n = v->size;
vnew = gsl_vector_alloc(n);
for (i = 0; i < n; i++) {
- val = (*func)(f, f2, gsl_vector_get(v, i));
- gsl_vector_set(vnew, i, val);
+ val = (*func)(f, f2, gsl_vector_get(v, i));
+ gsl_vector_set(vnew, i, val);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
}
@@ -566,18 +551,14 @@ VALUE rb_gsl_sf_eval_double3(double (*func)(double, double, double),
}
}
-VALUE rb_gsl_sf_eval_double4(double (*func)(double, double, double, double),
- VALUE ff, VALUE ff2, VALUE ff3, VALUE argv)
+VALUE rb_gsl_sf_eval_double4(double (*func)(double, double, double, double),
+ VALUE ff, VALUE ff2, VALUE ff3, VALUE argv)
{
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *m = NULL, *mnew = NULL;
VALUE ary, xx;
size_t i, k, n;
double val, f, f2, f3;
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
Need_Float(ff); Need_Float(ff2); Need_Float(ff3);
f = NUM2DBL(ff);
f2 = NUM2DBL(ff2);
@@ -603,6 +584,8 @@ VALUE rb_gsl_sf_eval_double4(double (*func)(double, double, double, double),
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
argv = na_change_type(argv, NA_DFLOAT);
ptr1 = NA_PTR_TYPE(argv, double*);
GetNArray(argv, na);
@@ -617,10 +600,10 @@ VALUE rb_gsl_sf_eval_double4(double (*func)(double, double, double, double),
Data_Get_Struct(argv, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (k = 0; k < m->size2; k++) {
- val = (*func)(f, f2, f3, gsl_matrix_get(m, i, k));
- gsl_matrix_set(mnew, i, k, val);
- }
+ for (k = 0; k < m->size2; k++) {
+ val = (*func)(f, f2, f3, gsl_matrix_get(m, i, k));
+ gsl_matrix_set(mnew, i, k, val);
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -629,8 +612,8 @@ VALUE rb_gsl_sf_eval_double4(double (*func)(double, double, double, double),
n = v->size;
vnew = gsl_vector_alloc(n);
for (i = 0; i < n; i++) {
- val = (*func)(f, f2, f3, gsl_vector_get(v, i));
- gsl_vector_set(vnew, i, val);
+ val = (*func)(f, f2, f3, gsl_vector_get(v, i));
+ gsl_vector_set(vnew, i, val);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
}
@@ -645,10 +628,6 @@ VALUE rb_gsl_sf_eval1_int(double (*func)(int), VALUE argv)
VALUE ary;
size_t i, k, n;
double val;
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
if (CLASS_OF(argv) == rb_cRange) argv = rb_gsl_range2ary(argv);
switch (TYPE(argv)) {
case T_FIXNUM:
@@ -668,6 +647,8 @@ VALUE rb_gsl_sf_eval1_int(double (*func)(int), VALUE argv)
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
argv = na_change_type(argv, NA_DFLOAT);
ptr1 = NA_PTR_TYPE(argv, double*);
GetNArray(argv, na);
@@ -682,10 +663,10 @@ VALUE rb_gsl_sf_eval1_int(double (*func)(int), VALUE argv)
Data_Get_Struct(argv, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (k = 0; k < m->size2; k++) {
- val = (*func)((int) gsl_matrix_get(m, i, k));
- gsl_matrix_set(mnew, i, k, val);
- }
+ for (k = 0; k < m->size2; k++) {
+ val = (*func)((int) gsl_matrix_get(m, i, k));
+ gsl_matrix_set(mnew, i, k, val);
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -694,8 +675,8 @@ VALUE rb_gsl_sf_eval1_int(double (*func)(int), VALUE argv)
n = v->size;
vnew = gsl_vector_alloc(n);
for (i = 0; i < n; i++) {
- val = (*func)((int) gsl_vector_get(v, i));
- gsl_vector_set(vnew, i, val);
+ val = (*func)((int) gsl_vector_get(v, i));
+ gsl_vector_set(vnew, i, val);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
}
@@ -710,10 +691,6 @@ VALUE rb_gsl_sf_eval1_uint(double (*func)(unsigned int), VALUE argv)
VALUE ary;
size_t i, k, n;
double val;
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
if (CLASS_OF(argv) == rb_cRange) argv = rb_gsl_range2ary(argv);
switch (TYPE(argv)) {
case T_FIXNUM:
@@ -733,6 +710,8 @@ VALUE rb_gsl_sf_eval1_uint(double (*func)(unsigned int), VALUE argv)
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
argv = na_change_type(argv, NA_DFLOAT);
ptr1 = NA_PTR_TYPE(argv, double*);
GetNArray(argv, na);
@@ -747,10 +726,10 @@ VALUE rb_gsl_sf_eval1_uint(double (*func)(unsigned int), VALUE argv)
Data_Get_Struct(argv, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (k = 0; k < m->size2; k++) {
- val = (*func)((unsigned int) gsl_matrix_get(m, i, k));
- gsl_matrix_set(mnew, i, k, val);
- }
+ for (k = 0; k < m->size2; k++) {
+ val = (*func)((unsigned int) gsl_matrix_get(m, i, k));
+ gsl_matrix_set(mnew, i, k, val);
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -759,8 +738,8 @@ VALUE rb_gsl_sf_eval1_uint(double (*func)(unsigned int), VALUE argv)
n = v->size;
vnew = gsl_vector_alloc(n);
for (i = 0; i < n; i++) {
- val = (*func)((unsigned int) gsl_vector_get(v, i));
- gsl_vector_set(vnew, i, val);
+ val = (*func)((unsigned int) gsl_vector_get(v, i));
+ gsl_vector_set(vnew, i, val);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
}
@@ -777,10 +756,6 @@ VALUE rb_gsl_sf_eval_double_m(double (*func)(double, gsl_mode_t), VALUE argv, VA
double val;
/*gsl_mode_t mode;
char c;*/
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
switch (TYPE(m)) {
case T_STRING:
/*c = tolower(NUM2CHR(m));
@@ -794,7 +769,7 @@ VALUE rb_gsl_sf_eval_double_m(double (*func)(double, gsl_mode_t), VALUE argv, VA
break;
default:
rb_raise(rb_eArgError, "wrong type argument %s (String or Fixnum expected)",
- rb_class2name(CLASS_OF(m)));
+ rb_class2name(CLASS_OF(m)));
}
if (CLASS_OF(argv) == rb_cRange) argv = rb_gsl_range2ary(argv);
switch (TYPE(argv)) {
@@ -817,6 +792,8 @@ VALUE rb_gsl_sf_eval_double_m(double (*func)(double, gsl_mode_t), VALUE argv, VA
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
ptr1 = NA_PTR_TYPE(argv, double*);
GetNArray(argv, na);
n = na->total;
@@ -830,10 +807,10 @@ VALUE rb_gsl_sf_eval_double_m(double (*func)(double, gsl_mode_t), VALUE argv, VA
Data_Get_Struct(argv, gsl_matrix, mm);
mnew = gsl_matrix_alloc(mm->size1, mm->size2);
for (i = 0; i < mm->size1; i++) {
- for (k = 0; k < mm->size2; k++) {
- val = (*func)(gsl_matrix_get(mm, i, k), m);
- gsl_matrix_set(mnew, i, k, val);
- }
+ for (k = 0; k < mm->size2; k++) {
+ val = (*func)(gsl_matrix_get(mm, i, k), m);
+ gsl_matrix_set(mnew, i, k, val);
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -842,8 +819,8 @@ VALUE rb_gsl_sf_eval_double_m(double (*func)(double, gsl_mode_t), VALUE argv, VA
n = v->size;
vnew = gsl_vector_alloc(n);
for (i = 0; i < n; i++) {
- val = (*func)(gsl_vector_get(v, i), m);
- gsl_vector_set(vnew, i, val);
+ val = (*func)(gsl_vector_get(v, i), m);
+ gsl_vector_set(vnew, i, val);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
}
@@ -851,8 +828,8 @@ VALUE rb_gsl_sf_eval_double_m(double (*func)(double, gsl_mode_t), VALUE argv, VA
}
}
-VALUE rb_gsl_sf_eval_double2_m(double (*func)(double, double, gsl_mode_t),
- VALUE argv, VALUE x2, VALUE m)
+VALUE rb_gsl_sf_eval_double2_m(double (*func)(double, double, gsl_mode_t),
+ VALUE argv, VALUE x2, VALUE m)
{
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *mm = NULL, *mnew = NULL;
@@ -861,10 +838,6 @@ VALUE rb_gsl_sf_eval_double2_m(double (*func)(double, double, gsl_mode_t),
double val, xx2;
/*gsl_mode_t mode;
char c;*/
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
Need_Float(x2);
xx2 = NUM2DBL(x2);
/*c = tolower(NUM2CHR(m));
@@ -893,6 +866,8 @@ VALUE rb_gsl_sf_eval_double2_m(double (*func)(double, double, gsl_mode_t),
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
ptr1 = NA_PTR_TYPE(argv, double*);
GetNArray(argv, na);
n = na->total;
@@ -906,10 +881,10 @@ VALUE rb_gsl_sf_eval_double2_m(double (*func)(double, double, gsl_mode_t),
Data_Get_Struct(argv, gsl_matrix, mm);
mnew = gsl_matrix_alloc(mm->size1, mm->size2);
for (i = 0; i < mm->size1; i++) {
- for (k = 0; k < mm->size2; k++) {
- val = (*func)(gsl_matrix_get(mm, i, k), xx2, m);
- gsl_matrix_set(mnew, i, k, val);
- }
+ for (k = 0; k < mm->size2; k++) {
+ val = (*func)(gsl_matrix_get(mm, i, k), xx2, m);
+ gsl_matrix_set(mnew, i, k, val);
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -918,8 +893,8 @@ VALUE rb_gsl_sf_eval_double2_m(double (*func)(double, double, gsl_mode_t),
n = v->size;
vnew = gsl_vector_alloc(n);
for (i = 0; i < n; i++) {
- val = (*func)(gsl_vector_get(v, i), xx2, m);
- gsl_vector_set(vnew, i, val);
+ val = (*func)(gsl_vector_get(v, i), xx2, m);
+ gsl_vector_set(vnew, i, val);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
}
@@ -927,8 +902,8 @@ VALUE rb_gsl_sf_eval_double2_m(double (*func)(double, double, gsl_mode_t),
}
}
-VALUE rb_gsl_sf_eval_double3_m(double (*func)(double, double, double, gsl_mode_t),
- VALUE argv, VALUE x2, VALUE x3, VALUE m)
+VALUE rb_gsl_sf_eval_double3_m(double (*func)(double, double, double, gsl_mode_t),
+ VALUE argv, VALUE x2, VALUE x3, VALUE m)
{
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *mm = NULL, *mnew = NULL;
@@ -937,10 +912,6 @@ VALUE rb_gsl_sf_eval_double3_m(double (*func)(double, double, double, gsl_mode_t
double val, xx2, xx3;
/*gsl_mode_t mode;
char c;*/
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
Need_Float(x2); Need_Float(x3);
xx2 = NUM2DBL(x2);
xx3 = NUM2DBL(x3);
@@ -970,6 +941,8 @@ VALUE rb_gsl_sf_eval_double3_m(double (*func)(double, double, double, gsl_mode_t
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
ptr1 = NA_PTR_TYPE(argv, double*);
GetNArray(argv, na);
n = na->total;
@@ -983,10 +956,10 @@ VALUE rb_gsl_sf_eval_double3_m(double (*func)(double, double, double, gsl_mode_t
Data_Get_Struct(argv, gsl_matrix, mm);
mnew = gsl_matrix_alloc(mm->size1, mm->size2);
for (i = 0; i < mm->size1; i++) {
- for (k = 0; k < mm->size2; k++) {
- val = (*func)(gsl_matrix_get(mm, i, k), xx2, xx3, m);
- gsl_matrix_set(mnew, i, k, val);
- }
+ for (k = 0; k < mm->size2; k++) {
+ val = (*func)(gsl_matrix_get(mm, i, k), xx2, xx3, m);
+ gsl_matrix_set(mnew, i, k, val);
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -995,8 +968,8 @@ VALUE rb_gsl_sf_eval_double3_m(double (*func)(double, double, double, gsl_mode_t
n = v->size;
vnew = gsl_vector_alloc(n);
for (i = 0; i < n; i++) {
- val = (*func)(gsl_vector_get(v, i), xx2, xx3, m);
- gsl_vector_set(vnew, i, val);
+ val = (*func)(gsl_vector_get(v, i), xx2, xx3, m);
+ gsl_vector_set(vnew, i, val);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
}
@@ -1005,8 +978,8 @@ VALUE rb_gsl_sf_eval_double3_m(double (*func)(double, double, double, gsl_mode_t
}
VALUE rb_gsl_sf_eval_double4_m(double (*func)(double, double, double, double,
- gsl_mode_t),
- VALUE argv, VALUE x2, VALUE x3, VALUE x4, VALUE m)
+ gsl_mode_t),
+ VALUE argv, VALUE x2, VALUE x3, VALUE x4, VALUE m)
{
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *mm = NULL, *mnew = NULL;
@@ -1015,10 +988,6 @@ VALUE rb_gsl_sf_eval_double4_m(double (*func)(double, double, double, double,
double val, xx2, xx3, xx4;
/*gsl_mode_t mode;
char c;*/
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
Need_Float(x2); Need_Float(x3); Need_Float(x4);
xx2 = NUM2DBL(x2); xx3 = NUM2DBL(x3); xx4 = NUM2DBL(x4);
/*c = tolower(NUM2CHR(m));
@@ -1032,7 +1001,7 @@ VALUE rb_gsl_sf_eval_double4_m(double (*func)(double, double, double, double,
case T_FIXNUM:
case T_BIGNUM:
return rb_float_new((*func)(NUM2DBL(argv), NUM2DBL(x2), NUM2DBL(x3),
- NUM2DBL(x4), m));
+ NUM2DBL(x4), m));
break;
case T_ARRAY:
n = RARRAY_LEN(argv);
@@ -1048,6 +1017,8 @@ VALUE rb_gsl_sf_eval_double4_m(double (*func)(double, double, double, double,
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
ptr1 = NA_PTR_TYPE(argv, double*);
GetNArray(argv, na);
n = na->total;
@@ -1061,10 +1032,10 @@ VALUE rb_gsl_sf_eval_double4_m(double (*func)(double, double, double, double,
Data_Get_Struct(argv, gsl_matrix, mm);
mnew = gsl_matrix_alloc(mm->size1, mm->size2);
for (i = 0; i < mm->size1; i++) {
- for (k = 0; k < mm->size2; k++) {
- val = (*func)(gsl_matrix_get(mm, i, k), xx2, xx3, xx4, m);
- gsl_matrix_set(mnew, i, k, val);
- }
+ for (k = 0; k < mm->size2; k++) {
+ val = (*func)(gsl_matrix_get(mm, i, k), xx2, xx3, xx4, m);
+ gsl_matrix_set(mnew, i, k, val);
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -1073,8 +1044,8 @@ VALUE rb_gsl_sf_eval_double4_m(double (*func)(double, double, double, double,
n = v->size;
vnew = gsl_vector_alloc(n);
for (i = 0; i < n; i++) {
- val = (*func)(gsl_vector_get(v, i), xx2, xx3, xx4, m);
- gsl_vector_set(vnew, i, val);
+ val = (*func)(gsl_vector_get(v, i), xx2, xx3, xx4, m);
+ gsl_vector_set(vnew, i, val);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
}
@@ -1111,8 +1082,8 @@ VALUE rb_gsl_sf_eval_e_uint(int (*func)(unsigned int, gsl_sf_result*), VALUE x)
return v;
}
-VALUE rb_gsl_sf_eval_e_int_uint(int (*func)(int, unsigned int, gsl_sf_result*),
- VALUE n, VALUE x)
+VALUE rb_gsl_sf_eval_e_int_uint(int (*func)(int, unsigned int, gsl_sf_result*),
+ VALUE n, VALUE x)
{
gsl_sf_result *rslt = NULL;
VALUE v;
@@ -1122,8 +1093,8 @@ VALUE rb_gsl_sf_eval_e_int_uint(int (*func)(int, unsigned int, gsl_sf_result*),
return v;
}
-VALUE rb_gsl_sf_eval_e_double_uint(int (*func)(double, unsigned int, gsl_sf_result*),
- VALUE y, VALUE x)
+VALUE rb_gsl_sf_eval_e_double_uint(int (*func)(double, unsigned int, gsl_sf_result*),
+ VALUE y, VALUE x)
{
gsl_sf_result *rslt = NULL;
VALUE v;
@@ -1133,8 +1104,8 @@ VALUE rb_gsl_sf_eval_e_double_uint(int (*func)(double, unsigned int, gsl_sf_resu
return v;
}
-VALUE rb_gsl_sf_eval_e_int_double(int (*func)(int, double, gsl_sf_result*),
- VALUE n, VALUE x)
+VALUE rb_gsl_sf_eval_e_int_double(int (*func)(int, double, gsl_sf_result*),
+ VALUE n, VALUE x)
{
gsl_sf_result *rslt = NULL;
VALUE v;
@@ -1145,8 +1116,8 @@ VALUE rb_gsl_sf_eval_e_int_double(int (*func)(int, double, gsl_sf_result*),
return v;
}
-VALUE rb_gsl_sf_eval_e_int_double2(int (*func)(int, double, double, gsl_sf_result*),
- VALUE n, VALUE x1, VALUE x2)
+VALUE rb_gsl_sf_eval_e_int_double2(int (*func)(int, double, double, gsl_sf_result*),
+ VALUE n, VALUE x1, VALUE x2)
{
gsl_sf_result *rslt = NULL;
VALUE v;
@@ -1158,8 +1129,8 @@ VALUE rb_gsl_sf_eval_e_int_double2(int (*func)(int, double, double, gsl_sf_resul
}
-VALUE rb_gsl_sf_eval_e_int_int_double(int (*func)(int, int, double, gsl_sf_result*),
- VALUE n1, VALUE n2, VALUE x)
+VALUE rb_gsl_sf_eval_e_int_int_double(int (*func)(int, int, double, gsl_sf_result*),
+ VALUE n1, VALUE n2, VALUE x)
{
gsl_sf_result *rslt = NULL;
VALUE v;
@@ -1170,20 +1141,20 @@ VALUE rb_gsl_sf_eval_e_int_int_double(int (*func)(int, int, double, gsl_sf_resul
return v;
}
-VALUE rb_gsl_sf_eval_e_double2(int (*func)(double, double, gsl_sf_result*),
- VALUE x1, VALUE x2)
+VALUE rb_gsl_sf_eval_e_double2(int (*func)(double, double, gsl_sf_result*),
+ VALUE x1, VALUE x2)
{
gsl_sf_result *rslt = NULL;
VALUE v;
- Need_Float(x1); Need_Float(x2);
+ Need_Float(x1); Need_Float(x2);
v = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, rslt);
(*func)(NUM2DBL(x1), NUM2DBL(x2), rslt);
return v;
}
-VALUE rb_gsl_sf_eval_e_double3(int (*func)(double, double, double, gsl_sf_result*),
- VALUE x1, VALUE x2, VALUE x3)
+VALUE rb_gsl_sf_eval_e_double3(int (*func)(double, double, double, gsl_sf_result*),
+ VALUE x1, VALUE x2, VALUE x3)
{
gsl_sf_result *rslt = NULL;
VALUE v;
@@ -1193,8 +1164,8 @@ VALUE rb_gsl_sf_eval_e_double3(int (*func)(double, double, double, gsl_sf_result
return v;
}
-VALUE rb_gsl_sf_eval_e_m(int (*func)(double, gsl_mode_t, gsl_sf_result*),
- VALUE x, VALUE m)
+VALUE rb_gsl_sf_eval_e_m(int (*func)(double, gsl_mode_t, gsl_sf_result*),
+ VALUE x, VALUE m)
{
gsl_mode_t mode;
char c;
@@ -1214,7 +1185,7 @@ VALUE rb_gsl_sf_eval_e_m(int (*func)(double, gsl_mode_t, gsl_sf_result*),
break;
default:
rb_raise(rb_eArgError, "wrong type argument %s (String or Fixnum expected)",
- rb_class2name(CLASS_OF(m)));
+ rb_class2name(CLASS_OF(m)));
break;
}
v = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, rslt);
@@ -1223,8 +1194,8 @@ VALUE rb_gsl_sf_eval_e_m(int (*func)(double, gsl_mode_t, gsl_sf_result*),
}
-VALUE rb_gsl_sf_eval_e_double2_m(int (*func)(double, double, gsl_mode_t, gsl_sf_result*),
- VALUE x1, VALUE x2, VALUE m)
+VALUE rb_gsl_sf_eval_e_double2_m(int (*func)(double, double, gsl_mode_t, gsl_sf_result*),
+ VALUE x1, VALUE x2, VALUE m)
{
gsl_mode_t mode;
char c;
@@ -1244,7 +1215,7 @@ VALUE rb_gsl_sf_eval_e_double2_m(int (*func)(double, double, gsl_mode_t, gsl_sf_
break;
default:
rb_raise(rb_eArgError, "wrong type argument %s (String or Fixnum expected)",
- rb_class2name(CLASS_OF(m)));
+ rb_class2name(CLASS_OF(m)));
break;
}
v = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, rslt);
@@ -1252,8 +1223,8 @@ VALUE rb_gsl_sf_eval_e_double2_m(int (*func)(double, double, gsl_mode_t, gsl_sf_
return v;
}
-VALUE rb_gsl_sf_eval_e_double3_m(int (*func)(double, double, double, gsl_mode_t, gsl_sf_result*),
- VALUE x1, VALUE x2, VALUE x3, VALUE m)
+VALUE rb_gsl_sf_eval_e_double3_m(int (*func)(double, double, double, gsl_mode_t, gsl_sf_result*),
+ VALUE x1, VALUE x2, VALUE x3, VALUE m)
{
gsl_mode_t mode;
char c;
@@ -1273,7 +1244,7 @@ VALUE rb_gsl_sf_eval_e_double3_m(int (*func)(double, double, double, gsl_mode_t,
break;
default:
rb_raise(rb_eArgError, "wrong type argument %s (String or Fixnum expected)",
- rb_class2name(CLASS_OF(m)));
+ rb_class2name(CLASS_OF(m)));
break;
}
v = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, rslt);
@@ -1282,8 +1253,8 @@ VALUE rb_gsl_sf_eval_e_double3_m(int (*func)(double, double, double, gsl_mode_t,
}
-VALUE rb_gsl_sf_eval_e_double4_m(int (*func)(double, double, double, double, gsl_mode_t, gsl_sf_result*),
- VALUE x1, VALUE x2, VALUE x3, VALUE x4, VALUE m)
+VALUE rb_gsl_sf_eval_e_double4_m(int (*func)(double, double, double, double, gsl_mode_t, gsl_sf_result*),
+ VALUE x1, VALUE x2, VALUE x3, VALUE x4, VALUE m)
{
gsl_mode_t mode;
char c;
@@ -1303,9 +1274,9 @@ VALUE rb_gsl_sf_eval_e_double4_m(int (*func)(double, double, double, double, gsl
break;
default:
rb_raise(rb_eArgError, "wrong type argument %s (String or Fixnum expected)",
- rb_class2name(CLASS_OF(m)));
+ rb_class2name(CLASS_OF(m)));
break;
- }
+ }
v = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, rslt);
(*func)(NUM2DBL(x1), NUM2DBL(x2),NUM2DBL(x3), NUM2DBL(x4), mode, rslt);
return v;
@@ -1319,10 +1290,6 @@ VALUE eval_sf(double (*func)(double, gsl_mode_t), VALUE argv)
double val;
gsl_vector *v = NULL, *vnew = NULL;
gsl_matrix *mm = NULL, *mnew = NULL;
-#ifdef HAVE_NARRAY_H
- double *ptr1, *ptr2;
- struct NARRAY *na;
-#endif
switch (TYPE(argv)) {
case T_FLOAT:
case T_FIXNUM:
@@ -1343,6 +1310,8 @@ VALUE eval_sf(double (*func)(double, gsl_mode_t), VALUE argv)
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv)) {
+ double *ptr1, *ptr2;
+ struct NARRAY *na;
ptr1 = NA_PTR_TYPE(argv, double*);
GetNArray(argv, na);
n = na->total;
@@ -1356,10 +1325,10 @@ VALUE eval_sf(double (*func)(double, gsl_mode_t), VALUE argv)
Data_Get_Struct(argv, gsl_matrix, mm);
mnew = gsl_matrix_alloc(mm->size1, mm->size2);
for (i = 0; i < mm->size1; i++) {
- for (k = 0; k < mm->size2; k++) {
- val = (*func)(gsl_matrix_get(mm, i, k), GSL_PREC_DOUBLE);
- gsl_matrix_set(mnew, i, k, val);
- }
+ for (k = 0; k < mm->size2; k++) {
+ val = (*func)(gsl_matrix_get(mm, i, k), GSL_PREC_DOUBLE);
+ gsl_matrix_set(mnew, i, k, val);
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -1368,8 +1337,8 @@ VALUE eval_sf(double (*func)(double, gsl_mode_t), VALUE argv)
n = v->size;
vnew = gsl_vector_alloc(n);
for (i = 0; i < n; i++) {
- val = (*func)(gsl_vector_get(v, i), GSL_PREC_DOUBLE);
- gsl_vector_set(vnew, i, val);
+ val = (*func)(gsl_vector_get(v, i), GSL_PREC_DOUBLE);
+ gsl_vector_set(vnew, i, val);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
}
@@ -1404,18 +1373,18 @@ VALUE rb_gsl_sf_eval_complex(double (*f)(double), VALUE obj)
mnew = gsl_matrix_complex_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
for (j = 0; j < m->size2; j++) {
- c = gsl_matrix_complex_get(m, i, j);
- GSL_SET_REAL(&c, (*f)(GSL_REAL(c)));
- GSL_SET_IMAG(&c, (*f)(GSL_IMAG(c)));
- gsl_matrix_complex_set(mnew, i, j, c);
+ c = gsl_matrix_complex_get(m, i, j);
+ GSL_SET_REAL(&c, (*f)(GSL_REAL(c)));
+ GSL_SET_IMAG(&c, (*f)(GSL_IMAG(c)));
+ gsl_matrix_complex_set(mnew, i, j, c);
}
}
return Data_Wrap_Struct(cgsl_matrix_complex, 0, gsl_matrix_complex_free, mnew);
} else {
- rb_raise(rb_eTypeError,
- "wrong argument type %s "
- " (GSL::Complex or GSL::Vector::Complex expected)",
- rb_class2name(CLASS_OF(obj)));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s "
+ " (GSL::Complex or GSL::Vector::Complex expected)",
+ rb_class2name(CLASS_OF(obj)));
}
}
@@ -1424,10 +1393,10 @@ void Init_gsl_sf(VALUE module)
VALUE mgsl_sf;
mgsl_sf = rb_define_module_under(module, "Sf");
- cgsl_sf_result = rb_define_class_under(mgsl_sf, "Result",
- cGSL_Object);
+ cgsl_sf_result = rb_define_class_under(mgsl_sf, "Result",
+ cGSL_Object);
rb_define_singleton_method(cgsl_sf_result, "new", rb_gsl_sf_result_new,
- 0);
+ 0);
rb_define_method(cgsl_sf_result, "print", rb_gsl_sf_result_print, 0);
rb_define_method(cgsl_sf_result, "inspect", rb_gsl_sf_result_inspect, 0);
rb_define_method(cgsl_sf_result, "val", rb_gsl_sf_result_val, 0);
@@ -1435,10 +1404,10 @@ void Init_gsl_sf(VALUE module)
rb_define_method(cgsl_sf_result, "to_a", rb_gsl_sf_result_to_a, 0);
rb_define_method(cgsl_sf_result, "to_s", rb_gsl_sf_result_to_s, 0);
- cgsl_sf_result_e10 = rb_define_class_under(mgsl_sf, "Result_e10",
- cGSL_Object);
- rb_define_singleton_method(cgsl_sf_result_e10, "new",
- rb_gsl_sf_result_e10_new, 0);
+ cgsl_sf_result_e10 = rb_define_class_under(mgsl_sf, "Result_e10",
+ cGSL_Object);
+ rb_define_singleton_method(cgsl_sf_result_e10, "new",
+ rb_gsl_sf_result_e10_new, 0);
rb_define_method(cgsl_sf_result_e10, "val", rb_gsl_sf_result_e10_val, 0);
rb_define_method(cgsl_sf_result_e10, "err", rb_gsl_sf_result_e10_err, 0);
rb_define_method(cgsl_sf_result_e10, "e10", rb_gsl_sf_result_e10_e10, 0);
@@ -1473,8 +1442,5 @@ void Init_gsl_sf(VALUE module)
Init_gsl_sf_transport(mgsl_sf);
Init_gsl_sf_trigonometric(mgsl_sf);
Init_gsl_sf_zeta(mgsl_sf);
-
-#ifdef GSL_1_9_LATER
- Init_sf_mathieu(mgsl_sf);
-#endif
+ Init_sf_mathieu(mgsl_sf);
}
diff --git a/ext/gsl/sf_airy.c b/ext/gsl_native/sf_airy.c
similarity index 100%
rename from ext/gsl/sf_airy.c
rename to ext/gsl_native/sf_airy.c
diff --git a/ext/gsl/sf_bessel.c b/ext/gsl_native/sf_bessel.c
similarity index 98%
rename from ext/gsl/sf_bessel.c
rename to ext/gsl_native/sf_bessel.c
index 3b66422..65d5038 100644
--- a/ext/gsl/sf_bessel.c
+++ b/ext/gsl_native/sf_bessel.c
@@ -45,7 +45,7 @@ static VALUE rb_gsl_sf_bessel_Jn_e(VALUE obj, VALUE n, VALUE x)
}
static VALUE rb_gsl_sf_bessel_Xn_array(VALUE obj, VALUE n0, VALUE n1, VALUE x,
- int (*f)(int, int, double, double[]))
+ int (*f)(int, int, double, double[]))
{
int nmin, nmax, n;
gsl_vector *v = NULL;
@@ -167,7 +167,7 @@ static VALUE rb_gsl_sf_bessel_In_scaled_e(VALUE obj, VALUE n, VALUE x)
}
static VALUE rb_gsl_sf_bessel_In_scaled_array(VALUE obj, VALUE n0, VALUE n1,
- VALUE x)
+ VALUE x)
{
return rb_gsl_sf_bessel_Xn_array(obj, n0, n1, x, gsl_sf_bessel_In_scaled_array);
}
@@ -239,7 +239,7 @@ static VALUE rb_gsl_sf_bessel_Kn_scaled_e(VALUE obj, VALUE n, VALUE x)
}
static VALUE rb_gsl_sf_bessel_Kn_scaled_array(VALUE obj, VALUE n0, VALUE n1,
- VALUE x)
+ VALUE x)
{
return rb_gsl_sf_bessel_Xn_array(obj, n0, n1, x, gsl_sf_bessel_Kn_scaled_array);
}
@@ -286,7 +286,7 @@ static VALUE rb_gsl_sf_bessel_jl_e(VALUE obj, VALUE n, VALUE x)
}
static VALUE rb_gsl_sf_bessel_xl_array(VALUE obj, VALUE n1, VALUE x,
- int (*f)(int, double, double[]))
+ int (*f)(int, double, double[]))
{
int nmax, n;
// local variable "status" declared and set, but never used
@@ -446,7 +446,7 @@ static VALUE rb_gsl_sf_bessel_kl_scaled_e(VALUE obj, VALUE n, VALUE x)
}
static VALUE rb_gsl_sf_bessel_kl_scaled_array(VALUE obj, VALUE n1,
- VALUE x)
+ VALUE x)
{
return rb_gsl_sf_bessel_xl_array(obj, n1, x, gsl_sf_bessel_kl_scaled_array);
}
@@ -497,7 +497,7 @@ static VALUE rb_gsl_sf_bessel_sequence_Jnu_e(int argc, VALUE *argv, VALUE obj)
break;
default:
rb_raise(rb_eTypeError, "wrong argument type %s (String or Fixnum expected)",
- rb_class2name(CLASS_OF(m)));
+ rb_class2name(CLASS_OF(m)));
break;
}
default:
diff --git a/ext/gsl/sf_clausen.c b/ext/gsl_native/sf_clausen.c
similarity index 100%
rename from ext/gsl/sf_clausen.c
rename to ext/gsl_native/sf_clausen.c
diff --git a/ext/gsl/sf_coulomb.c b/ext/gsl_native/sf_coulomb.c
similarity index 77%
rename from ext/gsl/sf_coulomb.c
rename to ext/gsl_native/sf_coulomb.c
index f354893..c314642 100644
--- a/ext/gsl/sf_coulomb.c
+++ b/ext/gsl_native/sf_coulomb.c
@@ -23,15 +23,15 @@ static VALUE rb_gsl_sf_hydrogenicR_1_e(VALUE obj, VALUE Z, VALUE r)
return rb_gsl_sf_eval_e_double2(gsl_sf_hydrogenicR_1_e, Z, r);
}
-static VALUE rb_gsl_sf_hydrogenicR(VALUE obj, VALUE n, VALUE l,
- VALUE Z, VALUE r)
+static VALUE rb_gsl_sf_hydrogenicR(VALUE obj, VALUE n, VALUE l,
+ VALUE Z, VALUE r)
{
return rb_float_new(gsl_sf_hydrogenicR(FIX2INT(n), FIX2INT(l),
- NUM2DBL(Z), NUM2DBL(r)));
+ NUM2DBL(Z), NUM2DBL(r)));
}
-static VALUE rb_gsl_sf_hydrogenicR_e(VALUE obj, VALUE n, VALUE l,
- VALUE Z, VALUE r)
+static VALUE rb_gsl_sf_hydrogenicR_e(VALUE obj, VALUE n, VALUE l,
+ VALUE Z, VALUE r)
{
gsl_sf_result *rslt = NULL;
VALUE v;
@@ -41,12 +41,12 @@ static VALUE rb_gsl_sf_hydrogenicR_e(VALUE obj, VALUE n, VALUE l,
Need_Float(Z); Need_Float(r);
v = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, rslt);
/*status =*/ gsl_sf_hydrogenicR_e(FIX2INT(n), FIX2INT(l),
- NUM2DBL(Z), NUM2DBL(r), rslt);
+ NUM2DBL(Z), NUM2DBL(r), rslt);
return v;
}
static VALUE rb_gsl_sf_coulomb_wave_FG_e(VALUE obj, VALUE eta, VALUE x,
- VALUE L_F, VALUE k)
+ VALUE L_F, VALUE k)
{
gsl_sf_result *F, *Fp, *G, *Gp;
@@ -60,13 +60,13 @@ static VALUE rb_gsl_sf_coulomb_wave_FG_e(VALUE obj, VALUE eta, VALUE x,
vG = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, G);
vGp = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, Gp);
status = gsl_sf_coulomb_wave_FG_e(NUM2DBL(eta), NUM2DBL(x), NUM2DBL(L_F),
- FIX2INT(k), F, Fp, G, Gp, &exp_F, &exp_G);
+ FIX2INT(k), F, Fp, G, Gp, &exp_F, &exp_G);
return rb_ary_new3(7, vF, vFp, vG, vGp,
- rb_float_new(exp_F), rb_float_new(exp_G), INT2FIX(status));
+ rb_float_new(exp_F), rb_float_new(exp_G), INT2FIX(status));
}
static VALUE rb_gsl_sf_coulomb_wave_F_array(VALUE obj, VALUE Lmin, VALUE kmax,
- VALUE eta, VALUE x)
+ VALUE eta, VALUE x)
{
double F_exponent;
int status;
@@ -76,15 +76,15 @@ static VALUE rb_gsl_sf_coulomb_wave_F_array(VALUE obj, VALUE Lmin, VALUE kmax,
Need_Float(Lmin); Need_Float(eta); Need_Float(x);
size = FIX2INT(kmax);
v = gsl_vector_alloc(size);
- status = gsl_sf_coulomb_wave_F_array(NUM2DBL(Lmin), size, NUM2DBL(eta),
- NUM2DBL(x), v->data, &F_exponent);
-
- return rb_ary_new3(3, Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v),
- rb_float_new(F_exponent), INT2FIX(status));
+ status = gsl_sf_coulomb_wave_F_array(NUM2DBL(Lmin), size, NUM2DBL(eta),
+ NUM2DBL(x), v->data, &F_exponent);
+
+ return rb_ary_new3(3, Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v),
+ rb_float_new(F_exponent), INT2FIX(status));
}
static VALUE rb_gsl_sf_coulomb_wave_FG_array(VALUE obj, VALUE Lmin, VALUE kmax,
- VALUE eta, VALUE x)
+ VALUE eta, VALUE x)
{
double F_exponent, G_exponent;
int status;
@@ -97,18 +97,18 @@ static VALUE rb_gsl_sf_coulomb_wave_FG_array(VALUE obj, VALUE Lmin, VALUE kmax,
vf = gsl_vector_alloc(size);
vg = gsl_vector_alloc(size);
- status = gsl_sf_coulomb_wave_FG_array(NUM2DBL(Lmin), size, NUM2DBL(eta),
- NUM2DBL(x), vf->data, vg->data,
- &F_exponent, &G_exponent);
+ status = gsl_sf_coulomb_wave_FG_array(NUM2DBL(Lmin), size, NUM2DBL(eta),
+ NUM2DBL(x), vf->data, vg->data,
+ &F_exponent, &G_exponent);
fary = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vf);
gary = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vf);
return rb_ary_new3(5, fary, gary,
- rb_float_new(F_exponent), rb_float_new(G_exponent),
- INT2FIX(status));
+ rb_float_new(F_exponent), rb_float_new(G_exponent),
+ INT2FIX(status));
}
static VALUE rb_gsl_sf_coulomb_wave_FGp_array(VALUE obj, VALUE Lmin, VALUE kmax,
- VALUE eta, VALUE x)
+ VALUE eta, VALUE x)
{
double F_exponent, G_exponent;
int status;
@@ -123,21 +123,21 @@ static VALUE rb_gsl_sf_coulomb_wave_FGp_array(VALUE obj, VALUE Lmin, VALUE kmax,
vg = gsl_vector_alloc(size);
vgp = gsl_vector_alloc(size);
- status = gsl_sf_coulomb_wave_FGp_array(NUM2DBL(Lmin), size, NUM2DBL(eta),
- NUM2DBL(x), vf->data, vfp->data,
- vg->data, vgp->data,
- &F_exponent, &G_exponent);
+ status = gsl_sf_coulomb_wave_FGp_array(NUM2DBL(Lmin), size, NUM2DBL(eta),
+ NUM2DBL(x), vf->data, vfp->data,
+ vg->data, vgp->data,
+ &F_exponent, &G_exponent);
fary = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vf);
- fpary =Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vfp);
+ fpary = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vfp);
gary = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vg);
- gpary =Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vgp);
+ gpary = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vgp);
return rb_ary_new3(7, fary, fpary, gary, gpary,
- rb_float_new(F_exponent), rb_float_new(G_exponent),
- INT2FIX(status));
+ rb_float_new(F_exponent), rb_float_new(G_exponent),
+ INT2FIX(status));
}
static VALUE rb_gsl_sf_coulomb_wave_sphF_array(VALUE obj, VALUE Lmin, VALUE kmax,
- VALUE eta, VALUE x)
+ VALUE eta, VALUE x)
{
int status;
size_t size;
@@ -147,11 +147,11 @@ static VALUE rb_gsl_sf_coulomb_wave_sphF_array(VALUE obj, VALUE Lmin, VALUE kmax
size = FIX2INT(kmax);
v = gsl_vector_alloc(size);
v2 = gsl_vector_alloc(size);
- status = gsl_sf_coulomb_wave_sphF_array(NUM2DBL(Lmin), size, NUM2DBL(eta),
- NUM2DBL(x), v->data, v2->data);
- return rb_ary_new3(3, Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v),
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2),
- INT2FIX(status));
+ status = gsl_sf_coulomb_wave_sphF_array(NUM2DBL(Lmin), size, NUM2DBL(eta),
+ NUM2DBL(x), v->data, v2->data);
+ return rb_ary_new3(3, Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v),
+ Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v2),
+ INT2FIX(status));
}
static VALUE rb_gsl_sf_coulomb_CL_e(VALUE obj, VALUE L, VALUE eta)
@@ -160,14 +160,14 @@ static VALUE rb_gsl_sf_coulomb_CL_e(VALUE obj, VALUE L, VALUE eta)
}
static VALUE rb_gsl_sf_coulomb_CL_array(VALUE obj, VALUE Lmin, VALUE kmax,
- VALUE eta)
+ VALUE eta)
{
gsl_vector *v = NULL;
size_t size;
// local variable "status" declared and set, but never used
//int status;
CHECK_FIXNUM(kmax);
- Need_Float(Lmin); Need_Float(eta);
+ Need_Float(Lmin); Need_Float(eta);
size = FIX2INT(kmax);
v = gsl_vector_alloc(size);
/*status =*/ gsl_sf_coulomb_CL_array(NUM2DBL(Lmin), size, NUM2DBL(eta), v->data);
@@ -191,7 +191,7 @@ void Init_gsl_sf_coulomb(VALUE module)
rb_define_module_function(module, "coulomb_CL_array", rb_gsl_sf_coulomb_CL_array, 3);
mgsl_sf_coulomb = rb_define_module_under(module, "Coulomb");
-
+
rb_define_module_function(mgsl_sf_coulomb, "hydrogenicR_1", rb_gsl_sf_hydrogenicR_1, 2);
rb_define_module_function(mgsl_sf_coulomb, "hydrogenicR_1_e", rb_gsl_sf_hydrogenicR_1_e, 2);
rb_define_module_function(mgsl_sf_coulomb, "hydrogenicR", rb_gsl_sf_hydrogenicR, 4);
diff --git a/ext/gsl/sf_coupling.c b/ext/gsl_native/sf_coupling.c
similarity index 72%
rename from ext/gsl/sf_coupling.c
rename to ext/gsl_native/sf_coupling.c
index cc32f3e..504f06a 100644
--- a/ext/gsl/sf_coupling.c
+++ b/ext/gsl_native/sf_coupling.c
@@ -12,16 +12,16 @@
#include "include/rb_gsl_sf.h"
-static VALUE rb_gsl_sf_coupling_3j(VALUE obj, VALUE two_ja, VALUE two_jb, VALUE two_jc, VALUE two_ma, VALUE two_mb, VALUE two_mc)
+static VALUE rb_gsl_sf_coupling_3j(VALUE obj, VALUE two_ja, VALUE two_jb, VALUE two_jc, VALUE two_ma, VALUE two_mb, VALUE two_mc)
{
CHECK_FIXNUM(two_ja); CHECK_FIXNUM(two_jb); CHECK_FIXNUM(two_jc);
CHECK_FIXNUM(two_ma); CHECK_FIXNUM(two_mb); CHECK_FIXNUM(two_mc);
return rb_float_new(gsl_sf_coupling_3j(FIX2INT(two_ja), FIX2INT(two_jb),
- FIX2INT(two_jc), FIX2INT(two_ma),
- FIX2INT(two_mb), FIX2INT(two_mc)));
+ FIX2INT(two_jc), FIX2INT(two_ma),
+ FIX2INT(two_mb), FIX2INT(two_mc)));
}
-static VALUE rb_gsl_sf_coupling_3j_e(VALUE obj, VALUE two_ja, VALUE two_jb, VALUE two_jc, VALUE two_ma, VALUE two_mb, VALUE two_mc)
+static VALUE rb_gsl_sf_coupling_3j_e(VALUE obj, VALUE two_ja, VALUE two_jb, VALUE two_jc, VALUE two_ma, VALUE two_mb, VALUE two_mc)
{
gsl_sf_result *rslt = NULL;
VALUE v;
@@ -31,23 +31,23 @@ static VALUE rb_gsl_sf_coupling_3j_e(VALUE obj, VALUE two_ja, VALUE two_jb, VALU
CHECK_FIXNUM(two_ma); CHECK_FIXNUM(two_mb); CHECK_FIXNUM(two_mc);
v = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, rslt);
/*status =*/ gsl_sf_coupling_3j_e(FIX2INT(two_ja), FIX2INT(two_jb),
- FIX2INT(two_jc), FIX2INT(two_ma),
- FIX2INT(two_mb), FIX2INT(two_mc),
- rslt);
+ FIX2INT(two_jc), FIX2INT(two_ma),
+ FIX2INT(two_mb), FIX2INT(two_mc),
+ rslt);
return v;
}
-static VALUE rb_gsl_sf_coupling_6j(VALUE obj, VALUE two_ja, VALUE two_jb, VALUE two_jc, VALUE two_jd, VALUE two_je, VALUE two_jf)
+static VALUE rb_gsl_sf_coupling_6j(VALUE obj, VALUE two_ja, VALUE two_jb, VALUE two_jc, VALUE two_jd, VALUE two_je, VALUE two_jf)
{
CHECK_FIXNUM(two_ja); CHECK_FIXNUM(two_jb); CHECK_FIXNUM(two_jc);
CHECK_FIXNUM(two_jd); CHECK_FIXNUM(two_je); CHECK_FIXNUM(two_jf);
return rb_float_new(gsl_sf_coupling_6j(FIX2INT(two_ja), FIX2INT(two_jb),
- FIX2INT(two_jc), FIX2INT(two_jd),
- FIX2INT(two_je), FIX2INT(two_jf)));
+ FIX2INT(two_jc), FIX2INT(two_jd),
+ FIX2INT(two_je), FIX2INT(two_jf)));
}
-static VALUE rb_gsl_sf_coupling_6j_e(VALUE obj, VALUE two_ja, VALUE two_jb, VALUE two_jc, VALUE two_jd, VALUE two_je, VALUE two_jf)
+static VALUE rb_gsl_sf_coupling_6j_e(VALUE obj, VALUE two_ja, VALUE two_jb, VALUE two_jc, VALUE two_jd, VALUE two_je, VALUE two_jf)
{
gsl_sf_result *rslt = NULL;
VALUE v;
@@ -57,31 +57,31 @@ static VALUE rb_gsl_sf_coupling_6j_e(VALUE obj, VALUE two_ja, VALUE two_jb, VALU
CHECK_FIXNUM(two_jd); CHECK_FIXNUM(two_je); CHECK_FIXNUM(two_jf);
v = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, rslt);
/*status =*/ gsl_sf_coupling_6j_e(FIX2INT(two_ja), FIX2INT(two_jb),
- FIX2INT(two_jc), FIX2INT(two_jd),
- FIX2INT(two_je), FIX2INT(two_jf),
- rslt);
+ FIX2INT(two_jc), FIX2INT(two_jd),
+ FIX2INT(two_je), FIX2INT(two_jf),
+ rslt);
return v;
}
static VALUE rb_gsl_sf_coupling_9j(VALUE obj, VALUE two_ja, VALUE two_jb,
- VALUE two_jc, VALUE two_jd, VALUE two_je,
- VALUE two_jf, VALUE two_jg, VALUE two_jh,
- VALUE two_ji)
+ VALUE two_jc, VALUE two_jd, VALUE two_je,
+ VALUE two_jf, VALUE two_jg, VALUE two_jh,
+ VALUE two_ji)
{
CHECK_FIXNUM(two_ja); CHECK_FIXNUM(two_jb); CHECK_FIXNUM(two_jc);
CHECK_FIXNUM(two_jd); CHECK_FIXNUM(two_je); CHECK_FIXNUM(two_jf);
CHECK_FIXNUM(two_jg); CHECK_FIXNUM(two_jh); CHECK_FIXNUM(two_ji);
return rb_float_new(gsl_sf_coupling_9j(FIX2INT(two_ja), FIX2INT(two_jb),
- FIX2INT(two_jc), FIX2INT(two_jd),
- FIX2INT(two_je), FIX2INT(two_jf),
- FIX2INT(two_jg), FIX2INT(two_jh),
- FIX2INT(two_ji)));
+ FIX2INT(two_jc), FIX2INT(two_jd),
+ FIX2INT(two_je), FIX2INT(two_jf),
+ FIX2INT(two_jg), FIX2INT(two_jh),
+ FIX2INT(two_ji)));
}
static VALUE rb_gsl_sf_coupling_9j_e(VALUE obj, VALUE two_ja, VALUE two_jb,
- VALUE two_jc, VALUE two_jd, VALUE two_je,
- VALUE two_jf, VALUE two_jg, VALUE two_jh,
- VALUE two_ji)
+ VALUE two_jc, VALUE two_jd, VALUE two_je,
+ VALUE two_jf, VALUE two_jg, VALUE two_jh,
+ VALUE two_ji)
{
gsl_sf_result *rslt = NULL;
VALUE v;
@@ -92,10 +92,10 @@ static VALUE rb_gsl_sf_coupling_9j_e(VALUE obj, VALUE two_ja, VALUE two_jb,
CHECK_FIXNUM(two_jg); CHECK_FIXNUM(two_jh); CHECK_FIXNUM(two_ji);
v = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, rslt);
/*status =*/ gsl_sf_coupling_9j_e(FIX2INT(two_ja), FIX2INT(two_jb),
- FIX2INT(two_jc), FIX2INT(two_jd),
- FIX2INT(two_je), FIX2INT(two_jf),
- FIX2INT(two_jg), FIX2INT(two_jh),
- FIX2INT(two_ji), rslt);
+ FIX2INT(two_jc), FIX2INT(two_jd),
+ FIX2INT(two_je), FIX2INT(two_jf),
+ FIX2INT(two_jg), FIX2INT(two_jh),
+ FIX2INT(two_ji), rslt);
return v;
}
@@ -111,7 +111,7 @@ void Init_gsl_sf_coupling(VALUE module)
rb_define_module_function(module, "coupling_9j_e", rb_gsl_sf_coupling_9j_e, 9);
mgsl_sf_coupling = rb_define_module_under(module, "Coupling");
-
+
rb_define_module_function(mgsl_sf_coupling, "3j", rb_gsl_sf_coupling_3j, 6);
rb_define_module_function(mgsl_sf_coupling, "3j_e", rb_gsl_sf_coupling_3j_e, 6);
rb_define_module_function(mgsl_sf_coupling, "6j", rb_gsl_sf_coupling_6j, 6);
diff --git a/ext/gsl/sf_dawson.c b/ext/gsl_native/sf_dawson.c
similarity index 100%
rename from ext/gsl/sf_dawson.c
rename to ext/gsl_native/sf_dawson.c
diff --git a/ext/gsl/sf_debye.c b/ext/gsl_native/sf_debye.c
similarity index 97%
rename from ext/gsl/sf_debye.c
rename to ext/gsl_native/sf_debye.c
index dd5c843..c059c40 100644
--- a/ext/gsl/sf_debye.c
+++ b/ext/gsl_native/sf_debye.c
@@ -83,21 +83,18 @@ static VALUE rb_gsl_sf_debye_n(int argc, VALUE *argv, VALUE obj)
case 4:
return rb_gsl_sf_eval1(gsl_sf_debye_4, x);
break;
-#ifdef GSL_1_8_LATER
case 5:
return rb_gsl_sf_eval1(gsl_sf_debye_5, x);
break;
case 6:
return rb_gsl_sf_eval1(gsl_sf_debye_6, x);
break;
-#endif
default:
rb_raise(rb_eRuntimeError, "n must be 1, 2, 3, or 4");
break;
}
}
-#ifdef GSL_1_8_LATER
static VALUE rb_gsl_sf_debye_5(VALUE obj, VALUE x)
{
return rb_gsl_sf_eval1(gsl_sf_debye_5, x);
@@ -117,8 +114,6 @@ static VALUE rb_gsl_sf_debye_6_e(VALUE obj, VALUE x)
return rb_gsl_sf_eval_e(gsl_sf_debye_6_e, x);
}
-#endif
-
void Init_gsl_sf_debye(VALUE module)
{
VALUE mgsl_sf_debye;
@@ -130,12 +125,10 @@ void Init_gsl_sf_debye(VALUE module)
rb_define_module_function(module, "debye_3_e", rb_gsl_sf_debye_3_e, 1);
rb_define_module_function(module, "debye_4", rb_gsl_sf_debye_4, 1);
rb_define_module_function(module, "debye_4_e", rb_gsl_sf_debye_4_e, 1);
-#ifdef GSL_1_8_LATER
rb_define_module_function(module, "debye_5", rb_gsl_sf_debye_5, 1);
rb_define_module_function(module, "debye_5_e", rb_gsl_sf_debye_5_e, 1);
rb_define_module_function(module, "debye_6", rb_gsl_sf_debye_6, 1);
rb_define_module_function(module, "debye_6_e", rb_gsl_sf_debye_6_e, 1);
-#endif
rb_define_module_function(module, "debye_n", rb_gsl_sf_debye_n, -1);
mgsl_sf_debye = rb_define_module_under(module, "Debye");
@@ -147,11 +140,9 @@ void Init_gsl_sf_debye(VALUE module)
rb_define_module_function(mgsl_sf_debye, "three_e", rb_gsl_sf_debye_3_e, 1);
rb_define_module_function(mgsl_sf_debye, "four", rb_gsl_sf_debye_4, 1);
rb_define_module_function(mgsl_sf_debye, "four_e", rb_gsl_sf_debye_4_e, 1);
-#ifdef GSL_1_8_LATER
rb_define_module_function(mgsl_sf_debye, "five", rb_gsl_sf_debye_5, 1);
rb_define_module_function(mgsl_sf_debye, "five_e", rb_gsl_sf_debye_5_e, 1);
rb_define_module_function(mgsl_sf_debye, "six", rb_gsl_sf_debye_6, 1);
rb_define_module_function(mgsl_sf_debye, "six_e", rb_gsl_sf_debye_6_e, 1);
-#endif
rb_define_module_function(mgsl_sf_debye, "n", rb_gsl_sf_debye_n, -1);
}
diff --git a/ext/gsl/sf_dilog.c b/ext/gsl_native/sf_dilog.c
similarity index 100%
rename from ext/gsl/sf_dilog.c
rename to ext/gsl_native/sf_dilog.c
diff --git a/ext/gsl/sf_elementary.c b/ext/gsl_native/sf_elementary.c
similarity index 92%
rename from ext/gsl/sf_elementary.c
rename to ext/gsl_native/sf_elementary.c
index 5a6e78c..9670af0 100644
--- a/ext/gsl/sf_elementary.c
+++ b/ext/gsl_native/sf_elementary.c
@@ -25,7 +25,7 @@ static VALUE rb_gsl_sf_multiply_e(VALUE obj, VALUE x, VALUE y)
}
static VALUE rb_gsl_sf_multiply_err_e(VALUE obj, VALUE x, VALUE dx,
- VALUE y, VALUE dy)
+ VALUE y, VALUE dy)
{
gsl_sf_result *r;
VALUE v;
@@ -35,7 +35,7 @@ static VALUE rb_gsl_sf_multiply_err_e(VALUE obj, VALUE x, VALUE dx,
Need_Float(dx); Need_Float(dy);
v = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, r);
/*status =*/ gsl_sf_multiply_err_e(NUM2DBL(x), NUM2DBL(dx),
- NUM2DBL(y), NUM2DBL(dy), r);
+ NUM2DBL(y), NUM2DBL(dy), r);
return v;
}
diff --git a/ext/gsl/sf_ellint.c b/ext/gsl_native/sf_ellint.c
similarity index 83%
rename from ext/gsl/sf_ellint.c
rename to ext/gsl_native/sf_ellint.c
index d79d731..fd2e8ba 100644
--- a/ext/gsl/sf_ellint.c
+++ b/ext/gsl_native/sf_ellint.c
@@ -36,10 +36,10 @@ static VALUE rb_gsl_sf_ellint_Ecomp_e(VALUE obj, VALUE k, VALUE m)
static VALUE rb_gsl_sf_ellint_F(int argc, VALUE *argv, VALUE obj)
{
- if (argc == 2)
- return rb_gsl_sf_eval_double2_m(gsl_sf_ellint_F, argv[0], argv[1],
- INT2FIX(GSL_PREC_DOUBLE));
- else
+ if (argc == 2)
+ return rb_gsl_sf_eval_double2_m(gsl_sf_ellint_F, argv[0], argv[1],
+ INT2FIX(GSL_PREC_DOUBLE));
+ else
return rb_gsl_sf_eval_double2_m(gsl_sf_ellint_F, argv[0], argv[1], argv[2]);
}
@@ -50,10 +50,10 @@ static VALUE rb_gsl_sf_ellint_F_e(VALUE obj, VALUE phi, VALUE k, VALUE m)
static VALUE rb_gsl_sf_ellint_E(int argc, VALUE *argv, VALUE obj)
{
- if (argc == 2)
- return rb_gsl_sf_eval_double2_m(gsl_sf_ellint_E, argv[0], argv[1],
- INT2FIX(GSL_PREC_DOUBLE));
- else
+ if (argc == 2)
+ return rb_gsl_sf_eval_double2_m(gsl_sf_ellint_E, argv[0], argv[1],
+ INT2FIX(GSL_PREC_DOUBLE));
+ else
return rb_gsl_sf_eval_double2_m(gsl_sf_ellint_E, argv[0], argv[1], argv[2]);
}
@@ -65,42 +65,42 @@ static VALUE rb_gsl_sf_ellint_E_e(VALUE obj, VALUE phi, VALUE k, VALUE m)
static VALUE rb_gsl_sf_ellint_P(int argc, VALUE *argv, VALUE obj)
{
- if (argc == 3)
+ if (argc == 3)
return rb_gsl_sf_eval_double3_m(gsl_sf_ellint_P, argv[0], argv[1], argv[2],
- INT2FIX(GSL_PREC_DOUBLE));
- else
+ INT2FIX(GSL_PREC_DOUBLE));
+ else
return rb_gsl_sf_eval_double3_m(gsl_sf_ellint_P, argv[0], argv[1], argv[2],
- argv[3]);
+ argv[3]);
}
-static VALUE rb_gsl_sf_ellint_P_e(VALUE obj, VALUE phi, VALUE k,
- VALUE n, VALUE m)
+static VALUE rb_gsl_sf_ellint_P_e(VALUE obj, VALUE phi, VALUE k,
+ VALUE n, VALUE m)
{
return rb_gsl_sf_eval_e_double3_m(gsl_sf_ellint_P_e, phi, k, n, m);
}
static VALUE rb_gsl_sf_ellint_D(int argc, VALUE *argv, VALUE obj)
{
- if (argc == 3)
+ if (argc == 3)
return rb_gsl_sf_eval_double3_m(gsl_sf_ellint_D, argv[0], argv[1], argv[2],
- INT2FIX(GSL_PREC_DOUBLE));
- else
+ INT2FIX(GSL_PREC_DOUBLE));
+ else
return rb_gsl_sf_eval_double3_m(gsl_sf_ellint_D, argv[0], argv[1], argv[2],
- argv[3]);
+ argv[3]);
}
-static VALUE rb_gsl_sf_ellint_D_e(VALUE obj, VALUE phi, VALUE k,
- VALUE n, VALUE m)
+static VALUE rb_gsl_sf_ellint_D_e(VALUE obj, VALUE phi, VALUE k,
+ VALUE n, VALUE m)
{
return rb_gsl_sf_eval_e_double3_m(gsl_sf_ellint_D_e, phi, k, n, m);
}
static VALUE rb_gsl_sf_ellint_RC(int argc, VALUE *argv, VALUE obj)
{
- if (argc == 2)
- return rb_gsl_sf_eval_double2_m(gsl_sf_ellint_RC, argv[0], argv[1],
- INT2FIX(GSL_PREC_DOUBLE));
- else
+ if (argc == 2)
+ return rb_gsl_sf_eval_double2_m(gsl_sf_ellint_RC, argv[0], argv[1],
+ INT2FIX(GSL_PREC_DOUBLE));
+ else
return rb_gsl_sf_eval_double2_m(gsl_sf_ellint_RC, argv[0], argv[1], argv[2]);
}
@@ -111,48 +111,48 @@ static VALUE rb_gsl_sf_ellint_RC_e(VALUE obj, VALUE x, VALUE y, VALUE m)
static VALUE rb_gsl_sf_ellint_RD(int argc, VALUE *argv, VALUE obj)
{
- if (argc == 3)
+ if (argc == 3)
return rb_gsl_sf_eval_double3_m(gsl_sf_ellint_RD, argv[0], argv[1], argv[2],
- INT2FIX(GSL_PREC_DOUBLE));
- else
+ INT2FIX(GSL_PREC_DOUBLE));
+ else
return rb_gsl_sf_eval_double3_m(gsl_sf_ellint_RD, argv[0], argv[1], argv[2],
- argv[3]);
+ argv[3]);
}
-static VALUE rb_gsl_sf_ellint_RD_e(VALUE obj, VALUE x, VALUE y,
- VALUE z, VALUE m)
+static VALUE rb_gsl_sf_ellint_RD_e(VALUE obj, VALUE x, VALUE y,
+ VALUE z, VALUE m)
{
return rb_gsl_sf_eval_e_double3_m(gsl_sf_ellint_RD_e, x, y, z, m);
}
static VALUE rb_gsl_sf_ellint_RF(int argc, VALUE *argv, VALUE obj)
{
- if (argc == 3)
+ if (argc == 3)
return rb_gsl_sf_eval_double3_m(gsl_sf_ellint_RF, argv[0], argv[1], argv[2],
- INT2FIX(GSL_PREC_DOUBLE));
- else
+ INT2FIX(GSL_PREC_DOUBLE));
+ else
return rb_gsl_sf_eval_double3_m(gsl_sf_ellint_RF, argv[0], argv[1], argv[2],
- argv[3]);
+ argv[3]);
}
-static VALUE rb_gsl_sf_ellint_RF_e(VALUE obj, VALUE x, VALUE y,
- VALUE z, VALUE m)
+static VALUE rb_gsl_sf_ellint_RF_e(VALUE obj, VALUE x, VALUE y,
+ VALUE z, VALUE m)
{
return rb_gsl_sf_eval_e_double3_m(gsl_sf_ellint_RF_e, x, y, z, m);
}
static VALUE rb_gsl_sf_ellint_RJ(int argc, VALUE *argv, VALUE obj)
{
- if (argc == 4)
+ if (argc == 4)
return rb_gsl_sf_eval_double4_m(gsl_sf_ellint_RJ, argv[0], argv[1], argv[2],
- argv[3], INT2FIX(GSL_PREC_DOUBLE));
- else
+ argv[3], INT2FIX(GSL_PREC_DOUBLE));
+ else
return rb_gsl_sf_eval_double4_m(gsl_sf_ellint_RJ, argv[0], argv[1], argv[2],
- argv[3], argv[4]);
+ argv[3], argv[4]);
}
-static VALUE rb_gsl_sf_ellint_RJ_e(VALUE obj, VALUE x, VALUE y,
- VALUE z, VALUE p, VALUE m)
+static VALUE rb_gsl_sf_ellint_RJ_e(VALUE obj, VALUE x, VALUE y,
+ VALUE z, VALUE p, VALUE m)
{
return rb_gsl_sf_eval_e_double4_m(gsl_sf_ellint_RJ_e, x, y, z, p, m);
}
diff --git a/ext/gsl/sf_elljac.c b/ext/gsl_native/sf_elljac.c
similarity index 90%
rename from ext/gsl/sf_elljac.c
rename to ext/gsl_native/sf_elljac.c
index 401fd29..3d1dae7 100644
--- a/ext/gsl/sf_elljac.c
+++ b/ext/gsl_native/sf_elljac.c
@@ -19,8 +19,8 @@ static VALUE rb_gsl_sf_elljac_e(VALUE obj, VALUE n, VALUE m)
//int status;
Need_Float(n); Need_Float(m);
/*status =*/ gsl_sf_elljac_e(NUM2DBL(n), NUM2DBL(m), &sn, &cn, &dn);
- return rb_ary_new3(3, rb_float_new(sn),
- rb_float_new(cn), rb_float_new(dn));
+ return rb_ary_new3(3, rb_float_new(sn),
+ rb_float_new(cn), rb_float_new(dn));
}
void Init_gsl_sf_elljac(VALUE module)
diff --git a/ext/gsl/sf_erfc.c b/ext/gsl_native/sf_erfc.c
similarity index 97%
rename from ext/gsl/sf_erfc.c
rename to ext/gsl_native/sf_erfc.c
index 2735bc6..74e4ccb 100644
--- a/ext/gsl/sf_erfc.c
+++ b/ext/gsl_native/sf_erfc.c
@@ -62,7 +62,6 @@ static VALUE rb_gsl_sf_erf_Q_e(VALUE obj, VALUE x)
return rb_gsl_sf_eval_e(gsl_sf_erf_Q_e, x);
}
-#ifdef GSL_1_4_LATER
static VALUE rb_gsl_sf_hazard(VALUE obj, VALUE x)
{
return rb_gsl_sf_eval1(gsl_sf_hazard, x);
@@ -72,7 +71,6 @@ static VALUE rb_gsl_sf_hazard_e(VALUE obj, VALUE x)
{
return rb_gsl_sf_eval_e(gsl_sf_hazard_e, x);
}
-#endif
void Init_gsl_sf_erfc(VALUE module)
{
@@ -86,8 +84,6 @@ void Init_gsl_sf_erfc(VALUE module)
rb_define_module_function(module, "erf_Z_e", rb_gsl_sf_erf_Z_e, 1);
rb_define_module_function(module, "erf_Q", rb_gsl_sf_erf_Q, 1);
rb_define_module_function(module, "erf_Q_e", rb_gsl_sf_erf_Q_e, 1);
-#ifdef GSL_1_4_LATER
rb_define_module_function(module, "hazard", rb_gsl_sf_hazard, 1);
rb_define_module_function(module, "hazard_e", rb_gsl_sf_hazard_e, 1);
-#endif
}
diff --git a/ext/gsl/sf_exp.c b/ext/gsl_native/sf_exp.c
similarity index 97%
rename from ext/gsl/sf_exp.c
rename to ext/gsl_native/sf_exp.c
index 78f235e..7b08a8c 100644
--- a/ext/gsl/sf_exp.c
+++ b/ext/gsl_native/sf_exp.c
@@ -119,7 +119,7 @@ static VALUE rb_gsl_sf_exp_err_e10_e(VALUE obj, VALUE x, VALUE dx)
}
static VALUE rb_gsl_sf_exp_mult_err_e(VALUE obj, VALUE x, VALUE dx,
- VALUE y, VALUE dy)
+ VALUE y, VALUE dy)
{
gsl_sf_result *rslt = NULL;
VALUE v;
@@ -133,7 +133,7 @@ static VALUE rb_gsl_sf_exp_mult_err_e(VALUE obj, VALUE x, VALUE dx,
}
static VALUE rb_gsl_sf_exp_mult_err_e10_e(VALUE obj, VALUE x, VALUE dx,
- VALUE y, VALUE dy)
+ VALUE y, VALUE dy)
{
gsl_sf_result_e10 *rslt = NULL;
VALUE v;
diff --git a/ext/gsl/sf_expint.c b/ext/gsl_native/sf_expint.c
similarity index 98%
rename from ext/gsl/sf_expint.c
rename to ext/gsl_native/sf_expint.c
index c56f4fd..dbe36f4 100644
--- a/ext/gsl/sf_expint.c
+++ b/ext/gsl_native/sf_expint.c
@@ -102,7 +102,6 @@ static VALUE rb_gsl_sf_atanint_e(VALUE obj, VALUE x)
return rb_gsl_sf_eval_e(gsl_sf_atanint_e, x);
}
-#ifdef GSL_1_3_LATER
static VALUE rb_gsl_sf_expint_E1_scaled(VALUE obj, VALUE x)
{
return rb_gsl_sf_eval1(gsl_sf_expint_E1_scaled, x);
@@ -132,9 +131,7 @@ static VALUE rb_gsl_sf_expint_Ei_scaled_e(VALUE obj, VALUE x)
{
return rb_gsl_sf_eval_e(gsl_sf_expint_Ei_scaled_e, x);
}
-#endif
-#ifdef GSL_1_10_LATER
static VALUE rb_gsl_sf_expint_En(VALUE obj, VALUE n, VALUE x)
{
return rb_gsl_sf_eval_int_double(gsl_sf_expint_En, n, x);
@@ -148,8 +145,6 @@ static VALUE rb_gsl_sf_expint_En_e(VALUE obj, VALUE n, VALUE x)
return val;
}
-#endif
-
void Init_gsl_sf_expint(VALUE module)
{
VALUE mgsl_sf_expint;
@@ -185,7 +180,6 @@ void Init_gsl_sf_expint(VALUE module)
rb_define_module_function(mgsl_sf_expint, "three", rb_gsl_sf_expint_3, 1);
rb_define_module_function(mgsl_sf_expint, "three_e", rb_gsl_sf_expint_3_e, 1);
-#ifdef GSL_1_3_LATER
rb_define_module_function(module, "expint_E1_scaled", rb_gsl_sf_expint_E1_scaled, 1);
rb_define_module_function(module, "expint_E1_scaled_e", rb_gsl_sf_expint_E1_scaled_e, 1);
rb_define_module_function(module, "expint_E2_scaled", rb_gsl_sf_expint_E2_scaled, 1);
@@ -199,13 +193,9 @@ void Init_gsl_sf_expint(VALUE module)
rb_define_module_function(mgsl_sf_expint, "E2_scaled_e", rb_gsl_sf_expint_E2_scaled_e, 1);
rb_define_module_function(mgsl_sf_expint, "Ei_scaled", rb_gsl_sf_expint_Ei_scaled, 1);
rb_define_module_function(mgsl_sf_expint, "Ei_scaled_e", rb_gsl_sf_expint_Ei_scaled_e, 1);
-#endif
-#ifdef GSL_1_10_LATER
rb_define_module_function(module, "expint_En", rb_gsl_sf_expint_En, 2);
rb_define_module_function(mgsl_sf_expint, "En", rb_gsl_sf_expint_En, 2);
rb_define_module_function(module, "expint_En_e", rb_gsl_sf_expint_En_e, 2);
- rb_define_module_function(mgsl_sf_expint, "En_e", rb_gsl_sf_expint_En_e, 2);
-#endif
-
+ rb_define_module_function(mgsl_sf_expint, "En_e", rb_gsl_sf_expint_En_e, 2);
}
diff --git a/ext/gsl/sf_fermi_dirac.c b/ext/gsl_native/sf_fermi_dirac.c
similarity index 100%
rename from ext/gsl/sf_fermi_dirac.c
rename to ext/gsl_native/sf_fermi_dirac.c
diff --git a/ext/gsl/sf_gamma.c b/ext/gsl_native/sf_gamma.c
similarity index 99%
rename from ext/gsl/sf_gamma.c
rename to ext/gsl_native/sf_gamma.c
index 287566c..d77cbfc 100644
--- a/ext/gsl/sf_gamma.c
+++ b/ext/gsl_native/sf_gamma.c
@@ -242,12 +242,10 @@ static VALUE rb_gsl_sf_gamma_inc(VALUE obj, VALUE a, VALUE x)
return rb_gsl_sf_eval_double_double(gsl_sf_gamma_inc_P, a, x);
}
-#ifdef GSL_1_4_LATER
static VALUE rb_gsl_sf_gamma_inc_e(VALUE obj, VALUE a, VALUE x)
{
return rb_gsl_sf_eval_e_double2(gsl_sf_gamma_inc_e, a, x);
}
-#endif
static VALUE rb_gsl_sf_beta(VALUE obj, VALUE a, VALUE b)
{
@@ -284,7 +282,7 @@ static VALUE rb_gsl_sf_beta_inc_e(VALUE obj, VALUE a, VALUE b, VALUE x)
double mygsl_binomial_coef(unsigned int n, unsigned int k);
double mygsl_binomial_coef(unsigned int n, unsigned int k)
{
- return floor(0.5 + exp(gsl_sf_lnfact(n) - gsl_sf_lnfact(k) - gsl_sf_lnfact(n-k)));
+ return floor(0.5 + exp(gsl_sf_lnfact(n) - gsl_sf_lnfact(k) - gsl_sf_lnfact(n-k)));
}
static VALUE rb_gsl_sf_bincoef(VALUE obj, VALUE n, VALUE k)
@@ -333,9 +331,7 @@ void Init_gsl_sf_gamma(VALUE module)
rb_define_module_function(module, "gamma_inc_Q_e", rb_gsl_sf_gamma_inc_Q_e, 2);
rb_define_module_function(module, "gamma_inc", rb_gsl_sf_gamma_inc, 2);
-#ifdef GSL_1_4_LATER
rb_define_module_function(module, "gamma_inc_e", rb_gsl_sf_gamma_inc_e, 2);
-#endif
rb_define_module_function(module, "beta", rb_gsl_sf_beta, 2);
rb_define_module_function(module, "beta_e", rb_gsl_sf_beta_e, 2);
rb_define_module_function(module, "lnbeta", rb_gsl_sf_lnbeta, 2);
diff --git a/ext/gsl/sf_gegenbauer.c b/ext/gsl_native/sf_gegenbauer.c
similarity index 100%
rename from ext/gsl/sf_gegenbauer.c
rename to ext/gsl_native/sf_gegenbauer.c
diff --git a/ext/gsl/sf_hyperg.c b/ext/gsl_native/sf_hyperg.c
similarity index 100%
rename from ext/gsl/sf_hyperg.c
rename to ext/gsl_native/sf_hyperg.c
diff --git a/ext/gsl/sf_laguerre.c b/ext/gsl_native/sf_laguerre.c
similarity index 95%
rename from ext/gsl/sf_laguerre.c
rename to ext/gsl_native/sf_laguerre.c
index 8cb6f06..85d15b2 100644
--- a/ext/gsl/sf_laguerre.c
+++ b/ext/gsl_native/sf_laguerre.c
@@ -12,7 +12,7 @@
#include "include/rb_gsl_sf.h"
static VALUE rb_gsl_sf_laguerre_X(int argc, VALUE *argv, VALUE obj,
- double (*f)(double, double))
+ double (*f)(double, double))
{
switch (argc) {
case 2:
@@ -62,11 +62,11 @@ static VALUE rb_gsl_sf_laguerre_n(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 3:
return rb_gsl_sf_eval_int_double_double(gsl_sf_laguerre_n, argv[0],
- argv[1], argv[2]);
+ argv[1], argv[2]);
break;
case 2:
return rb_gsl_sf_eval_int_double_double(gsl_sf_laguerre_n, argv[0],
- INT2FIX(0), argv[1]);
+ INT2FIX(0), argv[1]);
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 2)", argc);
diff --git a/ext/gsl/sf_lambert.c b/ext/gsl_native/sf_lambert.c
similarity index 100%
rename from ext/gsl/sf_lambert.c
rename to ext/gsl_native/sf_lambert.c
diff --git a/ext/gsl/sf_legendre.c b/ext/gsl_native/sf_legendre.c
similarity index 100%
rename from ext/gsl/sf_legendre.c
rename to ext/gsl_native/sf_legendre.c
diff --git a/ext/gsl/sf_log.c b/ext/gsl_native/sf_log.c
similarity index 99%
rename from ext/gsl/sf_log.c
rename to ext/gsl_native/sf_log.c
index ff4edfb..533ef42 100644
--- a/ext/gsl/sf_log.c
+++ b/ext/gsl_native/sf_log.c
@@ -13,14 +13,14 @@
static VALUE rb_gsl_sf_log(VALUE obj, VALUE x)
{
- if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
+ if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
return rb_gsl_math_complex_eval(gsl_complex_log, x);
return rb_gsl_sf_eval1(gsl_sf_log, x);
}
static VALUE rb_gsl_sf_log10(VALUE obj, VALUE x)
{
- if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
+ if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
return rb_gsl_math_complex_eval(gsl_complex_log10, x);
return rb_gsl_sf_eval1(log10, x);
}
@@ -93,7 +93,7 @@ static VALUE rb_gsl_sf_log_1plusx_mx_e(VALUE obj, VALUE x)
void Init_gsl_sf_log(VALUE module)
{
rb_define_module_function(module, "log", rb_gsl_sf_log, 1);
- rb_define_module_function(module, "log10", rb_gsl_sf_log10, 1);
+ rb_define_module_function(module, "log10", rb_gsl_sf_log10, 1);
rb_define_module_function(module, "log_e", rb_gsl_sf_log_e, 1);
rb_define_module_function(module, "log_abs", rb_gsl_sf_log_abs, 1);
rb_define_module_function(module, "log_abs_e", rb_gsl_sf_log_abs_e, 1);
diff --git a/ext/gsl_native/sf_mathieu.c b/ext/gsl_native/sf_mathieu.c
new file mode 100644
index 0000000..8af91b7
--- /dev/null
+++ b/ext/gsl_native/sf_mathieu.c
@@ -0,0 +1,235 @@
+#include "include/rb_gsl.h"
+
+static VALUE cWorkspace;
+
+static VALUE rb_gsl_sf_mathieu_alloc(VALUE klass, VALUE n, VALUE q)
+{
+ gsl_sf_mathieu_workspace *w;
+ w = gsl_sf_mathieu_alloc((size_t) FIX2INT(n), NUM2DBL(q));
+ return Data_Wrap_Struct(klass, 0, gsl_sf_mathieu_free, w);
+}
+
+static VALUE sf_mathieu_eval(VALUE order, VALUE qq,
+ int (*f)(int, double, gsl_sf_result*))
+{
+ gsl_sf_result r;
+ (*f)(FIX2INT(order), NUM2DBL(qq), &r);
+ return rb_float_new(r.val);
+}
+
+static VALUE sf_mathieu_eval2(VALUE n1, VALUE n2, VALUE q, VALUE x,
+ int (*f)(int, int, double, double, gsl_sf_result*))
+{
+ gsl_sf_result r;
+ (*f)(FIX2INT(n1),FIX2INT(n2), NUM2DBL(q), NUM2DBL(x), &r);
+ return rb_float_new(r.val);
+}
+
+static VALUE sf_mathieu_array_eval(int argc, VALUE *argv,
+ int (*f)(int, int, double, gsl_sf_mathieu_workspace*, double[]))
+{
+ gsl_sf_mathieu_workspace *w;
+ gsl_vector *v;
+ int n1, n2;
+ double q;
+ switch (argc) {
+ case 4:
+ if (!rb_obj_is_kind_of(argv[3], cWorkspace)) {
+ rb_raise(rb_eTypeError, "Wrong argument type 3 (%s detected, %s expected)",
+ rb_class2name(CLASS_OF(argv[3])), rb_class2name(cWorkspace));
+ }
+ n1 = FIX2INT(argv[0]);
+ n2 = FIX2INT(argv[1]);
+ q = NUM2DBL(argv[2]);
+ Data_Get_Struct(argv[3], gsl_sf_mathieu_workspace, w);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments. (%d for 4)", argc);
+ }
+ v = gsl_vector_alloc(n2 - n1 + 1);
+ (*f)(n1, n2, q, w, v->data);
+ return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
+}
+
+static VALUE sf_mathieu_array_eval2(int argc, VALUE *argv,
+ int (*f)(int, int, double, double, gsl_sf_mathieu_workspace*, double[]))
+{
+ gsl_sf_mathieu_workspace *w;
+ gsl_vector *v;
+ int n1, n2;
+ double q, x;
+ switch (argc) {
+ case 5:
+ if (!rb_obj_is_kind_of(argv[4], cWorkspace)) {
+ rb_raise(rb_eTypeError, "Wrong argument type 4 (%s detected, %s expected)",
+ rb_class2name(CLASS_OF(argv[4])), rb_class2name(cWorkspace));
+ }
+ n1 = FIX2INT(argv[0]);
+ n2 = FIX2INT(argv[1]);
+ q = NUM2DBL(argv[2]);
+ x = NUM2DBL(argv[3]);
+ Data_Get_Struct(argv[4], gsl_sf_mathieu_workspace, w);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments. (%d for 5)", argc);
+ }
+ v = gsl_vector_alloc(n2 - n1 + 1);
+ (*f)(n1, n2, q, x, w, v->data);
+ return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
+}
+static VALUE sf_mathieu_array_eval3(int argc, VALUE *argv,
+ int (*f)(int, int, int, double, double, gsl_sf_mathieu_workspace*, double[]))
+{
+ gsl_sf_mathieu_workspace *w;
+ gsl_vector *v;
+ int n1, n2, n3;
+ double q, x;
+ switch (argc) {
+ case 6:
+ if (!rb_obj_is_kind_of(argv[5], cWorkspace)) {
+ rb_raise(rb_eTypeError, "Wrong argument type 5 (%s detected, %s expected)",
+ rb_class2name(CLASS_OF(argv[5])), rb_class2name(cWorkspace));
+ }
+ n1 = FIX2INT(argv[0]);
+ n2 = FIX2INT(argv[1]);
+ n3 = FIX2INT(argv[2]);
+ q = NUM2DBL(argv[3]);
+ x = NUM2DBL(argv[4]);
+ Data_Get_Struct(argv[5], gsl_sf_mathieu_workspace, w);
+ break;
+ default:
+ rb_raise(rb_eArgError, "Wrong number of arguments. (%d for 6)", argc);
+ }
+ v = gsl_vector_alloc(n3 - n2 + 1);
+ (*f)(n1, n2, n3, q, x, w, v->data);
+ return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
+}
+static VALUE sf_mathieu_eval_int_double2(VALUE order, VALUE qq, VALUE zz,
+ int (*f)(int, double, double, gsl_sf_result*))
+{
+ gsl_sf_result r;
+ (*f)(FIX2INT(order), NUM2DBL(qq), NUM2DBL(zz), &r);
+ return rb_float_new(r.val);
+}
+static VALUE sf_mathieu_eval_e_int_double2(VALUE order, VALUE qq, VALUE zz,
+ int (*f)(int, double, double, gsl_sf_result*))
+{
+ gsl_sf_result *r;
+ VALUE val;
+ val = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, r);
+ (*f)(FIX2INT(order), NUM2DBL(qq), NUM2DBL(zz), r);
+ return val;
+}
+
+static VALUE sf_mathieu_eval_e_int2_double2(VALUE n1, VALUE n2, VALUE qq, VALUE zz,
+ int (*f)(int, int, double, double, gsl_sf_result*))
+{
+ gsl_sf_result *r;
+ VALUE val;
+ val = Data_Make_Struct(cgsl_sf_result, gsl_sf_result, 0, free, r);
+ (*f)(FIX2INT(n1), FIX2INT(n2), NUM2DBL(qq), NUM2DBL(zz), r);
+ return val;
+}
+/**********/
+static VALUE rb_gsl_sf_mathieu_a_e(VALUE module, VALUE order, VALUE qq)
+{
+ return rb_gsl_sf_eval_e_int_double(gsl_sf_mathieu_a, order, qq);
+}
+static VALUE rb_gsl_sf_mathieu_a(VALUE module, VALUE order, VALUE qq)
+{
+ return sf_mathieu_eval(order, qq, gsl_sf_mathieu_a);
+}
+static VALUE rb_gsl_sf_mathieu_a_array(VALUE module, int argc, VALUE *argv)
+{
+ return sf_mathieu_array_eval(argc, argv, gsl_sf_mathieu_a_array);
+}
+static VALUE rb_gsl_sf_mathieu_b_e(VALUE module, VALUE order, VALUE qq)
+{
+ return rb_gsl_sf_eval_e_int_double(gsl_sf_mathieu_b, order, qq);
+}
+static VALUE rb_gsl_sf_mathieu_b(VALUE module, VALUE order, VALUE qq)
+{
+ return sf_mathieu_eval(order, qq, gsl_sf_mathieu_b);
+}
+static VALUE rb_gsl_sf_mathieu_b_array(VALUE module, int argc, VALUE *argv)
+{
+ return sf_mathieu_array_eval(argc, argv, gsl_sf_mathieu_b_array);
+}
+static VALUE rb_gsl_sf_mathieu_ce_e(VALUE module, VALUE order, VALUE qq, VALUE zz)
+{
+ return sf_mathieu_eval_e_int_double2(order, qq, zz, gsl_sf_mathieu_ce);
+}
+static VALUE rb_gsl_sf_mathieu_ce(VALUE module, VALUE order, VALUE qq, VALUE zz)
+{
+ return sf_mathieu_eval_int_double2(order, qq, zz, gsl_sf_mathieu_ce);
+}
+static VALUE rb_gsl_sf_mathieu_ce_array(VALUE module, int argc, VALUE *argv)
+{
+ return sf_mathieu_array_eval2(argc, argv, gsl_sf_mathieu_ce_array);
+}
+static VALUE rb_gsl_sf_mathieu_se_e(VALUE module, VALUE order, VALUE qq, VALUE zz)
+{
+ return sf_mathieu_eval_e_int_double2(order, qq, zz, gsl_sf_mathieu_se);
+}
+static VALUE rb_gsl_sf_mathieu_se(VALUE module, VALUE order, VALUE qq, VALUE zz)
+{
+ return sf_mathieu_eval_int_double2(order, qq, zz, gsl_sf_mathieu_se);
+}
+static VALUE rb_gsl_sf_mathieu_se_array(VALUE module, int argc, VALUE *argv)
+{
+ return sf_mathieu_array_eval2(argc, argv, gsl_sf_mathieu_se_array);
+}
+
+/*****/
+static VALUE rb_gsl_sf_mathieu_Mc_e(VALUE module, VALUE n1, VALUE n2, VALUE q, VALUE x)
+{
+ return sf_mathieu_eval_e_int2_double2(n1, n2, q, x, gsl_sf_mathieu_Mc);
+}
+static VALUE rb_gsl_sf_mathieu_Mc(VALUE module, VALUE n1, VALUE n2, VALUE q, VALUE x)
+{
+ return sf_mathieu_eval2(n1, n2, q, x, gsl_sf_mathieu_Mc);
+}
+static VALUE rb_gsl_sf_mathieu_Mc_array(VALUE module, int argc, VALUE *argv)
+{
+ return sf_mathieu_array_eval3(argc, argv, gsl_sf_mathieu_Mc_array);
+}
+static VALUE rb_gsl_sf_mathieu_Ms_e(VALUE module, VALUE n1, VALUE n2, VALUE q, VALUE x)
+{
+ return sf_mathieu_eval_e_int2_double2(n1, n2, q, x, gsl_sf_mathieu_Ms);
+}
+static VALUE rb_gsl_sf_mathieu_Ms(VALUE module, VALUE n1, VALUE n2, VALUE q, VALUE x)
+{
+ return sf_mathieu_eval2(n1, n2, q, x, gsl_sf_mathieu_Ms);
+}
+static VALUE rb_gsl_sf_mathieu_Ms_array(VALUE module, int argc, VALUE *argv)
+{
+ return sf_mathieu_array_eval3(argc, argv, gsl_sf_mathieu_Ms_array);
+}
+/*****/
+void Init_sf_mathieu(VALUE module)
+{
+ VALUE mMathieu;
+
+ mMathieu = rb_define_module_under(module, "Mathieu");
+ cWorkspace = rb_define_class_under(mMathieu, "Workspace", cGSL_Object);
+ rb_define_singleton_method(cWorkspace, "alloc", rb_gsl_sf_mathieu_alloc, 2);
+
+ rb_define_module_function(module, "mathieu_a", rb_gsl_sf_mathieu_a, 2);
+ rb_define_module_function(module, "mathieu_a_e", rb_gsl_sf_mathieu_a_e, 2);
+ rb_define_module_function(module, "mathieu_a_array", rb_gsl_sf_mathieu_a_array, -1);
+ rb_define_module_function(module, "mathieu_b", rb_gsl_sf_mathieu_b, 2);
+ rb_define_module_function(module, "mathieu_b_e", rb_gsl_sf_mathieu_b_e, 2);
+ rb_define_module_function(module, "mathieu_b_array", rb_gsl_sf_mathieu_b_array, -1);
+ rb_define_module_function(module, "mathieu_ce", rb_gsl_sf_mathieu_ce, 3);
+ rb_define_module_function(module, "mathieu_ce_e", rb_gsl_sf_mathieu_ce_e, 3);
+ rb_define_module_function(module, "mathieu_ce_array", rb_gsl_sf_mathieu_ce_array, -1);
+ rb_define_module_function(module, "mathieu_se", rb_gsl_sf_mathieu_se, 3);
+ rb_define_module_function(module, "mathieu_se_e", rb_gsl_sf_mathieu_se_e, 3);
+ rb_define_module_function(module, "mathieu_se_array", rb_gsl_sf_mathieu_se_array, -1);
+ rb_define_module_function(module, "mathieu_Mc", rb_gsl_sf_mathieu_Mc, 4);
+ rb_define_module_function(module, "mathieu_Mc_e", rb_gsl_sf_mathieu_Mc_e, 4);
+ rb_define_module_function(module, "mathieu_Mc_array", rb_gsl_sf_mathieu_Mc_array, -1);
+ rb_define_module_function(module, "mathieu_Ms", rb_gsl_sf_mathieu_Ms, 4);
+ rb_define_module_function(module, "mathieu_Ms_e", rb_gsl_sf_mathieu_Ms_e, 4);
+ rb_define_module_function(module, "mathieu_Ms_array", rb_gsl_sf_mathieu_Ms_array, -1);
+}
diff --git a/ext/gsl/sf_power.c b/ext/gsl_native/sf_power.c
similarity index 100%
rename from ext/gsl/sf_power.c
rename to ext/gsl_native/sf_power.c
diff --git a/ext/gsl/sf_psi.c b/ext/gsl_native/sf_psi.c
similarity index 90%
rename from ext/gsl/sf_psi.c
rename to ext/gsl_native/sf_psi.c
index 63ef95e..f9391ad 100644
--- a/ext/gsl/sf_psi.c
+++ b/ext/gsl_native/sf_psi.c
@@ -31,19 +31,15 @@ static VALUE rb_gsl_sf_psi_e(VALUE obj, VALUE x)
return rb_gsl_sf_eval_e(gsl_sf_psi_e, x);
}
-#ifdef GSL_1_6_LATER
static VALUE rb_gsl_sf_psi_1(VALUE obj, VALUE x)
{
return rb_gsl_sf_eval1(gsl_sf_psi_1, x);
}
-#endif
-#ifdef GSL_1_4_9_LATER
static VALUE rb_gsl_sf_psi_1_e(VALUE obj, VALUE x)
{
return rb_gsl_sf_eval_e(gsl_sf_psi_1_e, x);
}
-#endif
static VALUE rb_gsl_sf_psi_1piy(VALUE obj, VALUE x)
{
@@ -88,11 +84,6 @@ void Init_gsl_sf_psi(VALUE module)
rb_define_module_function(module, "psi", rb_gsl_sf_psi, 1);
rb_define_module_function(module, "psi_e", rb_gsl_sf_psi_e, 1);
-
-#ifdef GSL_1_6_LATER
- rb_define_module_function(module, "psi_1", rb_gsl_sf_psi_1, 1);
-#endif
-#ifdef GSL_1_4_9_LATER
- rb_define_module_function(module, "psi_1_e", rb_gsl_sf_psi_1_e, 1);
-#endif
+ rb_define_module_function(module, "psi_1", rb_gsl_sf_psi_1, 1);
+ rb_define_module_function(module, "psi_1_e", rb_gsl_sf_psi_1_e, 1);
}
diff --git a/ext/gsl/sf_synchrotron.c b/ext/gsl_native/sf_synchrotron.c
similarity index 100%
rename from ext/gsl/sf_synchrotron.c
rename to ext/gsl_native/sf_synchrotron.c
diff --git a/ext/gsl/sf_transport.c b/ext/gsl_native/sf_transport.c
similarity index 100%
rename from ext/gsl/sf_transport.c
rename to ext/gsl_native/sf_transport.c
diff --git a/ext/gsl/sf_trigonometric.c b/ext/gsl_native/sf_trigonometric.c
similarity index 98%
rename from ext/gsl/sf_trigonometric.c
rename to ext/gsl_native/sf_trigonometric.c
index dbce7b3..7cc16e1 100644
--- a/ext/gsl/sf_trigonometric.c
+++ b/ext/gsl_native/sf_trigonometric.c
@@ -13,7 +13,7 @@
static VALUE rb_gsl_sf_sin(VALUE obj, VALUE x)
{
- if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
+ if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
return rb_gsl_math_complex_eval(gsl_complex_sin, x);
return rb_gsl_sf_eval1(gsl_sf_sin, x);
}
@@ -25,7 +25,7 @@ static VALUE rb_gsl_sf_sin_e(VALUE obj, VALUE x)
static VALUE rb_gsl_sf_cos(VALUE obj, VALUE x)
{
- if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
+ if (COMPLEX_P(x) || VECTOR_COMPLEX_P(x) || MATRIX_COMPLEX_P(x))
return rb_gsl_math_complex_eval(gsl_complex_cos, x);
return rb_gsl_sf_eval1(gsl_sf_cos, x);
}
@@ -57,7 +57,7 @@ static VALUE rb_gsl_sf_sinc_e(VALUE obj, VALUE x)
}
static VALUE rb_gsl_sf_complex_XXX_e(int argc, VALUE *argv, VALUE obj,
- int (*f)(double, double, gsl_sf_result*, gsl_sf_result*))
+ int (*f)(double, double, gsl_sf_result*, gsl_sf_result*))
{
gsl_sf_result *r1, *r2;
gsl_complex *z;
diff --git a/ext/gsl/sf_zeta.c b/ext/gsl_native/sf_zeta.c
similarity index 98%
rename from ext/gsl/sf_zeta.c
rename to ext/gsl_native/sf_zeta.c
index 4f6ce24..6d8f22d 100644
--- a/ext/gsl/sf_zeta.c
+++ b/ext/gsl_native/sf_zeta.c
@@ -68,7 +68,6 @@ static VALUE rb_gsl_sf_eta_e(VALUE obj, VALUE x)
return rb_gsl_sf_eval_e(gsl_sf_eta_e, x);
}
-#ifdef GSL_1_4_9_LATER
static VALUE rb_gsl_sf_zetam1_int(VALUE obj, VALUE n)
{
VALUE nn;
@@ -94,7 +93,6 @@ static VALUE rb_gsl_sf_zetam1_e(VALUE obj, VALUE x)
{
return rb_gsl_sf_eval_e(gsl_sf_zetam1_e, x);
}
-#endif
void Init_gsl_sf_zeta(VALUE module)
{
@@ -110,10 +108,8 @@ void Init_gsl_sf_zeta(VALUE module)
rb_define_module_function(module, "eta", rb_gsl_sf_eta, 1);
rb_define_module_function(module, "eta_e", rb_gsl_sf_eta_e, 1);
-#ifdef GSL_1_4_9_LATER
rb_define_module_function(module, "zetam1_int", rb_gsl_sf_zetam1_int, 1);
rb_define_module_function(module, "zetam1_int_e", rb_gsl_sf_zetam1_int_e, 1);
rb_define_module_function(module, "zetam1", rb_gsl_sf_zetam1, 1);
rb_define_module_function(module, "zetam1_e", rb_gsl_sf_zetam1_e, 1);
-#endif
}
diff --git a/ext/gsl/signal.c b/ext/gsl_native/signal.c
similarity index 77%
rename from ext/gsl/signal.c
rename to ext/gsl_native/signal.c
index 6888d81..2e27f89 100644
--- a/ext/gsl/signal.c
+++ b/ext/gsl_native/signal.c
@@ -16,43 +16,43 @@ enum FFT_CONV_CORR {
RB_GSL_FFT_CORRELATE = 1,
RB_GSL_FFT_REAL = 2,
RB_GSL_FFT_HALFCOMPLEX = 3,
- RB_GSL_FFT_DECONVOLVE = 4,
+ RB_GSL_FFT_DECONVOLVE = 4,
};
#ifndef WAVETABLE_P
-#define WAVETABLE_P(x) (rb_obj_is_kind_of(x,cgsl_fft_halfcomplex_wavetable)?1:0)
+#define WAVETABLE_P(x) (rb_obj_is_kind_of(x,cgsl_fft_halfcomplex_wavetable) ? 1 : 0)
#endif
#ifndef CHECK_WAVETABLE
-#define CHECK_WAVETABLE(x) if(!rb_obj_is_kind_of(x,cgsl_fft_halfcomplex_wavetable))\
+#define CHECK_WAVETABLE(x) if(!rb_obj_is_kind_of(x,cgsl_fft_halfcomplex_wavetable)) \
rb_raise(rb_eTypeError, "wrong argument type (FFT::HalfComplex::Wavetable expected)");
#endif
#ifndef WORKSPACE_P
-#define WORKSPACE_P(x) (rb_obj_is_kind_of(x,cgsl_fft_real_workspace)?1:0)
+#define WORKSPACE_P(x) (rb_obj_is_kind_of(x,cgsl_fft_real_workspace) ? 1 : 0)
#endif
#ifndef CHECK_WORKSPACE
-#define CHECK_WORKSPACE(x) if(!rb_obj_is_kind_of(x,cgsl_fft_real_workspace))\
+#define CHECK_WORKSPACE(x) if(!rb_obj_is_kind_of(x,cgsl_fft_real_workspace)) \
rb_raise(rb_eTypeError, "wrong argument type (FFT::Real::Workspace expected)");
#endif
static void complex_mul(double re1, double im1, double re2, double im2,
- double *re, double *im)
+ double *re, double *im)
{
*re = re1*re2 - im1*im2;
*im = re1*im2 + im1*re2;
}
static void complex_conj_mul(double re1, double im1, double re2, double im2,
- double *re, double *im)
+ double *re, double *im)
{
*re = re1*re2 + im1*im2;
*im = -re1*im2 + im1*re2;
}
static void complex_div(double re1, double im1, double re2, double im2,
- double *re, double *im)
+ double *re, double *im)
{
double factor = re2*re2 + im2*im2;
complex_conj_mul(re1, im1, re2, im2, re, im);
@@ -61,55 +61,50 @@ static void complex_div(double re1, double im1, double re2, double im2,
}
/* data1, data2: FFTed data */
-static void rbgsl_calc_conv_corr_c(const double *data1, const double *data2,
- double *data3, size_t size,
- gsl_fft_halfcomplex_wavetable *table,
- gsl_fft_real_workspace *space, enum FFT_CONV_CORR calcflag)
+static void rbgsl_calc_conv_corr_c(const double *data1, const double *data2,
+ double *data3, size_t size,
+ gsl_fft_halfcomplex_wavetable *table,
+ gsl_fft_real_workspace *space, enum FFT_CONV_CORR calcflag)
{
size_t i;
double re1, re2, im1, im2;
void (*complex_cal)(double, double, double, double, double*, double*);
-
+
switch (calcflag) {
case RB_GSL_FFT_CONVOLVE:
complex_cal = complex_mul;
data3[0] = data1[0]*data2[0];
- data3[size-1] = data1[size-1]*data2[size-1];
+ data3[size-1] = data1[size-1]*data2[size-1];
break;
- case RB_GSL_FFT_CORRELATE:
- data3[0] = data1[0]*data2[0];
- data3[size-1] = data1[size-1]*data2[size-1];
+ case RB_GSL_FFT_CORRELATE:
+ data3[0] = data1[0]*data2[0];
+ data3[size-1] = data1[size-1]*data2[size-1];
complex_cal = complex_conj_mul;
break;
case RB_GSL_FFT_DECONVOLVE:
complex_cal = complex_div;
data3[0] = data1[0]/data2[0];
- data3[size-1] = data1[size-1]/data2[size-1];
+ data3[size-1] = data1[size-1]/data2[size-1];
break;
default:
rb_raise(rb_eArgError, "Wrong flag.");
break;
}
-
- for (i = 1; i < size-1; i+=2) {
+
+ for (i = 1; i < size-1; i += 2) {
re1 = data1[i]; im1 = data1[i+1];
re2 = data2[i]; im2 = data2[i+1];
(*complex_cal)(re1, im1, re2, im2, &data3[i], &data3[i+1]);
}
-
}
static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
- enum FFT_CONV_CORR flag1,
- enum FFT_CONV_CORR flag2)
+ enum FFT_CONV_CORR flag1,
+ enum FFT_CONV_CORR flag2)
{
double *data1, *data2, *data3 = NULL;
size_t stride1, stride2, size1, size2;
-#ifdef HAVE_NARRAY_H
- int naflag1, naflag2, shape;
-#else
int naflag1, naflag2;
-#endif
gsl_vector *v = NULL;
gsl_fft_halfcomplex_wavetable *table = NULL;
gsl_fft_real_wavetable *rtable = NULL;
@@ -139,10 +134,10 @@ static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
table = gsl_fft_halfcomplex_wavetable_alloc(size1);
flagt = 1;
} else {
- rb_raise(rb_eTypeError,
- "wrong argument type %s "
- "(FFT::HalfComplex::Wavetable or FFT::Real::Workspace expected)",
- rb_class2name(CLASS_OF(argv[2])));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s "
+ "(FFT::HalfComplex::Wavetable or FFT::Real::Workspace expected)",
+ rb_class2name(CLASS_OF(argv[2])));
}
break;
case 1:
@@ -164,7 +159,7 @@ static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
case RB_GSL_FFT_REAL:
ary = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
break;
- default:
+ default:
ary = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
break;
}
@@ -172,9 +167,11 @@ static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
break;
case 1:
#ifdef HAVE_NARRAY_H
- shape = (int) size1;
- ary = na_make_object(NA_DFLOAT, 1, &shape, cNArray);
- data3 = NA_PTR_TYPE(ary, double*);
+ {
+ int shape = (int) size1;
+ ary = na_make_object(NA_DFLOAT, 1, &shape, cNArray);
+ data3 = NA_PTR_TYPE(ary, double*);
+ }
#endif
break;
default:
@@ -190,10 +187,10 @@ static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
data2 = vtmp2->data;
rtable = gsl_fft_real_wavetable_alloc(size1);
if (size1 == space->n) {
- gsl_fft_real_transform(data1, stride1, size1, rtable, space);
+ gsl_fft_real_transform(data1, stride1, size1, rtable, space);
} else {
space2 = gsl_fft_real_workspace_alloc(size1);
- gsl_fft_real_transform(data1, stride1, size1, rtable, space2);
+ gsl_fft_real_transform(data1, stride1, size1, rtable, space2);
/* no freeing space2 here */
}
if (size1 != size2) {
@@ -201,14 +198,14 @@ static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
rtable = gsl_fft_real_wavetable_alloc(size2);
}
if (size2 == space->n) {
- gsl_fft_real_transform(data2, stride2, size2, rtable, space);
+ gsl_fft_real_transform(data2, stride2, size2, rtable, space);
} else if (size2 == size1) {
- gsl_fft_real_transform(data2, stride2, size2, rtable, space2);
+ gsl_fft_real_transform(data2, stride2, size2, rtable, space2);
gsl_fft_real_workspace_free(space2);
} else {
if (space2) gsl_fft_real_workspace_free(space2);
space2 = gsl_fft_real_workspace_alloc(size2);
- gsl_fft_real_transform(data2, stride2, size2, rtable, space2);
+ gsl_fft_real_transform(data2, stride2, size2, rtable, space2);
gsl_fft_real_workspace_free(space2);
}
gsl_fft_real_wavetable_free(rtable);
@@ -222,14 +219,13 @@ static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
/* not occur */
break;
}
-
+
rbgsl_calc_conv_corr_c(data1, data2, data3, size1, table, space, flag2);
if (flag1 == RB_GSL_FFT_REAL) {
gsl_fft_halfcomplex_inverse(data3, 1, size1, table, space);
// for (i = 0; i < size1; i++) data3[i] /= size1;
}
-
if (flagt == 1) gsl_fft_halfcomplex_wavetable_free(table);
if (flagw == 1) gsl_fft_real_workspace_free(space);
if (vtmp1) gsl_vector_free(vtmp1);
@@ -240,61 +236,61 @@ static VALUE rb_gsl_fft_conv_corr(int argc, VALUE *argv, VALUE obj,
/* GSL::Vector#convolve */
static VALUE rb_gsl_fft_real_convolve(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_fft_conv_corr(argc, argv, obj,
- RB_GSL_FFT_REAL,
- RB_GSL_FFT_CONVOLVE);
+ return rb_gsl_fft_conv_corr(argc, argv, obj,
+ RB_GSL_FFT_REAL,
+ RB_GSL_FFT_CONVOLVE);
}
/* GSL::Vector#deconvolve */
static VALUE rb_gsl_fft_real_deconvolve(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_fft_conv_corr(argc, argv, obj,
- RB_GSL_FFT_REAL,
- RB_GSL_FFT_DECONVOLVE);
+ return rb_gsl_fft_conv_corr(argc, argv, obj,
+ RB_GSL_FFT_REAL,
+ RB_GSL_FFT_DECONVOLVE);
}
/* GSL::Vector#correlate */
static VALUE rb_gsl_fft_real_correlate(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_fft_conv_corr(argc, argv, obj,
- RB_GSL_FFT_REAL,
- RB_GSL_FFT_CORRELATE);
+ return rb_gsl_fft_conv_corr(argc, argv, obj,
+ RB_GSL_FFT_REAL,
+ RB_GSL_FFT_CORRELATE);
}
/* GSL::Vector#halfcomplex_convolve */
static VALUE rb_gsl_fft_halfcomplex_convolve(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_fft_conv_corr(argc, argv, obj,
- RB_GSL_FFT_HALFCOMPLEX,
- RB_GSL_FFT_CONVOLVE);
+ return rb_gsl_fft_conv_corr(argc, argv, obj,
+ RB_GSL_FFT_HALFCOMPLEX,
+ RB_GSL_FFT_CONVOLVE);
}
/* GSL::Vector#halfcomplex_deconvolve */
static VALUE rb_gsl_fft_halfcomplex_deconvolve(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_fft_conv_corr(argc, argv, obj,
- RB_GSL_FFT_HALFCOMPLEX,
- RB_GSL_FFT_DECONVOLVE);
+ return rb_gsl_fft_conv_corr(argc, argv, obj,
+ RB_GSL_FFT_HALFCOMPLEX,
+ RB_GSL_FFT_DECONVOLVE);
}
/* GSL::Vector#halfcomplex_correlate */
static VALUE rb_gsl_fft_halfcomplex_correlate(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_fft_conv_corr(argc, argv, obj,
- RB_GSL_FFT_HALFCOMPLEX,
- RB_GSL_FFT_CORRELATE);
+ return rb_gsl_fft_conv_corr(argc, argv, obj,
+ RB_GSL_FFT_HALFCOMPLEX,
+ RB_GSL_FFT_CORRELATE);
}
void Init_gsl_signal(VALUE module)
{
rb_define_method(cgsl_vector, "real_convolve", rb_gsl_fft_real_convolve, -1);
- rb_define_method(cgsl_vector, "real_deconvolve", rb_gsl_fft_real_deconvolve, -1);
- rb_define_method(cgsl_vector, "real_correlate", rb_gsl_fft_real_correlate, -1);
+ rb_define_method(cgsl_vector, "real_deconvolve", rb_gsl_fft_real_deconvolve, -1);
+ rb_define_method(cgsl_vector, "real_correlate", rb_gsl_fft_real_correlate, -1);
rb_define_alias(cgsl_vector, "convolve", "real_convolve");
rb_define_alias(cgsl_vector, "deconvolve", "real_deconvolve");
rb_define_alias(cgsl_vector, "correlate", "real_correlate");
rb_define_method(cgsl_vector, "halfcomplex_convolve", rb_gsl_fft_halfcomplex_convolve, -1);
- rb_define_method(cgsl_vector, "halfcomplex_deconvolve", rb_gsl_fft_halfcomplex_deconvolve, -1);
- rb_define_method(cgsl_vector, "halfcomplex_correlate", rb_gsl_fft_halfcomplex_correlate, -1);
+ rb_define_method(cgsl_vector, "halfcomplex_deconvolve", rb_gsl_fft_halfcomplex_deconvolve, -1);
+ rb_define_method(cgsl_vector, "halfcomplex_correlate", rb_gsl_fft_halfcomplex_correlate, -1);
rb_define_alias(cgsl_vector, "hc_convolve", "halfcomplex_convolve");
rb_define_alias(cgsl_vector, "hc_deconvolve", "halfcomplex_deconvolve");
diff --git a/ext/gsl/siman.c b/ext/gsl_native/siman.c
similarity index 93%
rename from ext/gsl/siman.c
rename to ext/gsl_native/siman.c
index 59135ad..5fcbc0b 100644
--- a/ext/gsl/siman.c
+++ b/ext/gsl_native/siman.c
@@ -331,7 +331,7 @@ static siman_metric* siman_metric_alloc()
se = ALLOC(siman_metric);
if (se == NULL) rb_raise(rb_eRuntimeError, "ALLOC failed");
se->siman_metric_t = &rb_gsl_siman_metric_t;
- return se;
+ return se;
}
static void siman_metric_mark(siman_metric *se)
@@ -419,22 +419,22 @@ static VALUE rb_gsl_siman_params_set(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 7:
params->t_min = NUM2DBL(argv[6]);
- /* no break */
+ /* no break */
case 6:
params->mu_t = NUM2DBL(argv[5]);
- /* no break */
+ /* no break */
case 5:
params->t_initial = NUM2DBL(argv[4]);
- /* no break */
+ /* no break */
case 4:
params->k = NUM2DBL(argv[3]);
- /* no break */
+ /* no break */
case 3:
params->step_size = NUM2DBL(argv[2]);
- /* no break */
+ /* no break */
case 2:
params->iters_fixed_T = NUM2INT(argv[1]);
- /* no break */
+ /* no break */
case 1:
params->n_tries = NUM2INT(argv[0]);
}
@@ -551,16 +551,16 @@ static VALUE rb_gsl_siman_params_params(VALUE obj)
gsl_siman_params_t *params = NULL;
Data_Get_Struct(obj, gsl_siman_params_t, params);
return rb_ary_new3(7, INT2FIX(params->n_tries), INT2FIX(params->iters_fixed_T),
- rb_float_new(params->step_size), rb_float_new(params->k),
- rb_float_new(params->t_initial), rb_float_new(params->mu_t),
- rb_float_new(params->t_min));
+ rb_float_new(params->step_size), rb_float_new(params->k),
+ rb_float_new(params->t_initial), rb_float_new(params->mu_t),
+ rb_float_new(params->t_min));
}
/***** solver *****/
static VALUE rb_gsl_siman_solver_solve(VALUE obj, VALUE rng,
- VALUE vx0p, VALUE vefunc,
- VALUE vstep, VALUE vmetric, VALUE vprint,
- VALUE vparams)
+ VALUE vx0p, VALUE vefunc,
+ VALUE vstep, VALUE vmetric, VALUE vprint,
+ VALUE vparams)
{
gsl_rng *r = NULL;
siman_solver *ss = NULL;
@@ -587,17 +587,16 @@ static VALUE rb_gsl_siman_solver_solve(VALUE obj, VALUE rng,
}
if (!rb_obj_is_kind_of(rng, cgsl_rng))
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Rng expected)",
- rb_class2name(CLASS_OF(rng)));
+ rb_class2name(CLASS_OF(rng)));
if (!rb_obj_is_kind_of(vefunc, cgsl_siman_Efunc))
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Siman::Efunc expected)",
- rb_class2name(CLASS_OF(vefunc)));
+ rb_class2name(CLASS_OF(vefunc)));
if (!rb_obj_is_kind_of(vstep, cgsl_siman_step))
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Siman::Step expected)",
- rb_class2name(CLASS_OF(vstep)));
+ rb_class2name(CLASS_OF(vstep)));
if (!rb_obj_is_kind_of(vmetric, cgsl_siman_metric))
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Siman::Metric expected)",
- rb_class2name(CLASS_OF(vmetric)));
-
+ rb_class2name(CLASS_OF(vmetric)));
Data_Get_Struct(rng, gsl_rng, r);
Data_Get_Struct(vefunc, siman_Efunc, efunc);
Data_Get_Struct(vstep, siman_step, step);
@@ -607,14 +606,13 @@ static VALUE rb_gsl_siman_solver_solve(VALUE obj, VALUE rng,
} else {
if (!rb_obj_is_kind_of(vprint, cgsl_siman_print))
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Siman::Print expected)",
- rb_class2name(CLASS_OF(vprint)));
+ rb_class2name(CLASS_OF(vprint)));
Data_Get_Struct(vprint, siman_print, print);
ss->proc_print = print->proc;
}
if (!rb_obj_is_kind_of(vparams, cgsl_siman_params))
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Siman::Params expected)",
- rb_class2name(CLASS_OF(vparams)));
-
+ rb_class2name(CLASS_OF(vparams)));
Data_Get_Struct(vparams, gsl_siman_params_t, params);
ss->proc_efunc = efunc->proc;
@@ -624,30 +622,28 @@ static VALUE rb_gsl_siman_solver_solve(VALUE obj, VALUE rng,
gsl_vector_memcpy(ss->vx, vtmp);
if (NIL_P(vprint)) {
- gsl_siman_solve(r, ss, rb_gsl_siman_Efunc_t,
- rb_gsl_siman_step_t,
- rb_gsl_siman_metric_t,
- NULL,
- rb_gsl_siman_copy_t,
- rb_gsl_siman_copy_construct_t,
- rb_gsl_siman_destroy_t, 0,
- *params);
+ gsl_siman_solve(r, ss, rb_gsl_siman_Efunc_t,
+ rb_gsl_siman_step_t,
+ rb_gsl_siman_metric_t,
+ NULL,
+ rb_gsl_siman_copy_t,
+ rb_gsl_siman_copy_construct_t,
+ rb_gsl_siman_destroy_t, 0,
+ *params);
} else {
- gsl_siman_solve(r, ss, rb_gsl_siman_Efunc_t,
- rb_gsl_siman_step_t,
- rb_gsl_siman_metric_t,
- rb_gsl_siman_print_t,
- rb_gsl_siman_copy_t,
- rb_gsl_siman_copy_construct_t,
- rb_gsl_siman_destroy_t, 0,
- *params);
+ gsl_siman_solve(r, ss, rb_gsl_siman_Efunc_t,
+ rb_gsl_siman_step_t,
+ rb_gsl_siman_metric_t,
+ rb_gsl_siman_print_t,
+ rb_gsl_siman_copy_t,
+ rb_gsl_siman_copy_construct_t,
+ rb_gsl_siman_destroy_t, 0,
+ *params);
}
-
gsl_vector_memcpy(vtmp, ss->vx);
if (flag == 1) gsl_siman_solver_free(ss);
-
return obj;
}
@@ -681,7 +677,7 @@ void Init_gsl_siman(VALUE module)
rb_define_singleton_method(cgsl_siman_metric, "alloc", rb_gsl_siman_metric_new, -1);
rb_define_method(cgsl_siman_metric, "set", rb_gsl_siman_metric_set, -1);
rb_define_alias(cgsl_siman_metric, "set_proc", "set");
-
+
/***** params *****/
rb_define_singleton_method(cgsl_siman_params, "alloc", rb_gsl_siman_params_new, -1);
rb_define_method(cgsl_siman_params, "set", rb_gsl_siman_params_set, -1);
diff --git a/ext/gsl/sort.c b/ext/gsl_native/sort.c
similarity index 97%
rename from ext/gsl/sort.c
rename to ext/gsl_native/sort.c
index 13ef470..a1acd78 100644
--- a/ext/gsl/sort.c
+++ b/ext/gsl_native/sort.c
@@ -31,9 +31,9 @@ int rb_gsl_comparison_complex(const void *aa, const void *bb)
gsl_complex *a = NULL, *b = NULL;
a = (gsl_complex *) aa;
b = (gsl_complex *) bb;
- return FIX2INT(rb_funcall(rb_block_proc(), RBGSL_ID_call, 2,
- Data_Wrap_Struct(cgsl_complex, 0, NULL, a),
- Data_Wrap_Struct(cgsl_complex, 0, NULL, b)));
+ return FIX2INT(rb_funcall(rb_block_proc(), RBGSL_ID_call, 2,
+ Data_Wrap_Struct(cgsl_complex, 0, NULL, a),
+ Data_Wrap_Struct(cgsl_complex, 0, NULL, b)));
}
static VALUE rb_gsl_heapsort_vector(VALUE obj)
@@ -141,7 +141,6 @@ static VALUE rb_gsl_heapsort_index(VALUE obj, VALUE vv)
/*****/
#ifdef HAVE_NARRAY_H
-#include "narray.h"
static VALUE rb_gsl_sort_narray(VALUE obj)
{
struct NARRAY *na;
diff --git a/ext/gsl/spline.c b/ext/gsl_native/spline.c
similarity index 90%
rename from ext/gsl/spline.c
rename to ext/gsl_native/spline.c
index de54e75..76222de 100644
--- a/ext/gsl/spline.c
+++ b/ext/gsl_native/spline.c
@@ -33,10 +33,10 @@ static VALUE rb_gsl_spline_new(int argc, VALUE *argv, VALUE klass)
break;
default:
if (ptrx == NULL) {
- ptrx = get_vector_ptr(argv[i], &stride, &sizex);
+ ptrx = get_vector_ptr(argv[i], &stride, &sizex);
} else {
- ptry = get_vector_ptr(argv[i], &stride, &sizey);
- size = GSL_MIN_INT(sizex, sizey);
+ ptry = get_vector_ptr(argv[i], &stride, &sizey);
+ size = GSL_MIN_INT(sizex, sizey);
}
break;
}
@@ -65,9 +65,6 @@ static VALUE rb_gsl_spline_init(VALUE obj, VALUE xxa, VALUE yya)
size_t i, size;
int flagx = 0, flagy = 0;
double *ptr1 = NULL, *ptr2 = NULL;
-#ifdef HAVE_NARRAY_H
- struct NARRAY *nax = NULL, *nay = NULL;
-#endif
Data_Get_Struct(obj, rb_gsl_spline, sp);
p = sp->s;
if (TYPE(xxa) == T_ARRAY) {
@@ -83,9 +80,10 @@ static VALUE rb_gsl_spline_init(VALUE obj, VALUE xxa, VALUE yya)
ptr1 = xa->data;
#ifdef HAVE_NARRAY_H
} else if (NA_IsNArray(xxa)) {
- GetNArray(xxa, nax);
- size = nax->total;
- ptr1 = (double *) nax->ptr;
+ struct NARRAY *nax = NULL;
+ GetNArray(xxa, nax);
+ size = nax->total;
+ ptr1 = (double *) nax->ptr;
#endif
} else {
rb_raise(rb_eTypeError, "not a vector");
@@ -97,8 +95,9 @@ static VALUE rb_gsl_spline_init(VALUE obj, VALUE xxa, VALUE yya)
flagy = 1;
#ifdef HAVE_NARRAY_H
} else if (NA_IsNArray(yya)) {
- GetNArray(yya, nay);
- ptr2 = (double *) nay->ptr;
+ struct NARRAY *nay = NULL;
+ GetNArray(yya, nay);
+ ptr2 = (double *) nay->ptr;
#endif
} else if (VECTOR_P(yya)) {
Data_Get_Struct(yya, gsl_vector, ya);
@@ -120,8 +119,8 @@ static VALUE rb_gsl_spline_accel(VALUE obj)
}
static VALUE rb_gsl_spline_evaluate(VALUE obj, VALUE xx,
- double (*eval)(const gsl_spline *, double,
- gsl_interp_accel *))
+ double (*eval)(const gsl_spline *, double,
+ gsl_interp_accel *))
{
rb_gsl_spline *rgs = NULL;
gsl_vector *v = NULL, *vnew = NULL;
@@ -129,10 +128,6 @@ static VALUE rb_gsl_spline_evaluate(VALUE obj, VALUE xx,
VALUE ary, x;
double val;
size_t n, i, j;
-#ifdef HAVE_NARRAY_H
- double *ptr1 = NULL, *ptr2 = NULL;
- struct NARRAY *na = NULL;
-#endif
Data_Get_Struct(obj, rb_gsl_spline, rgs);
if (CLASS_OF(xx) == rb_cRange) xx = rb_gsl_range2ary(xx);
switch (TYPE(xx)) {
@@ -155,13 +150,15 @@ static VALUE rb_gsl_spline_evaluate(VALUE obj, VALUE xx,
default:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(xx)) {
+ double *ptr1 = NULL, *ptr2 = NULL;
+ struct NARRAY *na = NULL;
GetNArray(xx, na);
ptr1 = (double *) na->ptr;
n = na->total;
ary = na_make_object(NA_DFLOAT, na->rank, na->shape, CLASS_OF(xx));
ptr2 = NA_PTR_TYPE(ary, double*);
- for (i = 0; i < n; i++)
- ptr2[i] = (*eval)(rgs->s, ptr1[i], rgs->a);
+ for (i = 0; i < n; i++)
+ ptr2[i] = (*eval)(rgs->s, ptr1[i], rgs->a);
return ary;
}
#endif
@@ -169,18 +166,18 @@ static VALUE rb_gsl_spline_evaluate(VALUE obj, VALUE xx,
Data_Get_Struct(xx, gsl_vector, v);
vnew = gsl_vector_alloc(v->size);
for (i = 0; i < v->size; i++) {
- val = (*eval)(rgs->s, gsl_vector_get(v, i), rgs->a);
- gsl_vector_set(vnew, i, val);
+ val = (*eval)(rgs->s, gsl_vector_get(v, i), rgs->a);
+ gsl_vector_set(vnew, i, val);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
} else if (MATRIX_P(xx)) {
Data_Get_Struct(xx, gsl_matrix, m);
mnew = gsl_matrix_alloc(m->size1, m->size2);
for (i = 0; i < m->size1; i++) {
- for (j = 0; j < m->size2; j++) {
- val = (*eval)(rgs->s, gsl_matrix_get(m, i, j), rgs->a);
- gsl_matrix_set(mnew, i, j, val);
- }
+ for (j = 0; j < m->size2; j++) {
+ val = (*eval)(rgs->s, gsl_matrix_get(m, i, j), rgs->a);
+ gsl_matrix_set(mnew, i, j, val);
+ }
}
return Data_Wrap_Struct(cgsl_matrix, 0, gsl_matrix_free, mnew);
} else {
@@ -270,7 +267,7 @@ static VALUE rb_gsl_spline_eval_deriv_e(VALUE obj, VALUE xx)
default:
return rb_float_new(val);
break;
- }
+ }
return Qnil;
}
@@ -289,7 +286,7 @@ static VALUE rb_gsl_spline_eval_deriv2_e(VALUE obj, VALUE xx)
default:
return rb_float_new(val);
break;
- }
+ }
return Qnil;
}
@@ -308,7 +305,7 @@ static VALUE rb_gsl_spline_eval_integ_e(VALUE obj, VALUE a, VALUE b)
default:
return rb_float_new(val);
break;
- }
+ }
return Qnil;
}
@@ -326,7 +323,6 @@ static VALUE rb_gsl_spline_info(VALUE obj)
return rb_str_new2(buf);
}
-#ifdef GSL_1_8_LATER
static VALUE rb_gsl_spline_name(VALUE obj)
{
rb_gsl_spline *p = NULL;
@@ -340,17 +336,6 @@ static VALUE rb_gsl_spline_min_size(VALUE obj)
return UINT2NUM(gsl_spline_min_size(sp->s));
}
-#else
-
-static VALUE rb_gsl_spline_name(VALUE obj)
-{
- rb_gsl_spline *sp = NULL;
- Data_Get_Struct(obj, rb_gsl_spline, sp);
- return rb_str_new2(gsl_interp_name(sp->s->interp));
-}
-
-#endif
-
void Init_gsl_spline(VALUE module)
{
VALUE cgsl_spline;
@@ -388,8 +373,5 @@ void Init_gsl_spline(VALUE module)
rb_define_method(cgsl_spline, "info", rb_gsl_spline_info, 0);
-#ifdef GSL_1_8_LATER
rb_define_method(cgsl_spline, "min_size", rb_gsl_spline_min_size, 0);
-#endif
-
}
diff --git a/ext/gsl/stats.c b/ext/gsl_native/stats.c
similarity index 83%
rename from ext/gsl/stats.c
rename to ext/gsl_native/stats.c
index abf9adc..35d5a58 100644
--- a/ext/gsl/stats.c
+++ b/ext/gsl_native/stats.c
@@ -11,12 +11,9 @@
#include "include/rb_gsl_array.h"
#include "include/rb_gsl_statistics.h"
-#ifdef HAVE_NARRAY_H
-#include "narray.h"
-#endif
-static double* get_vector_stats2(int argc, VALUE *argv, VALUE obj,
- size_t *stride, size_t *size)
+static double* get_vector_stats2(int argc, VALUE *argv, VALUE obj,
+ size_t *stride, size_t *size)
{
double *v = NULL;
switch (TYPE(obj)) {
@@ -32,7 +29,7 @@ static double* get_vector_stats2(int argc, VALUE *argv, VALUE obj,
}
static VALUE rb_gsl_stats_XXX(int argc, VALUE *argv, VALUE obj,
- double (*f)(const double*, size_t, size_t))
+ double (*f)(const double*, size_t, size_t))
{
size_t stride, size;
double *data = NULL;
@@ -40,8 +37,8 @@ static VALUE rb_gsl_stats_XXX(int argc, VALUE *argv, VALUE obj,
return rb_float_new((*f)(data, stride, size));
}
-static VALUE rb_gsl_stats_XXX1(int argc, VALUE *argv, VALUE obj,
- double (*f)(const double*, size_t, size_t, double))
+static VALUE rb_gsl_stats_XXX1(int argc, VALUE *argv, VALUE obj,
+ double (*f)(const double*, size_t, size_t, double))
{
size_t stride, size;
double *data = NULL;
@@ -50,9 +47,9 @@ static VALUE rb_gsl_stats_XXX1(int argc, VALUE *argv, VALUE obj,
return rb_float_new((*f)(data, stride, size, NUM2DBL(argv[argc-1])));
}
-static VALUE rb_gsl_stats_XXX2(int argc, VALUE *argv, VALUE obj,
- double (*f)(const double*, size_t, size_t),
- double (*fm)(const double*, size_t, size_t, double, double))
+static VALUE rb_gsl_stats_XXX2(int argc, VALUE *argv, VALUE obj,
+ double (*f)(const double*, size_t, size_t),
+ double (*fm)(const double*, size_t, size_t, double, double))
{
double x, a, b, *data = NULL;
size_t stride, size;
@@ -69,8 +66,8 @@ static VALUE rb_gsl_stats_XXX2(int argc, VALUE *argv, VALUE obj,
x = (*f)(data, stride, size);
break;
default:
- rb_raise(rb_eArgError,
- "wrong number of arguments (%d for 1 or 2)", argc);
+ rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for 1 or 2)", argc);
break;
}
break;
@@ -86,8 +83,8 @@ static VALUE rb_gsl_stats_XXX2(int argc, VALUE *argv, VALUE obj,
x = (*fm)(data, stride, size, a, b);
break;
default:
- rb_raise(rb_eArgError,
- "wrong number of arguments (%d for 0 or 1)", argc);
+ rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for 0 or 1)", argc);
break;
}
break;
@@ -101,8 +98,8 @@ static VALUE rb_gsl_stats_mean(int argc, VALUE *argv, VALUE obj)
}
static VALUE rb_gsl_stats_XXX_m(int argc, VALUE *argv, VALUE obj,
- double (*f)(const double*, size_t, size_t),
- double (*fm)(const double*, size_t, size_t, double))
+ double (*f)(const double*, size_t, size_t),
+ double (*fm)(const double*, size_t, size_t, double))
{
double x, mean, *data = NULL;
size_t stride, size;
@@ -119,8 +116,8 @@ static VALUE rb_gsl_stats_XXX_m(int argc, VALUE *argv, VALUE obj,
x = (*f)(data, stride, size);
break;
default:
- rb_raise(rb_eArgError,
- "wrong number of arguments (%d for 1 or 2)", argc);
+ rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for 1 or 2)", argc);
break;
}
break;
@@ -136,8 +133,8 @@ static VALUE rb_gsl_stats_XXX_m(int argc, VALUE *argv, VALUE obj,
x = (*fm)(data, stride, size, mean);
break;
default:
- rb_raise(rb_eArgError,
- "wrong number of arguments (%d for 0 or 1)", argc);
+ rb_raise(rb_eArgError,
+ "wrong number of arguments (%d for 0 or 1)", argc);
break;
}
break;
@@ -148,70 +145,68 @@ static VALUE rb_gsl_stats_XXX_m(int argc, VALUE *argv, VALUE obj,
static VALUE rb_gsl_stats_variance_m(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_stats_XXX_m(argc, argv, obj,
- gsl_stats_variance, gsl_stats_variance_m);
+ gsl_stats_variance, gsl_stats_variance_m);
}
static VALUE rb_gsl_stats_sd_m(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_stats_XXX_m(argc, argv, obj,
- gsl_stats_sd, gsl_stats_sd_m);
+ gsl_stats_sd, gsl_stats_sd_m);
}
-#ifdef GSL_1_11_LATER
static VALUE rb_gsl_stats_tss_m(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_stats_XXX_m(argc, argv, obj,
- gsl_stats_tss, gsl_stats_tss_m);
+ gsl_stats_tss, gsl_stats_tss_m);
}
-#endif
-static VALUE rb_gsl_stats_variance_with_fixed_mean(int argc, VALUE *argv,
- VALUE obj)
+static VALUE rb_gsl_stats_variance_with_fixed_mean(int argc, VALUE *argv,
+ VALUE obj)
{
return rb_gsl_stats_XXX1(argc, argv, obj,
- gsl_stats_variance_with_fixed_mean);
+ gsl_stats_variance_with_fixed_mean);
}
-static VALUE rb_gsl_stats_sd_with_fixed_mean(int argc, VALUE *argv,
- VALUE obj)
+static VALUE rb_gsl_stats_sd_with_fixed_mean(int argc, VALUE *argv,
+ VALUE obj)
{
return rb_gsl_stats_XXX1(argc, argv, obj,
- gsl_stats_sd_with_fixed_mean);
+ gsl_stats_sd_with_fixed_mean);
}
static VALUE rb_gsl_stats_absdev_m(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_stats_XXX_m(argc, argv, obj,
- gsl_stats_absdev, gsl_stats_absdev_m);
+ gsl_stats_absdev, gsl_stats_absdev_m);
}
-static VALUE rb_gsl_stats_skew(int argc, VALUE *argv,
- VALUE obj)
+static VALUE rb_gsl_stats_skew(int argc, VALUE *argv,
+ VALUE obj)
{
return rb_gsl_stats_XXX2(argc, argv, obj,
- gsl_stats_skew,
- gsl_stats_skew_m_sd);
+ gsl_stats_skew,
+ gsl_stats_skew_m_sd);
}
-static VALUE rb_gsl_stats_kurtosis(int argc, VALUE *argv,
- VALUE obj)
+static VALUE rb_gsl_stats_kurtosis(int argc, VALUE *argv,
+ VALUE obj)
{
return rb_gsl_stats_XXX2(argc, argv, obj,
- gsl_stats_kurtosis,
- gsl_stats_kurtosis_m_sd);
+ gsl_stats_kurtosis,
+ gsl_stats_kurtosis_m_sd);
}
static VALUE rb_gsl_stats_lag1_autocorrelation(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_stats_XXX_m(argc, argv, obj,
- gsl_stats_lag1_autocorrelation, gsl_stats_lag1_autocorrelation_m);
+ gsl_stats_lag1_autocorrelation, gsl_stats_lag1_autocorrelation_m);
}
/****************************/
-static void get_vector_stats3(int argc, VALUE *argv, VALUE obj,
- double **w, size_t *stridew, size_t *sizew,
- double **x, size_t *stridex, size_t *sizex)
+static void get_vector_stats3(int argc, VALUE *argv, VALUE obj,
+ double **w, size_t *stridew, size_t *sizew,
+ double **x, size_t *stridex, size_t *sizex)
{
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
@@ -228,8 +223,8 @@ static void get_vector_stats3(int argc, VALUE *argv, VALUE obj,
}
static VALUE rb_gsl_stats_wXXX(int argc, VALUE *argv, VALUE obj,
- double (*f)(const double*, size_t, const double*,
- size_t, size_t))
+ double (*f)(const double*, size_t, const double*,
+ size_t, size_t))
{
double *w, *x;
double mean;
@@ -240,8 +235,8 @@ static VALUE rb_gsl_stats_wXXX(int argc, VALUE *argv, VALUE obj,
}
static VALUE rb_gsl_stats_wXXX_m(int argc, VALUE *argv, VALUE obj,
- double (*f)(const double*, size_t, const double*,
- size_t, size_t, double))
+ double (*f)(const double*, size_t, const double*,
+ size_t, size_t, double))
{
double *w, *x;
double mean;
@@ -314,7 +309,7 @@ static VALUE rb_gsl_stats_wskew_m_sd(VALUE obj, VALUE ww, VALUE wm, VALUE wsd)
x = get_vector_ptr(obj, &stridex, &sizex);
w = get_vector_ptr(ww, &stridew, &sizew);
skew_m = gsl_stats_wskew_m_sd(w, stridew, x, stridex, sizex, NUM2DBL(wm),
- NUM2DBL(wsd));
+ NUM2DBL(wsd));
return rb_float_new(skew_m);
}
@@ -326,7 +321,7 @@ static VALUE rb_gsl_stats_wkurtosis_m_sd(VALUE obj, VALUE ww, VALUE wm, VALUE ws
x = get_vector_ptr(obj, &stridex, &sizex);
w = get_vector_ptr(ww, &stridew, &sizew);
kurtosis_m = gsl_stats_wkurtosis_m_sd(w, stridew, x, stridex, sizex, NUM2DBL(wm),
- NUM2DBL(wsd));
+ NUM2DBL(wsd));
return rb_float_new(kurtosis_m);
}
@@ -409,7 +404,7 @@ static VALUE rb_gsl_stats_median(int argc, VALUE *argv, VALUE obj)
static VALUE rb_gsl_stats_quantile_from_sorted_data(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_stats_XXX1(argc, argv, obj,
- gsl_stats_quantile_from_sorted_data);
+ gsl_stats_quantile_from_sorted_data);
/* size_t stride, size;
double quantile, *data = NULL;
data = get_vector_ptr(obj, &stride, &size);
@@ -437,21 +432,20 @@ static VALUE rb_gsl_stats_covariance2(VALUE obj, VALUE vv1, VALUE vv2)
data1 = get_vector_ptr(vv1, &stride1, &size);
data2 = get_vector_ptr(vv2, &stride2, &size);
return rb_float_new(gsl_stats_covariance(data1, stride1, data2,
- stride2, size));
+ stride2, size));
}
static VALUE rb_gsl_stats_covariance_m2(VALUE obj, VALUE vv1, VALUE vv2,
- VALUE m1, VALUE m2)
+ VALUE m1, VALUE m2)
{
double *data1, *data2;
size_t stride1, stride2, size;
data1 = get_vector_ptr(vv1, &stride1, &size);
data2 = get_vector_ptr(vv2, &stride2, &size);
return rb_float_new(gsl_stats_covariance_m(data1, stride1, data2,
- stride2, size, NUM2DBL(m1), NUM2DBL(m2)));
+ stride2, size, NUM2DBL(m1), NUM2DBL(m2)));
}
-#ifdef GSL_1_10_LATER
static VALUE rb_gsl_stats_correlation(VALUE obj, VALUE vv1, VALUE vv2)
{
double *data1, *data2;
@@ -459,7 +453,7 @@ static VALUE rb_gsl_stats_correlation(VALUE obj, VALUE vv1, VALUE vv2)
data1 = get_vector_ptr(vv1, &stride1, &size);
data2 = get_vector_ptr(vv2, &stride2, &size);
return rb_float_new(gsl_stats_correlation(data1, stride1, data2,
- stride2, size));
+ stride2, size));
}
static VALUE rb_gsl_stats_pvariance(VALUE obj, VALUE vv1, VALUE vv2)
{
@@ -468,7 +462,7 @@ static VALUE rb_gsl_stats_pvariance(VALUE obj, VALUE vv1, VALUE vv2)
data1 = get_vector_ptr(vv1, &stride1, &size1);
data2 = get_vector_ptr(vv2, &stride2, &size2);
return rb_float_new(gsl_stats_pvariance(data1, stride1, size1, data2,
- stride2, size2));
+ stride2, size2));
}
static VALUE rb_gsl_stats_ttest(VALUE obj, VALUE vv1, VALUE vv2)
{
@@ -477,9 +471,8 @@ static VALUE rb_gsl_stats_ttest(VALUE obj, VALUE vv1, VALUE vv2)
data1 = get_vector_ptr(vv1, &stride1, &size1);
data2 = get_vector_ptr(vv2, &stride2, &size2);
return rb_float_new(gsl_stats_ttest(data1, stride1, size1, data2,
- stride2, size2));
+ stride2, size2));
}
-#endif
static VALUE rb_gsl_stats_wmean2(VALUE obj, VALUE ww, VALUE dd)
{
@@ -535,8 +528,8 @@ static VALUE rb_gsl_stats_wsd_m2(VALUE obj, VALUE ww, VALUE dd, VALUE mm)
return rb_float_new(wsd);
}
-static VALUE rb_gsl_stats_wvariance_with_fixed_mean2(VALUE obj, VALUE ww, VALUE dd,
- VALUE mm)
+static VALUE rb_gsl_stats_wvariance_with_fixed_mean2(VALUE obj, VALUE ww, VALUE dd,
+ VALUE mm)
{
double wvariance, m;
double *dataw = NULL, *data = NULL;
@@ -544,14 +537,14 @@ static VALUE rb_gsl_stats_wvariance_with_fixed_mean2(VALUE obj, VALUE ww, VALUE
dataw = get_vector_ptr(ww, &stridew, &size);
data = get_vector_ptr(dd, &strided, &size);
m = NUM2DBL(mm);
- wvariance = gsl_stats_wvariance_with_fixed_mean(dataw, stridew,
- data, strided, size, m);
+ wvariance = gsl_stats_wvariance_with_fixed_mean(dataw, stridew,
+ data, strided, size, m);
return rb_float_new(wvariance);
}
-static VALUE rb_gsl_stats_wsd_with_fixed_mean2(VALUE obj, VALUE ww, VALUE dd,
- VALUE mm)
+static VALUE rb_gsl_stats_wsd_with_fixed_mean2(VALUE obj, VALUE ww, VALUE dd,
+ VALUE mm)
{
double wsd, m;
double *dataw = NULL, *data = NULL;
@@ -651,10 +644,8 @@ void Init_gsl_stats(VALUE module)
rb_define_singleton_method(mgsl_stats, "sd", rb_gsl_stats_sd_m, -1);
rb_define_singleton_method(mgsl_stats, "sd_m", rb_gsl_stats_sd_m, -1);
-#ifdef GSL_1_11_LATER
rb_define_singleton_method(mgsl_stats, "tss", rb_gsl_stats_tss_m, -1);
rb_define_singleton_method(mgsl_stats, "tss_m", rb_gsl_stats_tss_m, -1);
-#endif
rb_define_singleton_method(mgsl_stats, "sdev", rb_gsl_stats_sd_m, -1);
rb_define_singleton_method(mgsl_stats, "sigma", rb_gsl_stats_sd_m, -1);
rb_define_method(cgsl_vector, "stats_sd_m", rb_gsl_stats_sd_m, -1);
@@ -663,26 +654,24 @@ void Init_gsl_stats(VALUE module)
rb_define_alias(cgsl_vector, "sd", "stats_sd_m");
rb_define_alias(cgsl_vector, "sigma", "stats_sd_m");
rb_define_alias(cgsl_vector, "sdev", "stats_sd_m");
-#ifdef GSL_1_11_LATER
rb_define_method(cgsl_vector, "stats_tss_m", rb_gsl_stats_tss_m, -1);
rb_define_alias(cgsl_vector, "stats_tss", "stats_tss_m");
rb_define_alias(cgsl_vector, "tss_m", "stats_tss_m");
rb_define_alias(cgsl_vector, "tss", "stats_tss_m");
-#endif
-
- rb_define_singleton_method(mgsl_stats, "variance_with_fixed_mean",
- rb_gsl_stats_variance_with_fixed_mean, -1);
- rb_define_method(cgsl_vector, "stats_variance_with_fixed_mean",
- rb_gsl_stats_variance_with_fixed_mean, -1);
- rb_define_alias(cgsl_vector, "variance_with_fixed_mean",
- "stats_variance_with_fixed_mean");
-
- rb_define_singleton_method(mgsl_stats, "sd_with_fixed_mean",
- rb_gsl_stats_sd_with_fixed_mean, -1);
- rb_define_method(cgsl_vector, "stats_sd_with_fixed_mean",
- rb_gsl_stats_sd_with_fixed_mean, -1);
- rb_define_alias(cgsl_vector, "sd_with_fixed_mean",
- "stats_sd_with_fixed_mean");
+
+ rb_define_singleton_method(mgsl_stats, "variance_with_fixed_mean",
+ rb_gsl_stats_variance_with_fixed_mean, -1);
+ rb_define_method(cgsl_vector, "stats_variance_with_fixed_mean",
+ rb_gsl_stats_variance_with_fixed_mean, -1);
+ rb_define_alias(cgsl_vector, "variance_with_fixed_mean",
+ "stats_variance_with_fixed_mean");
+
+ rb_define_singleton_method(mgsl_stats, "sd_with_fixed_mean",
+ rb_gsl_stats_sd_with_fixed_mean, -1);
+ rb_define_method(cgsl_vector, "stats_sd_with_fixed_mean",
+ rb_gsl_stats_sd_with_fixed_mean, -1);
+ rb_define_alias(cgsl_vector, "sd_with_fixed_mean",
+ "stats_sd_with_fixed_mean");
rb_define_singleton_method(mgsl_stats, "absdev", rb_gsl_stats_absdev_m, -1);
rb_define_singleton_method(mgsl_stats, "absdev_m", rb_gsl_stats_absdev_m, -1);
@@ -710,24 +699,22 @@ void Init_gsl_stats(VALUE module)
rb_define_singleton_method(mgsl_stats, "covariance", rb_gsl_stats_covariance2, 2);
rb_define_singleton_method(mgsl_stats, "covariance_m", rb_gsl_stats_covariance_m2, 4);
-
-#ifdef GSL_1_10_LATER
- rb_define_singleton_method(mgsl_stats, "correlation", rb_gsl_stats_correlation, 2);
- rb_define_singleton_method(mgsl_stats, "pvariance", rb_gsl_stats_pvariance, 2);
- rb_define_singleton_method(mgsl_stats, "ttest", rb_gsl_stats_ttest, 2);
-#endif
+
+ rb_define_singleton_method(mgsl_stats, "correlation", rb_gsl_stats_correlation, 2);
+ rb_define_singleton_method(mgsl_stats, "pvariance", rb_gsl_stats_pvariance, 2);
+ rb_define_singleton_method(mgsl_stats, "ttest", rb_gsl_stats_ttest, 2);
/*****/
-
+
rb_define_singleton_method(mgsl_stats, "wmean", rb_gsl_stats_wmean2, -1);
rb_define_singleton_method(mgsl_stats, "wvariance", rb_gsl_stats_wvariance2, -1);
rb_define_singleton_method(mgsl_stats, "wvariance_m", rb_gsl_stats_wvariance_m2, -1);
rb_define_singleton_method(mgsl_stats, "wsd", rb_gsl_stats_wsd2, -1);
rb_define_singleton_method(mgsl_stats, "wsd_m", rb_gsl_stats_wsd_m2, -1);
- rb_define_singleton_method(mgsl_stats, "wvariance_with_fixed_mean",
- rb_gsl_stats_wvariance_with_fixed_mean2, -1);
- rb_define_singleton_method(mgsl_stats, "wsd_with_fixed_mean",
- rb_gsl_stats_wsd_with_fixed_mean2, -1);
+ rb_define_singleton_method(mgsl_stats, "wvariance_with_fixed_mean",
+ rb_gsl_stats_wvariance_with_fixed_mean2, -1);
+ rb_define_singleton_method(mgsl_stats, "wsd_with_fixed_mean",
+ rb_gsl_stats_wsd_with_fixed_mean2, -1);
rb_define_singleton_method(mgsl_stats, "wabsdev", rb_gsl_stats_wabsdev2, -1);
rb_define_singleton_method(mgsl_stats, "wabsdev_m", rb_gsl_stats_wabsdev_m2, -1);
rb_define_singleton_method(mgsl_stats, "wskew", rb_gsl_stats_wskew2, -1);
@@ -747,12 +734,12 @@ void Init_gsl_stats(VALUE module)
rb_define_alias(cgsl_vector, "wsd", "stats_wsd");
rb_define_method(cgsl_vector, "stats_wsd_m", rb_gsl_stats_wsd_m, -1);
rb_define_alias(cgsl_vector, "wsd_m", "stats_wsd_m");
- rb_define_method(cgsl_vector, "stats_wvariance_with_fixed_mean",
- rb_gsl_stats_wvariance_with_fixed_mean, -1);
- rb_define_alias(cgsl_vector, "wvariance_with_fixed_mean",
- "stats_wvariance_with_fixed_mean");
- rb_define_method(cgsl_vector, "stats_wsd_with_fixed_mean",
- rb_gsl_stats_wsd_with_fixed_mean, -1);
+ rb_define_method(cgsl_vector, "stats_wvariance_with_fixed_mean",
+ rb_gsl_stats_wvariance_with_fixed_mean, -1);
+ rb_define_alias(cgsl_vector, "wvariance_with_fixed_mean",
+ "stats_wvariance_with_fixed_mean");
+ rb_define_method(cgsl_vector, "stats_wsd_with_fixed_mean",
+ rb_gsl_stats_wsd_with_fixed_mean, -1);
rb_define_alias(cgsl_vector, "wsd_with_fixed_mean", "stats_wsd_with_fixed_mean");
rb_define_method(cgsl_vector, "stats_wabsdev", rb_gsl_stats_wabsdev, -1);
rb_define_alias(cgsl_vector, "wabsdev", "stats_wabsdev");
@@ -764,8 +751,8 @@ void Init_gsl_stats(VALUE module)
rb_define_alias(cgsl_vector, "wskew_m_sd", "stats_wskew_m_sd");
rb_define_method(cgsl_vector, "stats_wkurtosis", rb_gsl_stats_wkurtosis, -1);
rb_define_alias(cgsl_vector, "wkurtosis", "stats_wkurtosis");
- rb_define_method(cgsl_vector, "stats_wkurtosis_m_sd",
- rb_gsl_stats_wkurtosis_m_sd, 2);
+ rb_define_method(cgsl_vector, "stats_wkurtosis_m_sd",
+ rb_gsl_stats_wkurtosis_m_sd, 2);
rb_define_alias(cgsl_vector, "wkurtosis_m_sd", "stats_wkurtosis_m_sd");
/*****/
@@ -774,8 +761,8 @@ void Init_gsl_stats(VALUE module)
rb_define_singleton_method(mgsl_stats, "minmax", rb_gsl_stats_minmax, -1);
rb_define_singleton_method(mgsl_stats, "max_index", rb_gsl_stats_max_index, -1);
rb_define_singleton_method(mgsl_stats, "min_index", rb_gsl_stats_min_index, -1);
- rb_define_singleton_method(mgsl_stats, "minmax_index",
- rb_gsl_stats_minmax_index, -1);
+ rb_define_singleton_method(mgsl_stats, "minmax_index",
+ rb_gsl_stats_minmax_index, -1);
rb_define_method(cgsl_vector, "stats_max", rb_gsl_stats_max, -1);
rb_define_method(cgsl_vector, "stats_min", rb_gsl_stats_min, -1);
@@ -784,17 +771,17 @@ void Init_gsl_stats(VALUE module)
rb_define_method(cgsl_vector, "stats_min_index", rb_gsl_stats_min_index, -1);
rb_define_method(cgsl_vector, "stats_minmax_index", rb_gsl_stats_minmax_index, -1);
- rb_define_singleton_method(mgsl_stats, "median_from_sorted_data",
- rb_gsl_stats_median_from_sorted_data, -1);
- rb_define_method(cgsl_vector, "stats_median_from_sorted_data",
- rb_gsl_stats_median_from_sorted_data, -1);
- rb_define_alias(cgsl_vector, "median_from_sorted_data",
- "stats_median_from_sorted_data");
+ rb_define_singleton_method(mgsl_stats, "median_from_sorted_data",
+ rb_gsl_stats_median_from_sorted_data, -1);
+ rb_define_method(cgsl_vector, "stats_median_from_sorted_data",
+ rb_gsl_stats_median_from_sorted_data, -1);
+ rb_define_alias(cgsl_vector, "median_from_sorted_data",
+ "stats_median_from_sorted_data");
rb_define_method(cgsl_vector, "median", rb_gsl_stats_median, -1);
- rb_define_method(cgsl_vector, "stats_quantile_from_sorted_data",
- rb_gsl_stats_quantile_from_sorted_data, -1);
- rb_define_alias(cgsl_vector, "quantile_from_sorted_data",
- "stats_quantile_from_sorted_data");
+ rb_define_method(cgsl_vector, "stats_quantile_from_sorted_data",
+ rb_gsl_stats_quantile_from_sorted_data, -1);
+ rb_define_alias(cgsl_vector, "quantile_from_sorted_data",
+ "stats_quantile_from_sorted_data");
}
diff --git a/ext/gsl/sum.c b/ext/gsl_native/sum.c
similarity index 70%
rename from ext/gsl/sum.c
rename to ext/gsl_native/sum.c
index 0c35afb..d63d4e7 100644
--- a/ext/gsl/sum.c
+++ b/ext/gsl_native/sum.c
@@ -16,17 +16,17 @@ static VALUE rb_gsl_sum_accel(VALUE obj)
{
gsl_sum_levin_u_workspace *w = NULL;
double sum, err, sum_plain, *ptr;
- size_t terms_used, n, stride;
+ size_t terms_used, n, stride;
ptr = get_vector_ptr(obj, &stride, &n);
w = gsl_sum_levin_u_alloc(n);
gsl_sum_levin_u_accel(ptr, n, w, &sum, &err);
sum_plain = w->sum_plain;
terms_used = w->terms_used;
gsl_sum_levin_u_free(w);
- return rb_ary_new3(4, rb_float_new(sum), rb_float_new(err),
- rb_float_new(sum_plain), INT2FIX(terms_used));
+ return rb_ary_new3(4, rb_float_new(sum), rb_float_new(err),
+ rb_float_new(sum_plain), INT2FIX(terms_used));
}
-
+
static VALUE rb_gsl_utrunc_accel(VALUE obj)
{
gsl_sum_levin_utrunc_workspace *w = NULL;
@@ -38,8 +38,8 @@ static VALUE rb_gsl_utrunc_accel(VALUE obj)
sum_plain = w->sum_plain;
terms_used = w->terms_used;
gsl_sum_levin_utrunc_free(w);
- return rb_ary_new3(4, rb_float_new(sum), rb_float_new(err),
- rb_float_new(sum_plain), INT2FIX(terms_used));
+ return rb_ary_new3(4, rb_float_new(sum), rb_float_new(err),
+ rb_float_new(sum_plain), INT2FIX(terms_used));
}
static VALUE rb_gsl_sum_levin_u_new(VALUE klass, VALUE nn)
@@ -71,8 +71,8 @@ static VALUE rb_gsl_sum_levin_u_accel2(VALUE obj, VALUE vv)
sum_plain = w->sum_plain;
terms_used = w->terms_used;
gsl_sum_levin_u_free(w);
- return rb_ary_new3(4, rb_float_new(sum), rb_float_new(err),
- rb_float_new(sum_plain), INT2FIX(terms_used));
+ return rb_ary_new3(4, rb_float_new(sum), rb_float_new(err),
+ rb_float_new(sum_plain), INT2FIX(terms_used));
}
static VALUE rb_gsl_sum_levin_utrunc_accel2(VALUE obj, VALUE vv)
@@ -87,8 +87,8 @@ static VALUE rb_gsl_sum_levin_utrunc_accel2(VALUE obj, VALUE vv)
sum_plain = w->sum_plain;
terms_used = w->terms_used;
gsl_sum_levin_utrunc_free(w);
- return rb_ary_new3(4, rb_float_new(sum), rb_float_new(err),
- rb_float_new(sum_plain), INT2FIX(terms_used));
+ return rb_ary_new3(4, rb_float_new(sum), rb_float_new(err),
+ rb_float_new(sum_plain), INT2FIX(terms_used));
}
static VALUE rb_gsl_sum_levin_u_sum_plain(VALUE obj)
@@ -119,39 +119,39 @@ static VALUE rb_gsl_sum_levin_utrunc_terms_used(VALUE obj)
return INT2FIX(w->terms_used);
}
-void Init_gsl_sum(VALUE module)
+void Init_gsl_sum(VALUE module)
{
VALUE mgsl_sum;
VALUE cgsl_sum_levin_u, cgsl_sum_levin_utrunc;
mgsl_sum = rb_define_module_under(module, "Sum");
- cgsl_sum_levin_u = rb_define_class_under(mgsl_sum,
- "Levin_u", cGSL_Object);
- cgsl_sum_levin_utrunc = rb_define_class_under(mgsl_sum,
- "Levin_utrunc", cGSL_Object);
+ cgsl_sum_levin_u = rb_define_class_under(mgsl_sum,
+ "Levin_u", cGSL_Object);
+ cgsl_sum_levin_utrunc = rb_define_class_under(mgsl_sum,
+ "Levin_utrunc", cGSL_Object);
rb_define_singleton_method(cgsl_sum_levin_u, "new", rb_gsl_sum_levin_u_new, 1);
rb_define_singleton_method(cgsl_sum_levin_u, "alloc", rb_gsl_sum_levin_u_new, 1);
- rb_define_singleton_method(cgsl_sum_levin_utrunc, "new",
- rb_gsl_sum_levin_utrunc_new, 1);
- rb_define_singleton_method(cgsl_sum_levin_utrunc, "alloc",
- rb_gsl_sum_levin_utrunc_new, 1);
- rb_define_singleton_method(cgsl_sum_levin_u, "accel",
- rb_gsl_sum_levin_u_accel2, 1);
-
- rb_define_singleton_method(cgsl_sum_levin_utrunc, "accel",
- rb_gsl_sum_levin_utrunc_accel2, 1);
+ rb_define_singleton_method(cgsl_sum_levin_utrunc, "new",
+ rb_gsl_sum_levin_utrunc_new, 1);
+ rb_define_singleton_method(cgsl_sum_levin_utrunc, "alloc",
+ rb_gsl_sum_levin_utrunc_new, 1);
+ rb_define_singleton_method(cgsl_sum_levin_u, "accel",
+ rb_gsl_sum_levin_u_accel2, 1);
+
+ rb_define_singleton_method(cgsl_sum_levin_utrunc, "accel",
+ rb_gsl_sum_levin_utrunc_accel2, 1);
rb_define_method(cgsl_sum_levin_u, "accel", rb_gsl_sum_levin_u_accel2, 1);
- rb_define_method(cgsl_sum_levin_utrunc, "accel",
- rb_gsl_sum_levin_utrunc_accel2, 1);
+ rb_define_method(cgsl_sum_levin_utrunc, "accel",
+ rb_gsl_sum_levin_utrunc_accel2, 1);
rb_define_method(cgsl_sum_levin_u, "sum_plain", rb_gsl_sum_levin_u_sum_plain, 0);
- rb_define_method(cgsl_sum_levin_u, "terms_used",
- rb_gsl_sum_levin_u_terms_used, 0);
- rb_define_method(cgsl_sum_levin_utrunc, "sum_plain",
- rb_gsl_sum_levin_utrunc_sum_plain, 0);
- rb_define_method(cgsl_sum_levin_utrunc, "terms_used",
- rb_gsl_sum_levin_utrunc_terms_used, 0);
+ rb_define_method(cgsl_sum_levin_u, "terms_used",
+ rb_gsl_sum_levin_u_terms_used, 0);
+ rb_define_method(cgsl_sum_levin_utrunc, "sum_plain",
+ rb_gsl_sum_levin_utrunc_sum_plain, 0);
+ rb_define_method(cgsl_sum_levin_utrunc, "terms_used",
+ rb_gsl_sum_levin_utrunc_terms_used, 0);
/***/
rb_define_method(cgsl_vector, "accel_sum", rb_gsl_sum_accel, 0);
diff --git a/ext/gsl/tamu_anova.c b/ext/gsl_native/tamu_anova.c
similarity index 100%
rename from ext/gsl/tamu_anova.c
rename to ext/gsl_native/tamu_anova.c
diff --git a/ext/gsl/tensor.c b/ext/gsl_native/tensor.c
similarity index 90%
rename from ext/gsl/tensor.c
rename to ext/gsl_native/tensor.c
index a758d2d..46f9c75 100644
--- a/ext/gsl/tensor.c
+++ b/ext/gsl_native/tensor.c
@@ -18,19 +18,17 @@
#include "include/rb_gsl_tensor.h"
-#ifdef HAVE_NARRAY_H
#include "include/rb_gsl_with_narray.h"
-#endif
#define BASE_DOUBLE
#include "include/templates_on.h"
-#include "tensor_source.c"
+#include "tensor_source.h"
#include "include/templates_off.h"
#undef BASE_DOUBLE
#define BASE_INT
#include "include/templates_on.h"
-#include "tensor_source.c"
+#include "tensor_source.h"
#include "include/templates_off.h"
#undef BASE_INT
diff --git a/ext/gsl/tensor_source.c b/ext/gsl_native/tensor_source.h
similarity index 81%
rename from ext/gsl/tensor_source.c
rename to ext/gsl_native/tensor_source.h
index 1b3863c..37ea90d 100644
--- a/ext/gsl/tensor_source.c
+++ b/ext/gsl_native/tensor_source.h
@@ -38,26 +38,26 @@ VALUE cgsl_tensor_view, cgsl_tensor_int_view;
#define MAT_P(x) MATRIX_INT_P(x)
#endif
-GSL_TYPE(rbgsl_tensor)* FUNCTION(rbgsl_tensor,alloc)(const unsigned int rank,
- const size_t dimension)
+GSL_TYPE(rbgsl_tensor)* FUNCTION(rbgsl_tensor,alloc)(const unsigned int rank,
+ const size_t dimension)
{
GSL_TYPE(rbgsl_tensor) *t;
t = ALLOC(GSL_TYPE(rbgsl_tensor));
t->tensor = FUNCTION(tensor,alloc)(rank, dimension);
- if (rank == 0)
+ if (rank == 0)
t->indices = gsl_permutation_alloc(1);
else
t->indices = gsl_permutation_alloc(rank);
return t;
}
-GSL_TYPE(rbgsl_tensor)* FUNCTION(rbgsl_tensor,calloc)(const unsigned int rank,
- const size_t dimension)
+GSL_TYPE(rbgsl_tensor)* FUNCTION(rbgsl_tensor,calloc)(const unsigned int rank,
+ const size_t dimension)
{
GSL_TYPE(rbgsl_tensor) *t;
t = ALLOC(GSL_TYPE(rbgsl_tensor));
t->tensor = FUNCTION(tensor,calloc)(rank, dimension);
- if (rank == 0)
+ if (rank == 0)
t->indices = gsl_permutation_alloc(1);
else
t->indices = gsl_permutation_alloc(rank);
@@ -68,7 +68,7 @@ GSL_TYPE(rbgsl_tensor)* FUNCTION(rbgsl_tensor,copy)(const GSL_TYPE(rbgsl_tensor)
{
GSL_TYPE(rbgsl_tensor) *tnew;
tnew = ALLOC(GSL_TYPE(rbgsl_tensor));
- if (t->tensor->rank == 0)
+ if (t->tensor->rank == 0)
tnew->indices = gsl_permutation_alloc(1);
else
tnew->indices = gsl_permutation_alloc(t->tensor->rank);
@@ -80,14 +80,14 @@ void FUNCTION(rbgsl_tensor,free)(GSL_TYPE(rbgsl_tensor) *t)
{
gsl_permutation_free(t->indices);
FUNCTION(tensor,free)(t->tensor);
- free((GSL_TYPE(rbgsl_tensor) *) t);
+ free((GSL_TYPE(rbgsl_tensor) *)t);
}
void FUNCTION(rbgsl_tensor,free2)(GSL_TYPE(rbgsl_tensor) *t)
{
gsl_permutation_free(t->indices);
- free((GSL_TYPE(tensor)*) t->tensor);
- free((GSL_TYPE(rbgsl_tensor) *) t);
+ free((GSL_TYPE(tensor)*)t->tensor);
+ free((GSL_TYPE(rbgsl_tensor) *)t);
}
/* singleton methods */
@@ -104,7 +104,7 @@ static VALUE FUNCTION(rb_tensor,new)(int argc, VALUE *argv, VALUE klass)
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2, rank and dimension)",
- argc);
+ argc);
break;
}
return Data_Wrap_Struct(GSL_TYPE(cgsl_tensor), 0, FUNCTION(rbgsl_tensor,free), t);
@@ -175,8 +175,8 @@ static VALUE FUNCTION(rb_tensor,set_all)(VALUE obj, VALUE xx)
}
static void rb_tensor_get_indices_array(tensor_indices *v, VALUE ary);
-static void rbgsl_tensor_get_indices(int argc, VALUE *argv, tensor_indices *indices,
- size_t *n);
+static void rbgsl_tensor_get_indices(int argc, VALUE *argv, tensor_indices *indices,
+ size_t *n);
#ifdef BASE_DOUBLE
static void rb_tensor_get_indices_array(tensor_indices *v, VALUE ary)
{
@@ -187,8 +187,8 @@ static void rb_tensor_get_indices_array(tensor_indices *v, VALUE ary)
v->data[i] = FIX2UINT(rb_ary_entry(ary, i));
}
-static void rbgsl_tensor_get_indices(int argc, VALUE *argv,
- tensor_indices *indices, size_t *n)
+static void rbgsl_tensor_get_indices(int argc, VALUE *argv,
+ tensor_indices *indices, size_t *n)
{
size_t i;
for (i = 0; i < indices->size; i++) indices->data[i] = 0;
@@ -206,7 +206,7 @@ static void rbgsl_tensor_get_indices(int argc, VALUE *argv,
break;
default:
rb_raise(rb_eTypeError, "wrong argument type %s (Array expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
break;
}
break;
@@ -222,13 +222,13 @@ static void rbgsl_tensor_get_indices(int argc, VALUE *argv,
#endif
size_t FUNCTION(tensor,position)(const size_t * indices,
- const GSL_TYPE(tensor) * t);
+ const GSL_TYPE(tensor) * t);
static VALUE FUNCTION(rb_tensor,position)(int argc, VALUE *argv, VALUE obj)
{
GSL_TYPE(rbgsl_tensor) *t = NULL;
size_t n, position;
- Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
- rbgsl_tensor_get_indices(argc, argv, t->indices, &n);
+ Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
+ rbgsl_tensor_get_indices(argc, argv, t->indices, &n);
position = (size_t) FUNCTION(tensor,position)(t->indices->data,t->tensor);
return INT2FIX(position);
}
@@ -238,8 +238,8 @@ static VALUE FUNCTION(rb_tensor,get)(int argc, VALUE *argv, VALUE obj)
GSL_TYPE(rbgsl_tensor) *t = NULL;
BASE x;
size_t n;
- Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
- rbgsl_tensor_get_indices(argc, argv, t->indices, &n);
+ Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
+ rbgsl_tensor_get_indices(argc, argv, t->indices, &n);
if (n < t->tensor->rank) {
return FUNCTION(rb_tensor,subtensor)(argc, argv, obj);
} else {
@@ -254,9 +254,9 @@ static VALUE FUNCTION(rb_tensor,set)(int argc, VALUE *argv, VALUE obj)
GSL_TYPE(rbgsl_tensor) *t = NULL;
size_t n;
BASE x;
- if (argc < 2)
+ if (argc < 2)
rb_raise(rb_eArgError, "wrong number of arguments (%d for >= 2)", argc);
- Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
+ Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
rbgsl_tensor_get_indices(argc-1, argv, t->indices, &n);
x = NUMCONV(argv[argc-1]);
FUNCTION(tensor,set)(t->tensor, t->indices->data, x);
@@ -292,7 +292,7 @@ static VALUE FUNCTION(rb_tensor,fprintf)(int argc, VALUE *argv, VALUE obj)
GSL_TYPE(rbgsl_tensor) *h = NULL;
FILE *fp = NULL;
int status, flag = 0;
- if (argc != 1 && argc != 2)
+ if (argc != 1 && argc != 2)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 2)", argc);
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), h);
fp = rb_gsl_open_writefile(argv[0], &flag);
@@ -317,7 +317,7 @@ static VALUE FUNCTION(rb_tensor,printf)(int argc, VALUE *argv, VALUE obj)
int status;
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), h);
if (argc == 1) {
- if (TYPE(argv[0]) != T_STRING)
+ if (TYPE(argv[0]) != T_STRING)
rb_raise(rb_eTypeError, "String expected");
else
status = FUNCTION(tensor,fprintf)(stdout, h->tensor, STR2CSTR(argv[0]));
@@ -344,7 +344,7 @@ static VALUE FUNCTION(rb_tensor,swap_indices)(VALUE obj, VALUE ii, VALUE jj)
GSL_TYPE(rbgsl_tensor) *t, *tnew;
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
tnew = ALLOC(GSL_TYPE(rbgsl_tensor));
- if (t->tensor->rank == 0)
+ if (t->tensor->rank == 0)
tnew->indices = gsl_permutation_alloc(1);
else
tnew->indices = gsl_permutation_alloc(t->tensor->rank);
@@ -405,8 +405,8 @@ static VALUE FUNCTION(rb_tensor,minmax_index)(VALUE obj)
}
FUNCTION(tensor,minmax_index)(t->tensor, min->data, max->data);
return rb_ary_new3(2,
- Data_Wrap_Struct(cgsl_index, 0, gsl_permutation_free, min),
- Data_Wrap_Struct(cgsl_index, 0, gsl_permutation_free, max));
+ Data_Wrap_Struct(cgsl_index, 0, gsl_permutation_free, min),
+ Data_Wrap_Struct(cgsl_index, 0, gsl_permutation_free, max));
}
static VALUE FUNCTION(rb_tensor,isnull)(VALUE obj)
@@ -427,7 +427,7 @@ static VALUE FUNCTION(rb_tensor,isnull2)(VALUE obj)
}
static VALUE FUNCTION(rb_tensor,oper)(VALUE obj, VALUE bb,
- int flag)
+ int flag)
{
GSL_TYPE(rbgsl_tensor) *a, *b, *anew;
BASE x;
@@ -443,28 +443,28 @@ static VALUE FUNCTION(rb_tensor,oper)(VALUE obj, VALUE bb,
case TENSOR_MUL_ELEMENTS: f = FUNCTION(&tensor,mul_elements); break;
case TENSOR_DIV_ELEMENTS: f = FUNCTION(&tensor,div_elements); break;
default: rb_raise(rb_eRuntimeError, "unknown operation"); break;
- }
+ }
(*f)(anew->tensor, b->tensor);
} else {
switch (flag) {
case TENSOR_ADD:
- case TENSOR_ADD_CONSTANT:
+ case TENSOR_ADD_CONSTANT:
x = NUMCONV(bb);
- f2 = FUNCTION(&tensor,add_constant);
+ f2 = FUNCTION(&tensor,add_constant);
break;
case TENSOR_SUB:
x = -NUMCONV(bb);
- f2 = FUNCTION(&tensor,add_constant);
+ f2 = FUNCTION(&tensor,add_constant);
break;
case TENSOR_ADD_DIAGONAL: f2 = FUNCTION(&tensor,add_diagonal); break;
case TENSOR_MUL_ELEMENTS:
case TENSOR_SCALE:
- x = NUMCONV(bb);
- f2 = FUNCTION(&tensor,scale);
+ x = NUMCONV(bb);
+ f2 = FUNCTION(&tensor,scale);
break;
- case TENSOR_DIV_ELEMENTS:
- x = 1.0/NUMCONV(bb);
- f2 = FUNCTION(&tensor,scale);
+ case TENSOR_DIV_ELEMENTS:
+ x = 1.0/NUMCONV(bb);
+ f2 = FUNCTION(&tensor,scale);
break;
default: rb_raise(rb_eRuntimeError, "unknown operation"); break;
}
@@ -489,28 +489,28 @@ static VALUE FUNCTION(rb_tensor,oper_bang)(VALUE obj, VALUE bb, int flag)
case TENSOR_MUL_ELEMENTS: f = FUNCTION(&tensor,mul_elements); break;
case TENSOR_DIV_ELEMENTS: f = FUNCTION(&tensor,div_elements); break;
default: rb_raise(rb_eRuntimeError, "unknown operation"); break;
- }
+ }
(*f)(a->tensor, b->tensor);
} else {
switch (flag) {
case TENSOR_ADD:
- case TENSOR_ADD_CONSTANT:
+ case TENSOR_ADD_CONSTANT:
x = NUMCONV(bb);
- f2 = FUNCTION(&tensor,add_constant);
+ f2 = FUNCTION(&tensor,add_constant);
break;
case TENSOR_SUB:
x = -NUMCONV(bb);
- f2 = FUNCTION(&tensor,add_constant);
+ f2 = FUNCTION(&tensor,add_constant);
break;
case TENSOR_ADD_DIAGONAL: f2 = FUNCTION(&tensor,add_diagonal); break;
case TENSOR_MUL_ELEMENTS:
case TENSOR_SCALE:
- x = NUMCONV(bb);
- f2 = FUNCTION(&tensor,scale);
+ x = NUMCONV(bb);
+ f2 = FUNCTION(&tensor,scale);
break;
- case TENSOR_DIV_ELEMENTS:
- x = 1.0/NUMCONV(bb);
- f2 = FUNCTION(&tensor,scale);
+ case TENSOR_DIV_ELEMENTS:
+ x = 1.0/NUMCONV(bb);
+ f2 = FUNCTION(&tensor,scale);
break;
default: rb_raise(rb_eRuntimeError, "unknown operation"); break;
}
@@ -688,7 +688,7 @@ static VALUE FUNCTION(rb_tensor,2matrix)(VALUE obj)
GSL_TYPE(rbgsl_tensor) *t;
GSL_TYPE(gsl_matrix) *m = NULL;
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
- m = (GSL_TYPE(gsl_matrix)*) FUNCTION(tensor,2matrix)(t->tensor);
+ m = (GSL_TYPE(gsl_matrix)*)FUNCTION(tensor,2matrix)(t->tensor);
return Data_Wrap_Struct(QUALIFIED_VIEW(cgsl_matrix,view), 0, FUNCTION(gsl_matrix,free), m);
}
@@ -697,7 +697,7 @@ static VALUE FUNCTION(rb_tensor,2vector)(VALUE obj)
GSL_TYPE(rbgsl_tensor) *t;
GSL_TYPE(gsl_vector) *v = NULL;
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
- v = (GSL_TYPE(gsl_vector) *) FUNCTION(tensor,2vector)(t->tensor);
+ v = (GSL_TYPE(gsl_vector) *)FUNCTION(tensor,2vector)(t->tensor);
return Data_Wrap_Struct(QUALIFIED_VIEW(cgsl_vector,view), 0, FUNCTION(gsl_vector,free), v);
}
@@ -718,8 +718,8 @@ static VALUE FUNCTION(rb_tensor,to_v)(VALUE obj)
rank: rank of the tensor created
*/
GSL_TYPE(tensor) FUNCTION(tensor,subtensor)(const GSL_TYPE(tensor) *t,
- const unsigned int rank,
- size_t *indices)
+ const unsigned int rank,
+ size_t *indices)
{
GSL_TYPE(tensor) tnew;
size_t position;
@@ -740,16 +740,16 @@ static VALUE FUNCTION(rb_tensor,subtensor)(int argc, VALUE *argv, VALUE obj)
size_t n;
Data_Get_Struct(obj, GSL_TYPE(rbgsl_tensor), t);
/* n: number of indices given */
- rbgsl_tensor_get_indices(argc, argv, t->indices, &n);
- rank = t->tensor->rank - n;
+ rbgsl_tensor_get_indices(argc, argv, t->indices, &n);
+ rank = t->tensor->rank - n;
tnew = ALLOC(GSL_TYPE(rbgsl_tensor));
- tnew->tensor = (GSL_TYPE(tensor)*) malloc(sizeof(GSL_TYPE(tensor)));
+ tnew->tensor = (GSL_TYPE(tensor)*)malloc(sizeof(GSL_TYPE(tensor)));
*(tnew->tensor) = FUNCTION(tensor,subtensor)(t->tensor, rank, t->indices->data);
- if (rank == 0)
+ if (rank == 0)
tnew->indices = gsl_permutation_alloc(1);
else
tnew->indices = gsl_permutation_alloc(rank);
- return Data_Wrap_Struct(QUALIFIED_VIEW(cgsl_tensor,view), 0, FUNCTION(rbgsl_tensor,free2), tnew);
+ return Data_Wrap_Struct(QUALIFIED_VIEW(cgsl_tensor,view), 0, FUNCTION(rbgsl_tensor,free2), tnew);
}
#ifdef BASE_DOUBLE
@@ -782,29 +782,29 @@ static VALUE FUNCTION(rb_tensor,to_s)(VALUE obj)
m = &(matrix.matrix);
for (i = 0; i < m->size1; i++) {
if (i != 0) {
- strcpy(buf, " ");
- rb_str_cat(str, buf, strlen(buf));
+ strcpy(buf, " ");
+ rb_str_cat(str, buf, strlen(buf));
}
for (j = 0; j < m->size2; j++) {
- sprintf(buf, PRINTF_FORMAT, FUNCTION(gsl_matrix,get)(m, i, j));
- rb_str_cat(str, buf, strlen(buf));
- if (j == SHOW_ELM) {
- strcpy(buf, "... ");
- rb_str_cat(str, buf, strlen(buf));
- break;
- }
+ sprintf(buf, PRINTF_FORMAT, FUNCTION(gsl_matrix,get)(m, i, j));
+ rb_str_cat(str, buf, strlen(buf));
+ if (j == SHOW_ELM) {
+ strcpy(buf, "... ");
+ rb_str_cat(str, buf, strlen(buf));
+ break;
+ }
}
if (i == 6) {
- strcpy(buf, "\n ... ]");
- rb_str_cat(str, buf, strlen(buf));
- break;
+ strcpy(buf, "\n ... ]");
+ rb_str_cat(str, buf, strlen(buf));
+ break;
}
if (i == m->size1 - 1) {
- strcpy(buf, "]");
- rb_str_cat(str, buf, strlen(buf));
+ strcpy(buf, "]");
+ rb_str_cat(str, buf, strlen(buf));
} else {
- strcpy(buf, "\n");
- rb_str_cat(str, buf, strlen(buf));
+ strcpy(buf, "\n");
+ rb_str_cat(str, buf, strlen(buf));
}
}
return str;
@@ -871,8 +871,8 @@ VALUE FUNCTION(rb_tensor,equal)(int argc, VALUE *argv, VALUE obj)
if (a->tensor->dimension != b->tensor->dimension) return Qfalse;
if (a->tensor->size != b->tensor->size) return Qfalse;
for (i = 0; i < a->tensor->size; i++)
- if (fabs(a->tensor->data[i]-b->tensor->data[i]) > eps)
- return Qfalse;
+ if (fabs(a->tensor->data[i]-b->tensor->data[i]) > eps)
+ return Qfalse;
return Qtrue;
} else if (MAT_P(other)) {
if (a->tensor->rank != 2) return Qfalse;
@@ -880,19 +880,19 @@ VALUE FUNCTION(rb_tensor,equal)(int argc, VALUE *argv, VALUE obj)
if (a->tensor->dimension != m->size1 || a->tensor->dimension != m->size2)
return Qfalse;
for (i = 0; i < a->tensor->size; i++)
- if (fabs(a->tensor->data[i]-m->data[i]) > eps)
- return Qfalse;
+ if (fabs(a->tensor->data[i]-m->data[i]) > eps)
+ return Qfalse;
return Qtrue;
} else if (VEC_P(other)) {
Data_Get_Struct(other, GSL_TYPE(gsl_vector), v);
if (a->tensor->size != v->size) return Qfalse;
for (i = 0; i < a->tensor->size; i++)
- if (fabs(a->tensor->data[i]-v->data[i]) > eps)
- return Qfalse;
+ if (fabs(a->tensor->data[i]-v->data[i]) > eps)
+ return Qfalse;
return Qtrue;
} else {
- rb_raise(rb_eTypeError, "wrong argument type %s (Tensor, Matrix or Vector expected)",
- rb_class2name(CLASS_OF(other)));
+ rb_raise(rb_eTypeError, "wrong argument type %s (Tensor, Matrix or Vector expected)",
+ rb_class2name(CLASS_OF(other)));
}
}
@@ -927,8 +927,8 @@ static VALUE FUNCTION(rb_tensor,coerce)(VALUE obj, VALUE other)
return rb_ary_new3(2, tt, obj);
break;
default:
- rb_raise(rb_eRuntimeError, "undefined operation with %s",
- rb_class2name(CLASS_OF(other)));
+ rb_raise(rb_eRuntimeError, "undefined operation with %s",
+ rb_class2name(CLASS_OF(other)));
break;
}
}
@@ -953,99 +953,99 @@ void FUNCTION(Init_tensor,init)(VALUE module)
cgsl_tensor_int = rb_define_class_under(cgsl_tensor, "Int", cGSL_Object);
cgsl_tensor_view = rb_define_class_under(cgsl_tensor, "View", cgsl_tensor);
cgsl_tensor_int_view = rb_define_class_under(cgsl_tensor_int, "View",
- cgsl_tensor_int);
+ cgsl_tensor_int);
/*
- cgsl_index = rb_define_class_under(cgsl_tensor, "Index",
+ cgsl_index = rb_define_class_under(cgsl_tensor, "Index",
cgsl_permutation);*/
#endif
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "new",
- FUNCTION(rb_tensor,new), -1);
+ FUNCTION(rb_tensor,new), -1);
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "[]",
- FUNCTION(rb_tensor,new), -1);
+ FUNCTION(rb_tensor,new), -1);
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "alloc",
- FUNCTION(rb_tensor,new), -1);
+ FUNCTION(rb_tensor,new), -1);
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "calloc",
- FUNCTION(rb_tensor,calloc), 2);
+ FUNCTION(rb_tensor,calloc), 2);
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "copy",
- FUNCTION(rb_tensor,copy_singleton), 1);
+ FUNCTION(rb_tensor,copy_singleton), 1);
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "memcpy",
- FUNCTION(rb_tensor,memcpy_singleton), 2);
+ FUNCTION(rb_tensor,memcpy_singleton), 2);
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "swap",
- FUNCTION(rb_tensor,swap_singleton), 2);
+ FUNCTION(rb_tensor,swap_singleton), 2);
/*****/
rb_define_method(GSL_TYPE(cgsl_tensor), "copy",
- FUNCTION(rb_tensor,copy), 0);
+ FUNCTION(rb_tensor,copy), 0);
rb_define_alias(GSL_TYPE(cgsl_tensor), "clone", "copy");
rb_define_alias(GSL_TYPE(cgsl_tensor), "duplicate", "copy");
rb_define_method(GSL_TYPE(cgsl_tensor), "set_zero",
- FUNCTION(rb_tensor,set_zero), 0);
+ FUNCTION(rb_tensor,set_zero), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "set_all",
- FUNCTION(rb_tensor,set_all), 1);
+ FUNCTION(rb_tensor,set_all), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "position",
- FUNCTION(rb_tensor,position), -1);
+ FUNCTION(rb_tensor,position), -1);
rb_define_method(GSL_TYPE(cgsl_tensor), "get",
- FUNCTION(rb_tensor,get), -1);
+ FUNCTION(rb_tensor,get), -1);
rb_define_alias(GSL_TYPE(cgsl_tensor), "[]", "get");
rb_define_method(GSL_TYPE(cgsl_tensor), "set",
- FUNCTION(rb_tensor,set), -1);
+ FUNCTION(rb_tensor,set), -1);
rb_define_alias(GSL_TYPE(cgsl_tensor), "[]=", "set");
rb_define_method(GSL_TYPE(cgsl_tensor), "fread",
- FUNCTION(rb_tensor,fread), 1);
+ FUNCTION(rb_tensor,fread), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "fwrite",
- FUNCTION(rb_tensor,fwrite), 1);
+ FUNCTION(rb_tensor,fwrite), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "fprintf",
- FUNCTION(rb_tensor,fprintf), -1);
+ FUNCTION(rb_tensor,fprintf), -1);
rb_define_method(GSL_TYPE(cgsl_tensor), "printf",
- FUNCTION(rb_tensor,printf), -1);
+ FUNCTION(rb_tensor,printf), -1);
rb_define_method(GSL_TYPE(cgsl_tensor), "fscanf",
- FUNCTION(rb_tensor,fscanf), 1);
+ FUNCTION(rb_tensor,fscanf), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "swap_indices",
- FUNCTION(rb_tensor,swap_indices), 2);
+ FUNCTION(rb_tensor,swap_indices), 2);
rb_define_method(GSL_TYPE(cgsl_tensor), "max",
- FUNCTION(rb_tensor,max), 0);
+ FUNCTION(rb_tensor,max), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "min",
- FUNCTION(rb_tensor,min), 0);
+ FUNCTION(rb_tensor,min), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "minmax",
- FUNCTION(rb_tensor,minmax), 0);
+ FUNCTION(rb_tensor,minmax), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "max_index",
- FUNCTION(rb_tensor,max_index), 0);
+ FUNCTION(rb_tensor,max_index), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "min_index",
- FUNCTION(rb_tensor,min_index), 0);
+ FUNCTION(rb_tensor,min_index), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "minmax_index",
- FUNCTION(rb_tensor,minmax_index), 0);
+ FUNCTION(rb_tensor,minmax_index), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "isnull",
- FUNCTION(rb_tensor,isnull), 0);
+ FUNCTION(rb_tensor,isnull), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "isnull?",
- FUNCTION(rb_tensor,isnull2), 0);
+ FUNCTION(rb_tensor,isnull2), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "add",
- FUNCTION(rb_tensor,add), 1);
+ FUNCTION(rb_tensor,add), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "sub",
- FUNCTION(rb_tensor,sub), 1);
+ FUNCTION(rb_tensor,sub), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "mul_elements",
- FUNCTION(rb_tensor,mul_elements), 1);
+ FUNCTION(rb_tensor,mul_elements), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "div_elements",
- FUNCTION(rb_tensor,div_elements), 1);
+ FUNCTION(rb_tensor,div_elements), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "add_constant",
- FUNCTION(rb_tensor,add_constant), 1);
+ FUNCTION(rb_tensor,add_constant), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "add_diagonal",
- FUNCTION(rb_tensor,add_diagonal), 1);
+ FUNCTION(rb_tensor,add_diagonal), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "scale",
- FUNCTION(rb_tensor,scale), 1);
+ FUNCTION(rb_tensor,scale), 1);
rb_define_singleton_method(GSL_TYPE(cgsl_tensor), "product",
- FUNCTION(rb_tensor,product_singleton), 2);
+ FUNCTION(rb_tensor,product_singleton), 2);
rb_define_method(GSL_TYPE(cgsl_tensor), "product",
- FUNCTION(rb_tensor,product), 1);
+ FUNCTION(rb_tensor,product), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "contract",
- FUNCTION(rb_tensor,contract), 2);
+ FUNCTION(rb_tensor,contract), 2);
rb_define_alias(GSL_TYPE(cgsl_tensor), "+", "add");
rb_define_alias(GSL_TYPE(cgsl_tensor), "-", "sub");
@@ -1054,62 +1054,62 @@ void FUNCTION(Init_tensor,init)(VALUE module)
rb_define_alias(GSL_TYPE(cgsl_tensor), "*", "product");
rb_define_method(GSL_TYPE(cgsl_tensor), "add!",
- FUNCTION(rb_tensor,add_bang), 1);
+ FUNCTION(rb_tensor,add_bang), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "sub!",
- FUNCTION(rb_tensor,sub_bang), 1);
+ FUNCTION(rb_tensor,sub_bang), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "mul_elements!",
- FUNCTION(rb_tensor,mul_elements_bang), 1);
+ FUNCTION(rb_tensor,mul_elements_bang), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "div_elements!",
- FUNCTION(rb_tensor,div_elements_bang), 1);
+ FUNCTION(rb_tensor,div_elements_bang), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "add_constant!",
- FUNCTION(rb_tensor,add_constant_bang), 1);
+ FUNCTION(rb_tensor,add_constant_bang), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "add_diagonal!",
- FUNCTION(rb_tensor,add_diagonal_bang), 1);
+ FUNCTION(rb_tensor,add_diagonal_bang), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "scale!",
- FUNCTION(rb_tensor,scale_bang), 1);
+ FUNCTION(rb_tensor,scale_bang), 1);
rb_define_method(GSL_TYPE(cgsl_tensor), "+@",
- FUNCTION(rb_tensor,uplus), 0);
+ FUNCTION(rb_tensor,uplus), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "-@",
- FUNCTION(rb_tensor,uminus), 0);
+ FUNCTION(rb_tensor,uminus), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "size",
- FUNCTION(rb_tensor,size), 0);
+ FUNCTION(rb_tensor,size), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "rank",
- FUNCTION(rb_tensor,rank), 0);
+ FUNCTION(rb_tensor,rank), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "dimension",
- FUNCTION(rb_tensor,dimension), 0);
+ FUNCTION(rb_tensor,dimension), 0);
rb_define_alias(GSL_TYPE(cgsl_tensor), "dim", "dimension");
rb_define_method(GSL_TYPE(cgsl_tensor), "data",
- FUNCTION(rb_tensor,data), 0);
+ FUNCTION(rb_tensor,data), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "to_v",
- FUNCTION(rb_tensor,to_v), 0);
+ FUNCTION(rb_tensor,to_v), 0);
rb_define_alias(GSL_TYPE(cgsl_tensor), "to_gv", "to_v");
rb_define_method(GSL_TYPE(cgsl_tensor), "to_vector",
- FUNCTION(rb_tensor,2vector), 0);
+ FUNCTION(rb_tensor,2vector), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "to_matrix",
- FUNCTION(rb_tensor,2matrix), 0);
+ FUNCTION(rb_tensor,2matrix), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "subtensor",
- FUNCTION(rb_tensor,subtensor), -1);
+ FUNCTION(rb_tensor,subtensor), -1);
rb_define_alias(GSL_TYPE(cgsl_tensor), "view", "subtensor");
rb_define_method(GSL_TYPE(cgsl_tensor), "to_s",
- FUNCTION(rb_tensor,to_s), 0);
+ FUNCTION(rb_tensor,to_s), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "inspect",
- FUNCTION(rb_tensor,inspect), 0);
+ FUNCTION(rb_tensor,inspect), 0);
rb_define_method(GSL_TYPE(cgsl_tensor), "equal?",
- FUNCTION(rb_tensor,equal), -1);
+ FUNCTION(rb_tensor,equal), -1);
rb_define_alias(GSL_TYPE(cgsl_tensor), "==", "equal?");
rb_define_method(GSL_TYPE(cgsl_tensor), "coerce",
- FUNCTION(rb_tensor,coerce), 1);
+ FUNCTION(rb_tensor,coerce), 1);
- rb_define_method(GSL_TYPE(cgsl_tensor), "info",
- FUNCTION(rb_tensor,info), 0);
+ rb_define_method(GSL_TYPE(cgsl_tensor), "info",
+ FUNCTION(rb_tensor,info), 0);
}
#undef NUMCONV
diff --git a/ext/gsl/vector.c b/ext/gsl_native/vector.c
similarity index 91%
rename from ext/gsl/vector.c
rename to ext/gsl_native/vector.c
index f21c5e7..cfbbad6 100644
--- a/ext/gsl/vector.c
+++ b/ext/gsl_native/vector.c
@@ -18,19 +18,17 @@
#include "include/rb_gsl_histogram.h"
#include "include/rb_gsl_complex.h"
#include "include/rb_gsl_poly.h"
-#ifdef HAVE_NARRAY_H
#include "include/rb_gsl_with_narray.h"
-#endif
#define BASE_DOUBLE
#include "include/templates_on.h"
-#include "vector_source.c"
+#include "vector_source.h"
#include "include/templates_off.h"
#undef BASE_DOUBLE
#define BASE_INT
#include "include/templates_on.h"
-#include "vector_source.c"
+#include "vector_source.h"
#include "include/templates_off.h"
#undef BASE_INT
diff --git a/ext/gsl/vector_complex.c b/ext/gsl_native/vector_complex.c
similarity index 91%
rename from ext/gsl/vector_complex.c
rename to ext/gsl_native/vector_complex.c
index 0b95764..b598746 100644
--- a/ext/gsl/vector_complex.c
+++ b/ext/gsl_native/vector_complex.c
@@ -21,7 +21,7 @@ void get_range_beg_en_n(VALUE range, double *beg, double *en, size_t *n, int *st
//
// From vector_source.c
void parse_subvector_args(int argc, VALUE *argv, size_t size,
- size_t *offset, size_t *stride, size_t *n);
+ size_t *offset, size_t *stride, size_t *n);
// From complex.c
gsl_complex rb_gsl_obj_to_gsl_complex(VALUE obj, gsl_complex *z);
@@ -41,30 +41,30 @@ static VALUE rb_gsl_vector_complex_new(int argc, VALUE *argv, VALUE klass)
v = gsl_vector_complex_calloc(n);
if (v == NULL) rb_raise(rb_eNoMemError, "gsl_vector_complex_alloc failed");
break;
- case T_ARRAY:
+ case T_ARRAY:
n = RARRAY_LEN(argv[0]);
v = gsl_vector_complex_alloc(n);
if (v == NULL) rb_raise(rb_eNoMemError, "gsl_vector_complex_alloc failed");
for (i = 0; i < n; i++) {
- z2 = &z;
- tmp = rb_ary_entry(argv[0], i);
- if (TYPE(tmp) == T_ARRAY) {
- GSL_SET_REAL(z2, NUM2DBL(rb_ary_entry(tmp, 0)));
- GSL_SET_IMAG(z2, NUM2DBL(rb_ary_entry(tmp, 1)));
- } else if (COMPLEX_P(tmp)) {
- Data_Get_Struct(tmp, gsl_complex, z2);
- } else {
- rb_raise(rb_eTypeError,
- "wrong argument type %s (Array or Complex expected)",
- rb_class2name(CLASS_OF(tmp)));
-
- }
- gsl_vector_complex_set(v, i, *z2);
+ z2 = &z;
+ tmp = rb_ary_entry(argv[0], i);
+ if (TYPE(tmp) == T_ARRAY) {
+ GSL_SET_REAL(z2, NUM2DBL(rb_ary_entry(tmp, 0)));
+ GSL_SET_IMAG(z2, NUM2DBL(rb_ary_entry(tmp, 1)));
+ } else if (COMPLEX_P(tmp)) {
+ Data_Get_Struct(tmp, gsl_complex, z2);
+ } else {
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s (Array or Complex expected)",
+ rb_class2name(CLASS_OF(tmp)));
+
+ }
+ gsl_vector_complex_set(v, i, *z2);
}
break;
default:
- rb_raise(rb_eTypeError,
- "wrong argument type %s", rb_class2name(CLASS_OF(argv[0])));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s", rb_class2name(CLASS_OF(argv[0])));
break;
}
break;
@@ -75,9 +75,9 @@ static VALUE rb_gsl_vector_complex_new(int argc, VALUE *argv, VALUE klass)
n = GSL_MIN_INT(x->size, y->size);
v = gsl_vector_complex_alloc(n);
for (i = 0; i < n; i++) {
- z.dat[0] = gsl_vector_get(x, i);
- z.dat[1] = gsl_vector_get(y, i);
- gsl_vector_complex_set(v, i, z);
+ z.dat[0] = gsl_vector_get(x, i);
+ z.dat[1] = gsl_vector_get(y, i);
+ gsl_vector_complex_set(v, i, z);
}
break;
}
@@ -86,15 +86,15 @@ static VALUE rb_gsl_vector_complex_new(int argc, VALUE *argv, VALUE klass)
if (v == NULL) rb_raise(rb_eNoMemError, "gsl_vector_complex_alloc failed");
for (i = 0; i < n; i++) {
if (TYPE(argv[i]) == T_ARRAY) {
- GSL_SET_REAL(&z, NUM2DBL(rb_ary_entry(argv[i], 0)));
- GSL_SET_IMAG(&z, NUM2DBL(rb_ary_entry(argv[i], 1)));
- z2 = &z;
+ GSL_SET_REAL(&z, NUM2DBL(rb_ary_entry(argv[i], 0)));
+ GSL_SET_IMAG(&z, NUM2DBL(rb_ary_entry(argv[i], 1)));
+ z2 = &z;
} else if (COMPLEX_P(argv[i])) {
- Data_Get_Struct(argv[i], gsl_complex, z2);
+ Data_Get_Struct(argv[i], gsl_complex, z2);
} else {
- rb_raise(rb_eTypeError,
- "wrong argument type %s (Array or Complex expected)",
- rb_class2name(CLASS_OF(argv[i])));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s (Array or Complex expected)",
+ rb_class2name(CLASS_OF(argv[i])));
}
gsl_vector_complex_set(v, i, *z2);
}
@@ -175,9 +175,9 @@ static VALUE rb_gsl_vector_complex_get(int argc, VALUE *argv, VALUE obj)
case T_ARRAY:
vnew = gsl_vector_complex_alloc(RARRAY_LEN(argv[0]));
for (j = 0; j < vnew->size; j++) {
- i = FIX2INT(rb_ary_entry(argv[0], j));
- if (i < 0) i = v->size + i;
- gsl_vector_complex_set(vnew, j, gsl_vector_complex_get(v, i));
+ i = FIX2INT(rb_ary_entry(argv[0], j));
+ if (i < 0) i = v->size + i;
+ gsl_vector_complex_set(vnew, j, gsl_vector_complex_get(v, i));
}
retval = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vnew);
break;
@@ -207,7 +207,6 @@ static VALUE rb_gsl_vector_complex_set_all(int argc, VALUE *argv, VALUE obj)
gsl_complex tmp;
if (argc < 1) rb_raise(rb_eArgError, "wrong number of arguments");
-
Data_Get_Struct(obj, gsl_vector_complex, v);
switch (argc) {
@@ -284,7 +283,6 @@ static VALUE rb_gsl_vector_complex_set(int argc, VALUE *argv, VALUE obj)
if(argc < 1 || argc > 4) {
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1-4)", argc);
}
-
Data_Get_Struct(obj, gsl_vector_complex, v);
other = argv[argc-1];
@@ -309,7 +307,6 @@ static VALUE rb_gsl_vector_complex_set(int argc, VALUE *argv, VALUE obj)
// assignment to v.subvector(...)
rb_gsl_vector_complex_set_subvector(argc-1, argv, v, other);
}
-
return obj;
}
@@ -428,15 +425,15 @@ static VALUE rb_gsl_vector_complex_to_s(VALUE obj)
if (VECTOR_COMPLEX_COL_P(obj)) {
for (i = 0; i < v->size; i++) {
if (i != 0) {
- rb_str_cat(str, " ", 2);
+ rb_str_cat(str, " ", 2);
}
z = GSL_COMPLEX_AT(v, i);
sprintf(buf, "[%4.3e %4.3e]", GSL_REAL(*z), GSL_IMAG(*z));
if (i != v->size-1) strcat(buf, "\n");
rb_str_cat(str, buf, strlen(buf));
if (i >= 10 && i != v->size-1) {
- rb_str_cat(str, " ...", 5);
- break;
+ rb_str_cat(str, " ...", 5);
+ break;
}
}
} else {
@@ -448,8 +445,8 @@ static VALUE rb_gsl_vector_complex_to_s(VALUE obj)
sprintf(buf, " [%4.3e %4.3e]", GSL_REAL(*z), GSL_IMAG(*z));
rb_str_cat(str, buf, strlen(buf));
if (i >= 10 && i != v->size-1) {
- rb_str_cat(str, " ...", 4);
- break;
+ rb_str_cat(str, " ...", 4);
+ break;
}
}
}
@@ -629,10 +626,10 @@ static VALUE rb_gsl_vector_complex_conj(VALUE obj)
gsl_vector_complex *vout = NULL;
Data_Get_Struct(obj, gsl_vector_complex, vin);
vout = gsl_vector_complex_alloc(vin->size);
- for(i=0; i<vin->size; i++) {
+ for(i = 0; i<vin->size; i++) {
gsl_vector_complex_set(vout, i,
- gsl_complex_conjugate(
- gsl_vector_complex_get(vin, i)));
+ gsl_complex_conjugate(
+ gsl_vector_complex_get(vin, i)));
}
return Data_Wrap_Struct(VECTOR_COMPLEX_ROW_COL(obj), 0, gsl_vector_complex_free, vout);
}
@@ -642,10 +639,10 @@ static VALUE rb_gsl_vector_complex_conj_bang(VALUE obj)
size_t i;
gsl_vector_complex *v = NULL;
Data_Get_Struct(obj, gsl_vector_complex, v);
- for(i=0; i<v->size; i++) {
+ for(i = 0; i<v->size; i++) {
gsl_vector_complex_set(v, i,
- gsl_complex_conjugate(
- gsl_vector_complex_get(v, i)));
+ gsl_complex_conjugate(
+ gsl_vector_complex_get(v, i)));
}
return obj;
}
@@ -658,7 +655,7 @@ static VALUE rb_gsl_vector_complex_to_a(VALUE obj)
VALUE ary;
Data_Get_Struct(obj, gsl_vector_complex, c);
ary = rb_ary_new2(c->size*2);
- for (i = 0, j = 0; i < c->size; i++, j+=2) {
+ for (i = 0, j = 0; i < c->size; i++, j += 2) {
z = GSL_COMPLEX_AT(c, i);
rb_ary_store(ary, j, rb_float_new(GSL_REAL(*z)));
rb_ary_store(ary, j+1, rb_float_new(GSL_IMAG(*z)));
@@ -770,7 +767,7 @@ static VALUE rb_gsl_vector_complex_reverse2(VALUE obj)
vnew = gsl_vector_complex_alloc(v->size);
gsl_vector_complex_memcpy(vnew, v);
gsl_vector_complex_reverse(vnew);
- if (VECTOR_COMPLEX_ROW_P(obj))
+ if (VECTOR_COMPLEX_ROW_P(obj))
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vnew);
else
return Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, vnew);
@@ -807,7 +804,6 @@ static VALUE rb_gsl_vector_complex_fftshift_bang(VALUE obj)
gsl_vector_complex_swap_elements(v, i, i+n/2);
}
}
-
return obj;
}
@@ -829,7 +825,7 @@ static VALUE rb_gsl_vector_complex_fftshift(VALUE obj)
vvnew = gsl_vector_complex_subvector(vnew, 0, n/2);
gsl_vector_complex_memcpy(&vvnew.vector, &vv.vector);
- return Data_Wrap_Struct(VECTOR_COMPLEX_ROW_COL(obj), 0, gsl_vector_complex_free, vnew);
+ return Data_Wrap_Struct(VECTOR_COMPLEX_ROW_COL(obj), 0, gsl_vector_complex_free, vnew);
}
static VALUE rb_gsl_vector_complex_ifftshift_bang(VALUE obj)
@@ -854,7 +850,6 @@ static VALUE rb_gsl_vector_complex_ifftshift_bang(VALUE obj)
gsl_vector_complex_swap_elements(v, i, i+n/2);
}
}
-
return obj;
}
@@ -900,8 +895,8 @@ static VALUE rb_gsl_vector_complex_matrix_view(int argc, VALUE *argv, VALUE obj)
break;
case 3:
mv = gsl_matrix_complex_view_alloc();
- *mv = gsl_matrix_complex_view_vector_with_tda(v, FIX2INT(argv[0]), FIX2INT(argv[1]),
- FIX2INT(argv[2]));
+ *mv = gsl_matrix_complex_view_vector_with_tda(v, FIX2INT(argv[0]), FIX2INT(argv[1]),
+ FIX2INT(argv[2]));
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
@@ -911,7 +906,7 @@ static VALUE rb_gsl_vector_complex_matrix_view(int argc, VALUE *argv, VALUE obj)
}
static VALUE rb_gsl_vector_complex_matrix_view_with_tda(VALUE obj, VALUE nn1, VALUE nn2,
- VALUE tda)
+ VALUE tda)
{
gsl_vector_complex *v = NULL;
gsl_matrix_complex_view *mv = NULL;
@@ -928,9 +923,9 @@ static VALUE rb_gsl_vector_complex_trans(VALUE obj)
gsl_vector_complex *v = NULL, *vnew = NULL;
Data_Get_Struct(obj, gsl_vector_complex, v);
vnew = make_vector_complex_clone(v);
- if (VECTOR_COMPLEX_ROW_P(obj))
+ if (VECTOR_COMPLEX_ROW_P(obj))
return Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, vnew);
- else if (VECTOR_COMPLEX_COL_P(obj))
+ else if (VECTOR_COMPLEX_COL_P(obj))
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vnew);
else {
rb_raise(rb_eTypeError, "wrong type");
@@ -939,13 +934,13 @@ static VALUE rb_gsl_vector_complex_trans(VALUE obj)
static VALUE rb_gsl_vector_complex_trans2(VALUE obj)
{
- if (CLASS_OF(obj) == cgsl_vector_complex)
+ if (CLASS_OF(obj) == cgsl_vector_complex)
RBGSL_SET_CLASS(obj, cgsl_vector_complex_col);
- else if (CLASS_OF(obj) == cgsl_vector_complex_col)
+ else if (CLASS_OF(obj) == cgsl_vector_complex_col)
RBGSL_SET_CLASS(obj, cgsl_vector_complex);
else {
rb_raise(rb_eRuntimeError, "method trans! for %s is forbidden",
- rb_class2name(CLASS_OF(obj)));
+ rb_class2name(CLASS_OF(obj)));
}
return obj;
}
@@ -982,7 +977,7 @@ enum {
static VALUE rb_gsl_vector_complex_arithmetics(int flag, VALUE obj, VALUE bb);
-static VALUE rb_gsl_vector_complex_arithmetics(int flag, VALUE obj, VALUE bb)
+static VALUE rb_gsl_vector_complex_arithmetics(int flag, VALUE obj, VALUE bb)
{
gsl_vector *b = NULL;
gsl_vector_complex *cv = NULL, *cvnew = NULL, *cb = NULL;
@@ -1037,20 +1032,20 @@ static VALUE rb_gsl_vector_complex_arithmetics(int flag, VALUE obj, VALUE bb)
switch (flag) {
case GSL_VECTOR_COMPLEX_ADD:
case GSL_VECTOR_COMPLEX_ADD_BANG:
- gsl_vector_complex_add(cvnew, cb);
- break;
+ gsl_vector_complex_add(cvnew, cb);
+ break;
case GSL_VECTOR_COMPLEX_SUB:
case GSL_VECTOR_COMPLEX_SUB_BANG:
- gsl_vector_complex_sub(cvnew, cb);
- break;
+ gsl_vector_complex_sub(cvnew, cb);
+ break;
case GSL_VECTOR_COMPLEX_MUL:
case GSL_VECTOR_COMPLEX_MUL_BANG:
- gsl_vector_complex_mul(cvnew, cb);
- break;
+ gsl_vector_complex_mul(cvnew, cb);
+ break;
case GSL_VECTOR_COMPLEX_DIV:
case GSL_VECTOR_COMPLEX_DIV_BANG:
- gsl_vector_complex_div(cvnew, cb);
- break;
+ gsl_vector_complex_div(cvnew, cb);
+ break;
}
gsl_vector_complex_free(cb);
} else if (VECTOR_COMPLEX_P(bb)) {
@@ -1058,40 +1053,40 @@ static VALUE rb_gsl_vector_complex_arithmetics(int flag, VALUE obj, VALUE bb)
switch (flag) {
case GSL_VECTOR_COMPLEX_ADD:
case GSL_VECTOR_COMPLEX_ADD_BANG:
- gsl_vector_complex_add(cvnew, cb);
- break;
+ gsl_vector_complex_add(cvnew, cb);
+ break;
case GSL_VECTOR_COMPLEX_SUB:
case GSL_VECTOR_COMPLEX_SUB_BANG:
- gsl_vector_complex_sub(cvnew, cb);
- break;
+ gsl_vector_complex_sub(cvnew, cb);
+ break;
case GSL_VECTOR_COMPLEX_MUL:
case GSL_VECTOR_COMPLEX_MUL_BANG:
- gsl_vector_complex_mul(cvnew, cb);
- break;
+ gsl_vector_complex_mul(cvnew, cb);
+ break;
case GSL_VECTOR_COMPLEX_DIV:
case GSL_VECTOR_COMPLEX_DIV_BANG:
- gsl_vector_complex_div(cvnew, cb);
- break;
+ gsl_vector_complex_div(cvnew, cb);
+ break;
}
} else if (COMPLEX_P(bb)) {
Data_Get_Struct(bb, gsl_complex, c);
switch (flag) {
case GSL_VECTOR_COMPLEX_ADD:
case GSL_VECTOR_COMPLEX_ADD_BANG:
- gsl_vector_complex_add_constant(cvnew, *c);
- break;
+ gsl_vector_complex_add_constant(cvnew, *c);
+ break;
case GSL_VECTOR_COMPLEX_SUB:
case GSL_VECTOR_COMPLEX_SUB_BANG:
- gsl_vector_complex_add_constant(cvnew, gsl_complex_negative(*c));
- break;
+ gsl_vector_complex_add_constant(cvnew, gsl_complex_negative(*c));
+ break;
case GSL_VECTOR_COMPLEX_MUL:
case GSL_VECTOR_COMPLEX_MUL_BANG:
- gsl_vector_complex_scale(cvnew, *c);
- break;
+ gsl_vector_complex_scale(cvnew, *c);
+ break;
case GSL_VECTOR_COMPLEX_DIV:
case GSL_VECTOR_COMPLEX_DIV_BANG:
- gsl_vector_complex_scale(cvnew, gsl_complex_inverse(*c));
- break;
+ gsl_vector_complex_scale(cvnew, gsl_complex_inverse(*c));
+ break;
}
} else {
rb_raise(rb_eTypeError, "wrong type argument %s", rb_class2name(CLASS_OF(bb)));
@@ -1186,22 +1181,22 @@ static VALUE rb_gsl_vector_complex_inner_product(int argc, VALUE *argv, VALUE ob
case T_CLASS:
case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
if (!VECTOR_COMPLEX_ROW_P(argv[0]))
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Vector::Complex expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
if (!VECTOR_COMPLEX_COL_P(argv[1]))
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Vector::Complex::Col expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_class2name(CLASS_OF(argv[1])));
Data_Get_Struct(argv[0], gsl_vector_complex, v);
Data_Get_Struct(argv[1], gsl_vector_complex, v2);
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
if (!VECTOR_COMPLEX_COL_P(argv[0]))
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Vector::Complex::Col expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
Data_Get_Struct(obj, gsl_vector_complex, v);
Data_Get_Struct(argv[0], gsl_vector_complex, v2);
break;
@@ -1229,25 +1224,25 @@ static VALUE rb_gsl_vector_complex_product_to_m(int argc, VALUE *argv, VALUE obj
case T_CLASS:
case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
if (!VECTOR_COMPLEX_COL_P(argv[0]))
- rb_raise(rb_eTypeError,
- "wrong argument type %s (GSL::Vector::Complex::Col expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s (GSL::Vector::Complex::Col expected)",
+ rb_class2name(CLASS_OF(argv[0])));
if (!VECTOR_COMPLEX_ROW_P(argv[1]))
- rb_raise(rb_eTypeError,
- "wrong argument type %s (GSL::Vector::Complex expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s (GSL::Vector::Complex expected)",
+ rb_class2name(CLASS_OF(argv[1])));
Data_Get_Struct(argv[0], gsl_vector_complex, v);
Data_Get_Struct(argv[1], gsl_vector_complex, v2);
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
if (!VECTOR_COMPLEX_ROW_P(argv[0]))
- rb_raise(rb_eTypeError,
- "wrong argument type %s (GSL::Vector::Complex expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s (GSL::Vector::Complex expected)",
+ rb_class2name(CLASS_OF(argv[0])));
Data_Get_Struct(obj, gsl_vector_complex, v);
Data_Get_Struct(argv[0], gsl_vector_complex, v2);
break;
@@ -1324,8 +1319,8 @@ static VALUE rb_gsl_vector_complex_XXXz_bang(VALUE obj, gsl_complex (*f)(gsl_com
return obj;
}
-static VALUE rb_gsl_vector_complex_XXXz2(VALUE obj, VALUE a,
- gsl_complex (*f)(gsl_complex, gsl_complex))
+static VALUE rb_gsl_vector_complex_XXXz2(VALUE obj, VALUE a,
+ gsl_complex (*f)(gsl_complex, gsl_complex))
{
gsl_vector_complex *m, *v;
gsl_complex c, *z;
@@ -1341,8 +1336,8 @@ static VALUE rb_gsl_vector_complex_XXXz2(VALUE obj, VALUE a,
return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, v);
}
-static VALUE rb_gsl_vector_complex_XXXz2_bang(VALUE obj, VALUE a,
- gsl_complex (*f)(gsl_complex, gsl_complex))
+static VALUE rb_gsl_vector_complex_XXXz2_bang(VALUE obj, VALUE a,
+ gsl_complex (*f)(gsl_complex, gsl_complex))
{
gsl_vector_complex *v;
gsl_complex c, *z;
@@ -1443,7 +1438,7 @@ static gsl_complex rb_gsl_vector_complex_sum_gsl(gsl_vector_complex * v)
size_t i;
gsl_complex z = gsl_complex_rect(0.0,0.0);
- for(i=0; i<v->size; i++) {
+ for(i = 0; i<v->size; i++) {
z = gsl_complex_add(z, gsl_vector_complex_get(v,i));
}
return z;
@@ -1462,7 +1457,7 @@ static double rb_gsl_vector_complex_tss_m_gsl(gsl_vector_complex * v, gsl_comple
size_t i;
double tss = 0.0;
- for(i=0; i<v->size; i++) {
+ for(i = 0; i<v->size; i++) {
tss += gsl_complex_abs2(gsl_complex_sub(gsl_vector_complex_get(v,i), mean));
}
return tss;
@@ -1522,7 +1517,7 @@ static double rb_gsl_vector_complex_sd_gsl(gsl_vector_complex * v)
* (e.g. sum and mean)
*/
static VALUE rb_gsl_vector_complex_z_stats_v(VALUE obj,
- gsl_complex (*func)(gsl_vector_complex*))
+ gsl_complex (*func)(gsl_vector_complex*))
{
gsl_vector_complex * v;
gsl_complex * zp;
@@ -1531,7 +1526,7 @@ static VALUE rb_gsl_vector_complex_z_stats_v(VALUE obj,
CHECK_VECTOR_COMPLEX(obj);
Data_Get_Struct(obj, gsl_vector_complex, v);
- zv = Data_Make_Struct(cgsl_complex, gsl_complex, 0, free, zp);
+ zv = Data_Make_Struct(cgsl_complex, gsl_complex, 0, free, zp);
*zp = func(v);
return zv;
@@ -1542,7 +1537,7 @@ static VALUE rb_gsl_vector_complex_z_stats_v(VALUE obj,
* (e.g. tss, variance, sd)
*/
static VALUE rb_gsl_vector_complex_d_stats_v(VALUE obj,
- double (*func)(gsl_vector_complex*))
+ double (*func)(gsl_vector_complex*))
{
gsl_vector_complex * v;
double d;
@@ -1560,7 +1555,7 @@ static VALUE rb_gsl_vector_complex_d_stats_v(VALUE obj,
* (e.g. tss_m, variance_m, sd_m, variance_fm, sd_fm)
*/
static VALUE rb_gsl_vector_complex_d_stats_v_z(VALUE obj, VALUE arg,
- double (*func)(gsl_vector_complex*, gsl_complex))
+ double (*func)(gsl_vector_complex*, gsl_complex))
{
gsl_vector_complex * v;
gsl_complex z;
@@ -1773,58 +1768,58 @@ static VALUE rb_gsl_vector_complex_concat(VALUE obj, VALUE other)
Data_Get_Struct(obj, gsl_vector_complex, v);
switch(TYPE(other)) {
- case T_FIXNUM:
- case T_BIGNUM:
- case T_FLOAT:
+ case T_FIXNUM:
+ case T_BIGNUM:
+ case T_FLOAT:
+ vnew = gsl_vector_complex_alloc(v->size + 1);
+ vv = gsl_vector_complex_subvector(vnew, 0, v->size);
+ gsl_vector_complex_memcpy(&vv.vector, v);
+ gsl_vector_complex_set(vnew, v->size, rb_gsl_obj_to_gsl_complex(other, NULL));
+ break;
+
+ case T_ARRAY:
+ size2 = RARRAY_LEN(other);
+ vnew = gsl_vector_complex_alloc(v->size + size2);
+ vv = gsl_vector_complex_subvector(vnew, 0, v->size);
+ gsl_vector_complex_memcpy(&vv.vector, v);
+ for (i = 0; i < size2; i++) {
+ x = rb_ary_entry(other, i);
+ gsl_vector_complex_set(vnew, v->size + i, rb_gsl_obj_to_gsl_complex(x, NULL));
+ }
+ break;
+
+ default:
+ if(rb_obj_is_kind_of(other, cgsl_complex)) {
vnew = gsl_vector_complex_alloc(v->size + 1);
vv = gsl_vector_complex_subvector(vnew, 0, v->size);
gsl_vector_complex_memcpy(&vv.vector, v);
gsl_vector_complex_set(vnew, v->size, rb_gsl_obj_to_gsl_complex(other, NULL));
- break;
-
- case T_ARRAY:
- size2 = RARRAY_LEN(other);
+ } else if(rb_obj_is_kind_of(other, rb_cRange)) {
+ get_range_beg_en_n(other, &beg, &end, &size2, &step);
vnew = gsl_vector_complex_alloc(v->size + size2);
vv = gsl_vector_complex_subvector(vnew, 0, v->size);
gsl_vector_complex_memcpy(&vv.vector, v);
+ GSL_SET_COMPLEX(&tmp, beg, 0.0);
for (i = 0; i < size2; i++) {
- x = rb_ary_entry(other, i);
- gsl_vector_complex_set(vnew, v->size + i, rb_gsl_obj_to_gsl_complex(x, NULL));
+ gsl_vector_complex_set(vnew, v->size + i, tmp);
+ GSL_SET_REAL(&tmp, GSL_REAL(tmp) + step);
}
- break;
-
- default:
- if(rb_obj_is_kind_of(other, cgsl_complex)) {
- vnew = gsl_vector_complex_alloc(v->size + 1);
- vv = gsl_vector_complex_subvector(vnew, 0, v->size);
- gsl_vector_complex_memcpy(&vv.vector, v);
- gsl_vector_complex_set(vnew, v->size, rb_gsl_obj_to_gsl_complex(other, NULL));
- } else if(rb_obj_is_kind_of(other, rb_cRange)) {
- get_range_beg_en_n(other, &beg, &end, &size2, &step);
- vnew = gsl_vector_complex_alloc(v->size + size2);
- vv = gsl_vector_complex_subvector(vnew, 0, v->size);
- gsl_vector_complex_memcpy(&vv.vector, v);
- GSL_SET_COMPLEX(&tmp, beg, 0.0);
- for (i = 0; i < size2; i++) {
- gsl_vector_complex_set(vnew, v->size + i, tmp);
- GSL_SET_REAL(&tmp, GSL_REAL(tmp) + step);
- }
- } else if (rb_obj_is_kind_of(other, cgsl_vector_complex)) {
- Data_Get_Struct(other, gsl_vector_complex, v2);
- size2 = v2->size;
- vnew = gsl_vector_complex_alloc(v->size + size2);
- vv = gsl_vector_complex_subvector(vnew, 0, v->size);
- gsl_vector_complex_memcpy(&vv.vector, v);
- vv = gsl_vector_complex_subvector(vnew, v->size, size2);
- gsl_vector_complex_memcpy(&vv.vector, v2);
- } else {
- rb_raise(rb_eTypeError, "wrong argument type %s (Array, Numeric, Range, GSL::Complex, or %s expected)",
- rb_class2name(CLASS_OF(other)), rb_class2name(cgsl_vector_complex));
- }
- break;
+ } else if (rb_obj_is_kind_of(other, cgsl_vector_complex)) {
+ Data_Get_Struct(other, gsl_vector_complex, v2);
+ size2 = v2->size;
+ vnew = gsl_vector_complex_alloc(v->size + size2);
+ vv = gsl_vector_complex_subvector(vnew, 0, v->size);
+ gsl_vector_complex_memcpy(&vv.vector, v);
+ vv = gsl_vector_complex_subvector(vnew, v->size, size2);
+ gsl_vector_complex_memcpy(&vv.vector, v2);
+ } else {
+ rb_raise(rb_eTypeError, "wrong argument type %s (Array, Numeric, Range, GSL::Complex, or %s expected)",
+ rb_class2name(CLASS_OF(other)), rb_class2name(cgsl_vector_complex));
+ }
+ break;
}
- return Data_Wrap_Struct(VECTOR_COMPLEX_ROW_COL(obj), 0, gsl_vector_complex_free, vnew);
+ return Data_Wrap_Struct(VECTOR_COMPLEX_ROW_COL(obj), 0, gsl_vector_complex_free, vnew);
}
static VALUE rb_gsl_vector_complex_block(VALUE obj)
@@ -1958,7 +1953,7 @@ static VALUE rb_gsl_vector_complex_zip(int argc, VALUE *argv, VALUE obj)
argv2 = argv;
} else {
if (argc < 1) rb_raise(rb_eArgError, "Too few arguments.");
- Data_Get_Struct(argv[0], gsl_vector_complex, v0);
+ Data_Get_Struct(argv[0], gsl_vector_complex, v0);
argc2 = argc - 1;
argv2 = argv + 1;
}
@@ -1975,14 +1970,13 @@ static VALUE rb_gsl_vector_complex_zip(int argc, VALUE *argv, VALUE obj)
gsl_vector_complex_set(vnew, 0, gsl_vector_complex_get(v0, i));
for (j = 0; (int) j < argc2; j++) {
if (i < vp[j]->size) {
- gsl_vector_complex_set(vnew, j+1, gsl_vector_complex_get(vp[j], i));
+ gsl_vector_complex_set(vnew, j+1, gsl_vector_complex_get(vp[j], i));
} else {
- gsl_vector_complex_set(vnew, j+1, zzero);
+ gsl_vector_complex_set(vnew, j+1, zzero);
}
}
rb_ary_store(ary, i, Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, vnew));
}
-
free((gsl_vector_complex**) vp);
return ary;
}
@@ -1991,7 +1985,7 @@ static VALUE rb_gsl_vector_complex_zip(int argc, VALUE *argv, VALUE obj)
// function, but it only determines absolute equality (i.e. is has no epsilon
// argument).
static int gsl_vector_complex_equal_eps(const gsl_vector_complex *v1,
- const gsl_vector_complex *v2, double eps)
+ const gsl_vector_complex *v2, double eps)
{
gsl_complex z1, z2;
size_t i;
@@ -2002,7 +1996,7 @@ static int gsl_vector_complex_equal_eps(const gsl_vector_complex *v1,
if (!rbgsl_complex_equal(&z1, &z2, eps)) return 0;
}
return 1;
-
+
}
static VALUE rb_gsl_vector_complex_equal(int argc, VALUE *argv, VALUE obj)
@@ -2043,8 +2037,8 @@ void Init_gsl_vector_complex(VALUE module)
rb_define_singleton_method(cgsl_vector_complex, "alloc", rb_gsl_vector_complex_new, -1);
rb_define_singleton_method(cgsl_vector_complex, "calloc", rb_gsl_vector_complex_calloc, 1);
- rb_define_singleton_method(cgsl_vector_complex_col, "new",
- rb_gsl_vector_complex_row_new, -1);
+ rb_define_singleton_method(cgsl_vector_complex_col, "new",
+ rb_gsl_vector_complex_row_new, -1);
rb_define_method(cgsl_vector_complex, "size", rb_gsl_vector_complex_size, 0);
rb_define_alias(cgsl_vector_complex, "len", "size");
@@ -2103,7 +2097,7 @@ void Init_gsl_vector_complex(VALUE module)
rb_define_method(cgsl_vector_complex, "subvector", rb_gsl_vector_complex_subvector, -1);
rb_define_alias(cgsl_vector_complex, "view", "subvector");
rb_define_method(cgsl_vector_complex, "subvector_with_stride", rb_gsl_vector_complex_subvector_with_stride, 3);
-
+
rb_define_singleton_method(cgsl_vector_complex, "memcpy", rb_gsl_vector_complex_memcpy, 2);
rb_define_method(cgsl_vector_complex, "clone", rb_gsl_vector_complex_clone, 0);
rb_define_alias(cgsl_vector_complex, "duplicate", "clone");
@@ -2132,17 +2126,17 @@ void Init_gsl_vector_complex(VALUE module)
rb_define_alias(cgsl_vector_complex_col, "row", "trans");
rb_define_alias(cgsl_vector_complex_col, "row!", "trans!");
- /*****/
+ /*****/
rb_define_method(cgsl_vector_complex, "to_real", rb_gsl_vector_complex_to_real, 0);
- rb_define_method(cgsl_vector_complex, "add", rb_gsl_vector_complex_add, 1);
- rb_define_method(cgsl_vector_complex, "sub", rb_gsl_vector_complex_sub, 1);
- rb_define_method(cgsl_vector_complex, "mul", rb_gsl_vector_complex_mul, 1);
- rb_define_method(cgsl_vector_complex, "div", rb_gsl_vector_complex_div, 1);
- rb_define_method(cgsl_vector_complex, "add!", rb_gsl_vector_complex_add_bang, 1);
- rb_define_method(cgsl_vector_complex, "sub!", rb_gsl_vector_complex_sub_bang, 1);
- rb_define_method(cgsl_vector_complex, "mul!", rb_gsl_vector_complex_mul_bang, 1);
- rb_define_method(cgsl_vector_complex, "div!", rb_gsl_vector_complex_div_bang, 1);
+ rb_define_method(cgsl_vector_complex, "add", rb_gsl_vector_complex_add, 1);
+ rb_define_method(cgsl_vector_complex, "sub", rb_gsl_vector_complex_sub, 1);
+ rb_define_method(cgsl_vector_complex, "mul", rb_gsl_vector_complex_mul, 1);
+ rb_define_method(cgsl_vector_complex, "div", rb_gsl_vector_complex_div, 1);
+ rb_define_method(cgsl_vector_complex, "add!", rb_gsl_vector_complex_add_bang, 1);
+ rb_define_method(cgsl_vector_complex, "sub!", rb_gsl_vector_complex_sub_bang, 1);
+ rb_define_method(cgsl_vector_complex, "mul!", rb_gsl_vector_complex_mul_bang, 1);
+ rb_define_method(cgsl_vector_complex, "div!", rb_gsl_vector_complex_div_bang, 1);
rb_define_alias(cgsl_vector_complex, "+", "add");
rb_define_alias(cgsl_vector_complex, "add_constant", "add");
@@ -2153,7 +2147,7 @@ void Init_gsl_vector_complex(VALUE module)
rb_define_alias(cgsl_vector_complex, "scale!", "mul!");
rb_define_alias(cgsl_vector_complex, "/", "div");
- rb_define_method(cgsl_vector_complex, "coerce", rb_gsl_vector_complex_coerce, 1);
+ rb_define_method(cgsl_vector_complex, "coerce", rb_gsl_vector_complex_coerce, 1);
/* 2.Aug.2004 */
rb_define_singleton_method(cgsl_vector_complex, "inner_product", rb_gsl_vector_complex_inner_product, -1);
@@ -2238,10 +2232,10 @@ void Init_gsl_vector_complex(VALUE module)
rb_define_method(cgsl_vector_complex, "zip", rb_gsl_vector_complex_zip, -1);
rb_define_singleton_method(cgsl_vector_complex, "zip", rb_gsl_vector_complex_zip, -1);
-
+
rb_define_method(cgsl_vector_complex, "equal?", rb_gsl_vector_complex_equal, -1);
rb_define_alias(cgsl_vector_complex, "==", "equal?");
rb_define_method(cgsl_vector_complex, "not_equal?", rb_gsl_vector_complex_not_equal, -1);
- rb_define_alias(cgsl_vector_complex, "!=", "not_equal?");
+ rb_define_alias(cgsl_vector_complex, "!=", "not_equal?");
}
diff --git a/ext/gsl/vector_double.c b/ext/gsl_native/vector_double.c
similarity index 85%
rename from ext/gsl/vector_double.c
rename to ext/gsl_native/vector_double.c
index 894489d..1c022d2 100644
--- a/ext/gsl/vector_double.c
+++ b/ext/gsl_native/vector_double.c
@@ -14,9 +14,7 @@
#include "include/rb_gsl_histogram.h"
#include "include/rb_gsl_complex.h"
#include "include/rb_gsl_poly.h"
-#ifdef HAVE_NARRAY_H
#include "include/rb_gsl_with_narray.h"
-#endif
VALUE rb_gsl_vector_inner_product(int argc, VALUE *argv, VALUE obj);
static VALUE rb_gsl_vector_product_to_m(int argc, VALUE *argv, VALUE obj);
@@ -24,7 +22,7 @@ VALUE rb_gsl_vector_int_to_f(VALUE obj);
VALUE rb_ary_to_gv(VALUE klass, VALUE ary);
static VALUE rb_gsl_vector_Xspace(double min, double max, int i,
- gsl_vector* (*f)(const double, const double, const size_t))
+ gsl_vector* (*f)(const double, const double, const size_t))
{
gsl_vector *v = NULL;
size_t n;
@@ -35,8 +33,8 @@ static VALUE rb_gsl_vector_Xspace(double min, double max, int i,
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, v);
}
-static gsl_vector* gsl_vector_linspace(const double min,
- const double max, const size_t n)
+static gsl_vector* gsl_vector_linspace(const double min,
+ const double max, const size_t n)
{
gsl_vector *v = NULL;
double dx;
@@ -53,8 +51,8 @@ static gsl_vector* gsl_vector_linspace(const double min,
return v;
}
-static gsl_vector* gsl_vector_logspace(const double min,
- const double max, const size_t n)
+static gsl_vector* gsl_vector_logspace(const double min,
+ const double max, const size_t n)
{
gsl_vector *v = NULL;
double dx;
@@ -86,9 +84,9 @@ static VALUE rb_gsl_vector_linspace(int argc, VALUE *argv, VALUE klass)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
break;
}
- Need_Float(argv[0]); Need_Float(argv[1]);
+ Need_Float(argv[0]); Need_Float(argv[1]);
return rb_gsl_vector_Xspace(NUM2DBL(argv[0]), NUM2DBL(argv[1]), n,
- gsl_vector_linspace);
+ gsl_vector_linspace);
}
static VALUE rb_gsl_vector_logspace(int argc, VALUE *argv, VALUE klass)
@@ -106,9 +104,9 @@ static VALUE rb_gsl_vector_logspace(int argc, VALUE *argv, VALUE klass)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
break;
}
- Need_Float(argv[0]); Need_Float(argv[1]);
+ Need_Float(argv[0]); Need_Float(argv[1]);
return rb_gsl_vector_Xspace(NUM2DBL(argv[0]), NUM2DBL(argv[1]), n,
- gsl_vector_logspace);
+ gsl_vector_logspace);
}
static VALUE rb_gsl_vector_logspace2(int argc, VALUE *argv, VALUE klass)
@@ -126,10 +124,10 @@ static VALUE rb_gsl_vector_logspace2(int argc, VALUE *argv, VALUE klass)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
break;
}
- Need_Float(argv[0]); Need_Float(argv[1]);
- return rb_gsl_vector_Xspace(log10(NUM2DBL(argv[0])),
- log10(NUM2DBL(argv[1])), n,
- gsl_vector_logspace);
+ Need_Float(argv[0]); Need_Float(argv[1]);
+ return rb_gsl_vector_Xspace(log10(NUM2DBL(argv[0])),
+ log10(NUM2DBL(argv[1])), n,
+ gsl_vector_logspace);
}
/********************************************************/
@@ -144,7 +142,7 @@ enum {
GSL_VECTOR_DIV,
};
-static VALUE rb_gsl_vector_arithmetics(int flag, VALUE obj, VALUE bb)
+static VALUE rb_gsl_vector_arithmetics(int flag, VALUE obj, VALUE bb)
{
gsl_vector *v = NULL, *vnew = NULL, *b = NULL;
gsl_vector_complex *cvnew = NULL, *cb = NULL;
@@ -171,9 +169,9 @@ static VALUE rb_gsl_vector_arithmetics(int flag, VALUE obj, VALUE bb)
gsl_vector_scale(vnew, 1.0/NUM2DBL(bb));
break;
}
- if (!VECTOR_VIEW_P(obj))
+ if (!VECTOR_VIEW_P(obj))
return Data_Wrap_Struct(CLASS_OF(obj), 0, gsl_vector_free, vnew);
- else
+ else
return Data_Wrap_Struct(VECTOR_ROW_COL(obj), 0, gsl_vector_free, vnew);
break;
default:
@@ -182,68 +180,68 @@ static VALUE rb_gsl_vector_arithmetics(int flag, VALUE obj, VALUE bb)
Data_Get_Struct(bb, gsl_vector, b);
switch (flag) {
case GSL_VECTOR_ADD:
- vnew = make_vector_clone(v);
- gsl_vector_add(vnew, b);
- break;
+ vnew = make_vector_clone(v);
+ gsl_vector_add(vnew, b);
+ break;
case GSL_VECTOR_SUB:
- vnew = make_vector_clone(v);
- gsl_vector_sub(vnew, b);
- break;
+ vnew = make_vector_clone(v);
+ gsl_vector_sub(vnew, b);
+ break;
case GSL_VECTOR_MUL:
- vnew = make_vector_clone(v);
- gsl_vector_mul(vnew, b);
- break;
+ vnew = make_vector_clone(v);
+ gsl_vector_mul(vnew, b);
+ break;
case GSL_VECTOR_DIV:
- vnew = make_vector_clone(v);
- gsl_vector_div(vnew, b);
- break;
+ vnew = make_vector_clone(v);
+ gsl_vector_div(vnew, b);
+ break;
}
- if (!VECTOR_VIEW_P(obj))
- return Data_Wrap_Struct(CLASS_OF(obj), 0, gsl_vector_free, vnew);
- else
- return Data_Wrap_Struct(VECTOR_ROW_COL(obj), 0, gsl_vector_free, vnew);
+ if (!VECTOR_VIEW_P(obj))
+ return Data_Wrap_Struct(CLASS_OF(obj), 0, gsl_vector_free, vnew);
+ else
+ return Data_Wrap_Struct(VECTOR_ROW_COL(obj), 0, gsl_vector_free, vnew);
} else if (VECTOR_COMPLEX_P(bb)) {
Data_Get_Struct(bb, gsl_vector_complex, cb);
cvnew = vector_to_complex(v);
switch (flag) {
case GSL_VECTOR_ADD:
- gsl_vector_complex_add(cvnew, cb);
- break;
+ gsl_vector_complex_add(cvnew, cb);
+ break;
case GSL_VECTOR_SUB:
- gsl_vector_complex_sub(cvnew, cb);
- break;
+ gsl_vector_complex_sub(cvnew, cb);
+ break;
case GSL_VECTOR_MUL:
- gsl_vector_complex_mul(cvnew, cb);
- break;
+ gsl_vector_complex_mul(cvnew, cb);
+ break;
case GSL_VECTOR_DIV:
- gsl_vector_complex_div(cvnew, cb);
- break;
+ gsl_vector_complex_div(cvnew, cb);
+ break;
}
if (VECTOR_COL_P(obj))
- return Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cvnew);
+ return Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cvnew);
else
- return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cvnew);
+ return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cvnew);
} else if (COMPLEX_P(bb)) {
Data_Get_Struct(bb, gsl_complex, c);
cvnew = vector_to_complex(v);
switch (flag) {
case GSL_VECTOR_ADD:
- gsl_vector_complex_add_constant(cvnew, *c);
- break;
+ gsl_vector_complex_add_constant(cvnew, *c);
+ break;
case GSL_VECTOR_SUB:
- gsl_vector_complex_add_constant(cvnew, gsl_complex_negative(*c));
- break;
+ gsl_vector_complex_add_constant(cvnew, gsl_complex_negative(*c));
+ break;
case GSL_VECTOR_MUL:
- gsl_vector_complex_scale(cvnew, *c);
- break;
+ gsl_vector_complex_scale(cvnew, *c);
+ break;
case GSL_VECTOR_DIV:
- gsl_vector_complex_scale(cvnew, gsl_complex_inverse(*c));
- break;
+ gsl_vector_complex_scale(cvnew, gsl_complex_inverse(*c));
+ break;
}
- if (VECTOR_COL_P(obj))
- return Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cvnew);
+ if (VECTOR_COL_P(obj))
+ return Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cvnew);
else
- return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cvnew);
+ return Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cvnew);
} else {
rb_raise(rb_eTypeError, "wrong type argument %s", rb_class2name(CLASS_OF(bb)));
}
@@ -412,17 +410,17 @@ static VALUE rb_gsl_vector_coerce(VALUE obj, VALUE other)
cv = gsl_vector_complex_alloc(v->size);
if (cv == NULL) rb_raise(rb_eNoMemError, "gsl_vector_alloc failed");
gsl_vector_complex_set_all(cv, *c);
- if (VECTOR_ROW_P(obj))
- vv = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cv);
+ if (VECTOR_ROW_P(obj))
+ vv = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cv);
else
- vv = Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cv);
+ vv = Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cv);
return rb_ary_new3(2, vv, obj);
} else if (VECTOR_COMPLEX_P(other)) {
cv = vector_to_complex(v);
- if (VECTOR_ROW_P(obj))
- vv = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cv);
+ if (VECTOR_ROW_P(obj))
+ vv = Data_Wrap_Struct(cgsl_vector_complex, 0, gsl_vector_complex_free, cv);
else
- vv = Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cv);
+ vv = Data_Wrap_Struct(cgsl_vector_complex_col, 0, gsl_vector_complex_free, cv);
return rb_ary_new3(2, other, vv);
} else {
rb_raise(rb_eTypeError, "cannot coerced");
@@ -442,25 +440,25 @@ static VALUE rb_gsl_vector_product_to_m(int argc, VALUE *argv, VALUE obj)
case T_CLASS:
case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
if (!VECTOR_COL_P(argv[0]))
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Vector::Col expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
if (!VECTOR_ROW_P(argv[1]))
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Vector expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_class2name(CLASS_OF(argv[1])));
Data_Get_Struct(argv[0], gsl_vector, v);
Data_Get_Struct(argv[1], gsl_vector, v2);
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
if (!VECTOR_COL_P(obj))
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Vector::Col expected)",
- rb_class2name(CLASS_OF(obj)));
+ rb_class2name(CLASS_OF(obj)));
if (!VECTOR_ROW_P(argv[0]))
rb_raise(rb_eTypeError, "wrong argument type %s (GSL::Vector expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
Data_Get_Struct(obj, gsl_vector, v);
Data_Get_Struct(argv[0], gsl_vector, v2);
break;
@@ -491,7 +489,7 @@ VALUE rb_gsl_vector_to_i(VALUE obj)
val = (int) gsl_vector_get(v, i);
gsl_vector_int_set(vi, i, val);
}
- if (VECTOR_COL_P(obj))
+ if (VECTOR_COL_P(obj))
return Data_Wrap_Struct(cgsl_vector_int_col, 0, gsl_vector_int_free, vi);
else
return Data_Wrap_Struct(cgsl_vector_int, 0, gsl_vector_int_free, vi);
@@ -503,9 +501,21 @@ static void draw_hist(VALUE obj, FILE *fp);
static void draw_vector(VALUE obj, FILE *fp);
static void draw_vector2(VALUE xx, VALUE yy, FILE *fp);
static void draw_vector_array(VALUE ary, FILE *fp);
+
#ifdef HAVE_NARRAY_H
-static void draw_narray(VALUE obj, FILE *fp);
+static void draw_narray(VALUE obj, FILE *fp)
+{
+ struct NARRAY *na;
+ double *ptr;
+ size_t j;
+ GetNArray(obj, na);
+ ptr = (double *) na->ptr;
+ for (j = 0; j < na->total; j++)
+ fprintf(fp, "%d %g\n", (int) j, ptr[j]);
+ fflush(fp);
+}
#endif // HAVE_NARRAY_H
+
#endif // HAVE_GNU_GRAPH
static VALUE rb_gsl_vector_graph2(int argc, VALUE *argv, VALUE obj)
@@ -520,7 +530,6 @@ static VALUE rb_gsl_vector_graph2(int argc, VALUE *argv, VALUE obj)
FILE *fp = NULL;
if (argc < 1)
rb_raise(rb_eArgError, "two few arguments");
-
if (TYPE(argv[argc-1]) == T_STRING) {
sprintf(command, "graph -T X %s", STR2CSTR(argv[argc-1]));
iend = argc-1;
@@ -528,7 +537,6 @@ static VALUE rb_gsl_vector_graph2(int argc, VALUE *argv, VALUE obj)
strcpy(command, "graph -T X -C -g 3");
iend = argc;
}
-
if (iend == 1) {
fp = popen(command, "w");
if (fp == NULL) rb_raise(rb_eIOError, "GNU graph not found.");
@@ -544,8 +552,8 @@ static VALUE rb_gsl_vector_graph2(int argc, VALUE *argv, VALUE obj)
#endif
} else {
if (fp) pclose(fp);
- rb_raise(rb_eTypeError, "wrong argument type %s",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_raise(rb_eTypeError, "wrong argument type %s",
+ rb_class2name(CLASS_OF(argv[0])));
}
if (fp) pclose(fp);
return Qtrue;
@@ -562,7 +570,7 @@ static VALUE rb_gsl_vector_graph2(int argc, VALUE *argv, VALUE obj)
x = gsl_vector_alloc(h->n);
n = x->size;
for (j = 0; j < x->size; j++)
- gsl_vector_set(x, j, h->range[j]);
+ gsl_vector_set(x, j, h->range[j]);
flag = 1;
draw_hist(argv[0], fp);
fprintf(fp, "\n");
@@ -578,26 +586,26 @@ static VALUE rb_gsl_vector_graph2(int argc, VALUE *argv, VALUE obj)
} else if (NIL_P(argv[0])) {
if (argc < 2) rb_raise(rb_eArgError, "too few arguments");
if (VECTOR_P(argv[1])) {
- Data_Get_Struct(argv[1], gsl_vector, y);
- n = y->size;
+ Data_Get_Struct(argv[1], gsl_vector, y);
+ n = y->size;
} else if (HISTOGRAM_P(argv[1])) {
- Data_Get_Struct(argv[1], gsl_histogram, h);
- n = h->n;
+ Data_Get_Struct(argv[1], gsl_histogram, h);
+ n = h->n;
#ifdef HAVE_NARRAY_H
} else if (NA_IsNArray(argv[1])) {
- n = NA_TOTAL(argv[1]);
+ n = NA_TOTAL(argv[1]);
#endif
} else {
- rb_raise(rb_eTypeError, "wrong argument type %s",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_raise(rb_eTypeError, "wrong argument type %s",
+ rb_class2name(CLASS_OF(argv[0])));
}
x = gsl_vector_alloc(n);
for (j = 0; j < n; j++) gsl_vector_set(x, j, (double) j);
flag = 1;
} else {
if (fp) pclose(fp);
- rb_raise(rb_eTypeError, "wrong argument type %s",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_raise(rb_eTypeError, "wrong argument type %s",
+ rb_class2name(CLASS_OF(argv[0])));
}
if (flag == 1) vx = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, x);
for (i = 1; i < iend; i++) {
@@ -607,9 +615,9 @@ static VALUE rb_gsl_vector_graph2(int argc, VALUE *argv, VALUE obj)
#ifdef HAVE_NARRAY_H
else if (NA_IsNArray(argv[i])) draw_vector2(vx, argv[i], fp);
#endif
- else
- rb_raise(rb_eTypeError, "wrong argument type %s",
- rb_class2name(CLASS_OF(argv[i])));
+ else
+ rb_raise(rb_eTypeError, "wrong argument type %s",
+ rb_class2name(CLASS_OF(argv[i])));
fprintf(fp, "\n");
fflush(fp);
}
@@ -636,9 +644,6 @@ static void draw_vector(VALUE obj, FILE *fp)
static void draw_vector2(VALUE xx, VALUE yy, FILE *fp)
{
-#ifdef HAVE_NARRAY_H
- struct NARRAY *nax, *nay;
-#endif // HAVE_NARRAY_H
double *ptr1 = NULL, *ptr2 = NULL;
gsl_vector *vx, *vy;
size_t j, n, stridex = 1, stridey = 1;
@@ -649,6 +654,7 @@ static void draw_vector2(VALUE xx, VALUE yy, FILE *fp)
stridex = vx->stride;
#ifdef HAVE_NARRAY_H
} else if (NA_IsNArray(xx)) {
+ struct NARRAY *nax;
GetNArray(xx, nax);
ptr1 = (double *) nax->ptr;
n = nax->total;
@@ -656,7 +662,7 @@ static void draw_vector2(VALUE xx, VALUE yy, FILE *fp)
#endif // HAVE_NARRAY_H
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Vector expected)",
- rb_class2name(CLASS_OF(xx)));
+ rb_class2name(CLASS_OF(xx)));
}
if (VECTOR_P(yy)) {
Data_Get_Struct(yy, gsl_vector, vy);
@@ -665,41 +671,28 @@ static void draw_vector2(VALUE xx, VALUE yy, FILE *fp)
stridey = vy->stride;
#ifdef HAVE_NARRAY_H
} else if (NA_IsNArray(yy)) {
+ struct NARRAY *nay;
GetNArray(yy, nay);
ptr2 = (double *) nay->ptr;
stridey = 1;
#endif // HAVE_NARRAY_H
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Vector expected)",
- rb_class2name(CLASS_OF(yy)));
+ rb_class2name(CLASS_OF(yy)));
}
for (j = 0; j < n; j++)
fprintf(fp, "%g %g\n", ptr1[j*stridex], ptr2[j*stridey]);
fflush(fp);
}
-#ifdef HAVE_NARRAY_H
-static void draw_narray(VALUE obj, FILE *fp)
-{
- struct NARRAY *na;
- double *ptr;
- size_t j;
- GetNArray(obj, na);
- ptr = (double *) na->ptr;
- for (j = 0; j < na->total; j++)
- fprintf(fp, "%d %g\n", (int) j, ptr[j]);
- fflush(fp);
-}
-#endif // HAVE_NARRAY_H
-
static void draw_hist(VALUE obj, FILE *fp)
{
gsl_histogram *h = NULL;
size_t j;
Data_Get_Struct(obj, gsl_histogram, h);
for (j = 0; j < h->n; j++) {
- fprintf(fp, "%g %g\n%g %g\n",
- h->range[j], h->bin[j], h->range[j+1], h->bin[j]);
+ fprintf(fp, "%g %g\n%g %g\n",
+ h->range[j], h->bin[j], h->range[j+1], h->bin[j]);
}
fflush(fp);
}
@@ -718,7 +711,7 @@ static void draw_vector_array(VALUE ary, FILE *fp)
case 2:
ptry = get_vector_ptr(rb_ary_entry(ary, 1), &stridey, &n);
vx = rb_ary_entry(ary, 0);
- if (NIL_P(vx)) {flag = 1;}
+ if (NIL_P(vx)) {flag = 1; }
else {
ptrx = get_vector_ptr(vx, &stridex, &n);
}
@@ -727,32 +720,32 @@ static void draw_vector_array(VALUE ary, FILE *fp)
ptrz = get_vector_ptr(rb_ary_entry(ary, 2), &stridez, &n);
ptry = get_vector_ptr(rb_ary_entry(ary, 1), &stridey, &n);
vx = rb_ary_entry(ary, 0);
- if (NIL_P(vx)) {flag = 2;}
+ if (NIL_P(vx)) {flag = 2; }
else {
ptrx = get_vector_ptr(vx, &stridex, &n);
flag = 3;
}
break;
default:
- rb_raise(rb_eRuntimeError, "wrong array length (%d for 1 or 2)",
- (int) RARRAY_LEN(ary));
+ rb_raise(rb_eRuntimeError, "wrong array length (%d for 1 or 2)",
+ (int) RARRAY_LEN(ary));
break;
}
switch (flag) {
case 0:
- for (j = 0; j < n; j++)
+ for (j = 0; j < n; j++)
fprintf(fp, "%g %g\n", ptrx[j*stridex], ptry[j*stridey]);
break;
case 1:
- for (j = 0; j < n; j++)
+ for (j = 0; j < n; j++)
fprintf(fp, "%d %g\n", (int) j, ptry[j*stridey]);
break;
case 2:
- for (j = 0; j < n; j++)
+ for (j = 0; j < n; j++)
fprintf(fp, "%d %g %g\n", (int) j, ptry[j*stridey], ptrz[j*stridez]);
break;
case 3:
- for (j = 0; j < n; j++)
+ for (j = 0; j < n; j++)
fprintf(fp, "%g %g %g\n", ptrx[j*stridex], ptry[j*stridey], ptrz[j*stridez]);
break;
default:
@@ -776,7 +769,7 @@ static VALUE rb_gsl_vector_plot2(int argc, VALUE *argv, VALUE obj)
case 5:
if (TYPE(argv[4]) == T_STRING)
sprintf(command, "%s %s", command, STR2CSTR(argv[4]));
- /* no break */
+ /* no break */
case 4:
if (TYPE(argv[3]) == T_STRING) {
sprintf(command, "%s %s", command, STR2CSTR(argv[3]));
@@ -784,9 +777,9 @@ static VALUE rb_gsl_vector_plot2(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(argv[3], gsl_vector, yerr);
} else {
rb_raise(rb_eTypeError, "argv[3] wrong type %s (String or Vector expected)",
- rb_class2name(CLASS_OF(argv[3])));
+ rb_class2name(CLASS_OF(argv[3])));
}
- /* no break */
+ /* no break */
case 3:
if (TYPE(argv[2]) == T_STRING) {
sprintf(command, "%s %s", command, STR2CSTR(argv[2]));
@@ -794,9 +787,9 @@ static VALUE rb_gsl_vector_plot2(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(argv[2], gsl_vector, xerr);
} else {
rb_raise(rb_eTypeError, "argv[2] wrong type %s (String or Vector expected)",
- rb_class2name(CLASS_OF(argv[2])));
+ rb_class2name(CLASS_OF(argv[2])));
}
- /* no break */
+ /* no break */
case 2:
if (TYPE(argv[1]) == T_STRING) {
sprintf(command, "%s %s", command, STR2CSTR(argv[1]));
@@ -804,9 +797,9 @@ static VALUE rb_gsl_vector_plot2(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(argv[1], gsl_vector, y);
} else {
rb_raise(rb_eTypeError, "argv[1] wrong type %s (String or Vector expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_class2name(CLASS_OF(argv[1])));
}
- /* no break */
+ /* no break */
case 1:
if (TYPE(argv[0]) == T_STRING) {
sprintf(command, "%s %s", command, STR2CSTR(argv[0]));
@@ -814,7 +807,7 @@ static VALUE rb_gsl_vector_plot2(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(argv[0], gsl_vector, x);
} else {
rb_raise(rb_eTypeError, "argv[0] wrong type %s (String or Vector expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
}
break;
default:
@@ -825,16 +818,16 @@ static VALUE rb_gsl_vector_plot2(int argc, VALUE *argv, VALUE obj)
n = x->size;
fprintf(fp, "%s\n", command);
for (i = 0; i < n; i++) {
- if (y == NULL)
+ if (y == NULL)
fprintf(fp, "%d %g\n", (int) i, gsl_vector_get(x, i));
else if (yerr == NULL)
fprintf(fp, "%g %g\n", gsl_vector_get(x, i), gsl_vector_get(y, i));
- else if (xerr)
+ else if (xerr)
fprintf(fp, "%g %g %g %g\n", gsl_vector_get(x, i), gsl_vector_get(y, i),
- gsl_vector_get(xerr, i), gsl_vector_get(yerr, i));
+ gsl_vector_get(xerr, i), gsl_vector_get(yerr, i));
else
- fprintf(fp, "%g %g %g\n", gsl_vector_get(x, i), gsl_vector_get(y, i),
- gsl_vector_get(yerr, i));
+ fprintf(fp, "%g %g %g\n", gsl_vector_get(x, i), gsl_vector_get(y, i),
+ gsl_vector_get(yerr, i));
}
fprintf(fp, "e\n");
fflush(fp);
@@ -864,10 +857,10 @@ static VALUE rb_gsl_vector_normalize(int argc, VALUE *argv, VALUE obj)
vnew = make_vector_clone(v);
/* mean = gsl_stats_mean(v->data, v->stride, v->size);
gsl_vector_add_constant(vnew, -mean);
- sd = gsl_stats_sd(vnew->data, vnew->stride, vnew->size);
+ sd = gsl_stats_sd(vnew->data, vnew->stride, vnew->size);
gsl_vector_scale(vnew, sqrt(nrm)/sd);*/
gsl_vector_scale(vnew, nrm/gsl_blas_dnrm2(v));
- return Data_Wrap_Struct(VECTOR_ROW_COL(obj), 0, gsl_vector_free, vnew);
+ return Data_Wrap_Struct(VECTOR_ROW_COL(obj), 0, gsl_vector_free, vnew);
}
static VALUE rb_gsl_vector_normalize_bang(int argc, VALUE *argv, VALUE obj)
@@ -891,7 +884,7 @@ static VALUE rb_gsl_vector_normalize_bang(int argc, VALUE *argv, VALUE obj)
Data_Get_Vector(obj, v);
/* mean = gsl_stats_mean(v->data, v->stride, v->size);
gsl_vector_add_constant(v, -mean);
- sd = gsl_stats_sd(v->data, v->stride, v->size);
+ sd = gsl_stats_sd(v->data, v->stride, v->size);
gsl_vector_scale(v, sqrt(nrm)/sd);*/
factor = nrm/gsl_blas_dnrm2(v);
gsl_vector_scale(v, factor);
@@ -941,7 +934,7 @@ static VALUE rb_gsl_vector_filescan_na(VALUE klass, VALUE file)
for (j = 0; j < n; j++) {
p = str_scan_double(p, &val);
if (p) ptr[j][i] = val;
- else break;
+ else break;
}
}
fclose(fp);
@@ -958,9 +951,9 @@ static VALUE rb_gsl_vector_decimate(VALUE obj, VALUE nn)
CHECK_FIXNUM(nn);
Data_Get_Vector(obj, v);
n = (size_t) FIX2INT(nn);
- if (n > v->size)
- rb_raise(rb_eArgError,
- "decimation factor must be smaller than the vector length.");
+ if (n > v->size)
+ rb_raise(rb_eArgError,
+ "decimation factor must be smaller than the vector length.");
if (n == 0) rb_raise(rb_eArgError, "decimation factor must be greater than 1");
n2 = (size_t) ceil((double)v->size/n);
vnew = gsl_vector_alloc(n2);
@@ -969,7 +962,7 @@ static VALUE rb_gsl_vector_decimate(VALUE obj, VALUE nn)
if (i == n2-1) vv = gsl_vector_subvector(v, i*n, n3);
else vv = gsl_vector_subvector(v, i*n, n);
gsl_vector_set(vnew, i, gsl_stats_mean(vv.vector.data, vv.vector.stride,
- vv.vector.size));
+ vv.vector.size));
}
return Data_Wrap_Struct(VECTOR_ROW_COL(obj), 0, gsl_vector_free, vnew);
}
@@ -1077,21 +1070,21 @@ static VALUE rb_gsl_vector_rotate_bang(int argc, VALUE *argv, VALUE klass)
v0 = rb_ary_entry(argv[0], 0);
v1 = rb_ary_entry(argv[0], 1);
if (VECTOR_P(v0) && VECTOR_P(v1)) {
- Data_Get_Struct(v0, gsl_vector, vx);
- Data_Get_Struct(v1, gsl_vector, vy);
- n = (size_t) GSL_MIN(vx->size, vy->size);
- rad = NUM2DBL(argv[1]);
- retval = argv[0];
+ Data_Get_Struct(v0, gsl_vector, vx);
+ Data_Get_Struct(v1, gsl_vector, vy);
+ n = (size_t) GSL_MIN(vx->size, vy->size);
+ rad = NUM2DBL(argv[1]);
+ retval = argv[0];
} else {
- x = NUM2DBL(rb_ary_entry(argv[0], 0));
- y = NUM2DBL(rb_ary_entry(argv[0], 1));
- rad = NUM2DBL(argv[1]);
- c = cos(rad); s = sin(rad);
- return rb_ary_new3(2, rb_float_new(c*x - s*y), rb_float_new(s*x + c*y));
+ x = NUM2DBL(rb_ary_entry(argv[0], 0));
+ y = NUM2DBL(rb_ary_entry(argv[0], 1));
+ rad = NUM2DBL(argv[1]);
+ c = cos(rad); s = sin(rad);
+ return rb_ary_new3(2, rb_float_new(c*x - s*y), rb_float_new(s*x + c*y));
}
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Array expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
}
break;
case 3:
@@ -1136,19 +1129,19 @@ static VALUE rb_gsl_vector_rotate(int argc, VALUE *argv, VALUE klass)
v0 = rb_ary_entry(argv[0], 0);
v1 = rb_ary_entry(argv[0], 1);
if (VECTOR_P(v0) && VECTOR_P(v1)) {
- Data_Get_Struct(v0, gsl_vector, vx);
- Data_Get_Struct(v1, gsl_vector, vy);
- rad = NUM2DBL(argv[1]);
+ Data_Get_Struct(v0, gsl_vector, vx);
+ Data_Get_Struct(v1, gsl_vector, vy);
+ rad = NUM2DBL(argv[1]);
} else {
- x = NUM2DBL(rb_ary_entry(argv[0], 0));
- y = NUM2DBL(rb_ary_entry(argv[0], 1));
- rad = NUM2DBL(argv[1]);
- c = cos(rad); s = sin(rad);
- return rb_ary_new3(2, rb_float_new(c*x - s*y), rb_float_new(s*x + c*y));
+ x = NUM2DBL(rb_ary_entry(argv[0], 0));
+ y = NUM2DBL(rb_ary_entry(argv[0], 1));
+ rad = NUM2DBL(argv[1]);
+ c = cos(rad); s = sin(rad);
+ return rb_ary_new3(2, rb_float_new(c*x - s*y), rb_float_new(s*x + c*y));
}
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (Array expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
}
break;
case 3:
@@ -1179,7 +1172,7 @@ static VALUE rb_gsl_vector_rotate(int argc, VALUE *argv, VALUE klass)
gsl_vector_set(vynew, i, s*x + c*y);
}
return rb_ary_new3(2, Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vxnew),
- Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vynew));
+ Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vynew));
}
#include "gsl/gsl_fit.h"
@@ -1195,21 +1188,21 @@ static VALUE rb_gsl_vector_linearfit(int argc, VALUE *argv, VALUE klass)
Data_Get_Struct(argv[1], gsl_vector, w);
Data_Get_Struct(argv[2], gsl_vector, y);
gsl_fit_wlinear(x->data, x->stride, w->data, w->stride,
- y->data, y->stride, y->size, &c0, &c1, &c00, &c01, &c11,
- &sumsq);
+ y->data, y->stride, y->size, &c0, &c1, &c00, &c01, &c11,
+ &sumsq);
break;
case 2:
- CHECK_VECTOR(argv[0]); CHECK_VECTOR(argv[1]);
+ CHECK_VECTOR(argv[0]); CHECK_VECTOR(argv[1]);
Data_Get_Struct(argv[0], gsl_vector, x);
Data_Get_Struct(argv[1], gsl_vector, y);
- gsl_fit_linear(x->data, x->stride, y->data,y->stride, y->size,
- &c0, &c1, &c00, &c01, &c11, &sumsq);
+ gsl_fit_linear(x->data, x->stride, y->data,y->stride, y->size,
+ &c0, &c1, &c00, &c01, &c11, &sumsq);
break;
default:
rb_raise(rb_eArgError, "Wrong number of arguments (%d for 2 or 3).\n", argc);
}
return rb_ary_new3(6, rb_float_new(c0), rb_float_new(c1), rb_float_new(c00),
- rb_float_new(c01), rb_float_new(c11), rb_float_new(sumsq));
+ rb_float_new(c01), rb_float_new(c11), rb_float_new(sumsq));
}
static VALUE rb_gsl_vector_center(VALUE obj)
@@ -1226,7 +1219,7 @@ static VALUE rb_gsl_vector_center(VALUE obj)
static VALUE rb_gsl_vector_clip(int argc, VALUE *argv, VALUE obj)
{
- gsl_vector *v, *vnew;
+ gsl_vector *v, *vnew;
double hi = 1.0, lo = 0.0;
double x;
size_t i;
@@ -1254,7 +1247,7 @@ static VALUE rb_gsl_vector_clip(int argc, VALUE *argv, VALUE obj)
x = gsl_vector_get(v, i);
if (x > hi) x = hi;
else if (x < lo) x = lo;
- else {};
+ else {}
gsl_vector_set(vnew, i, x);
}
return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
@@ -1271,12 +1264,12 @@ static VALUE rb_gsl_vector_amp_phase(VALUE obj)
amp = gsl_vector_alloc(v->size/2);
phase = gsl_vector_alloc(v->size/2);
gsl_vector_set(amp, 0, gsl_vector_get(v, 0));
- gsl_vector_set(phase, 0, 0);
+ gsl_vector_set(phase, 0, 0);
gsl_vector_set(amp, amp->size-1, gsl_vector_get(v, v->size-1));
- gsl_vector_set(phase, phase->size-1, 0);
- for (i = 1; i < v->size-1; i+=2) {
+ gsl_vector_set(phase, phase->size-1, 0);
+ for (i = 1; i < v->size-1; i += 2) {
re = gsl_vector_get(v, i);
- im = gsl_vector_get(v, i+1);
+ im = gsl_vector_get(v, i+1);
gsl_vector_set(amp, i/2+1, sqrt(re*re + im*im));
gsl_vector_set(phase, i/2+1, atan2(im, re));
}
@@ -1307,7 +1300,7 @@ static VALUE rb_gsl_vector_clean(int argc, VALUE *argv, VALUE obj)
vnew = make_vector_clone(v);
n = v->size;
for (i = 0; i < n; i++) if (fabs(vnew->data[i]) < eps) vnew->data[i] = 0.0;
- return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);;
+ return Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
}
static VALUE rb_gsl_vector_clean_bang(int argc, VALUE *argv, VALUE obj)
@@ -1430,11 +1423,11 @@ void Init_gsl_vector(VALUE module)
rb_define_method(cgsl_vector, "amp_phase", rb_gsl_vector_amp_phase, 0);
rb_define_method(cgsl_vector, "clean", rb_gsl_vector_clean, -1);
rb_define_method(cgsl_vector, "clean!", rb_gsl_vector_clean_bang, -1);
-
+
rb_define_method(cgsl_vector, "pow", rb_gsl_vector_pow, 1);
rb_define_alias(cgsl_vector, "**", "pow");
-
- rb_define_method(cgsl_vector, "pow!", rb_gsl_vector_pow_bang, 1);
-
+
+ rb_define_method(cgsl_vector, "pow!", rb_gsl_vector_pow_bang, 1);
+
Init_gsl_vector_init(module);
}
diff --git a/ext/gsl/vector_int.c b/ext/gsl_native/vector_int.c
similarity index 85%
rename from ext/gsl/vector_int.c
rename to ext/gsl_native/vector_int.c
index d783c55..3e1cc09 100644
--- a/ext/gsl/vector_int.c
+++ b/ext/gsl_native/vector_int.c
@@ -12,9 +12,7 @@
#include "include/rb_gsl_array.h"
#include "include/rb_gsl_complex.h"
-#ifdef HAVE_NARRAY_H
#include "include/rb_gsl_with_narray.h"
-#endif
VALUE rb_gsl_vector_int_inner_product(int argc, VALUE *argv, VALUE obj);
VALUE rb_gsl_vector_int_do_something(VALUE obj, void (*func)(gsl_vector_int*));
@@ -31,7 +29,7 @@ VALUE rb_gsl_vector_int_to_f(VALUE obj)
size_t i;
Data_Get_Struct(obj, gsl_vector_int, v);
vnew = gsl_vector_alloc(v->size);
- for (i = 0; i < v->size; i++)
+ for (i = 0; i < v->size; i++)
gsl_vector_set(vnew, i, (double) gsl_vector_int_get(v, i));
if (VECTOR_INT_COL_P(obj))
return Data_Wrap_Struct(cgsl_vector_col, 0, gsl_vector_free, vnew);
@@ -92,17 +90,17 @@ static VALUE rb_gsl_vector_int_add(VALUE obj, VALUE b)
return rb_gsl_vector_add_constant(rb_gsl_vector_int_to_f(obj), b);
break;
default:
- if (rb_obj_is_kind_of(b, cgsl_vector_int)) {
- Data_Get_Struct(obj, gsl_vector_int, v);
- Data_Get_Struct(b, gsl_vector_int, vb);
- vnew = gsl_vector_int_alloc(v->size);
- gsl_vector_int_memcpy(vnew, v);
- gsl_vector_int_add(vnew, vb);
- return Data_Wrap_Struct(VECTOR_INT_ROW_COL(obj), 0, gsl_vector_int_free, vnew);
- } else {
- return rb_gsl_vector_add(rb_gsl_vector_int_to_f(obj), b);
- }
- break;
+ if (rb_obj_is_kind_of(b, cgsl_vector_int)) {
+ Data_Get_Struct(obj, gsl_vector_int, v);
+ Data_Get_Struct(b, gsl_vector_int, vb);
+ vnew = gsl_vector_int_alloc(v->size);
+ gsl_vector_int_memcpy(vnew, v);
+ gsl_vector_int_add(vnew, vb);
+ return Data_Wrap_Struct(VECTOR_INT_ROW_COL(obj), 0, gsl_vector_int_free, vnew);
+ } else {
+ return rb_gsl_vector_add(rb_gsl_vector_int_to_f(obj), b);
+ }
+ break;
}
}
@@ -119,12 +117,12 @@ static VALUE rb_gsl_vector_int_sub(VALUE obj, VALUE b)
break;
default:
if (rb_obj_is_kind_of(b, cgsl_vector_int)) {
- Data_Get_Struct(obj, gsl_vector_int, v);
- Data_Get_Struct(b, gsl_vector_int, vb);
- vnew = gsl_vector_int_alloc(v->size);
- gsl_vector_int_memcpy(vnew, v);
- gsl_vector_int_sub(vnew, vb);
- return Data_Wrap_Struct(VECTOR_INT_ROW_COL(obj), 0, gsl_vector_int_free, vnew);
+ Data_Get_Struct(obj, gsl_vector_int, v);
+ Data_Get_Struct(b, gsl_vector_int, vb);
+ vnew = gsl_vector_int_alloc(v->size);
+ gsl_vector_int_memcpy(vnew, v);
+ gsl_vector_int_sub(vnew, vb);
+ return Data_Wrap_Struct(VECTOR_INT_ROW_COL(obj), 0, gsl_vector_int_free, vnew);
} else {
return rb_gsl_vector_sub(rb_gsl_vector_int_to_f(obj), b);
}
@@ -151,7 +149,7 @@ static VALUE rb_gsl_vector_int_mul(VALUE obj, VALUE b)
argv[0] = obj;
argv[1] = b;
return rb_gsl_vector_int_inner_product(2, argv, CLASS_OF(obj));
- } else if (VECTOR_INT_ROW_P(obj) && MATRIX_INT_P(b)) {
+ } else if (VECTOR_INT_ROW_P(obj) && MATRIX_INT_P(b)) {
Data_Get_Struct(obj, gsl_vector_int, v);
Data_Get_Struct(b, gsl_matrix_int, m);
vnew = mygsl_vector_int_mul_matrix(v, m);
@@ -162,10 +160,10 @@ static VALUE rb_gsl_vector_int_mul(VALUE obj, VALUE b)
if (v->size != v2->size) rb_raise(rb_eIndexError, "Vector sizes does not match.");
m = gsl_matrix_int_alloc(v->size, v2->size);
for (i = 0; i < v->size; i++) {
- for (j = 0; j < v2->size; j++) {
- val = gsl_vector_int_get(v, i)*gsl_vector_int_get(v2, j);
- gsl_matrix_int_set(m, i, j, val);
- }
+ for (j = 0; j < v2->size; j++) {
+ val = gsl_vector_int_get(v, i)*gsl_vector_int_get(v2, j);
+ gsl_matrix_int_set(m, i, j, val);
+ }
}
return Data_Wrap_Struct(cgsl_matrix_int, 0, gsl_matrix_int_free, m);
} else {
diff --git a/ext/gsl/vector_source.c b/ext/gsl_native/vector_source.h
similarity index 82%
rename from ext/gsl/vector_source.c
rename to ext/gsl_native/vector_source.h
index 561fcd2..1d343cd 100644
--- a/ext/gsl/vector_source.c
+++ b/ext/gsl_native/vector_source.h
@@ -39,10 +39,10 @@
void FUNCTION(get_range,beg_en_n)(VALUE range, BASE *beg, BASE *en, size_t *n, int *step);
void get_range_beg_en_n_for_size(VALUE range,
- int *beg, int *en, size_t *n, int *step, size_t size);
+ int *beg, int *en, size_t *n, int *step, size_t size);
void parse_subvector_args(int argc, VALUE *argv, size_t size,
- size_t *offset, size_t *stride, size_t *n);
+ size_t *offset, size_t *stride, size_t *n);
void FUNCTION(get_range,beg_en_n)(VALUE range, BASE *beg, BASE *en, size_t *n, int *step)
{
@@ -66,7 +66,7 @@ void get_range_beg_en_n_for_size(VALUE range, int *beg, int *en, size_t *n, int
}
void parse_subvector_args(int argc, VALUE *argv, size_t size,
- size_t *offset, size_t *stride, size_t *n)
+ size_t *offset, size_t *stride, size_t *n)
{
int begin = 0, end, step, length;
*stride = 1;
@@ -83,13 +83,13 @@ void parse_subvector_args(int argc, VALUE *argv, size_t size,
// want to let Ruby crash if GSL does not have bounds checking enabled.
if(begin < 0 || (size_t)begin >= size) {
rb_raise(rb_eRangeError,
- "begin value %d is out of range for Vector of length %d",
- begin, (int) size);
+ "begin value %d is out of range for Vector of length %d",
+ begin, (int) size);
}
if(end < 0 || (size_t)end >= size) {
rb_raise(rb_eRangeError,
- "end value %d is out of range for Vector of length %d",
- end, (int) size);
+ "end value %d is out of range for Vector of length %d",
+ end, (int) size);
}
*stride = (size_t)step;
} else {
@@ -97,8 +97,8 @@ void parse_subvector_args(int argc, VALUE *argv, size_t size,
length = FIX2INT(argv[0]);
if((length < 0 && -length > (int) size) || (length > 0 && length > (int) size)) {
rb_raise(rb_eRangeError,
- "length %d is out of range for Vector of length %d",
- length, (int) size);
+ "length %d is out of range for Vector of length %d",
+ length, (int) size);
} else if(length < 0) {
begin = length;
*n = (size_t)(-length);
@@ -113,13 +113,13 @@ void parse_subvector_args(int argc, VALUE *argv, size_t size,
get_range_beg_en_n_for_size(argv[0], &begin, &end, n, &step, size);
if(begin < 0 || (size_t)begin >= size) {
rb_raise(rb_eRangeError,
- "begin value %d is out of range for Vector of length %d",
- (int) begin, (int) size);
+ "begin value %d is out of range for Vector of length %d",
+ (int) begin, (int) size);
}
if(end < 0 || (size_t)end >= size) {
rb_raise(rb_eRangeError,
- "end value %d is out of range for Vector of length %d",
- (int) end, (int) size);
+ "end value %d is out of range for Vector of length %d",
+ (int) end, (int) size);
}
CHECK_FIXNUM(argv[1]);
step = FIX2INT(argv[1]);
@@ -210,13 +210,11 @@ VALUE FUNCTION(rb_gsl_vector,new)(int argc, VALUE *argv, VALUE klass)
size_t n, i;
BASE beg, en;
int step;
-#ifdef HAVE_NARRAY_H
- VALUE ary2;
-#endif
switch (argc) {
case 1:
#ifdef HAVE_NARRAY_H
if (NA_IsNArray(argv[0])) {
+ VALUE ary2;
n = NA_TOTAL(argv[0]);
v = FUNCTION(gsl_vector,alloc)(n);
if (v == NULL) rb_raise(rb_eNoMemError, "gsl_vector_alloc failed");
@@ -230,7 +228,7 @@ VALUE FUNCTION(rb_gsl_vector,new)(int argc, VALUE *argv, VALUE klass)
}
#endif
switch (TYPE(argv[0])) {
- case T_FIXNUM:
+ case T_FIXNUM:
/*! if an integer n is given, create an empty vector of length n */
CHECK_FIXNUM(argv[0]);
n = FIX2INT(argv[0]);
@@ -243,35 +241,35 @@ VALUE FUNCTION(rb_gsl_vector,new)(int argc, VALUE *argv, VALUE klass)
case T_FLOAT:
v = FUNCTION(gsl_vector,alloc)(1);
switch(TYPE(argv[0])) {
- case T_FIXNUM: case T_BIGNUM: case T_FLOAT:
- xnative = NUMCONV2(argv[0]);
- break;
- default:
- xnative = (BASE)0;
+ case T_FIXNUM: case T_BIGNUM: case T_FLOAT:
+ xnative = NUMCONV2(argv[0]);
+ break;
+ default:
+ xnative = (BASE)0;
}
FUNCTION(gsl_vector,set)(v, 0, xnative);
break;
#ifdef BASE_DOUBLE
- case T_ARRAY:
+ case T_ARRAY:
v = make_cvector_from_rarrays(argv[0]);
break;
#endif
default:
if (CLASS_OF(argv[0]) == rb_cRange) {
- FUNCTION(get_range,beg_en_n)(argv[0], &beg, &en, &n, &step);
- v = FUNCTION(gsl_vector,alloc)(n);
- FUNCTION(set_ptr_data,by_range)(v->data, v->size, argv[0]);
- return Data_Wrap_Struct(klass, 0, FUNCTION(gsl_vector,free), v);
+ FUNCTION(get_range,beg_en_n)(argv[0], &beg, &en, &n, &step);
+ v = FUNCTION(gsl_vector,alloc)(n);
+ FUNCTION(set_ptr_data,by_range)(v->data, v->size, argv[0]);
+ return Data_Wrap_Struct(klass, 0, FUNCTION(gsl_vector,free), v);
} else if (VEC_P(argv[0])) {
- /*! Create a new vector with the same elements of the vector given */
- Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), vtmp);
- v = FUNCTION(gsl_vector,alloc)(vtmp->size);
- for (i = 0; i < vtmp->size; i++)
- FUNCTION(gsl_vector,set)(v, i, FUNCTION(gsl_vector,get)(vtmp, i));
- return Data_Wrap_Struct(VEC_ROW_COL(argv[0]), 0, FUNCTION(gsl_vector,free), v);
+ /*! Create a new vector with the same elements of the vector given */
+ Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), vtmp);
+ v = FUNCTION(gsl_vector,alloc)(vtmp->size);
+ for (i = 0; i < vtmp->size; i++)
+ FUNCTION(gsl_vector,set)(v, i, FUNCTION(gsl_vector,get)(vtmp, i));
+ return Data_Wrap_Struct(VEC_ROW_COL(argv[0]), 0, FUNCTION(gsl_vector,free), v);
} else {
- rb_raise(rb_eTypeError,
- "wrong argument type %s", rb_class2name(CLASS_OF(argv[0])));
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s", rb_class2name(CLASS_OF(argv[0])));
}
break;
}
@@ -281,11 +279,11 @@ VALUE FUNCTION(rb_gsl_vector,new)(int argc, VALUE *argv, VALUE klass)
if (v == NULL) rb_raise(rb_eNoMemError, "gsl_vector_alloc failed");
for (i = 0; (int) i < argc; i++) {
switch(TYPE(argv[i])) {
- case T_FIXNUM: case T_BIGNUM: case T_FLOAT:
- xnative = NUMCONV2(argv[i]);
- break;
- default:
- xnative = (BASE)0;
+ case T_FIXNUM: case T_BIGNUM: case T_FLOAT:
+ xnative = NUMCONV2(argv[i]);
+ break;
+ default:
+ xnative = (BASE)0;
}
FUNCTION(gsl_vector,set)(v, i, xnative);
}
@@ -322,7 +320,7 @@ static VALUE FUNCTION(rb_gsl_vector,get)(int argc, VALUE *argv, VALUE obj)
switch (TYPE(argv[0])) {
case T_FIXNUM:
i = FIX2INT(argv[0]);
- if (i < 0)
+ if (i < 0)
retval = C_TO_VALUE2(FUNCTION(gsl_vector,get)(v, (size_t) (v->size + i)));
else
retval = C_TO_VALUE2(FUNCTION(gsl_vector,get)(v, (size_t) (i)));
@@ -332,7 +330,7 @@ static VALUE FUNCTION(rb_gsl_vector,get)(int argc, VALUE *argv, VALUE obj)
for (j = 0; j < vnew->size; j++) {
i = NUMCONV(rb_ary_entry(argv[0], j));
if (i < 0) k = v->size + i;
- // else k = j;
+ // else k = j;
else k = i;
FUNCTION(gsl_vector,set)(vnew, j, FUNCTION(gsl_vector,get)(v, k));
}
@@ -437,7 +435,6 @@ static VALUE FUNCTION(rb_gsl_vector,set)(int argc, VALUE *argv, VALUE obj)
if(argc < 1 || argc > 4) {
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1-4)", argc);
}
-
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
other = argv[argc-1];
@@ -458,7 +455,6 @@ static VALUE FUNCTION(rb_gsl_vector,set)(int argc, VALUE *argv, VALUE obj)
// assignment to v.subvector(...)
FUNCTION(rb_gsl_vector,set_subvector)(argc-1, argv, v, other);
}
-
return obj;
}
@@ -471,7 +467,7 @@ static VALUE FUNCTION(rb_gsl_vector,set_all)(VALUE obj, VALUE xx)
return obj;
}
-VALUE FUNCTION(rb_gsl_vector,do_something)(VALUE obj, void (*func)(GSL_TYPE(gsl_vector)*))
+VALUE FUNCTION(rb_gsl_vector,do_something)(VALUE obj, void (*func)(GSL_TYPE (gsl_vector)*))
{
GSL_TYPE(gsl_vector) *v = NULL;
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
@@ -659,9 +655,9 @@ static VALUE FUNCTION(rb_gsl_vector,trans)(VALUE obj)
return Data_Wrap_Struct(cgsl_vector_int_col, 0, gsl_vector_int_free, vnew);
else if (VECTOR_INT_COL_P(obj))
return Data_Wrap_Struct(cgsl_vector_int, 0, gsl_vector_int_free, vnew);
- else rb_raise(rb_eTypeError,
- "wrong type %s (Vector::Int or Vector::Int::Col expected)",
- rb_class2name(CLASS_OF(obj)));
+ else rb_raise(rb_eTypeError,
+ "wrong type %s (Vector::Int or Vector::Int::Col expected)",
+ rb_class2name(CLASS_OF(obj)));
#endif
return Qnil;
}
@@ -673,14 +669,14 @@ static VALUE FUNCTION(rb_gsl_vector,trans_bang)(VALUE obj)
else if (CLASS_OF(obj) == cgsl_vector_col) RBGSL_SET_CLASS(obj, cgsl_vector);
else {
rb_raise(rb_eRuntimeError, "method trans! for %s is not permitted.",
- rb_class2name(CLASS_OF(obj)));
- }
+ rb_class2name(CLASS_OF(obj)));
+ }
#elif defined(BASE_INT)
if (CLASS_OF(obj) == cgsl_vector_int) RBGSL_SET_CLASS(obj, cgsl_vector_int_col);
else if (CLASS_OF(obj) == cgsl_vector_int_col) RBGSL_SET_CLASS(obj, cgsl_vector_int);
else {
rb_raise(rb_eRuntimeError, "method trans! for %s is not permitted.",
- rb_class2name(CLASS_OF(obj)));
+ rb_class2name(CLASS_OF(obj)));
}
#endif
return obj;
@@ -704,7 +700,7 @@ VALUE FUNCTION(rb_gsl_vector,uminus)(VALUE obj)
}
if (CLASS_OF(obj) == GSL_TYPE(cgsl_poly))
return Data_Wrap_Struct(GSL_TYPE(cgsl_poly), 0, FUNCTION(gsl_vector,free), vnew);
- else
+ else
return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
}
@@ -810,7 +806,7 @@ static VALUE FUNCTION(rb_gsl_vector,sgn)(VALUE obj)
x = FUNCTION(gsl_vector,get)(v, i);
FUNCTION(gsl_vector,set)(vnew, i, (BASE)(x>0 ? 1 : (x<0 ? -1 : 0)));
}
- return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
+ return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
}
static VALUE FUNCTION(rb_gsl_vector,abs)(VALUE obj)
@@ -822,7 +818,7 @@ static VALUE FUNCTION(rb_gsl_vector,abs)(VALUE obj)
for (i = 0; i < v->size; i++) {
FUNCTION(gsl_vector,set)(vnew, i, (BASE) fabs(FUNCTION(gsl_vector,get)(v, i)));
}
- return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
+ return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
}
static VALUE FUNCTION(rb_gsl_vector,square)(VALUE obj)
@@ -834,7 +830,7 @@ static VALUE FUNCTION(rb_gsl_vector,square)(VALUE obj)
for (i = 0; i < v->size; i++) {
FUNCTION(gsl_vector,set)(vnew, i, gsl_pow_2(FUNCTION(gsl_vector,get)(v, i)));
}
- return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
+ return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
}
static VALUE FUNCTION(rb_gsl_vector,sqrt)(VALUE obj)
@@ -846,7 +842,7 @@ static VALUE FUNCTION(rb_gsl_vector,sqrt)(VALUE obj)
for (i = 0; i < v->size; i++) {
FUNCTION(gsl_vector,set)(vnew, i, sqrt(FUNCTION(gsl_vector,get)(v, i)));
}
- return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
+ return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
}
static VALUE FUNCTION(rb_gsl_vector,memcpy)(VALUE obj, VALUE dest, VALUE src)
@@ -867,7 +863,7 @@ static VALUE FUNCTION(rb_gsl_vector,clone)(VALUE obj)
FUNCTION(gsl_vector,memcpy)(vnew, v);
if (!VEC_VIEW_P(obj))
return Data_Wrap_Struct(CLASS_OF(obj), 0, FUNCTION(gsl_vector,free), vnew);
- else
+ else
return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
}
@@ -919,7 +915,7 @@ static VALUE FUNCTION(rb_gsl_vector,fprintf)(int argc, VALUE *argv, VALUE obj)
GSL_TYPE(gsl_vector) *h = NULL;
FILE *fp = NULL;
int status, flag = 0;
- if (argc != 1 && argc != 2)
+ if (argc != 1 && argc != 2)
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 2)", argc);
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), h);
fp = rb_gsl_open_writefile(argv[0], &flag);
@@ -941,7 +937,7 @@ static VALUE FUNCTION(rb_gsl_vector,printf)(int argc, VALUE *argv, VALUE obj)
int status;
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), h);
if (argc == 1) {
- if (TYPE(argv[0]) != T_STRING)
+ if (TYPE(argv[0]) != T_STRING)
rb_raise(rb_eTypeError, "String expected");
else
status = FUNCTION(gsl_vector,fprintf)(stdout, h, STR2CSTR(argv[0]));
@@ -974,7 +970,7 @@ VALUE FUNCTION(rb_gsl_vector,inner_product)(int argc, VALUE *argv, VALUE obj)
switch (TYPE(obj)) {
case T_MODULE: case T_CLASS: case T_OBJECT:
if (argc != 2) rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
- argc);
+ argc);
CHECK_VEC(argv[0]);
CHECK_VEC(argv[1]);
Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), v);
@@ -982,7 +978,7 @@ VALUE FUNCTION(rb_gsl_vector,inner_product)(int argc, VALUE *argv, VALUE obj)
break;
default:
if (argc != 1) rb_raise(rb_eArgError, "wrong number of arguments (%d for 1)",
- argc);
+ argc);
CHECK_VEC(argv[0]);
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), v2);
@@ -1052,7 +1048,7 @@ static VALUE FUNCTION(rb_gsl_vector,equal)(int argc, VALUE *argv, VALUE obj)
case T_FLOAT:
x = NUM2DBL(other);
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v1);
- for (i = 0; i < v1->size; i++)
+ for (i = 0; i < v1->size; i++)
if (fabs(x-FUNCTION(gsl_vector,get)(v1, i)) > eps) return Qfalse;
return Qtrue;
break;
@@ -1108,14 +1104,14 @@ static VALUE FUNCTION(rb_gsl_vector,graph)(int argc, VALUE *argv, VALUE obj)
if (TYPE(argv[1]) == T_STRING) {
make_graphcommand(command, argv[1]);
if (VEC_P(argv[0])) {
- Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), x);
+ Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), x);
} else {
- rb_raise(rb_eTypeError, "argv[0] wrong type %s (String or Vector expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_raise(rb_eTypeError, "argv[0] wrong type %s (String or Vector expected)",
+ rb_class2name(CLASS_OF(argv[0])));
}
} else {
- rb_raise(rb_eTypeError, "argv[1] wrong type %s (String or Vector expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_raise(rb_eTypeError, "argv[1] wrong type %s (String or Vector expected)",
+ rb_class2name(CLASS_OF(argv[1])));
}
break;
default:
@@ -1125,7 +1121,7 @@ static VALUE FUNCTION(rb_gsl_vector,graph)(int argc, VALUE *argv, VALUE obj)
if (y == NULL) rb_raise(rb_eRuntimeError, "ydata not given");
fp = popen(command, "w");
for (i = 0; i < y->size; i++) {
- if (x == NULL)
+ if (x == NULL)
fprintf(fp, "%d %e\n", (int) i, (double) FUNCTION(gsl_vector,get)(y, i));
else
fprintf(fp, "%e %e\n", (double) FUNCTION(gsl_vector,get)(x, i), (double) FUNCTION(gsl_vector,get)(y, i));
@@ -1165,14 +1161,14 @@ static VALUE FUNCTION(rb_gsl_vector,graph_step)(int argc, VALUE *argv, VALUE obj
if (TYPE(argv[1]) == T_STRING) {
make_graphcommand(command, argv[1]);
if (VEC_P(argv[0])) {
- Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), x);
+ Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), x);
} else {
- rb_raise(rb_eTypeError, "argv[0] wrong type %s (String or Vector expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_raise(rb_eTypeError, "argv[0] wrong type %s (String or Vector expected)",
+ rb_class2name(CLASS_OF(argv[0])));
}
} else {
- rb_raise(rb_eTypeError, "argv[1] wrong type %s (String or Vector expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_raise(rb_eTypeError, "argv[1] wrong type %s (String or Vector expected)",
+ rb_class2name(CLASS_OF(argv[1])));
}
break;
default:
@@ -1184,19 +1180,19 @@ static VALUE FUNCTION(rb_gsl_vector,graph_step)(int argc, VALUE *argv, VALUE obj
for (i = 0; i < y->size; i++) {
if (x == NULL) {
fprintf(fp, "%d %e\n%d %e\n", (int) i, (double) FUNCTION(gsl_vector,get)(y, i),
- (int) (i+1), (double) FUNCTION(gsl_vector,get)(y, i));
+ (int) (i+1), (double) FUNCTION(gsl_vector,get)(y, i));
} else {
- if (i != y->size-1)
- fprintf(fp, "%e %e\n%e %e\n", (double) FUNCTION(gsl_vector,get)(x, i),
- (double) FUNCTION(gsl_vector,get)(y, i),
- (double) FUNCTION(gsl_vector,get)(x, i+1),
- (double) FUNCTION(gsl_vector,get)(y, i));
+ if (i != y->size-1)
+ fprintf(fp, "%e %e\n%e %e\n", (double) FUNCTION(gsl_vector,get)(x, i),
+ (double) FUNCTION(gsl_vector,get)(y, i),
+ (double) FUNCTION(gsl_vector,get)(x, i+1),
+ (double) FUNCTION(gsl_vector,get)(y, i));
else
- fprintf(fp, "%e %e\n%e %e",
- (double) FUNCTION(gsl_vector,get)(x, i),
- (double) FUNCTION(gsl_vector,get)(y, i),
- 2.0*FUNCTION(gsl_vector,get)(x, i)-FUNCTION(gsl_vector,get)(x, i-1),
- (double) FUNCTION(gsl_vector,get)(y, i));
+ fprintf(fp, "%e %e\n%e %e",
+ (double) FUNCTION(gsl_vector,get)(x, i),
+ (double) FUNCTION(gsl_vector,get)(y, i),
+ 2.0*FUNCTION(gsl_vector,get)(x, i)-FUNCTION(gsl_vector,get)(x, i-1),
+ (double) FUNCTION(gsl_vector,get)(y, i));
}
}
fflush(fp);
@@ -1228,7 +1224,7 @@ static VALUE FUNCTION(rb_gsl_vector,plot)(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), x);
} else {
rb_raise(rb_eTypeError, "wrong argument type %s (String or Vector expected)",
- rb_class2name(CLASS_OF(argv[0])));
+ rb_class2name(CLASS_OF(argv[0])));
}
break;
case 2:
@@ -1243,11 +1239,11 @@ static VALUE FUNCTION(rb_gsl_vector,plot)(int argc, VALUE *argv, VALUE obj)
}
if (y == NULL) rb_raise(rb_eRuntimeError, "ydata not given");
for (i = 0; i < y->size; i++) {
- if (x == NULL)
+ if (x == NULL)
fprintf(fp, "%d %e\n", (int) i, (double) FUNCTION(gsl_vector,get)(y, i));
else
- fprintf(fp, "%e %e\n", (double) FUNCTION(gsl_vector,get)(x, i),
- (double) FUNCTION(gsl_vector,get)(y, i));
+ fprintf(fp, "%e %e\n", (double) FUNCTION(gsl_vector,get)(x, i),
+ (double) FUNCTION(gsl_vector,get)(y, i));
}
fprintf(fp, "e\n");
fflush(fp);
@@ -1261,11 +1257,11 @@ void FUNCTION(gsl_vector,print)(const GSL_TYPE(gsl_vector) *v, VALUE klass)
size_t i;
printf("[ ");
if (klass == cgsl_vector_col || klass == cgsl_vector_col_view
- || klass == cgsl_vector_col_view_ro
- || klass == cgsl_vector_int_col || klass == cgsl_vector_int_col_view
- || klass == cgsl_vector_int_col_view_ro) {
+ || klass == cgsl_vector_col_view_ro
+ || klass == cgsl_vector_int_col || klass == cgsl_vector_int_col_view
+ || klass == cgsl_vector_int_col_view_ro) {
printf(PRINTF_FORMAT, FUNCTION(gsl_vector,get)(v, 0));
- for (i = 1; i < v->size; i++) {
+ for (i = 1; i < v->size; i++) {
printf(PRINTF_FORMAT, FUNCTION(gsl_vector,get)(v, i));
if (i != v->size-1) printf("\n");
}
@@ -1317,16 +1313,16 @@ VALUE FUNCTION(rb_gsl_vector,to_s)(VALUE obj)
strcpy(format2, format);
#else
strcpy(format, PRINTF_FORMAT);
- strcpy(format2, " "PRINTF_FORMAT);
+ strcpy(format2, " " PRINTF_FORMAT);
#endif
for (i = 0; i < v->size; i++) {
if (i != 0) {
- strcpy(buf, " ");
- rb_str_cat(str, buf, strlen(buf));
+ strcpy(buf, " ");
+ rb_str_cat(str, buf, strlen(buf));
}
x = FUNCTION(gsl_vector,get)(v, i);
- if (x < 0) sprintf(buf, format, x);
- else sprintf(buf, format2, x);
+ if (x < 0) sprintf(buf, format, x);
+ else sprintf(buf, format2, x);
if (i != v->size-1) strcat(buf, "\n");
rb_str_cat(str, buf, strlen(buf));
if (i >= 20 && i != v->size-1) {
@@ -1459,8 +1455,8 @@ static VALUE FUNCTION(rb_gsl_vector,matrix_view)(int argc, VALUE *argv, VALUE ob
break;
case 3:
mv = ALLOC(QUALIFIED_VIEW(gsl_matrix,view));
- *mv = FUNCTION(gsl_matrix,view_vector_with_tda)(v, FIX2INT(argv[0]), FIX2INT(argv[1]),
- FIX2INT(argv[2]));
+ *mv = FUNCTION(gsl_matrix,view_vector_with_tda)(v, FIX2INT(argv[0]), FIX2INT(argv[1]),
+ FIX2INT(argv[2]));
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2 or 3)", argc);
@@ -1470,7 +1466,7 @@ static VALUE FUNCTION(rb_gsl_vector,matrix_view)(int argc, VALUE *argv, VALUE ob
}
static VALUE FUNCTION(rb_gsl_vector,matrix_view_with_tda)(VALUE obj, VALUE nn1, VALUE nn2,
- VALUE tda)
+ VALUE tda)
{
GSL_TYPE(gsl_vector) *v = NULL;
QUALIFIED_VIEW(gsl_matrix,view) *mv = NULL;
@@ -1514,16 +1510,16 @@ VALUE FUNCTION(rb_gsl_vector,scale)(VALUE obj, VALUE x)
GSL_TYPE(gsl_vector) *v, *vnew;
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
vnew = FUNCTION(make_vector,clone)(v);
- FUNCTION(gsl_vector,scale)(vnew, NUMCONV(x));
+ FUNCTION(gsl_vector,scale)(vnew, NUMCONV2(x));
// return Data_Wrap_Struct(GSL_TYPE(cgsl_vector), 0, FUNCTION(gsl_vector,free), vnew);
- return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
+ return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
}
VALUE FUNCTION(rb_gsl_vector,scale_bang)(VALUE obj, VALUE x)
{
GSL_TYPE(gsl_vector) *v = NULL;
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
- FUNCTION(gsl_vector,scale)(v, NUMCONV(x));
+ FUNCTION(gsl_vector,scale)(v, NUMCONV2(x));
return obj;
}
@@ -1532,7 +1528,7 @@ VALUE FUNCTION(rb_gsl_vector,add_constant)(VALUE obj, VALUE x)
GSL_TYPE(gsl_vector) *v, *vnew;
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
vnew = FUNCTION(make_vector,clone)(v);
- FUNCTION(gsl_vector,add_constant)(vnew, NUMCONV(x));
+ FUNCTION(gsl_vector,add_constant)(vnew, NUMCONV2(x));
// return Data_Wrap_Struct(GSL_TYPE(cgsl_vector), 0, FUNCTION(gsl_vector,free), vnew);
return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
}
@@ -1541,7 +1537,7 @@ VALUE FUNCTION(rb_gsl_vector,add_constant_bang)(VALUE obj, VALUE x)
{
GSL_TYPE(gsl_vector) *v = NULL;
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
- FUNCTION(gsl_vector,add_constant)(v, NUMCONV(x));
+ FUNCTION(gsl_vector,add_constant)(v, NUMCONV2(x));
return obj;
}
@@ -1600,7 +1596,7 @@ static VALUE FUNCTION(rb_gsl_vector,to_gplot)(int argc, VALUE *argv, VALUE obj)
if (argc < 1) rb_raise(rb_eArgError, "no vectors given");
if (TYPE(argv[0]) == T_ARRAY) nv = RARRAY_LEN(argv[0]);
else nv = argc;
- vp = (GSL_TYPE(gsl_vector)**) ALLOC_N(GSL_TYPE(gsl_vector)*, nv);
+ vp = (GSL_TYPE(gsl_vector)**)ALLOC_N(GSL_TYPE(gsl_vector)*, nv);
istart = 0;
break;
default:
@@ -1608,7 +1604,7 @@ static VALUE FUNCTION(rb_gsl_vector,to_gplot)(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
if (argc >= 1 && TYPE(argv[0]) == T_ARRAY) nv = 1 + RARRAY_LEN(argv[0]);
else nv = argc + 1;
- vp = (GSL_TYPE(gsl_vector)**) ALLOC_N(GSL_TYPE(gsl_vector)*, nv);
+ vp = (GSL_TYPE(gsl_vector)**)ALLOC_N(GSL_TYPE(gsl_vector)*, nv);
vp[0] = v; len = v->size;
istart = 1;
break;
@@ -1619,7 +1615,7 @@ static VALUE FUNCTION(rb_gsl_vector,to_gplot)(int argc, VALUE *argv, VALUE obj)
CHECK_VEC(tmp);
Data_Get_Struct(tmp, GSL_TYPE(gsl_vector), v);
if (len == 0) len = v->size;
- if (len != v->size)
+ if (len != v->size)
rb_raise(rb_eRuntimeError, "vectors must have equal lengths");
vp[i+istart] = v;
}
@@ -1675,7 +1671,7 @@ static VALUE FUNCTION(rb_gsl_vector,collect_bang)(VALUE obj)
/* Modified 2006/Sep/26 */
GSL_TYPE(gsl_vector)* FUNCTION(mygsl_vector,mul_matrix)(GSL_TYPE(gsl_vector) *v,
- GSL_TYPE(gsl_matrix) *m)
+ GSL_TYPE(gsl_matrix) *m)
{
GSL_TYPE(gsl_vector) *vnew;
size_t i, j;
@@ -1715,7 +1711,7 @@ static VALUE FUNCTION(rb_gsl_vector,to_m_circulant)(VALUE obj)
}
static void FUNCTION(mygsl_vector,indgen)(GSL_TYPE(gsl_vector) *v,
- BASE start, BASE step)
+ BASE start, BASE step)
{
size_t k = 0;
BASE i;
@@ -1734,10 +1730,10 @@ static VALUE FUNCTION(rb_gsl_vector,indgen_singleton)(int argc, VALUE *argv, VAL
switch (argc) {
case 3:
step = NUMCONV2(argv[2]);
- /* no break */
+ /* no break */
case 2:
start = NUMCONV2(argv[1]);
- /* no break */
+ /* no break */
case 1:
n = NUM2INT(argv[0]);
break;
@@ -1757,7 +1753,7 @@ static VALUE FUNCTION(rb_gsl_vector,indgen)(int argc, VALUE *argv, VALUE obj)
switch (argc) {
case 2:
step = NUMCONV2(argv[1]);
- /* no break */
+ /* no break */
case 1:
start = NUMCONV2(argv[0]);
break;
@@ -1780,7 +1776,7 @@ static VALUE FUNCTION(rb_gsl_vector,indgen_bang)(int argc, VALUE *argv, VALUE ob
switch (argc) {
case 2:
step = NUMCONV2(argv[1]);
- /* no break */
+ /* no break */
case 1:
start = NUMCONV2(argv[0]);
break;
@@ -1906,7 +1902,7 @@ static VALUE FUNCTION(rb_gsl_vector,histogram)(int argc, VALUE *argv, VALUE obj)
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
switch (argc) {
case 1:
- if (rb_obj_is_kind_of(argv[0], rb_cRange))
+ if (rb_obj_is_kind_of(argv[0], rb_cRange))
argv[0] = rb_gsl_range2ary(argv[0]);
switch (TYPE(argv[0])) {
case T_FIXNUM:
@@ -1939,7 +1935,7 @@ static VALUE FUNCTION(rb_gsl_vector,histogram)(int argc, VALUE *argv, VALUE obj)
break;
default:
rb_raise(rb_eTypeError, "wrong argument type %s (Array expected)",
- rb_class2name(CLASS_OF(argv[1])));
+ rb_class2name(CLASS_OF(argv[1])));
break;
}
h = gsl_histogram_alloc(n);
@@ -1986,56 +1982,56 @@ static VALUE FUNCTION(rb_gsl_vector,concat)(VALUE obj, VALUE other)
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
switch(TYPE(other)) {
- case T_FIXNUM:
- case T_BIGNUM:
- case T_FLOAT:
- vnew = FUNCTION(gsl_vector,alloc)(v->size + 1);
- vv = FUNCTION(gsl_vector,subvector)(vnew, 0, v->size);
- FUNCTION(gsl_vector,memcpy)(&vv.vector, v);
- FUNCTION(gsl_vector,set)(vnew, v->size, NUMCONV2(other));
- break;
+ case T_FIXNUM:
+ case T_BIGNUM:
+ case T_FLOAT:
+ vnew = FUNCTION(gsl_vector,alloc)(v->size + 1);
+ vv = FUNCTION(gsl_vector,subvector)(vnew, 0, v->size);
+ FUNCTION(gsl_vector,memcpy)(&vv.vector, v);
+ FUNCTION(gsl_vector,set)(vnew, v->size, NUMCONV2(other));
+ break;
- case T_ARRAY:
- size2 = RARRAY_LEN(other);
+ case T_ARRAY:
+ size2 = RARRAY_LEN(other);
+ vnew = FUNCTION(gsl_vector,alloc)(v->size + size2);
+ vv = FUNCTION(gsl_vector,subvector)(vnew, 0, v->size);
+ FUNCTION(gsl_vector,memcpy)(&vv.vector, v);
+ for (i = 0; i < size2; i++) {
+ x = rb_ary_entry(other, i);
+ FUNCTION(gsl_vector,set)(vnew, v->size + i, NUMCONV2(x));
+ }
+ break;
+
+ default:
+ if(rb_obj_is_kind_of(other, rb_cRange)) {
+ FUNCTION(get_range,beg_en_n)(other, &beg, &end, &size2, &step);
vnew = FUNCTION(gsl_vector,alloc)(v->size + size2);
vv = FUNCTION(gsl_vector,subvector)(vnew, 0, v->size);
FUNCTION(gsl_vector,memcpy)(&vv.vector, v);
for (i = 0; i < size2; i++) {
- x = rb_ary_entry(other, i);
- FUNCTION(gsl_vector,set)(vnew, v->size + i, NUMCONV2(x));
+ FUNCTION(gsl_vector,set)(vnew, v->size + i, beg);
+ beg += step;
}
- break;
-
- default:
- if(rb_obj_is_kind_of(other, rb_cRange)) {
- FUNCTION(get_range,beg_en_n)(other, &beg, &end, &size2, &step);
- vnew = FUNCTION(gsl_vector,alloc)(v->size + size2);
- vv = FUNCTION(gsl_vector,subvector)(vnew, 0, v->size);
- FUNCTION(gsl_vector,memcpy)(&vv.vector, v);
- for (i = 0; i < size2; i++) {
- FUNCTION(gsl_vector,set)(vnew, v->size + i, beg);
- beg += step;
- }
- } else if (rb_obj_is_kind_of(other, GSL_TYPE(cgsl_vector))) {
- Data_Get_Struct(other, GSL_TYPE(gsl_vector), v2);
- size2 = v2->size;
- vnew = FUNCTION(gsl_vector,alloc)(v->size + size2);
- vv = FUNCTION(gsl_vector,subvector)(vnew, 0, v->size);
- FUNCTION(gsl_vector,memcpy)(&vv.vector, v);
- vv = FUNCTION(gsl_vector,subvector)(vnew, v->size, size2);
- FUNCTION(gsl_vector,memcpy)(&vv.vector, v2);
- } else {
- rb_raise(rb_eTypeError, "wrong argument type %s (Array, Numeric, Range, or %s expected)",
- rb_class2name(CLASS_OF(other)), rb_class2name(GSL_TYPE(cgsl_vector)));
- }
- break;
+ } else if (rb_obj_is_kind_of(other, GSL_TYPE(cgsl_vector))) {
+ Data_Get_Struct(other, GSL_TYPE(gsl_vector), v2);
+ size2 = v2->size;
+ vnew = FUNCTION(gsl_vector,alloc)(v->size + size2);
+ vv = FUNCTION(gsl_vector,subvector)(vnew, 0, v->size);
+ FUNCTION(gsl_vector,memcpy)(&vv.vector, v);
+ vv = FUNCTION(gsl_vector,subvector)(vnew, v->size, size2);
+ FUNCTION(gsl_vector,memcpy)(&vv.vector, v2);
+ } else {
+ rb_raise(rb_eTypeError, "wrong argument type %s (Array, Numeric, Range, or %s expected)",
+ rb_class2name(CLASS_OF(other)), rb_class2name(GSL_TYPE(cgsl_vector)));
+ }
+ break;
}
- return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
+ return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
}
void FUNCTION(mygsl_vector,diff)(GSL_TYPE(gsl_vector) *vdst,
- GSL_TYPE(gsl_vector) *vsrc, size_t n)
+ GSL_TYPE(gsl_vector) *vsrc, size_t n)
{
BASE a, b;
int coef, fac, nn, ff;
@@ -2086,7 +2082,7 @@ static VALUE FUNCTION(rb_gsl_vector,test)(VALUE obj, int (*f)(const double))
size_t i;
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
vi = gsl_vector_int_alloc(v->size);
- for (i = 0; i < v->size; i++)
+ for (i = 0; i < v->size; i++)
gsl_vector_int_set(vi, i, (*f)(FUNCTION(gsl_vector,get)(v, i)));
return Data_Wrap_Struct(cgsl_vector_int, 0, gsl_vector_int_free, vi);
}
@@ -2227,23 +2223,23 @@ static VALUE FUNCTION(rb_gsl_vector,filescan)(VALUE klass, VALUE file)
Check_Type(file, T_STRING);
strcpy(filename, STR2CSTR(file));
sprintf(buf, "sed '/^#/d' %s | wc", filename);
- if ((fp = popen(buf, "r")) == NULL)
+ if ((fp = popen(buf, "r")) == NULL)
rb_raise(rb_eIOError, "popen failed.");
if (fgets(buf, 1024, fp) == NULL)
rb_sys_fail(0);
pclose(fp);
sscanf(buf, "%d", &nn);
lines = (size_t) nn; /* vector length */
- if ((fp = fopen(filename, "r")) == NULL)
+ if ((fp = fopen(filename, "r")) == NULL)
rb_raise(rb_eIOError, "cannot open file %s.", filename);
while (1) {
- if (fgets(buf, 1024, fp) == NULL) /* read the first line to count number of columns */
+ if (fgets(buf, 1024, fp) == NULL) /* read the first line to count number of columns */
rb_sys_fail(0);
- if (buf[0] == '#') continue;
- else break;
- }
+ if (buf[0] == '#') continue;
+ else break;
+ }
n = count_columns(buf); /* number of vectors to be created */
- x = (GSL_TYPE(gsl_vector)**) xmalloc(sizeof(GSL_TYPE(gsl_vector)*)*n);
+ x = (GSL_TYPE(gsl_vector)**)xmalloc(sizeof(GSL_TYPE(gsl_vector)*)*n);
ary = rb_ary_new2(n);
for (j = 0; j < n; j++) {
x[j] = FUNCTION(gsl_vector,alloc)(lines);
@@ -2251,11 +2247,11 @@ static VALUE FUNCTION(rb_gsl_vector,filescan)(VALUE klass, VALUE file)
}
rewind(fp);
for (i = 0, ii = 0; ii < lines; i++) {
- pos = ftell(fp);
- if (fgets(buf, 1024, fp) == NULL)
+ pos = ftell(fp);
+ if (fgets(buf, 1024, fp) == NULL)
rb_sys_fail(0);
- if (buf[0] == '#') continue;
- fseek(fp, pos, SEEK_SET);
+ if (buf[0] == '#') continue;
+ fseek(fp, pos, SEEK_SET);
for (j = 0, jj = 0; jj < n; j++) {
k = fscanf(fp, FORMAT_TMP, &val);
if (k != 1) continue;
@@ -2269,9 +2265,9 @@ static VALUE FUNCTION(rb_gsl_vector,filescan)(VALUE klass, VALUE file)
}
#undef FORMAT_TMP
-static int FUNCTION(gsl_vector,eq)(const GSL_TYPE(gsl_vector) *a,
- const GSL_TYPE(gsl_vector) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,eq)(const GSL_TYPE(gsl_vector) *a,
+ const GSL_TYPE(gsl_vector) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2285,9 +2281,9 @@ static int FUNCTION(gsl_vector,eq)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,ne)(const GSL_TYPE(gsl_vector) *a,
- const GSL_TYPE(gsl_vector) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,ne)(const GSL_TYPE(gsl_vector) *a,
+ const GSL_TYPE(gsl_vector) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2301,9 +2297,9 @@ static int FUNCTION(gsl_vector,ne)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,gt)(const GSL_TYPE(gsl_vector) *a,
- const GSL_TYPE(gsl_vector) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,gt)(const GSL_TYPE(gsl_vector) *a,
+ const GSL_TYPE(gsl_vector) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2317,9 +2313,9 @@ static int FUNCTION(gsl_vector,gt)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,ge)(const GSL_TYPE(gsl_vector) *a,
- const GSL_TYPE(gsl_vector) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,ge)(const GSL_TYPE(gsl_vector) *a,
+ const GSL_TYPE(gsl_vector) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2333,9 +2329,9 @@ static int FUNCTION(gsl_vector,ge)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,lt)(const GSL_TYPE(gsl_vector) *a,
- const GSL_TYPE(gsl_vector) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,lt)(const GSL_TYPE(gsl_vector) *a,
+ const GSL_TYPE(gsl_vector) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2349,9 +2345,9 @@ static int FUNCTION(gsl_vector,lt)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,le)(const GSL_TYPE(gsl_vector) *a,
- const GSL_TYPE(gsl_vector) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,le)(const GSL_TYPE(gsl_vector) *a,
+ const GSL_TYPE(gsl_vector) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2365,9 +2361,9 @@ static int FUNCTION(gsl_vector,le)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,and)(const GSL_TYPE(gsl_vector) *a,
- const GSL_TYPE(gsl_vector) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,and)(const GSL_TYPE(gsl_vector) *a,
+ const GSL_TYPE(gsl_vector) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2381,9 +2377,9 @@ static int FUNCTION(gsl_vector,and)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,or)(const GSL_TYPE(gsl_vector) *a,
- const GSL_TYPE(gsl_vector) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,or)(const GSL_TYPE(gsl_vector) *a,
+ const GSL_TYPE(gsl_vector) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2397,9 +2393,9 @@ static int FUNCTION(gsl_vector,or)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,xor)(const GSL_TYPE(gsl_vector) *a,
- const GSL_TYPE(gsl_vector) *b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,xor)(const GSL_TYPE(gsl_vector) *a,
+ const GSL_TYPE(gsl_vector) *b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2413,8 +2409,8 @@ static int FUNCTION(gsl_vector,xor)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,eq2)(const GSL_TYPE(gsl_vector) *a,
- BASE b, gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,eq2)(const GSL_TYPE(gsl_vector) *a,
+ BASE b, gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2427,9 +2423,9 @@ static int FUNCTION(gsl_vector,eq2)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,ne2)(const GSL_TYPE(gsl_vector) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,ne2)(const GSL_TYPE(gsl_vector) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2442,9 +2438,9 @@ static int FUNCTION(gsl_vector,ne2)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,gt2)(const GSL_TYPE(gsl_vector) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,gt2)(const GSL_TYPE(gsl_vector) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2457,9 +2453,9 @@ static int FUNCTION(gsl_vector,gt2)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,ge2)(const GSL_TYPE(gsl_vector) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,ge2)(const GSL_TYPE(gsl_vector) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2472,9 +2468,9 @@ static int FUNCTION(gsl_vector,ge2)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,lt2)(const GSL_TYPE(gsl_vector) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,lt2)(const GSL_TYPE(gsl_vector) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2487,9 +2483,9 @@ static int FUNCTION(gsl_vector,lt2)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,le2)(const GSL_TYPE(gsl_vector) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,le2)(const GSL_TYPE(gsl_vector) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2502,9 +2498,9 @@ static int FUNCTION(gsl_vector,le2)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,and2)(const GSL_TYPE(gsl_vector) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,and2)(const GSL_TYPE(gsl_vector) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2517,9 +2513,9 @@ static int FUNCTION(gsl_vector,and2)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,or2)(const GSL_TYPE(gsl_vector) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,or2)(const GSL_TYPE(gsl_vector) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2532,9 +2528,9 @@ static int FUNCTION(gsl_vector,or2)(const GSL_TYPE(gsl_vector) *a,
return 0;
}
-static int FUNCTION(gsl_vector,xor2)(const GSL_TYPE(gsl_vector) *a,
- BASE b,
- gsl_block_uchar *c)
+static int FUNCTION(gsl_vector,xor2)(const GSL_TYPE(gsl_vector) *a,
+ BASE b,
+ gsl_block_uchar *c)
{
size_t i;
BASE x, y;
@@ -2549,12 +2545,12 @@ static int FUNCTION(gsl_vector,xor2)(const GSL_TYPE(gsl_vector) *a,
static VALUE FUNCTION(rb_gsl_vector,compare)(VALUE aa, VALUE bb,
- int (*cmp)(const GSL_TYPE(gsl_vector)*,
- const GSL_TYPE(gsl_vector)*,
- gsl_block_uchar*),
- int (*cmp2)(const GSL_TYPE(gsl_vector)*,
- BASE,
- gsl_block_uchar*))
+ int (*cmp)(const GSL_TYPE (gsl_vector)*,
+ const GSL_TYPE (gsl_vector)*,
+ gsl_block_uchar*),
+ int (*cmp2)(const GSL_TYPE (gsl_vector)*,
+ BASE,
+ gsl_block_uchar*))
{
GSL_TYPE(gsl_vector) *a, *b;
/* gsl_vector_int *c;*/
@@ -2564,9 +2560,9 @@ static VALUE FUNCTION(rb_gsl_vector,compare)(VALUE aa, VALUE bb,
c = gsl_block_uchar_alloc(a->size);
if (VEC_P(bb)) {
Data_Get_Struct(bb, GSL_TYPE(gsl_vector), b);
- if (a->size != b->size)
- rb_raise(rb_eRuntimeError, "Vector size mismatch, %d and %d", (int) a->size,
- (int) b->size);
+ if (a->size != b->size)
+ rb_raise(rb_eRuntimeError, "Vector size mismatch, %d and %d", (int) a->size,
+ (int) b->size);
/*status =*/ (*cmp)(a, b, c);
} else {
/*status =*/ (*cmp2)(a, NUMCONV(bb), c);
@@ -2577,55 +2573,55 @@ static VALUE FUNCTION(rb_gsl_vector,compare)(VALUE aa, VALUE bb,
static VALUE FUNCTION(rb_gsl_vector,eq)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_vector,compare)(aa, bb, FUNCTION(gsl_vector,eq),
- FUNCTION(gsl_vector,eq2));
+ FUNCTION(gsl_vector,eq2));
}
static VALUE FUNCTION(rb_gsl_vector,ne)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_vector,compare)(aa, bb, FUNCTION(gsl_vector,ne),
- FUNCTION(gsl_vector,ne2));
+ FUNCTION(gsl_vector,ne2));
}
static VALUE FUNCTION(rb_gsl_vector,gt)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_vector,compare)(aa, bb, FUNCTION(gsl_vector,gt),
- FUNCTION(gsl_vector,gt2));
+ FUNCTION(gsl_vector,gt2));
}
static VALUE FUNCTION(rb_gsl_vector,ge)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_vector,compare)(aa, bb, FUNCTION(gsl_vector,ge),
- FUNCTION(gsl_vector,ge2));
+ FUNCTION(gsl_vector,ge2));
}
static VALUE FUNCTION(rb_gsl_vector,lt)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_vector,compare)(aa, bb, FUNCTION(gsl_vector,lt),
- FUNCTION(gsl_vector,lt2));
+ FUNCTION(gsl_vector,lt2));
}
static VALUE FUNCTION(rb_gsl_vector,le)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_vector,compare)(aa, bb, FUNCTION(gsl_vector,le),
- FUNCTION(gsl_vector,le2));
+ FUNCTION(gsl_vector,le2));
}
static VALUE FUNCTION(rb_gsl_vector,and)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_vector,compare)(aa, bb, FUNCTION(gsl_vector,and),
- FUNCTION(gsl_vector,and2));
+ FUNCTION(gsl_vector,and2));
}
static VALUE FUNCTION(rb_gsl_vector,or)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_vector,compare)(aa, bb, FUNCTION(gsl_vector,or),
- FUNCTION(gsl_vector,or2));
+ FUNCTION(gsl_vector,or2));
}
static VALUE FUNCTION(rb_gsl_vector,xor)(VALUE aa, VALUE bb)
{
return FUNCTION(rb_gsl_vector,compare)(aa, bb, FUNCTION(gsl_vector,xor),
- FUNCTION(gsl_vector,xor2));
+ FUNCTION(gsl_vector,xor2));
}
static VALUE FUNCTION(rb_gsl_vector,not)(VALUE obj)
@@ -2663,11 +2659,11 @@ static VALUE FUNCTION(rb_gsl_vector,any2)(VALUE obj)
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
if (rb_block_given_p()) {
- for (i = 0; i < v->size; i++)
+ for (i = 0; i < v->size; i++)
if (rb_yield(C_TO_VALUE(FUNCTION(gsl_vector,get)(v, i)))) return Qtrue;
return Qfalse;
} else {
- for (i = 0; i < v->size; i++)
+ for (i = 0; i < v->size; i++)
if (v->data[i*v->stride]) return Qtrue;
return Qfalse;
}
@@ -2680,11 +2676,11 @@ static VALUE FUNCTION(rb_gsl_vector,none)(VALUE obj)
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
if (rb_block_given_p()) {
- for (i = 0; i < v->size; i++)
+ for (i = 0; i < v->size; i++)
if (rb_yield(C_TO_VALUE(FUNCTION(gsl_vector,get)(v, i)))) return Qfalse;
return Qtrue;
} else {
- for (i = 0; i < v->size; i++)
+ for (i = 0; i < v->size; i++)
if (v->data[i*v->stride]) return Qfalse;
return Qtrue;
}
@@ -2697,11 +2693,11 @@ static VALUE FUNCTION(rb_gsl_vector,all)(VALUE obj)
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
if (rb_block_given_p()) {
- for (i = 0; i < v->size; i++)
+ for (i = 0; i < v->size; i++)
if (!rb_yield(C_TO_VALUE(FUNCTION(gsl_vector,get)(v, i)))) return Qfalse;
return Qtrue;
} else {
- for (i = 0; i < v->size; i++)
+ for (i = 0; i < v->size; i++)
if (!v->data[i*v->stride]) return Qfalse;
return Qtrue;
}
@@ -2719,10 +2715,10 @@ static VALUE FUNCTION(rb_gsl_vector,where)(VALUE obj)
btmp = gsl_block_uchar_alloc(v->size);
for (i = 0; i < v->size; i++) {
if (rb_yield(C_TO_VALUE(FUNCTION(gsl_vector,get)(v, i)))) {
- btmp->data[i] = 1;
- n++;
+ btmp->data[i] = 1;
+ n++;
} else {
- btmp->data[i] = 0;
+ btmp->data[i] = 0;
}
} /* for */
} else { /* block is not given */
@@ -2754,10 +2750,10 @@ static VALUE FUNCTION(rb_gsl_vector,where2)(VALUE obj)
btmp = gsl_block_uchar_alloc(v->size);
for (i = 0; i < v->size; i++) {
if (rb_yield(C_TO_VALUE(FUNCTION(gsl_vector,get)(v, i)))) {
- btmp->data[i] = 1;
- n++;
+ btmp->data[i] = 1;
+ n++;
} else {
- btmp->data[i] = 0;
+ btmp->data[i] = 0;
}
} /* for */
} else { /* block is not given */
@@ -2768,11 +2764,11 @@ static VALUE FUNCTION(rb_gsl_vector,where2)(VALUE obj)
v2 = gsl_permutation_calloc(v->size); /* calloc() initializes v2 */
vv1 = Qnil;
vv2 = Data_Wrap_Struct(cgsl_index, 0, gsl_permutation_free, v2);
- } else if (v->size-n == 0) {
+ } else if (v->size-n == 0) {
v1 = gsl_permutation_calloc(n); /* calloc() initializes v1 */
- vv1 = Data_Wrap_Struct(cgsl_index, 0, gsl_permutation_free, v1);
+ vv1 = Data_Wrap_Struct(cgsl_index, 0, gsl_permutation_free, v1);
vv2 = Qnil;
- } else {
+ } else {
/* same case as 'where' */
v1 = gsl_permutation_alloc(n);
v2 = gsl_permutation_alloc(v->size-n);
@@ -2787,8 +2783,8 @@ static VALUE FUNCTION(rb_gsl_vector,where2)(VALUE obj)
return rb_ary_new3(2, vv1, vv2);
}
-static VALUE FUNCTION(rb_gsl_vector,op_inplace)(VALUE vv1, VALUE vv2,
- int (*f)(GSL_TYPE(gsl_vector)*, const GSL_TYPE(gsl_vector)*))
+static VALUE FUNCTION(rb_gsl_vector,op_inplace)(VALUE vv1, VALUE vv2,
+ int (*f)(GSL_TYPE (gsl_vector)*, const GSL_TYPE (gsl_vector)*))
{
GSL_TYPE(gsl_vector) *v1, *v2;
Data_Get_Struct(vv1, GSL_TYPE(gsl_vector), v1);
@@ -2866,14 +2862,14 @@ static VALUE FUNCTION(rb_gsl_vector,zip)(int argc, VALUE *argv, VALUE obj)
argv2 = argv;
} else {
if (argc < 1) rb_raise(rb_eArgError, "Too few arguments.");
- Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), v0);
+ Data_Get_Struct(argv[0], GSL_TYPE(gsl_vector), v0);
argc2 = argc - 1;
argv2 = argv + 1;
}
for (i = 0; (int) i < argc2; i++) {
CHECK_VEC(argv2[i]);
}
- vp = (GSL_TYPE(gsl_vector)**) malloc(sizeof(GSL_TYPE(gsl_vector)**));
+ vp = (GSL_TYPE(gsl_vector)**)malloc(sizeof(GSL_TYPE(gsl_vector)**));
for (i = 0; (int) i < argc2; i++) {
Data_Get_Struct(argv2[i], GSL_TYPE(gsl_vector), vp[i]);
}
@@ -2883,15 +2879,14 @@ static VALUE FUNCTION(rb_gsl_vector,zip)(int argc, VALUE *argv, VALUE obj)
FUNCTION(gsl_vector,set)(vnew, 0, FUNCTION(gsl_vector,get)(v0, i));
for (j = 0; (int) j < argc2; j++) {
if (i < vp[j]->size) {
- FUNCTION(gsl_vector,set)(vnew, j+1, FUNCTION(gsl_vector,get)(vp[j], i));
+ FUNCTION(gsl_vector,set)(vnew, j+1, FUNCTION(gsl_vector,get)(vp[j], i));
} else {
- FUNCTION(gsl_vector,set)(vnew, j+1, 0.0);
+ FUNCTION(gsl_vector,set)(vnew, j+1, 0.0);
}
}
rb_ary_store(ary, i, Data_Wrap_Struct(GSL_TYPE(cgsl_vector), 0, FUNCTION(gsl_vector,free), vnew));
}
-
- free((GSL_TYPE(gsl_vector)**) vp);
+ free((GSL_TYPE(gsl_vector)**)vp);
return ary;
}
@@ -2955,17 +2950,16 @@ static VALUE FUNCTION(rb_gsl_vector,cumprod)(VALUE obj)
return Data_Wrap_Struct(VEC_ROW_COL(obj), 0, FUNCTION(gsl_vector,free), vnew);
}
-#ifdef GSL_1_9_LATER
static VALUE FUNCTION(rb_gsl_vector,property)(VALUE obj,
- int (*f)(const GSL_TYPE(gsl_vector) *)) {
+ int (*f)(const GSL_TYPE (gsl_vector) *)) {
GSL_TYPE(gsl_vector) *v;
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
- return INT2FIX((*f)(v));
+ return INT2FIX((*f)(v));
}
static VALUE FUNCTION(rb_gsl_vector,property2)(VALUE obj,
- int (*f)(const GSL_TYPE(gsl_vector) *)) {
- GSL_TYPE(gsl_vector) *v;
+ int (*f)(const GSL_TYPE (gsl_vector) *)) {
+ GSL_TYPE(gsl_vector) *v;
Data_Get_Struct(obj, GSL_TYPE(gsl_vector), v);
if ((*f)(v)) return Qtrue;
else return Qfalse;
@@ -2977,19 +2971,17 @@ static VALUE FUNCTION(rb_gsl_vector,ispos)(VALUE obj)
}
static VALUE FUNCTION(rb_gsl_vector,ispos2)(VALUE obj)
{
- return FUNCTION(rb_gsl_vector,property2)(obj, FUNCTION(gsl_vector, ispos));
+ return FUNCTION(rb_gsl_vector,property2)(obj, FUNCTION(gsl_vector, ispos));
}
static VALUE FUNCTION(rb_gsl_vector,isneg)(VALUE obj)
{
- return FUNCTION(rb_gsl_vector,property)(obj, FUNCTION(gsl_vector, isneg));
+ return FUNCTION(rb_gsl_vector,property)(obj, FUNCTION(gsl_vector, isneg));
}
static VALUE FUNCTION(rb_gsl_vector,isneg2)(VALUE obj)
{
- return FUNCTION(rb_gsl_vector,property2)(obj, FUNCTION(gsl_vector, isneg));
+ return FUNCTION(rb_gsl_vector,property2)(obj, FUNCTION(gsl_vector, isneg));
}
-#endif
-#ifdef GSL_1_10_LATER
static VALUE FUNCTION(rb_gsl_vector,isnonneg)(VALUE obj)
{
return FUNCTION(rb_gsl_vector,property)(obj, FUNCTION(gsl_vector, isnonneg));
@@ -2997,19 +2989,18 @@ static VALUE FUNCTION(rb_gsl_vector,isnonneg)(VALUE obj)
static VALUE FUNCTION(rb_gsl_vector,isnonneg2)(VALUE obj)
{
return FUNCTION(rb_gsl_vector,property2)(obj, FUNCTION(gsl_vector, isnonneg));
-}
-#endif
+}
void FUNCTION(Init_gsl_vector,init)(VALUE module)
{
- /* rb_define_singleton_method(GSL_TYPE(cgsl_vector), "new",
+ /* rb_define_singleton_method(GSL_TYPE(cgsl_vector), "new",
FUNCTION(rb_gsl_vector,new), -1);*/
- rb_define_singleton_method(GSL_TYPE(cgsl_vector), "[]",
- FUNCTION(rb_gsl_vector,new), -1);
- rb_define_singleton_method(GSL_TYPE(cgsl_vector), "alloc",
- FUNCTION(rb_gsl_vector,new), -1);
- rb_define_singleton_method(GSL_TYPE(cgsl_vector), "calloc",
- FUNCTION(rb_gsl_vector,calloc), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_vector), "[]",
+ FUNCTION(rb_gsl_vector,new), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_vector), "alloc",
+ FUNCTION(rb_gsl_vector,new), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_vector), "calloc",
+ FUNCTION(rb_gsl_vector,calloc), 1);
/*****/
rb_define_method(GSL_TYPE(cgsl_vector), "get", FUNCTION(rb_gsl_vector,get), -1);
@@ -3078,86 +3069,86 @@ void FUNCTION(Init_gsl_vector,init)(VALUE module)
rb_define_method(GSL_TYPE(cgsl_vector), "cumsum", FUNCTION(rb_gsl_vector,cumsum), 0);
rb_define_method(GSL_TYPE(cgsl_vector), "cumprod", FUNCTION(rb_gsl_vector,cumprod), 0);
- rb_define_method(GSL_TYPE(cgsl_vector), "connect",
- FUNCTION(rb_gsl_vector,connect), -1);
- rb_define_singleton_method(GSL_TYPE(cgsl_vector), "connect",
- FUNCTION(rb_gsl_vector,connect), -1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "connect",
+ FUNCTION(rb_gsl_vector,connect), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_vector), "connect",
+ FUNCTION(rb_gsl_vector,connect), -1);
rb_define_method(GSL_TYPE(cgsl_vector), "sgn", FUNCTION(rb_gsl_vector,sgn), 0);
rb_define_alias(GSL_TYPE(cgsl_vector), "signum", "sgn");
rb_define_method(GSL_TYPE(cgsl_vector), "abs", FUNCTION(rb_gsl_vector,abs), 0);
rb_define_alias(GSL_TYPE(cgsl_vector), "fabs", "abs");
- rb_define_method(GSL_TYPE(cgsl_vector), "square",
- FUNCTION(rb_gsl_vector,square), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "square",
+ FUNCTION(rb_gsl_vector,square), 0);
rb_define_alias(GSL_TYPE(cgsl_vector), "abs2", "square");
rb_define_method(GSL_TYPE(cgsl_vector), "sqrt", FUNCTION(rb_gsl_vector,sqrt), 0);
- rb_define_singleton_method(GSL_TYPE(cgsl_vector), "memcpy",
- FUNCTION(rb_gsl_vector,memcpy), 2);
- rb_define_method(GSL_TYPE(cgsl_vector), "clone",
- FUNCTION(rb_gsl_vector,clone), 0);
+ rb_define_singleton_method(GSL_TYPE(cgsl_vector), "memcpy",
+ FUNCTION(rb_gsl_vector,memcpy), 2);
+ rb_define_method(GSL_TYPE(cgsl_vector), "clone",
+ FUNCTION(rb_gsl_vector,clone), 0);
rb_define_alias(GSL_TYPE(cgsl_vector), "duplicate", "clone");
rb_define_alias(GSL_TYPE(cgsl_vector), "dup", "clone");
- rb_define_singleton_method(GSL_TYPE(cgsl_vector), "swap",
- FUNCTION(rb_gsl_vector,swap), 2);
- rb_define_method(GSL_TYPE(cgsl_vector), "swap_elements",
- FUNCTION(rb_gsl_vector,swap_elements), 2);
-
- rb_define_method(GSL_TYPE(cgsl_vector), "fwrite",
- FUNCTION(rb_gsl_vector,fwrite), 1);
- rb_define_method(GSL_TYPE(cgsl_vector), "fread",
- FUNCTION(rb_gsl_vector,fread), 1);
- rb_define_method(GSL_TYPE(cgsl_vector), "fprintf",
- FUNCTION(rb_gsl_vector,fprintf), -1);
- rb_define_method(GSL_TYPE(cgsl_vector), "printf",
- FUNCTION(rb_gsl_vector,printf), -1);
- rb_define_method(GSL_TYPE(cgsl_vector), "fscanf",
- FUNCTION(rb_gsl_vector,fscanf), 1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_vector), "swap",
+ FUNCTION(rb_gsl_vector,swap), 2);
+ rb_define_method(GSL_TYPE(cgsl_vector), "swap_elements",
+ FUNCTION(rb_gsl_vector,swap_elements), 2);
+
+ rb_define_method(GSL_TYPE(cgsl_vector), "fwrite",
+ FUNCTION(rb_gsl_vector,fwrite), 1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "fread",
+ FUNCTION(rb_gsl_vector,fread), 1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "fprintf",
+ FUNCTION(rb_gsl_vector,fprintf), -1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "printf",
+ FUNCTION(rb_gsl_vector,printf), -1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "fscanf",
+ FUNCTION(rb_gsl_vector,fscanf), 1);
/* 2.Aug.2004 */
- rb_define_singleton_method(GSL_TYPE(cgsl_vector), "inner_product",
- FUNCTION(rb_gsl_vector,inner_product), -1);
- rb_define_singleton_method(GSL_TYPE(cgsl_vector), "dot",
- FUNCTION(rb_gsl_vector,inner_product), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_vector), "inner_product",
+ FUNCTION(rb_gsl_vector,inner_product), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_vector), "dot",
+ FUNCTION(rb_gsl_vector,inner_product), -1);
rb_define_method(GSL_TYPE(cgsl_vector), "inner_product",
- FUNCTION(rb_gsl_vector,inner_product), -1);
+ FUNCTION(rb_gsl_vector,inner_product), -1);
rb_define_alias(GSL_TYPE(cgsl_vector), "dot", "inner_product");
- rb_define_method(GSL_TYPE(cgsl_vector), "equal?",
- FUNCTION(rb_gsl_vector,equal), -1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "equal?",
+ FUNCTION(rb_gsl_vector,equal), -1);
rb_define_alias(GSL_TYPE(cgsl_vector), "==", "equal?");
- rb_define_method(GSL_TYPE(cgsl_vector), "to_poly",
- FUNCTION(rb_gsl_vector,to_poly), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "to_poly",
+ FUNCTION(rb_gsl_vector,to_poly), 0);
/*****/
- rb_define_method(GSL_TYPE(cgsl_vector), "graph",
- FUNCTION(rb_gsl_vector,graph), -1);
- rb_define_method(GSL_TYPE(cgsl_vector), "graph_step",
- FUNCTION(rb_gsl_vector,graph_step), -1);
- rb_define_method(GSL_TYPE(cgsl_vector), "plot",
- FUNCTION(rb_gsl_vector,plot), -1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "graph",
+ FUNCTION(rb_gsl_vector,graph), -1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "graph_step",
+ FUNCTION(rb_gsl_vector,graph_step), -1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "plot",
+ FUNCTION(rb_gsl_vector,plot), -1);
rb_define_method(GSL_TYPE(cgsl_vector), "print",
- FUNCTION(rb_gsl_vector,print), 0);
- rb_define_method(GSL_TYPE(cgsl_vector), "inspect",
- FUNCTION(rb_gsl_vector,inspect), 0);
- rb_define_method(GSL_TYPE(cgsl_vector), "to_s",
- FUNCTION(rb_gsl_vector,to_s), 0);
+ FUNCTION(rb_gsl_vector,print), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "inspect",
+ FUNCTION(rb_gsl_vector,inspect), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "to_s",
+ FUNCTION(rb_gsl_vector,to_s), 0);
/*****/
rb_define_method(GSL_TYPE(cgsl_vector), "subvector",
- FUNCTION(rb_gsl_vector,subvector), -1);
+ FUNCTION(rb_gsl_vector,subvector), -1);
rb_define_alias(GSL_TYPE(cgsl_vector), "view", "subvector");
- rb_define_method(GSL_TYPE(cgsl_vector), "subvector_with_stride",
- FUNCTION(rb_gsl_vector,subvector_with_stride), -1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "subvector_with_stride",
+ FUNCTION(rb_gsl_vector,subvector_with_stride), -1);
rb_define_alias(GSL_TYPE(cgsl_vector), "view_with_stride", "subvector_with_stride");
- rb_define_method(GSL_TYPE(cgsl_vector), "matrix_view",
- FUNCTION(rb_gsl_vector,matrix_view), -1);
- rb_define_method(GSL_TYPE(cgsl_vector), "matrix_view_with_tda",
- FUNCTION(rb_gsl_vector,matrix_view_with_tda), 3);
+ rb_define_method(GSL_TYPE(cgsl_vector), "matrix_view",
+ FUNCTION(rb_gsl_vector,matrix_view), -1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "matrix_view_with_tda",
+ FUNCTION(rb_gsl_vector,matrix_view_with_tda), 3);
#ifdef BASE_DOUBLE
rb_undef_method(cgsl_vector_view_ro, "set");
@@ -3171,106 +3162,106 @@ void FUNCTION(Init_gsl_vector,init)(VALUE module)
rb_undef_method(cgsl_vector_int_col_view_ro, "[]=");
#endif
- rb_define_method(GSL_TYPE(cgsl_vector), "scale",
- FUNCTION(rb_gsl_vector,scale), 1);
- rb_define_method(GSL_TYPE(cgsl_vector), "scale!",
- FUNCTION(rb_gsl_vector,scale_bang), 1);
- rb_define_method(GSL_TYPE(cgsl_vector), "add_constant",
- FUNCTION(rb_gsl_vector,add_constant), 1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "scale",
+ FUNCTION(rb_gsl_vector,scale), 1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "scale!",
+ FUNCTION(rb_gsl_vector,scale_bang), 1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "add_constant",
+ FUNCTION(rb_gsl_vector,add_constant), 1);
rb_define_alias(GSL_TYPE(cgsl_vector), "add_const", "add_constant");
- rb_define_method(GSL_TYPE(cgsl_vector), "add_constant!",
- FUNCTION(rb_gsl_vector,add_constant_bang), 1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "add_constant!",
+ FUNCTION(rb_gsl_vector,add_constant_bang), 1);
rb_define_alias(GSL_TYPE(cgsl_vector), "add_const!", "add_constant!");
#ifdef HAVE_TENSOR_TENSOR_H
- rb_define_method(GSL_TYPE(cgsl_vector), "to_tensor",
- FUNCTION(rb_gsl_vector,to_tensor), -1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "to_tensor",
+ FUNCTION(rb_gsl_vector,to_tensor), -1);
#endif
- rb_define_singleton_method(GSL_TYPE(cgsl_vector), "to_gplot",
- FUNCTION(rb_gsl_vector,to_gplot), -1);
- rb_define_singleton_method(GSL_TYPE(cgsl_vector), "to_gsplot",
- FUNCTION(rb_gsl_vector,to_gplot), -1);
- rb_define_method(GSL_TYPE(cgsl_vector), "to_gplot",
- FUNCTION(rb_gsl_vector,to_gplot), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_vector), "to_gplot",
+ FUNCTION(rb_gsl_vector,to_gplot), -1);
+ rb_define_singleton_method(GSL_TYPE(cgsl_vector), "to_gsplot",
+ FUNCTION(rb_gsl_vector,to_gplot), -1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "to_gplot",
+ FUNCTION(rb_gsl_vector,to_gplot), -1);
rb_define_alias(GSL_TYPE(cgsl_vector), "to_gsplot", "to_gplot");
/*****/
- rb_define_method(GSL_TYPE(cgsl_vector), "collect",
- FUNCTION(rb_gsl_vector,collect), 0);
- rb_define_method(GSL_TYPE(cgsl_vector), "collect!",
- FUNCTION(rb_gsl_vector,collect_bang), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "collect",
+ FUNCTION(rb_gsl_vector,collect), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "collect!",
+ FUNCTION(rb_gsl_vector,collect_bang), 0);
rb_define_alias(GSL_TYPE(cgsl_vector), "map", "collect");
rb_define_alias(GSL_TYPE(cgsl_vector), "map!", "collect!");
rb_define_method(GSL_TYPE(cgsl_vector), "to_m", FUNCTION(rb_gsl_vector,to_m), 2);
rb_define_alias(GSL_TYPE(cgsl_vector), "to_matrix", "to_m");
rb_define_alias(GSL_TYPE(cgsl_vector), "reshape", "to_m");
- rb_define_method(GSL_TYPE(cgsl_vector), "to_m_diagonal",
- FUNCTION(rb_gsl_vector,to_m_diagonal), 0);
- rb_define_method(GSL_TYPE(cgsl_vector), "block",
- FUNCTION(rb_gsl_vector,block), 0);
- rb_define_method(GSL_TYPE(cgsl_vector), "to_m_circulant",
- FUNCTION(rb_gsl_vector,to_m_circulant), 0);
- rb_define_singleton_method(GSL_TYPE(cgsl_vector), "indgen",
- FUNCTION(rb_gsl_vector,indgen_singleton), -1);
- rb_define_method(GSL_TYPE(cgsl_vector), "indgen",
- FUNCTION(rb_gsl_vector,indgen), -1);
- rb_define_method(GSL_TYPE(cgsl_vector), "indgen!",
- FUNCTION(rb_gsl_vector,indgen_bang), -1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "to_m_diagonal",
+ FUNCTION(rb_gsl_vector,to_m_diagonal), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "block",
+ FUNCTION(rb_gsl_vector,block), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "to_m_circulant",
+ FUNCTION(rb_gsl_vector,to_m_circulant), 0);
+ rb_define_singleton_method(GSL_TYPE(cgsl_vector), "indgen",
+ FUNCTION(rb_gsl_vector,indgen_singleton), -1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "indgen",
+ FUNCTION(rb_gsl_vector,indgen), -1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "indgen!",
+ FUNCTION(rb_gsl_vector,indgen_bang), -1);
/*****/
- rb_define_method(GSL_TYPE(cgsl_vector), "sort!",
- GSL_TYPE(rb_gsl_sort_vector), 0);
- rb_define_method(GSL_TYPE(cgsl_vector), "sort",
- GSL_TYPE(rb_gsl_sort_vector2), 0);
- rb_define_method(GSL_TYPE(cgsl_vector), "sort_index",
- FUNCTION(rb_gsl_sort_vector,index), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "sort!",
+ GSL_TYPE(rb_gsl_sort_vector), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "sort",
+ GSL_TYPE(rb_gsl_sort_vector2), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "sort_index",
+ FUNCTION(rb_gsl_sort_vector,index), 0);
rb_define_method(GSL_TYPE(cgsl_vector), "sort_smallest",
- FUNCTION(rb_gsl_sort_vector,smallest), 1);
+ FUNCTION(rb_gsl_sort_vector,smallest), 1);
rb_define_alias(GSL_TYPE(cgsl_vector), "smallest", "sort_smallest");
rb_define_method(GSL_TYPE(cgsl_vector), "sort_largest",
- FUNCTION(rb_gsl_sort_vector,largest), 1);
+ FUNCTION(rb_gsl_sort_vector,largest), 1);
rb_define_alias(GSL_TYPE(cgsl_vector), "largest", "sort_largest");
- rb_define_method(GSL_TYPE(cgsl_vector), "sort_smallest_index",
- FUNCTION(rb_gsl_sort_vector,smallest_index), 1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "sort_smallest_index",
+ FUNCTION(rb_gsl_sort_vector,smallest_index), 1);
rb_define_alias(GSL_TYPE(cgsl_vector), "smallest_index", "sort_smallest_index");
- rb_define_method(GSL_TYPE(cgsl_vector), "sort_largest_index",
- FUNCTION(rb_gsl_sort_vector,largest_index), 1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "sort_largest_index",
+ FUNCTION(rb_gsl_sort_vector,largest_index), 1);
rb_define_alias(GSL_TYPE(cgsl_vector), "largest_index", "sort_largest_index");
/*****/
rb_define_method(GSL_TYPE(cgsl_vector), "histogram",
- FUNCTION(rb_gsl_vector,histogram), -1);
-
- rb_define_method(GSL_TYPE(cgsl_vector), "last",
- FUNCTION(rb_gsl_vector,last), 0);
- rb_define_method(GSL_TYPE(cgsl_vector), "first",
- FUNCTION(rb_gsl_vector,first), 0);
- rb_define_method(GSL_TYPE(cgsl_vector), "concat",
- FUNCTION(rb_gsl_vector,concat), 1);
-
- rb_define_method(GSL_TYPE(cgsl_vector), "diff",
- FUNCTION(rb_gsl_vector,diff), -1);
- rb_define_method(GSL_TYPE(cgsl_vector), "isnan",
- FUNCTION(rb_gsl_vector,isnan), 0);
- rb_define_method(GSL_TYPE(cgsl_vector), "isinf",
- FUNCTION(rb_gsl_vector,isinf), 0);
- rb_define_method(GSL_TYPE(cgsl_vector), "finite",
- FUNCTION(rb_gsl_vector,finite), 0);
-
- rb_define_method(GSL_TYPE(cgsl_vector), "isnan?",
- FUNCTION(rb_gsl_vector,isnan2), 0);
- rb_define_method(GSL_TYPE(cgsl_vector), "isinf?",
- FUNCTION(rb_gsl_vector,isinf2), 0);
- rb_define_method(GSL_TYPE(cgsl_vector), "finite?",
- FUNCTION(rb_gsl_vector,finite2), 0);
-
- rb_define_method(GSL_TYPE(cgsl_vector), "delete_at",
- FUNCTION(rb_gsl_vector,delete_at), 1);
- rb_define_method(GSL_TYPE(cgsl_vector), "delete_if",
- FUNCTION(rb_gsl_vector,delete_if), 0);
- rb_define_method(GSL_TYPE(cgsl_vector), "delete",
- FUNCTION(rb_gsl_vector,delete), 1);
+ FUNCTION(rb_gsl_vector,histogram), -1);
+
+ rb_define_method(GSL_TYPE(cgsl_vector), "last",
+ FUNCTION(rb_gsl_vector,last), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "first",
+ FUNCTION(rb_gsl_vector,first), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "concat",
+ FUNCTION(rb_gsl_vector,concat), 1);
+
+ rb_define_method(GSL_TYPE(cgsl_vector), "diff",
+ FUNCTION(rb_gsl_vector,diff), -1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "isnan",
+ FUNCTION(rb_gsl_vector,isnan), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "isinf",
+ FUNCTION(rb_gsl_vector,isinf), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "finite",
+ FUNCTION(rb_gsl_vector,finite), 0);
+
+ rb_define_method(GSL_TYPE(cgsl_vector), "isnan?",
+ FUNCTION(rb_gsl_vector,isnan2), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "isinf?",
+ FUNCTION(rb_gsl_vector,isinf2), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "finite?",
+ FUNCTION(rb_gsl_vector,finite2), 0);
+
+ rb_define_method(GSL_TYPE(cgsl_vector), "delete_at",
+ FUNCTION(rb_gsl_vector,delete_at), 1);
+ rb_define_method(GSL_TYPE(cgsl_vector), "delete_if",
+ FUNCTION(rb_gsl_vector,delete_if), 0);
+ rb_define_method(GSL_TYPE(cgsl_vector), "delete",
+ FUNCTION(rb_gsl_vector,delete), 1);
/***/
rb_define_singleton_method(GSL_TYPE(cgsl_vector), "filescan", FUNCTION(rb_gsl_vector,filescan), 1);
@@ -3294,9 +3285,9 @@ void FUNCTION(Init_gsl_vector,init)(VALUE module)
rb_define_method(GSL_TYPE(cgsl_vector), "all?", FUNCTION(rb_gsl_vector,all), 0);
rb_define_method(GSL_TYPE(cgsl_vector), "none?", FUNCTION(rb_gsl_vector,none), 0);
rb_define_method(GSL_TYPE(cgsl_vector), "any",
- FUNCTION(rb_gsl_vector,any), 0);
+ FUNCTION(rb_gsl_vector,any), 0);
rb_define_method(GSL_TYPE(cgsl_vector), "any?",
- FUNCTION(rb_gsl_vector,any2), 0);
+ FUNCTION(rb_gsl_vector,any2), 0);
rb_define_method(GSL_TYPE(cgsl_vector), "where", FUNCTION(rb_gsl_vector,where), 0);
rb_define_method(GSL_TYPE(cgsl_vector), "where2", FUNCTION(rb_gsl_vector,where2), 0);
@@ -3309,17 +3300,12 @@ void FUNCTION(Init_gsl_vector,init)(VALUE module)
rb_define_singleton_method(GSL_TYPE(cgsl_vector), "zip", FUNCTION(rb_gsl_vector,zip), -1);
rb_define_method(GSL_TYPE(cgsl_vector), "zip", FUNCTION(rb_gsl_vector,zip), -1);
rb_define_method(GSL_TYPE(cgsl_vector), "join", FUNCTION(rb_gsl_vector,join), -1);
-#ifdef GSL_1_9_LATER
rb_define_method(GSL_TYPE(cgsl_vector), "ispos", FUNCTION(rb_gsl_vector,ispos), 0);
rb_define_method(GSL_TYPE(cgsl_vector), "ispos?", FUNCTION(rb_gsl_vector,ispos2), 0);
rb_define_method(GSL_TYPE(cgsl_vector), "isneg", FUNCTION(rb_gsl_vector,isneg), 0);
rb_define_method(GSL_TYPE(cgsl_vector), "isneg?", FUNCTION(rb_gsl_vector,isneg2), 0);
-#endif
-
-#ifdef GSL_1_10_LATER
rb_define_method(GSL_TYPE(cgsl_vector), "isnonneg", FUNCTION(rb_gsl_vector,isnonneg), 0);
rb_define_method(GSL_TYPE(cgsl_vector), "isnonneg?", FUNCTION(rb_gsl_vector,isnonneg2), 0);
-#endif
}
#undef NUMCONV
diff --git a/ext/gsl/wavelet.c b/ext/gsl_native/wavelet.c
similarity index 64%
rename from ext/gsl/wavelet.c
rename to ext/gsl_native/wavelet.c
index be7ddf4..cb3944d 100644
--- a/ext/gsl/wavelet.c
+++ b/ext/gsl_native/wavelet.c
@@ -12,22 +12,16 @@
#include "include/rb_gsl_array.h"
#include "include/rb_gsl_common.h"
-#ifdef GSL_1_6_LATER
#include <gsl/gsl_wavelet.h>
#include <gsl/gsl_wavelet2d.h>
-#endif
-
-#ifdef HAVE_NARRAY_H
-#include "narray.h"
-#endif
#ifndef CHECK_WAVELET
-#define CHECK_WAVELET(x) if(!rb_obj_is_kind_of(x,cgsl_wavelet))\
+#define CHECK_WAVELET(x) if(!rb_obj_is_kind_of(x,cgsl_wavelet)) \
rb_raise(rb_eTypeError, "wrong argument type (Wavelet expected)");
#endif
#ifndef CHECK_WORKSPACE
-#define CHECK_WORKSPACE(x) if(!rb_obj_is_kind_of(x,cgsl_wavelet_workspace))\
+#define CHECK_WORKSPACE(x) if(!rb_obj_is_kind_of(x,cgsl_wavelet_workspace)) \
rb_raise(rb_eTypeError, "wrong argument type (Wavelet::Workspace expected)");
#endif
@@ -47,14 +41,11 @@ enum {
GSL_WAVELET_BSPLINE_CENTERED,
};
-#ifdef GSL_1_6_LATER
static const gsl_wavelet_type* rb_gsl_wavelet_get_type(VALUE t);
static VALUE cgsl_wavelet_workspace;
-#endif
static VALUE rb_gsl_wavelet_new(VALUE klass, VALUE t, VALUE m)
{
-#ifdef GSL_1_6_LATER
const gsl_wavelet_type *T;
size_t member;
gsl_wavelet *w = NULL;
@@ -64,13 +55,8 @@ static VALUE rb_gsl_wavelet_new(VALUE klass, VALUE t, VALUE m)
w = gsl_wavelet_alloc(T, member);
if (w == NULL) rb_raise(rb_eNoMemError, "gsl_wavelet_alloc failed");
return Data_Wrap_Struct(klass, 0, gsl_wavelet_free, w);
-#else
- rb_raise(rb_eNotImpError, "Wavelet transforms not supported in GSL-%s, use GSL-1.6 or later", GSL_VERSION);
- return Qnil;
-#endif
}
-#ifdef GSL_1_6_LATER
static const gsl_wavelet_type* rb_gsl_wavelet_get_type_str(char *name);
static const gsl_wavelet_type* rb_gsl_wavelet_get_type_int(int t);
static const gsl_wavelet_type* rb_gsl_wavelet_get_type(VALUE t)
@@ -84,9 +70,9 @@ static const gsl_wavelet_type* rb_gsl_wavelet_get_type(VALUE t)
T = rb_gsl_wavelet_get_type_int(FIX2INT(t));
break;
default:
- rb_raise(rb_eTypeError,
- "wrong type of argument %s (String or Fixnum expected)",
- rb_class2name(CLASS_OF(t)));
+ rb_raise(rb_eTypeError,
+ "wrong type of argument %s (String or Fixnum expected)",
+ rb_class2name(CLASS_OF(t)));
break;
}
return T;
@@ -174,19 +160,19 @@ static VALUE rb_gsl_wavelet_workspace_new(VALUE klass, VALUE nn)
}
static VALUE rb_gsl_wavelet2d_trans(int argc, VALUE *argv, VALUE obj,
- int (*trans)(const gsl_wavelet *,
- gsl_matrix *,
- gsl_wavelet_workspace *),
- int sss);
+ int (*trans)(const gsl_wavelet *,
+ gsl_matrix *,
+ gsl_wavelet_workspace *),
+ int sss);
static VALUE rb_gsl_wavelet2d(int argc, VALUE *argv, VALUE obj,
- int (*trans)(const gsl_wavelet *,
- gsl_matrix *,
- gsl_wavelet_direction,
- gsl_wavelet_workspace *),
- int sss);
+ int (*trans)(const gsl_wavelet *,
+ gsl_matrix *,
+ gsl_wavelet_direction,
+ gsl_wavelet_workspace *),
+ int sss);
static VALUE rb_gsl_wavelet_transform0(int argc, VALUE *argv, VALUE obj,
- int sss)
+ int sss)
{
gsl_wavelet *w = NULL;
gsl_vector *v = NULL, *vnew;
@@ -212,7 +198,7 @@ static VALUE rb_gsl_wavelet_transform0(int argc, VALUE *argv, VALUE obj,
if (MATRIX_P(argv[1])) {
return rb_gsl_wavelet2d(argc, argv, obj,
- gsl_wavelet2d_transform_matrix, sss);
+ gsl_wavelet2d_transform_matrix, sss);
}
if (VECTOR_P(argv[1])) {
Data_Get_Struct(argv[0], gsl_wavelet, w);
@@ -237,10 +223,9 @@ static VALUE rb_gsl_wavelet_transform0(int argc, VALUE *argv, VALUE obj,
break;
default:
if (argc < 1) rb_raise(rb_eArgError, "too few arguments");
-
if (MATRIX_P(argv[0])) {
return rb_gsl_wavelet2d(argc, argv, obj,
- gsl_wavelet2d_transform_matrix, sss);
+ gsl_wavelet2d_transform_matrix, sss);
}
if (VECTOR_P(obj)) {
CHECK_WAVELET(argv[0]);
@@ -312,7 +297,7 @@ static VALUE rb_gsl_wavelet_transform0(int argc, VALUE *argv, VALUE obj,
break;
}
if (naflag == 0) {
- if (sss == RB_GSL_DWT_COPY) {
+ if (sss == RB_GSL_DWT_COPY) {
vnew = gsl_vector_alloc(v->size);
gsl_vector_memcpy(vnew, v);
ary = Data_Wrap_Struct(cgsl_vector, 0, gsl_vector_free, vnew);
@@ -349,10 +334,10 @@ static VALUE rb_gsl_wavelet_transform2(int argc, VALUE *argv, VALUE obj)
}
static VALUE rb_gsl_wavelet_trans(int argc, VALUE *argv, VALUE obj,
- int (*trans)(const gsl_wavelet *,
- double *, size_t, size_t,
- gsl_wavelet_workspace *),
- int sss)
+ int (*trans)(const gsl_wavelet *,
+ double *, size_t, size_t,
+ gsl_wavelet_workspace *),
+ int sss)
{
gsl_wavelet *w = NULL;
gsl_vector *v = NULL, *vnew;
@@ -375,11 +360,11 @@ static VALUE rb_gsl_wavelet_trans(int argc, VALUE *argv, VALUE obj,
if (MATRIX_P(argv[1])) {
if (trans == gsl_wavelet_transform_forward) {
- return rb_gsl_wavelet2d_trans(argc, argv, obj,
- gsl_wavelet2d_transform_matrix_forward, sss);
+ return rb_gsl_wavelet2d_trans(argc, argv, obj,
+ gsl_wavelet2d_transform_matrix_forward, sss);
} else {
- return rb_gsl_wavelet2d_trans(argc, argv, obj,
- gsl_wavelet2d_transform_matrix_inverse, sss);
+ return rb_gsl_wavelet2d_trans(argc, argv, obj,
+ gsl_wavelet2d_transform_matrix_inverse, sss);
}
}
if (VECTOR_P(argv[1])) {
@@ -405,14 +390,13 @@ static VALUE rb_gsl_wavelet_trans(int argc, VALUE *argv, VALUE obj,
break;
default:
if (argc < 1) rb_raise(rb_eArgError, "too few arguments");
-
if (MATRIX_P(argv[0])) {
if (trans == gsl_wavelet_transform_forward) {
- return rb_gsl_wavelet2d_trans(argc, argv, obj,
- gsl_wavelet2d_transform_matrix_forward, sss);
+ return rb_gsl_wavelet2d_trans(argc, argv, obj,
+ gsl_wavelet2d_transform_matrix_forward, sss);
} else {
- return rb_gsl_wavelet2d_trans(argc, argv, obj,
- gsl_wavelet2d_transform_matrix_inverse, sss);
+ return rb_gsl_wavelet2d_trans(argc, argv, obj,
+ gsl_wavelet2d_transform_matrix_inverse, sss);
}
}
if (VECTOR_P(obj)) {
@@ -500,33 +484,33 @@ static VALUE rb_gsl_wavelet_trans(int argc, VALUE *argv, VALUE obj,
static VALUE rb_gsl_wavelet_transform_forward(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_wavelet_trans(argc, argv, obj, gsl_wavelet_transform_forward,
- RB_GSL_DWT_COPY);
+ RB_GSL_DWT_COPY);
}
static VALUE rb_gsl_wavelet_transform_inverse(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_wavelet_trans(argc, argv, obj, gsl_wavelet_transform_inverse,
- RB_GSL_DWT_COPY);
+ RB_GSL_DWT_COPY);
}
static VALUE rb_gsl_wavelet_transform_forward2(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_wavelet_trans(argc, argv, obj, gsl_wavelet_transform_forward,
- RB_GSL_DWT_INPLACE);
+ RB_GSL_DWT_INPLACE);
}
static VALUE rb_gsl_wavelet_transform_inverse2(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_wavelet_trans(argc, argv, obj, gsl_wavelet_transform_inverse,
- RB_GSL_DWT_INPLACE);
+ RB_GSL_DWT_INPLACE);
}
static VALUE rb_gsl_wavelet2d(int argc, VALUE *argv, VALUE obj,
- int (*trans)(const gsl_wavelet *,
- gsl_matrix *,
- gsl_wavelet_direction,
- gsl_wavelet_workspace *),
- int sss)
+ int (*trans)(const gsl_wavelet *,
+ gsl_matrix *,
+ gsl_wavelet_direction,
+ gsl_wavelet_workspace *),
+ int sss)
{
gsl_wavelet *w = NULL;
gsl_matrix *m = NULL, *mnew;
@@ -605,20 +589,20 @@ static VALUE rb_gsl_wavelet2d(int argc, VALUE *argv, VALUE obj,
static VALUE rb_gsl_wavelet2d_transform_matrix(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_wavelet2d(argc, argv, obj, gsl_wavelet2d_transform_matrix,
- RB_GSL_DWT_COPY);
+ RB_GSL_DWT_COPY);
}
static VALUE rb_gsl_wavelet2d_transform_matrix2(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_wavelet2d(argc, argv, obj, gsl_wavelet2d_transform_matrix,
- RB_GSL_DWT_INPLACE);
+ RB_GSL_DWT_INPLACE);
}
static VALUE rb_gsl_wavelet2d_trans(int argc, VALUE *argv, VALUE obj,
- int (*trans)(const gsl_wavelet *,
- gsl_matrix *,
- gsl_wavelet_workspace *),
- int sss)
+ int (*trans)(const gsl_wavelet *,
+ gsl_matrix *,
+ gsl_wavelet_workspace *),
+ int sss)
{
gsl_wavelet *w = NULL;
gsl_matrix *m = NULL, *mnew;
@@ -682,75 +666,73 @@ static VALUE rb_gsl_wavelet2d_trans(int argc, VALUE *argv, VALUE obj,
static VALUE rb_gsl_wavelet2d_transform_matrix_forward(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_wavelet2d_trans(argc, argv, obj,
- gsl_wavelet2d_transform_matrix_forward,
- RB_GSL_DWT_COPY);
+ return rb_gsl_wavelet2d_trans(argc, argv, obj,
+ gsl_wavelet2d_transform_matrix_forward,
+ RB_GSL_DWT_COPY);
}
static VALUE rb_gsl_wavelet2d_transform_matrix_forward2(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_wavelet2d_trans(argc, argv, obj,
- gsl_wavelet2d_transform_matrix_forward,
- RB_GSL_DWT_INPLACE);
+ return rb_gsl_wavelet2d_trans(argc, argv, obj,
+ gsl_wavelet2d_transform_matrix_forward,
+ RB_GSL_DWT_INPLACE);
}
static VALUE rb_gsl_wavelet2d_transform_matrix_inverse(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_wavelet2d_trans(argc, argv, obj,
- gsl_wavelet2d_transform_matrix_inverse,
- RB_GSL_DWT_COPY);
+ return rb_gsl_wavelet2d_trans(argc, argv, obj,
+ gsl_wavelet2d_transform_matrix_inverse,
+ RB_GSL_DWT_COPY);
}
static VALUE rb_gsl_wavelet2d_transform_matrix_inverse2(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_wavelet2d_trans(argc, argv, obj,
- gsl_wavelet2d_transform_matrix_inverse,
- RB_GSL_DWT_INPLACE);
+ return rb_gsl_wavelet2d_trans(argc, argv, obj,
+ gsl_wavelet2d_transform_matrix_inverse,
+ RB_GSL_DWT_INPLACE);
}
/** nstransform **/
static VALUE rb_gsl_wavelet2d_nstransform_matrix(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_wavelet2d(argc, argv, obj, gsl_wavelet2d_nstransform_matrix,
- RB_GSL_DWT_COPY);
+ RB_GSL_DWT_COPY);
}
static VALUE rb_gsl_wavelet2d_nstransform_matrix2(int argc, VALUE *argv, VALUE obj)
{
return rb_gsl_wavelet2d(argc, argv, obj, gsl_wavelet2d_nstransform_matrix,
- RB_GSL_DWT_INPLACE);
+ RB_GSL_DWT_INPLACE);
}
static VALUE rb_gsl_wavelet2d_nstransform_matrix_forward(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_wavelet2d_trans(argc, argv, obj,
- gsl_wavelet2d_nstransform_matrix_forward,
- RB_GSL_DWT_COPY);
+ return rb_gsl_wavelet2d_trans(argc, argv, obj,
+ gsl_wavelet2d_nstransform_matrix_forward,
+ RB_GSL_DWT_COPY);
}
static VALUE rb_gsl_wavelet2d_nstransform_matrix_forward2(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_wavelet2d_trans(argc, argv, obj,
- gsl_wavelet2d_nstransform_matrix_forward,
- RB_GSL_DWT_INPLACE);
+ return rb_gsl_wavelet2d_trans(argc, argv, obj,
+ gsl_wavelet2d_nstransform_matrix_forward,
+ RB_GSL_DWT_INPLACE);
}
static VALUE rb_gsl_wavelet2d_nstransform_matrix_inverse(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_wavelet2d_trans(argc, argv, obj,
- gsl_wavelet2d_nstransform_matrix_inverse,
- RB_GSL_DWT_COPY);
+ return rb_gsl_wavelet2d_trans(argc, argv, obj,
+ gsl_wavelet2d_nstransform_matrix_inverse,
+ RB_GSL_DWT_COPY);
}
static VALUE rb_gsl_wavelet2d_nstransform_matrix_inverse2(int argc, VALUE *argv, VALUE obj)
{
- return rb_gsl_wavelet2d_trans(argc, argv, obj,
- gsl_wavelet2d_nstransform_matrix_inverse,
- RB_GSL_DWT_INPLACE);
+ return rb_gsl_wavelet2d_trans(argc, argv, obj,
+ gsl_wavelet2d_nstransform_matrix_inverse,
+ RB_GSL_DWT_INPLACE);
}
-#endif
-
void Init_wavelet(VALUE module)
{
VALUE cgsl_wavelet2d;
@@ -760,183 +742,180 @@ void Init_wavelet(VALUE module)
rb_define_singleton_method(cgsl_wavelet, "alloc", rb_gsl_wavelet_new, 2);
-#ifdef GSL_1_6_LATER
rb_gsl_wavelet_define_const(cgsl_wavelet);
rb_define_method(cgsl_wavelet, "name", rb_gsl_wavelet_name, 0);
cgsl_wavelet_workspace = rb_define_class_under(cgsl_wavelet, "Workspace", cGSL_Object);
- rb_define_singleton_method(cgsl_wavelet_workspace, "alloc",
- rb_gsl_wavelet_workspace_new, 1);
+ rb_define_singleton_method(cgsl_wavelet_workspace, "alloc",
+ rb_gsl_wavelet_workspace_new, 1);
/*****/
- rb_define_singleton_method(cgsl_wavelet, "transform",
- rb_gsl_wavelet_transform, -1);
+ rb_define_singleton_method(cgsl_wavelet, "transform",
+ rb_gsl_wavelet_transform, -1);
rb_define_method(cgsl_wavelet, "transform", rb_gsl_wavelet_transform, -1);
rb_define_method(cgsl_vector, "wavelet_transform", rb_gsl_wavelet_transform, -1);
- rb_define_singleton_method(cgsl_wavelet, "transform!",
- rb_gsl_wavelet_transform2, -1);
+ rb_define_singleton_method(cgsl_wavelet, "transform!",
+ rb_gsl_wavelet_transform2, -1);
rb_define_method(cgsl_wavelet, "transform!", rb_gsl_wavelet_transform2, -1);
rb_define_method(cgsl_vector, "wavelet_transform!", rb_gsl_wavelet_transform2, -1);
/**/
- rb_define_singleton_method(cgsl_wavelet, "transform_forward",
- rb_gsl_wavelet_transform_forward, -1);
- rb_define_method(cgsl_wavelet, "transform_forward",
- rb_gsl_wavelet_transform_forward, -1);
+ rb_define_singleton_method(cgsl_wavelet, "transform_forward",
+ rb_gsl_wavelet_transform_forward, -1);
+ rb_define_method(cgsl_wavelet, "transform_forward",
+ rb_gsl_wavelet_transform_forward, -1);
rb_define_alias(cgsl_wavelet, "forward", "transform_forward");
- rb_define_method(cgsl_vector, "wavelet_transform_forward",
- rb_gsl_wavelet_transform_forward, -1);
+ rb_define_method(cgsl_vector, "wavelet_transform_forward",
+ rb_gsl_wavelet_transform_forward, -1);
- rb_define_singleton_method(cgsl_wavelet, "transform_inverse",
- rb_gsl_wavelet_transform_inverse, -1);
- rb_define_method(cgsl_wavelet, "transform_inverse",
- rb_gsl_wavelet_transform_inverse, -1);
+ rb_define_singleton_method(cgsl_wavelet, "transform_inverse",
+ rb_gsl_wavelet_transform_inverse, -1);
+ rb_define_method(cgsl_wavelet, "transform_inverse",
+ rb_gsl_wavelet_transform_inverse, -1);
rb_define_alias(cgsl_wavelet, "inverse", "transform_inverse");
- rb_define_method(cgsl_vector, "wavelet_transform_inverse",
- rb_gsl_wavelet_transform_inverse, -1);
+ rb_define_method(cgsl_vector, "wavelet_transform_inverse",
+ rb_gsl_wavelet_transform_inverse, -1);
- rb_define_singleton_method(cgsl_wavelet, "transform_forward!",
- rb_gsl_wavelet_transform_forward2, -1);
- rb_define_method(cgsl_wavelet, "transform_forward!",
- rb_gsl_wavelet_transform_forward2, -1);
+ rb_define_singleton_method(cgsl_wavelet, "transform_forward!",
+ rb_gsl_wavelet_transform_forward2, -1);
+ rb_define_method(cgsl_wavelet, "transform_forward!",
+ rb_gsl_wavelet_transform_forward2, -1);
rb_define_alias(cgsl_wavelet, "forward!", "transform_forward!");
- rb_define_method(cgsl_vector, "wavelet_transform_forward!",
- rb_gsl_wavelet_transform_forward2, -1);
+ rb_define_method(cgsl_vector, "wavelet_transform_forward!",
+ rb_gsl_wavelet_transform_forward2, -1);
- rb_define_singleton_method(cgsl_wavelet, "transform_inverse!",
- rb_gsl_wavelet_transform_inverse2, -1);
- rb_define_method(cgsl_wavelet, "transform_inverse!",
- rb_gsl_wavelet_transform_inverse2, -1);
+ rb_define_singleton_method(cgsl_wavelet, "transform_inverse!",
+ rb_gsl_wavelet_transform_inverse2, -1);
+ rb_define_method(cgsl_wavelet, "transform_inverse!",
+ rb_gsl_wavelet_transform_inverse2, -1);
rb_define_alias(cgsl_wavelet, "inverse!", "transform_inverse!");
- rb_define_method(cgsl_vector, "wavelet_transform_inverse!",
- rb_gsl_wavelet_transform_inverse2, -1);
+ rb_define_method(cgsl_vector, "wavelet_transform_inverse!",
+ rb_gsl_wavelet_transform_inverse2, -1);
/***** 2d *****/
- rb_define_singleton_method(cgsl_wavelet, "transform_matrix",
- rb_gsl_wavelet2d_transform_matrix, -1);
- rb_define_singleton_method(cgsl_wavelet2d, "transform",
- rb_gsl_wavelet2d_transform_matrix, -1);
+ rb_define_singleton_method(cgsl_wavelet, "transform_matrix",
+ rb_gsl_wavelet2d_transform_matrix, -1);
+ rb_define_singleton_method(cgsl_wavelet2d, "transform",
+ rb_gsl_wavelet2d_transform_matrix, -1);
rb_define_method(cgsl_wavelet, "transform_matrix",
- rb_gsl_wavelet2d_transform_matrix, -1);
- rb_define_method(cgsl_wavelet2d, "transform",
- rb_gsl_wavelet2d_transform_matrix, -1);
- rb_define_method(cgsl_matrix, "wavelet_transform",
- rb_gsl_wavelet2d_transform_matrix, -1);
-
- rb_define_singleton_method(cgsl_wavelet, "transform_matrix!",
- rb_gsl_wavelet2d_transform_matrix2, -1);
- rb_define_singleton_method(cgsl_wavelet2d, "transform!",
- rb_gsl_wavelet2d_transform_matrix2, -1);
+ rb_gsl_wavelet2d_transform_matrix, -1);
+ rb_define_method(cgsl_wavelet2d, "transform",
+ rb_gsl_wavelet2d_transform_matrix, -1);
+ rb_define_method(cgsl_matrix, "wavelet_transform",
+ rb_gsl_wavelet2d_transform_matrix, -1);
+
+ rb_define_singleton_method(cgsl_wavelet, "transform_matrix!",
+ rb_gsl_wavelet2d_transform_matrix2, -1);
+ rb_define_singleton_method(cgsl_wavelet2d, "transform!",
+ rb_gsl_wavelet2d_transform_matrix2, -1);
rb_define_method(cgsl_wavelet, "transform_matrix!",
- rb_gsl_wavelet2d_transform_matrix2, -1);
- rb_define_method(cgsl_wavelet2d, "transform!",
- rb_gsl_wavelet2d_transform_matrix2, -1);
- rb_define_method(cgsl_matrix, "wavelet_transform!",
- rb_gsl_wavelet2d_transform_matrix2, -1);
+ rb_gsl_wavelet2d_transform_matrix2, -1);
+ rb_define_method(cgsl_wavelet2d, "transform!",
+ rb_gsl_wavelet2d_transform_matrix2, -1);
+ rb_define_method(cgsl_matrix, "wavelet_transform!",
+ rb_gsl_wavelet2d_transform_matrix2, -1);
/**/
- rb_define_singleton_method(cgsl_wavelet, "transform_matrix_forward",
- rb_gsl_wavelet2d_transform_matrix_forward, -1);
- rb_define_singleton_method(cgsl_wavelet2d, "transform_forward",
- rb_gsl_wavelet2d_transform_matrix_forward, -1);
- rb_define_method(cgsl_wavelet, "transform_matrix_forward",
- rb_gsl_wavelet2d_transform_matrix_forward, -1);
- rb_define_method(cgsl_wavelet2d, "transform_forward",
- rb_gsl_wavelet2d_transform_matrix_forward, -1);
- rb_define_method(cgsl_matrix, "wavelet_transform_forward",
- rb_gsl_wavelet2d_transform_matrix_forward, -1);
-
- rb_define_singleton_method(cgsl_wavelet, "transform_matrix_forward!",
- rb_gsl_wavelet2d_transform_matrix_forward2, -1);
- rb_define_singleton_method(cgsl_wavelet2d, "transform_forward!",
- rb_gsl_wavelet2d_transform_matrix_forward2, -1);
- rb_define_method(cgsl_wavelet, "transform_matrix_forward!",
- rb_gsl_wavelet2d_transform_matrix_forward2, -1);
- rb_define_method(cgsl_wavelet2d, "transform_forward!",
- rb_gsl_wavelet2d_transform_matrix_forward2, -1);
- rb_define_method(cgsl_matrix, "wavelet_transform_forward!",
- rb_gsl_wavelet2d_transform_matrix_forward2, -1);
-
- rb_define_singleton_method(cgsl_wavelet, "transform_matrix_inverse",
- rb_gsl_wavelet2d_transform_matrix_inverse, -1);
- rb_define_singleton_method(cgsl_wavelet2d, "transform_inverse",
- rb_gsl_wavelet2d_transform_matrix_inverse, -1);
- rb_define_method(cgsl_wavelet, "transform_matrix_inverse",
- rb_gsl_wavelet2d_transform_matrix_inverse, -1);
- rb_define_method(cgsl_wavelet2d, "transform_inverse",
- rb_gsl_wavelet2d_transform_matrix_inverse, -1);
- rb_define_method(cgsl_matrix, "wavelet_transform_inverse",
- rb_gsl_wavelet2d_transform_matrix_inverse, -1);
-
- rb_define_singleton_method(cgsl_wavelet, "transform_matrix_inverse!",
- rb_gsl_wavelet2d_transform_matrix_inverse2, -1);
- rb_define_singleton_method(cgsl_wavelet2d, "transform_inverse!",
- rb_gsl_wavelet2d_transform_matrix_inverse2, -1);
- rb_define_method(cgsl_wavelet, "transform_matrix_inverse!",
- rb_gsl_wavelet2d_transform_matrix_inverse2, -1);
- rb_define_method(cgsl_wavelet2d, "transform_inverse!",
- rb_gsl_wavelet2d_transform_matrix_inverse2, -1);
- rb_define_method(cgsl_matrix, "wavelet_transform_inverse!",
- rb_gsl_wavelet2d_transform_matrix_inverse2, -1);
+ rb_define_singleton_method(cgsl_wavelet, "transform_matrix_forward",
+ rb_gsl_wavelet2d_transform_matrix_forward, -1);
+ rb_define_singleton_method(cgsl_wavelet2d, "transform_forward",
+ rb_gsl_wavelet2d_transform_matrix_forward, -1);
+ rb_define_method(cgsl_wavelet, "transform_matrix_forward",
+ rb_gsl_wavelet2d_transform_matrix_forward, -1);
+ rb_define_method(cgsl_wavelet2d, "transform_forward",
+ rb_gsl_wavelet2d_transform_matrix_forward, -1);
+ rb_define_method(cgsl_matrix, "wavelet_transform_forward",
+ rb_gsl_wavelet2d_transform_matrix_forward, -1);
+
+ rb_define_singleton_method(cgsl_wavelet, "transform_matrix_forward!",
+ rb_gsl_wavelet2d_transform_matrix_forward2, -1);
+ rb_define_singleton_method(cgsl_wavelet2d, "transform_forward!",
+ rb_gsl_wavelet2d_transform_matrix_forward2, -1);
+ rb_define_method(cgsl_wavelet, "transform_matrix_forward!",
+ rb_gsl_wavelet2d_transform_matrix_forward2, -1);
+ rb_define_method(cgsl_wavelet2d, "transform_forward!",
+ rb_gsl_wavelet2d_transform_matrix_forward2, -1);
+ rb_define_method(cgsl_matrix, "wavelet_transform_forward!",
+ rb_gsl_wavelet2d_transform_matrix_forward2, -1);
+
+ rb_define_singleton_method(cgsl_wavelet, "transform_matrix_inverse",
+ rb_gsl_wavelet2d_transform_matrix_inverse, -1);
+ rb_define_singleton_method(cgsl_wavelet2d, "transform_inverse",
+ rb_gsl_wavelet2d_transform_matrix_inverse, -1);
+ rb_define_method(cgsl_wavelet, "transform_matrix_inverse",
+ rb_gsl_wavelet2d_transform_matrix_inverse, -1);
+ rb_define_method(cgsl_wavelet2d, "transform_inverse",
+ rb_gsl_wavelet2d_transform_matrix_inverse, -1);
+ rb_define_method(cgsl_matrix, "wavelet_transform_inverse",
+ rb_gsl_wavelet2d_transform_matrix_inverse, -1);
+
+ rb_define_singleton_method(cgsl_wavelet, "transform_matrix_inverse!",
+ rb_gsl_wavelet2d_transform_matrix_inverse2, -1);
+ rb_define_singleton_method(cgsl_wavelet2d, "transform_inverse!",
+ rb_gsl_wavelet2d_transform_matrix_inverse2, -1);
+ rb_define_method(cgsl_wavelet, "transform_matrix_inverse!",
+ rb_gsl_wavelet2d_transform_matrix_inverse2, -1);
+ rb_define_method(cgsl_wavelet2d, "transform_inverse!",
+ rb_gsl_wavelet2d_transform_matrix_inverse2, -1);
+ rb_define_method(cgsl_matrix, "wavelet_transform_inverse!",
+ rb_gsl_wavelet2d_transform_matrix_inverse2, -1);
/** nstransform **/
- rb_define_singleton_method(cgsl_wavelet, "nstransform_matrix",
- rb_gsl_wavelet2d_nstransform_matrix, -1);
- rb_define_singleton_method(cgsl_wavelet2d, "nstransform",
- rb_gsl_wavelet2d_nstransform_matrix, -1);
- rb_define_method(cgsl_wavelet, "nstransform_matrix",
- rb_gsl_wavelet2d_nstransform_matrix, -1);
- rb_define_method(cgsl_wavelet2d, "nstransform",
- rb_gsl_wavelet2d_nstransform_matrix, -1);
-
- rb_define_singleton_method(cgsl_wavelet, "nstransform_matrix!",
- rb_gsl_wavelet2d_nstransform_matrix2, -1);
- rb_define_singleton_method(cgsl_wavelet2d, "nstransform!",
- rb_gsl_wavelet2d_nstransform_matrix2, -1);
- rb_define_method(cgsl_wavelet, "nstransform_matrix!",
- rb_gsl_wavelet2d_nstransform_matrix2, -1);
- rb_define_method(cgsl_wavelet2d, "nstransform!",
- rb_gsl_wavelet2d_nstransform_matrix2, -1);
+ rb_define_singleton_method(cgsl_wavelet, "nstransform_matrix",
+ rb_gsl_wavelet2d_nstransform_matrix, -1);
+ rb_define_singleton_method(cgsl_wavelet2d, "nstransform",
+ rb_gsl_wavelet2d_nstransform_matrix, -1);
+ rb_define_method(cgsl_wavelet, "nstransform_matrix",
+ rb_gsl_wavelet2d_nstransform_matrix, -1);
+ rb_define_method(cgsl_wavelet2d, "nstransform",
+ rb_gsl_wavelet2d_nstransform_matrix, -1);
+
+ rb_define_singleton_method(cgsl_wavelet, "nstransform_matrix!",
+ rb_gsl_wavelet2d_nstransform_matrix2, -1);
+ rb_define_singleton_method(cgsl_wavelet2d, "nstransform!",
+ rb_gsl_wavelet2d_nstransform_matrix2, -1);
+ rb_define_method(cgsl_wavelet, "nstransform_matrix!",
+ rb_gsl_wavelet2d_nstransform_matrix2, -1);
+ rb_define_method(cgsl_wavelet2d, "nstransform!",
+ rb_gsl_wavelet2d_nstransform_matrix2, -1);
/**/
- rb_define_singleton_method(cgsl_wavelet, "nstransform_matrix_forward",
- rb_gsl_wavelet2d_nstransform_matrix_forward, -1);
- rb_define_singleton_method(cgsl_wavelet2d, "nstransform_forward",
- rb_gsl_wavelet2d_nstransform_matrix_forward, -1);
- rb_define_method(cgsl_wavelet, "nstransform_matrix_forward",
- rb_gsl_wavelet2d_nstransform_matrix_forward, -1);
- rb_define_method(cgsl_wavelet2d, "nstransform_forward",
- rb_gsl_wavelet2d_nstransform_matrix_forward, -1);
-
- rb_define_singleton_method(cgsl_wavelet, "nstransform_matrix_forward!",
- rb_gsl_wavelet2d_nstransform_matrix_forward2, -1);
- rb_define_singleton_method(cgsl_wavelet2d, "nstransform_forward!",
- rb_gsl_wavelet2d_nstransform_matrix_forward2, -1);
- rb_define_method(cgsl_wavelet, "nstransform_matrix_forward!",
- rb_gsl_wavelet2d_nstransform_matrix_forward2, -1);
- rb_define_method(cgsl_wavelet2d, "nstransform_forward!",
- rb_gsl_wavelet2d_nstransform_matrix_forward2, -1);
-
- rb_define_singleton_method(cgsl_wavelet, "nstransform_matrix_inverse",
- rb_gsl_wavelet2d_nstransform_matrix_inverse, -1);
- rb_define_singleton_method(cgsl_wavelet2d, "nstransform_inverse",
- rb_gsl_wavelet2d_nstransform_matrix_inverse, -1);
- rb_define_method(cgsl_wavelet, "nstransform_matrix_inverse",
- rb_gsl_wavelet2d_nstransform_matrix_inverse, -1);
- rb_define_method(cgsl_wavelet2d, "nstransform_inverse",
- rb_gsl_wavelet2d_nstransform_matrix_inverse, -1);
-
- rb_define_singleton_method(cgsl_wavelet, "nstransform_matrix_inverse!",
- rb_gsl_wavelet2d_nstransform_matrix_inverse2, -1);
- rb_define_singleton_method(cgsl_wavelet2d, "nstransform_inverse!",
- rb_gsl_wavelet2d_nstransform_matrix_inverse2, -1);
- rb_define_method(cgsl_wavelet, "nstransform_matrix_inverse!",
- rb_gsl_wavelet2d_nstransform_matrix_inverse2, -1);
- rb_define_method(cgsl_wavelet2d, "nstransform_inverse!",
- rb_gsl_wavelet2d_nstransform_matrix_inverse2, -1);
-
-#endif
+ rb_define_singleton_method(cgsl_wavelet, "nstransform_matrix_forward",
+ rb_gsl_wavelet2d_nstransform_matrix_forward, -1);
+ rb_define_singleton_method(cgsl_wavelet2d, "nstransform_forward",
+ rb_gsl_wavelet2d_nstransform_matrix_forward, -1);
+ rb_define_method(cgsl_wavelet, "nstransform_matrix_forward",
+ rb_gsl_wavelet2d_nstransform_matrix_forward, -1);
+ rb_define_method(cgsl_wavelet2d, "nstransform_forward",
+ rb_gsl_wavelet2d_nstransform_matrix_forward, -1);
+
+ rb_define_singleton_method(cgsl_wavelet, "nstransform_matrix_forward!",
+ rb_gsl_wavelet2d_nstransform_matrix_forward2, -1);
+ rb_define_singleton_method(cgsl_wavelet2d, "nstransform_forward!",
+ rb_gsl_wavelet2d_nstransform_matrix_forward2, -1);
+ rb_define_method(cgsl_wavelet, "nstransform_matrix_forward!",
+ rb_gsl_wavelet2d_nstransform_matrix_forward2, -1);
+ rb_define_method(cgsl_wavelet2d, "nstransform_forward!",
+ rb_gsl_wavelet2d_nstransform_matrix_forward2, -1);
+
+ rb_define_singleton_method(cgsl_wavelet, "nstransform_matrix_inverse",
+ rb_gsl_wavelet2d_nstransform_matrix_inverse, -1);
+ rb_define_singleton_method(cgsl_wavelet2d, "nstransform_inverse",
+ rb_gsl_wavelet2d_nstransform_matrix_inverse, -1);
+ rb_define_method(cgsl_wavelet, "nstransform_matrix_inverse",
+ rb_gsl_wavelet2d_nstransform_matrix_inverse, -1);
+ rb_define_method(cgsl_wavelet2d, "nstransform_inverse",
+ rb_gsl_wavelet2d_nstransform_matrix_inverse, -1);
+
+ rb_define_singleton_method(cgsl_wavelet, "nstransform_matrix_inverse!",
+ rb_gsl_wavelet2d_nstransform_matrix_inverse2, -1);
+ rb_define_singleton_method(cgsl_wavelet2d, "nstransform_inverse!",
+ rb_gsl_wavelet2d_nstransform_matrix_inverse2, -1);
+ rb_define_method(cgsl_wavelet, "nstransform_matrix_inverse!",
+ rb_gsl_wavelet2d_nstransform_matrix_inverse2, -1);
+ rb_define_method(cgsl_wavelet2d, "nstransform_inverse!",
+ rb_gsl_wavelet2d_nstransform_matrix_inverse2, -1);
}
#undef CHECK_WAVELET
diff --git a/gsl.gemspec b/gsl.gemspec
new file mode 100644
index 0000000..2146245
--- /dev/null
+++ b/gsl.gemspec
@@ -0,0 +1,29 @@
+# -*- encoding: utf-8 -*-
+require File.dirname(__FILE__) + '/lib/gsl/version'
+require 'date'
+
+Gem::Specification.new do |s|
+ s.name = 'gsl'
+ s.version = GSL::RUBY_GSL_VERSION
+ s.date = Date.today.to_s
+
+ s.require_paths = %w(lib)
+ s.authors = ['Yoshiki Tsunesada', 'David MacMahon', 'Jens Wille', 'Daniel Mendler']
+ s.summary = 'Ruby interface to the GNU Scientific Library'
+ s.description = 'Ruby/GSL is a Ruby interface to the GNU Scientific Library, for numerical computing with Ruby'
+ s.email = 'mail at daniel-mendler.de'
+ s.extensions = Dir['ext/**/extconf.rb']
+ s.extra_rdoc_files = Dir['**/*.rdoc']
+ s.files = `git ls-files`.split("\n")
+ s.homepage = 'http://github.com/SciRuby/rb-gsl'
+ s.licenses = ['GPL-2.0']
+ s.rdoc_options = ['--title', "Ruby/GSL (#{GSL::RUBY_GSL_VERSION})", '--charset', 'UTF-8', '--line-numbers', '--all', '--main', 'index.rdoc', '--root', 'rdoc']
+ s.required_ruby_version = '>= 1.9.3'
+ s.requirements = ['GSL (http://www.gnu.org/software/gsl/)']
+
+ s.post_install_message = "#{s.name} can be installed with or without narray support. Please install narray before and reinstall #{s.name} if it is missing."
+
+ s.add_development_dependency 'rake-compiler', '>= 0'
+ s.add_development_dependency 'rake', '>= 0'
+ s.add_development_dependency 'test-unit', '>= 0'
+end
diff --git a/lib/gsl.rb b/lib/gsl.rb
index 048c4f8..042142d 100644
--- a/lib/gsl.rb
+++ b/lib/gsl.rb
@@ -3,12 +3,6 @@ begin
rescue LoadError
end
-begin
- require "gsl/#{RUBY_VERSION[/\d+.\d+/]}/gsl_native"
-rescue LoadError => err
- raise if err.respond_to?(:path) && !err.path
- require 'gsl/gsl_native'
-end
-
+require 'gsl_native'
require 'gsl/version'
require 'gsl/oper'
diff --git a/lib/gsl/gnuplot.rb b/lib/gsl/gnuplot.rb
index d3bf49e..b5be6ee 100644
--- a/lib/gsl/gnuplot.rb
+++ b/lib/gsl/gnuplot.rb
@@ -18,7 +18,7 @@ class Array
end
def to_gsplot
f = ""
-
+
if ( self[0].kind_of? Array ) then
x = self[0]
y = self[1]
@@ -35,7 +35,7 @@ class Array
else
self[0].zip( *self[1..-1] ).to_gsplot
end
-
+
f
end
end
diff --git a/lib/gsl/version.rb b/lib/gsl/version.rb
index c0a7f79..cb7fd05 100644
--- a/lib/gsl/version.rb
+++ b/lib/gsl/version.rb
@@ -1,5 +1,3 @@
module GSL
-
- RUBY_GSL_VERSION = RB_GSL_VERSION = '1.16.0.4'
-
+ RUBY_GSL_VERSION = RB_GSL_VERSION = '1.16.0.6'
end
diff --git a/metadata.yml b/metadata.yml
index 215a62c..1eb2dd9 100644
--- a/metadata.yml
+++ b/metadata.yml
@@ -1,53 +1,20 @@
--- !ruby/object:Gem::Specification
-name: rb-gsl
+name: gsl
version: !ruby/object:Gem::Version
- version: 1.16.0.4
+ version: 1.16.0.6
platform: ruby
authors:
- Yoshiki Tsunesada
- David MacMahon
- Jens Wille
+- Daniel Mendler
autorequire:
bindir: bin
cert_chain: []
-date: 2014-12-19 00:00:00.000000000 Z
+date: 2015-07-03 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
- name: narray
- requirement: !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- version: 0.5.9
- type: :runtime
- prerelease: false
- version_requirements: !ruby/object:Gem::Requirement
- requirements:
- - - ">="
- - !ruby/object:Gem::Version
- version: 0.5.9
-- !ruby/object:Gem::Dependency
- name: hen
- requirement: !ruby/object:Gem::Requirement
- requirements:
- - - "~>"
- - !ruby/object:Gem::Version
- version: '0.8'
- - - ">="
- - !ruby/object:Gem::Version
- version: 0.8.1
- type: :development
- prerelease: false
- version_requirements: !ruby/object:Gem::Requirement
- requirements:
- - - "~>"
- - !ruby/object:Gem::Version
- version: '0.8'
- - - ">="
- - !ruby/object:Gem::Version
- version: 0.8.1
-- !ruby/object:Gem::Dependency
- name: rake
+ name: rake-compiler
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">="
@@ -61,7 +28,7 @@ dependencies:
- !ruby/object:Gem::Version
version: '0'
- !ruby/object:Gem::Dependency
- name: rake-compiler
+ name: rake
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">="
@@ -89,73 +56,75 @@ dependencies:
- !ruby/object:Gem::Version
version: '0'
description: Ruby/GSL is a Ruby interface to the GNU Scientific Library, for numerical
- computing with Ruby [Ruby 2.x and GSL 1.16 compatible fork]
-email: jens.wille at gmail.com
+ computing with Ruby
+email: mail at daniel-mendler.de
executables: []
extensions:
-- ext/gsl/extconf.rb
+- ext/gsl_native/extconf.rb
extra_rdoc_files:
-- rdoc/sf.rdoc
-- rdoc/alf.rdoc
+- rdoc/start.rdoc
+- rdoc/monte.rdoc
+- rdoc/hist3d.rdoc
+- rdoc/ntuple.rdoc
+- rdoc/ndlinear.rdoc
+- rdoc/complex.rdoc
- rdoc/dht.rdoc
-- rdoc/fft.rdoc
-- rdoc/fit.rdoc
+- rdoc/odeiv.rdoc
+- rdoc/perm.rdoc
+- rdoc/const.rdoc
+- rdoc/nonlinearfit.rdoc
+- rdoc/tensor.rdoc
+- rdoc/linalg_complex.rdoc
+- rdoc/eigen.rdoc
+- rdoc/siman.rdoc
+- rdoc/function.rdoc
- rdoc/min.rdoc
-- rdoc/ref.rdoc
-- rdoc/rng.rdoc
-- rdoc/sum.rdoc
-- rdoc/tut.rdoc
-- rdoc/use.rdoc
+- rdoc/cholesky_complex.rdoc
+- rdoc/qrng.rdoc
+- rdoc/multiroot.rdoc
- rdoc/blas.rdoc
-- rdoc/cheb.rdoc
-- rdoc/diff.rdoc
+- rdoc/wavelet.rdoc
- rdoc/hist.rdoc
- rdoc/math.rdoc
-- rdoc/perm.rdoc
-- rdoc/poly.rdoc
-- rdoc/qrng.rdoc
-- rdoc/sort.rdoc
-- rdoc/combi.rdoc
-- rdoc/const.rdoc
-- rdoc/eigen.rdoc
-- rdoc/graph.rdoc
-- rdoc/index.rdoc
+- rdoc/sum.rdoc
+- rdoc/sf.rdoc
- rdoc/intro.rdoc
-- rdoc/monte.rdoc
-- rdoc/odeiv.rdoc
-- rdoc/roots.rdoc
-- rdoc/siman.rdoc
-- rdoc/start.rdoc
-- rdoc/stats.rdoc
-- rdoc/hist2d.rdoc
-- rdoc/hist3d.rdoc
-- rdoc/interp.rdoc
- rdoc/linalg.rdoc
+- rdoc/randist.rdoc
+- rdoc/tut.rdoc
- rdoc/matrix.rdoc
+- rdoc/cheb.rdoc
+- rdoc/rng.rdoc
+- rdoc/vector_complex.rdoc
+- rdoc/integration.rdoc
+- rdoc/changes.rdoc
+- rdoc/bspline.rdoc
+- rdoc/graph.rdoc
+- rdoc/alf.rdoc
+- rdoc/hist2d.rdoc
- rdoc/narray.rdoc
-- rdoc/ntuple.rdoc
-- rdoc/tensor.rdoc
+- rdoc/ref.rdoc
- rdoc/vector.rdoc
-- rdoc/bspline.rdoc
-- rdoc/changes.rdoc
-- rdoc/complex.rdoc
-- rdoc/randist.rdoc
-- rdoc/wavelet.rdoc
-- rdoc/function.rdoc
+- rdoc/diff.rdoc
+- rdoc/stats.rdoc
+- rdoc/interp.rdoc
- rdoc/multimin.rdoc
-- rdoc/ndlinear.rdoc
+- rdoc/poly.rdoc
+- rdoc/roots.rdoc
+- rdoc/use.rdoc
+- rdoc/combi.rdoc
+- rdoc/fit.rdoc
+- rdoc/sort.rdoc
+- rdoc/fft.rdoc
- rdoc/ehandling.rdoc
-- rdoc/multiroot.rdoc
-- rdoc/integration.rdoc
-- rdoc/nonlinearfit.rdoc
-- rdoc/linalg_complex.rdoc
-- rdoc/vector_complex.rdoc
-- rdoc/cholesky_complex.rdoc
files:
+- ".gitignore"
+- ".travis.yml"
- AUTHORS
- COPYING
- ChangeLog
-- README
+- Gemfile
+- README.md
- Rakefile
- THANKS
- examples/alf/alf.gp
@@ -505,156 +474,155 @@ files:
- examples/vector/zip.rb
- examples/wavelet/ecg.dat
- examples/wavelet/wavelet1.rb
-- ext/gsl/alf.c
-- ext/gsl/array.c
-- ext/gsl/array_complex.c
-- ext/gsl/blas.c
-- ext/gsl/blas1.c
-- ext/gsl/blas2.c
-- ext/gsl/blas3.c
-- ext/gsl/block.c
-- ext/gsl/block_source.c
-- ext/gsl/bspline.c
-- ext/gsl/bundle.c
-- ext/gsl/cdf.c
-- ext/gsl/cheb.c
-- ext/gsl/combination.c
-- ext/gsl/common.c
-- ext/gsl/complex.c
-- ext/gsl/const.c
-- ext/gsl/const_additional.c
-- ext/gsl/cqp.c
-- ext/gsl/deriv.c
-- ext/gsl/dht.c
-- ext/gsl/diff.c
-- ext/gsl/dirac.c
-- ext/gsl/eigen.c
-- ext/gsl/error.c
-- ext/gsl/extconf.rb
-- ext/gsl/fcmp.c
-- ext/gsl/fft.c
-- ext/gsl/fit.c
-- ext/gsl/fresnel.c
-- ext/gsl/function.c
-- ext/gsl/geometry.c
-- ext/gsl/graph.c
-- ext/gsl/gsl.c
-- ext/gsl/gsl_narray.c
-- ext/gsl/histogram.c
-- ext/gsl/histogram2d.c
-- ext/gsl/histogram3d.c
-- ext/gsl/histogram3d_source.c
-- ext/gsl/histogram_find.c
-- ext/gsl/histogram_oper.c
-- ext/gsl/ieee.c
-- ext/gsl/include/rb_gsl.h
-- ext/gsl/include/rb_gsl_array.h
-- ext/gsl/include/rb_gsl_cheb.h
-- ext/gsl/include/rb_gsl_common.h
-- ext/gsl/include/rb_gsl_complex.h
-- ext/gsl/include/rb_gsl_const.h
-- ext/gsl/include/rb_gsl_dirac.h
-- ext/gsl/include/rb_gsl_eigen.h
-- ext/gsl/include/rb_gsl_fft.h
-- ext/gsl/include/rb_gsl_fit.h
-- ext/gsl/include/rb_gsl_function.h
-- ext/gsl/include/rb_gsl_graph.h
-- ext/gsl/include/rb_gsl_histogram.h
-- ext/gsl/include/rb_gsl_histogram3d.h
-- ext/gsl/include/rb_gsl_integration.h
-- ext/gsl/include/rb_gsl_interp.h
-- ext/gsl/include/rb_gsl_linalg.h
-- ext/gsl/include/rb_gsl_math.h
-- ext/gsl/include/rb_gsl_odeiv.h
-- ext/gsl/include/rb_gsl_poly.h
-- ext/gsl/include/rb_gsl_rational.h
-- ext/gsl/include/rb_gsl_rng.h
-- ext/gsl/include/rb_gsl_root.h
-- ext/gsl/include/rb_gsl_sf.h
-- ext/gsl/include/rb_gsl_statistics.h
-- ext/gsl/include/rb_gsl_tensor.h
-- ext/gsl/include/rb_gsl_with_narray.h
-- ext/gsl/include/templates_off.h
-- ext/gsl/include/templates_on.h
-- ext/gsl/integration.c
-- ext/gsl/interp.c
-- ext/gsl/jacobi.c
-- ext/gsl/linalg.c
-- ext/gsl/linalg_complex.c
-- ext/gsl/math.c
-- ext/gsl/matrix.c
-- ext/gsl/matrix_complex.c
-- ext/gsl/matrix_double.c
-- ext/gsl/matrix_int.c
-- ext/gsl/matrix_source.c
-- ext/gsl/min.c
-- ext/gsl/monte.c
-- ext/gsl/multifit.c
-- ext/gsl/multimin.c
-- ext/gsl/multimin_fsdf.c
-- ext/gsl/multiroots.c
-- ext/gsl/multiset.c
-- ext/gsl/ndlinear.c
-- ext/gsl/nmf.c
-- ext/gsl/nmf_wrap.c
-- ext/gsl/ntuple.c
-- ext/gsl/odeiv.c
-- ext/gsl/ool.c
-- ext/gsl/oper_complex_source.c
-- ext/gsl/permutation.c
-- ext/gsl/poly.c
-- ext/gsl/poly2.c
-- ext/gsl/poly_source.c
-- ext/gsl/qrng.c
-- ext/gsl/randist.c
-- ext/gsl/rational.c
-- ext/gsl/rng.c
-- ext/gsl/root.c
-- ext/gsl/sf.c
-- ext/gsl/sf_airy.c
-- ext/gsl/sf_bessel.c
-- ext/gsl/sf_clausen.c
-- ext/gsl/sf_coulomb.c
-- ext/gsl/sf_coupling.c
-- ext/gsl/sf_dawson.c
-- ext/gsl/sf_debye.c
-- ext/gsl/sf_dilog.c
-- ext/gsl/sf_elementary.c
-- ext/gsl/sf_ellint.c
-- ext/gsl/sf_elljac.c
-- ext/gsl/sf_erfc.c
-- ext/gsl/sf_exp.c
-- ext/gsl/sf_expint.c
-- ext/gsl/sf_fermi_dirac.c
-- ext/gsl/sf_gamma.c
-- ext/gsl/sf_gegenbauer.c
-- ext/gsl/sf_hyperg.c
-- ext/gsl/sf_laguerre.c
-- ext/gsl/sf_lambert.c
-- ext/gsl/sf_legendre.c
-- ext/gsl/sf_log.c
-- ext/gsl/sf_mathieu.c
-- ext/gsl/sf_power.c
-- ext/gsl/sf_psi.c
-- ext/gsl/sf_synchrotron.c
-- ext/gsl/sf_transport.c
-- ext/gsl/sf_trigonometric.c
-- ext/gsl/sf_zeta.c
-- ext/gsl/signal.c
-- ext/gsl/siman.c
-- ext/gsl/sort.c
-- ext/gsl/spline.c
-- ext/gsl/stats.c
-- ext/gsl/sum.c
-- ext/gsl/tamu_anova.c
-- ext/gsl/tensor.c
-- ext/gsl/tensor_source.c
-- ext/gsl/vector.c
-- ext/gsl/vector_complex.c
-- ext/gsl/vector_double.c
-- ext/gsl/vector_int.c
-- ext/gsl/vector_source.c
-- ext/gsl/wavelet.c
+- ext/gsl_native/alf.c
+- ext/gsl_native/array.c
+- ext/gsl_native/array_complex.c
+- ext/gsl_native/blas.c
+- ext/gsl_native/blas1.c
+- ext/gsl_native/blas2.c
+- ext/gsl_native/blas3.c
+- ext/gsl_native/block.c
+- ext/gsl_native/block_source.h
+- ext/gsl_native/bspline.c
+- ext/gsl_native/bundle.c
+- ext/gsl_native/cdf.c
+- ext/gsl_native/cheb.c
+- ext/gsl_native/combination.c
+- ext/gsl_native/common.c
+- ext/gsl_native/complex.c
+- ext/gsl_native/const.c
+- ext/gsl_native/const_additional.c
+- ext/gsl_native/cqp.c
+- ext/gsl_native/deriv.c
+- ext/gsl_native/dht.c
+- ext/gsl_native/diff.c
+- ext/gsl_native/dirac.c
+- ext/gsl_native/eigen.c
+- ext/gsl_native/error.c
+- ext/gsl_native/extconf.rb
+- ext/gsl_native/fft.c
+- ext/gsl_native/fit.c
+- ext/gsl_native/fresnel.c
+- ext/gsl_native/function.c
+- ext/gsl_native/geometry.c
+- ext/gsl_native/graph.c
+- ext/gsl_native/gsl.c
+- ext/gsl_native/gsl_narray.c
+- ext/gsl_native/histogram.c
+- ext/gsl_native/histogram2d.c
+- ext/gsl_native/histogram3d.c
+- ext/gsl_native/histogram3d_source.c
+- ext/gsl_native/histogram_find.c
+- ext/gsl_native/histogram_oper.c
+- ext/gsl_native/ieee.c
+- ext/gsl_native/include/rb_gsl.h
+- ext/gsl_native/include/rb_gsl_array.h
+- ext/gsl_native/include/rb_gsl_cheb.h
+- ext/gsl_native/include/rb_gsl_common.h
+- ext/gsl_native/include/rb_gsl_complex.h
+- ext/gsl_native/include/rb_gsl_const.h
+- ext/gsl_native/include/rb_gsl_dirac.h
+- ext/gsl_native/include/rb_gsl_eigen.h
+- ext/gsl_native/include/rb_gsl_fft.h
+- ext/gsl_native/include/rb_gsl_fit.h
+- ext/gsl_native/include/rb_gsl_function.h
+- ext/gsl_native/include/rb_gsl_graph.h
+- ext/gsl_native/include/rb_gsl_histogram.h
+- ext/gsl_native/include/rb_gsl_histogram3d.h
+- ext/gsl_native/include/rb_gsl_integration.h
+- ext/gsl_native/include/rb_gsl_interp.h
+- ext/gsl_native/include/rb_gsl_linalg.h
+- ext/gsl_native/include/rb_gsl_math.h
+- ext/gsl_native/include/rb_gsl_odeiv.h
+- ext/gsl_native/include/rb_gsl_poly.h
+- ext/gsl_native/include/rb_gsl_rational.h
+- ext/gsl_native/include/rb_gsl_rng.h
+- ext/gsl_native/include/rb_gsl_root.h
+- ext/gsl_native/include/rb_gsl_sf.h
+- ext/gsl_native/include/rb_gsl_statistics.h
+- ext/gsl_native/include/rb_gsl_tensor.h
+- ext/gsl_native/include/rb_gsl_with_narray.h
+- ext/gsl_native/include/templates_off.h
+- ext/gsl_native/include/templates_on.h
+- ext/gsl_native/integration.c
+- ext/gsl_native/interp.c
+- ext/gsl_native/jacobi.c
+- ext/gsl_native/linalg.c
+- ext/gsl_native/linalg_complex.c
+- ext/gsl_native/math.c
+- ext/gsl_native/matrix.c
+- ext/gsl_native/matrix_complex.c
+- ext/gsl_native/matrix_double.c
+- ext/gsl_native/matrix_int.c
+- ext/gsl_native/matrix_source.h
+- ext/gsl_native/min.c
+- ext/gsl_native/monte.c
+- ext/gsl_native/multifit.c
+- ext/gsl_native/multimin.c
+- ext/gsl_native/multimin_fsdf.c
+- ext/gsl_native/multiroots.c
+- ext/gsl_native/multiset.c
+- ext/gsl_native/ndlinear.c
+- ext/gsl_native/nmf.c
+- ext/gsl_native/nmf_wrap.c
+- ext/gsl_native/ntuple.c
+- ext/gsl_native/odeiv.c
+- ext/gsl_native/ool.c
+- ext/gsl_native/permutation.c
+- ext/gsl_native/poly.c
+- ext/gsl_native/poly2.c
+- ext/gsl_native/poly_source.h
+- ext/gsl_native/qrng.c
+- ext/gsl_native/randist.c
+- ext/gsl_native/rational.c
+- ext/gsl_native/rng.c
+- ext/gsl_native/root.c
+- ext/gsl_native/sf.c
+- ext/gsl_native/sf_airy.c
+- ext/gsl_native/sf_bessel.c
+- ext/gsl_native/sf_clausen.c
+- ext/gsl_native/sf_coulomb.c
+- ext/gsl_native/sf_coupling.c
+- ext/gsl_native/sf_dawson.c
+- ext/gsl_native/sf_debye.c
+- ext/gsl_native/sf_dilog.c
+- ext/gsl_native/sf_elementary.c
+- ext/gsl_native/sf_ellint.c
+- ext/gsl_native/sf_elljac.c
+- ext/gsl_native/sf_erfc.c
+- ext/gsl_native/sf_exp.c
+- ext/gsl_native/sf_expint.c
+- ext/gsl_native/sf_fermi_dirac.c
+- ext/gsl_native/sf_gamma.c
+- ext/gsl_native/sf_gegenbauer.c
+- ext/gsl_native/sf_hyperg.c
+- ext/gsl_native/sf_laguerre.c
+- ext/gsl_native/sf_lambert.c
+- ext/gsl_native/sf_legendre.c
+- ext/gsl_native/sf_log.c
+- ext/gsl_native/sf_mathieu.c
+- ext/gsl_native/sf_power.c
+- ext/gsl_native/sf_psi.c
+- ext/gsl_native/sf_synchrotron.c
+- ext/gsl_native/sf_transport.c
+- ext/gsl_native/sf_trigonometric.c
+- ext/gsl_native/sf_zeta.c
+- ext/gsl_native/signal.c
+- ext/gsl_native/siman.c
+- ext/gsl_native/sort.c
+- ext/gsl_native/spline.c
+- ext/gsl_native/stats.c
+- ext/gsl_native/sum.c
+- ext/gsl_native/tamu_anova.c
+- ext/gsl_native/tensor.c
+- ext/gsl_native/tensor_source.h
+- ext/gsl_native/vector.c
+- ext/gsl_native/vector_complex.c
+- ext/gsl_native/vector_double.c
+- ext/gsl_native/vector_int.c
+- ext/gsl_native/vector_source.h
+- ext/gsl_native/wavelet.c
+- gsl.gemspec
- lib/gsl.rb
- lib/gsl/gnuplot.rb
- lib/gsl/oper.rb
@@ -682,7 +650,6 @@ files:
- rdoc/hist.rdoc
- rdoc/hist2d.rdoc
- rdoc/hist3d.rdoc
-- rdoc/index.rdoc
- rdoc/integration.rdoc
- rdoc/interp.rdoc
- rdoc/intro.rdoc
@@ -732,6 +699,7 @@ files:
- test/gsl/err_test.rb
- test/gsl/fit_test.rb
- test/gsl/histo_test.rb
+- test/gsl/index_test.rb
- test/gsl/integration_test.rb
- test/gsl/interp_test.rb
- test/gsl/linalg_test.rb
@@ -759,14 +727,16 @@ files:
- test/gsl/wavelet_test.rb
- test/gsl_test.rb
- test/test_helper.rb
-homepage: http://github.com/blackwinter/rb-gsl
+- uncrustify.cfg
+homepage: http://github.com/SciRuby/rb-gsl
licenses:
- GPL-2.0
metadata: {}
-post_install_message:
+post_install_message: gsl can be installed with or without narray support. Please
+ install narray before and reinstall gsl if it is missing.
rdoc_options:
- "--title"
-- Ruby/GSL (v1.16.0.4)
+- Ruby/GSL (1.16.0.6)
- "--charset"
- UTF-8
- "--line-numbers"
@@ -781,7 +751,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
- version: 1.8.7
+ version: 1.9.3
required_rubygems_version: !ruby/object:Gem::Requirement
requirements:
- - ">="
@@ -790,9 +760,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
requirements:
- GSL (http://www.gnu.org/software/gsl/)
rubyforge_project:
-rubygems_version: 2.4.5
+rubygems_version: 2.2.2
signing_key:
specification_version: 4
-summary: Ruby interface to the GNU Scientific Library [Ruby 2.x and GSL 1.16 compatible
- fork]
+summary: Ruby interface to the GNU Scientific Library
test_files: []
+has_rdoc:
diff --git a/test/gsl/blas_test.rb b/test/gsl/blas_test.rb
index 9d36c91..ff951de 100644
--- a/test/gsl/blas_test.rb
+++ b/test/gsl/blas_test.rb
@@ -59,7 +59,7 @@ class BlasTest < GSL::TestCase
end
def test_dnrm2
- require 'narray'
+ return unless GSL.have_narray?
e = Math.sqrt((0..4).inject { |m, x| m + x * x })
diff --git a/test/gsl/index_test.rb b/test/gsl/index_test.rb
new file mode 100644
index 0000000..396132f
--- /dev/null
+++ b/test/gsl/index_test.rb
@@ -0,0 +1,61 @@
+require 'test_helper'
+
+class IndexTest < GSL::TestCase
+
+ # helper(s)
+
+ def _create_index array
+ i = GSL::Index.alloc(array.size)
+ array.each_with_index { |e, j| i[j] = e }
+ i
+ end
+
+ # tests
+
+ def test_get_int
+ i = GSL::Index.alloc(5)
+ assert_equal 2, i.get(2)
+ assert_equal 4, i.get(4)
+ assert_equal 3, i.get(-2)
+ assert_equal 0, i.get(-5)
+ end
+
+ def test_get_array
+ i = GSL::Index.alloc(5)
+ assert_equal _create_index([2, 3]), i.get([2, 3])
+ assert_equal _create_index([4, 2]), i.get([-1, 2])
+ assert_equal _create_index([4, 3, 1]), i.get([4, -2, 1])
+ assert_equal _create_index([0, 4, 4, 0]), i.get([0, 4, -1, -5])
+ end
+
+ def test_get_range
+ i = GSL::Index.alloc(5)
+ assert_equal _create_index([2, 3]), i.get(2..3)
+ assert_equal _create_index([0, 1, 2, 3, 4]), i.get(0..4)
+ assert_equal _create_index([0, 1, 2, 3, 4]), i.get(0..5)
+ assert_equal _create_index([0, 1, 2, 3, 4]), i.get(-5..-1)
+ assert_equal _create_index([0]), i.get(0..-5)
+ assert_equal _create_index([0]), i.get(-5..0)
+ assert_equal _create_index([3]), i.get(-2..3)
+ assert_equal _create_index([3, 4]), i.get(-2..4)
+ assert_equal _create_index([1, 2, 3]), i.get(-4...-1) # note the exclusive range operator!
+ end
+
+ def test_get_failure
+ i = GSL::Index.alloc(5)
+ assert_raises(RangeError) { i.get(5) }
+ assert_raises(RangeError) { i.get(-6) }
+ assert_raises(RangeError) { i.get(1_000_000) }
+ assert_raises(ArgumentError) { i.get(10**100) }
+
+ assert_raises(RangeError) { i.get([5]) }
+ assert_raises(RangeError) { i.get([-6]) }
+ assert_raises(RangeError) { i.get([-6, 0, 5]) }
+
+ assert_raises(RangeError) { i.get(-6..-1) }
+ assert_raises(RangeError) { i.get(3..-5) }
+ assert_raises(RangeError) { i.get(-2..-3) }
+ assert_raises(RangeError) { i.get(-2..1) }
+ end
+
+end
diff --git a/test/gsl/matrix_test.rb b/test/gsl/matrix_test.rb
index b4a083d..f333bbd 100644
--- a/test/gsl/matrix_test.rb
+++ b/test/gsl/matrix_test.rb
@@ -74,4 +74,25 @@ class MatrixTest < GSL::TestCase
assert_equal z1, m[1, 0]
end
+ def test_coerce
+ { 1 => m0 = GSL::Matrix.ones(1), 2 => GSL::Matrix[[2]] }.each { |a, b|
+ [a, a.to_f].each { |c| assert_equal([b, m0], m0.coerce(c)) } }
+
+ m1 = GSL::Matrix::Int.ones(1); [1, 2].each { |a|
+ [a, a.to_f].each { |c| assert_equal([c, m0], m1.coerce(c)) } }
+ end
+
+ def test_mul
+ { 1 => m0 = GSL::Matrix.ones(1), 2 => GSL::Matrix[[2]] }.each { |a, b|
+ [a, a.to_f].each { |c| assert_equal(b, m0 * c); assert_equal(b, c * m0) } }
+
+ { 1 => m1 = GSL::Matrix::Int.ones(1), 2 => GSL::Matrix::Int[[2]] }.each { |a, b|
+ assert_equal(b, m1 * a); [a, a.to_f].each { |c| assert_equal(b, c * m1) } }
+
+ assert_equal GSL::Matrix[[0.2]], m0 * 0.2
+ assert_equal GSL::Matrix[[0.2]], 0.2 * m0
+
+ assert_equal GSL::Matrix::Int[[0]], 0.2 * m1
+ end
+
end
diff --git a/uncrustify.cfg b/uncrustify.cfg
new file mode 100644
index 0000000..65bceaa
--- /dev/null
+++ b/uncrustify.cfg
@@ -0,0 +1,1693 @@
+# Uncrustify 0.61
+
+#
+# General options
+#
+
+# The type of line endings
+newlines = lf # auto/lf/crlf/cr
+
+# The original size of tabs in the input
+input_tab_size = 8 # number
+
+# The size of tabs in the output (only used if align_with_tabs=true)
+output_tab_size = 8 # number
+
+# The ASCII value of the string escape char, usually 92 (\) or 94 (^). (Pawn)
+string_escape_char = 92 # number
+
+# Alternate string escape char for Pawn. Only works right before the quote char.
+string_escape_char2 = 0 # number
+
+# Allow interpreting '>=' and '>>=' as part of a template in 'void f(list<list<B>>=val);'.
+# If true (default), 'assert(x<0 && y>=3)' will be broken.
+# Improvements to template detection may make this option obsolete.
+tok_split_gte = false # false/true
+
+# Control what to do with the UTF-8 BOM (recommend 'remove')
+utf8_bom = remove # ignore/add/remove/force
+
+# If the file contains bytes with values between 128 and 255, but is not UTF-8, then output as UTF-8
+utf8_byte = false # false/true
+
+# Force the output encoding to UTF-8
+utf8_force = false # false/true
+
+#
+# Indenting
+#
+
+# The number of columns to indent per level.
+# Usually 2, 3, 4, or 8.
+indent_columns = 2 # number
+
+# The continuation indent. If non-zero, this overrides the indent of '(' and '=' continuation indents.
+# For FreeBSD, this is set to 4. Negative value is absolute and not increased for each ( level
+indent_continue = 0 # number
+
+# How to use tabs when indenting code
+# 0=spaces only
+# 1=indent with tabs to brace level, align with spaces
+# 2=indent and align with tabs, using spaces when not on a tabstop
+indent_with_tabs = 0 # number
+
+# Comments that are not a brace level are indented with tabs on a tabstop.
+# Requires indent_with_tabs=2. If false, will use spaces.
+indent_cmt_with_tabs = false # false/true
+
+# Whether to indent strings broken by '\' so that they line up
+indent_align_string = false # false/true
+
+# The number of spaces to indent multi-line XML strings.
+# Requires indent_align_string=True
+indent_xml_string = 0 # number
+
+# Spaces to indent '{' from level
+indent_brace = 0 # number
+
+# Whether braces are indented to the body level
+indent_braces = false # false/true
+
+# Disabled indenting function braces if indent_braces is true
+indent_braces_no_func = false # false/true
+
+# Disabled indenting class braces if indent_braces is true
+indent_braces_no_class = false # false/true
+
+# Disabled indenting struct braces if indent_braces is true
+indent_braces_no_struct = false # false/true
+
+# Indent based on the size of the brace parent, i.e. 'if' => 3 spaces, 'for' => 4 spaces, etc.
+indent_brace_parent = false # false/true
+
+# Indent based on the paren open instead of the brace open in '({\n', default is to indent by brace.
+indent_paren_open_brace = false # false/true
+
+# Whether the 'namespace' body is indented
+indent_namespace = false # false/true
+
+# Only indent one namespace and no sub-namepaces.
+# Requires indent_namespace=true.
+indent_namespace_single_indent = false # false/true
+
+# The number of spaces to indent a namespace block
+indent_namespace_level = 0 # number
+
+# If the body of the namespace is longer than this number, it won't be indented.
+# Requires indent_namespace=true. Default=0 (no limit)
+indent_namespace_limit = 0 # number
+
+# Whether the 'extern "C"' body is indented
+indent_extern = false # false/true
+
+# Whether the 'class' body is indented
+indent_class = false # false/true
+
+# Whether to indent the stuff after a leading base class colon
+indent_class_colon = false # false/true
+
+# Whether to indent the stuff after a leading class initializer colon
+indent_constr_colon = false # false/true
+
+# Virtual indent from the ':' for member initializers. Default is 2
+indent_ctor_init_leading = 2 # number
+
+# Additional indenting for constructor initializer list
+indent_ctor_init = 0 # number
+
+# False=treat 'else\nif' as 'else if' for indenting purposes
+# True=indent the 'if' one level
+indent_else_if = false # false/true
+
+# Amount to indent variable declarations after a open brace. neg=relative, pos=absolute
+indent_var_def_blk = 0 # number
+
+# Indent continued variable declarations instead of aligning.
+indent_var_def_cont = false # false/true
+
+# True: force indentation of function definition to start in column 1
+# False: use the default behavior
+indent_func_def_force_col1 = false # false/true
+
+# True: indent continued function call parameters one indent level
+# False: align parameters under the open paren
+indent_func_call_param = false # false/true
+
+# Same as indent_func_call_param, but for function defs
+indent_func_def_param = false # false/true
+
+# Same as indent_func_call_param, but for function protos
+indent_func_proto_param = false # false/true
+
+# Same as indent_func_call_param, but for class declarations
+indent_func_class_param = false # false/true
+
+# Same as indent_func_call_param, but for class variable constructors
+indent_func_ctor_var_param = false # false/true
+
+# Same as indent_func_call_param, but for templates
+indent_template_param = false # false/true
+
+# Double the indent for indent_func_xxx_param options
+indent_func_param_double = false # false/true
+
+# Indentation column for standalone 'const' function decl/proto qualifier
+indent_func_const = 0 # number
+
+# Indentation column for standalone 'throw' function decl/proto qualifier
+indent_func_throw = 0 # number
+
+# The number of spaces to indent a continued '->' or '.'
+# Usually set to 0, 1, or indent_columns.
+indent_member = 0 # number
+
+# Spaces to indent single line ('//') comments on lines before code
+indent_sing_line_comments = 0 # number
+
+# If set, will indent trailing single line ('//') comments relative
+# to the code instead of trying to keep the same absolute column
+indent_relative_single_line_comments = false # false/true
+
+# Spaces to indent 'case' from 'switch'
+# Usually 0 or indent_columns.
+indent_switch_case = 0 # number
+
+# Spaces to shift the 'case' line, without affecting any other lines
+# Usually 0.
+indent_case_shift = 0 # number
+
+# Spaces to indent '{' from 'case'.
+# By default, the brace will appear under the 'c' in case.
+# Usually set to 0 or indent_columns.
+indent_case_brace = 0 # number
+
+# Whether to indent comments found in first column
+indent_col1_comment = false # false/true
+
+# How to indent goto labels
+# >0 : absolute column where 1 is the leftmost column
+# <=0 : subtract from brace indent
+indent_label = 1 # number
+
+# Same as indent_label, but for access specifiers that are followed by a colon
+indent_access_spec = 1 # number
+
+# Indent the code after an access specifier by one level.
+# If set, this option forces 'indent_access_spec=0'
+indent_access_spec_body = false # false/true
+
+# If an open paren is followed by a newline, indent the next line so that it lines up after the open paren (not recommended)
+indent_paren_nl = false # false/true
+
+# Controls the indent of a close paren after a newline.
+# 0: Indent to body level
+# 1: Align under the open paren
+# 2: Indent to the brace level
+indent_paren_close = 0 # number
+
+# Controls the indent of a comma when inside a paren.If TRUE, aligns under the open paren
+indent_comma_paren = false # false/true
+
+# Controls the indent of a BOOL operator when inside a paren.If TRUE, aligns under the open paren
+indent_bool_paren = false # false/true
+
+# If 'indent_bool_paren' is true, controls the indent of the first expression. If TRUE, aligns the first expression to the following ones
+indent_first_bool_expr = false # false/true
+
+# If an open square is followed by a newline, indent the next line so that it lines up after the open square (not recommended)
+indent_square_nl = false # false/true
+
+# Don't change the relative indent of ESQL/C 'EXEC SQL' bodies
+indent_preserve_sql = false # false/true
+
+# Align continued statements at the '='. Default=True
+# If FALSE or the '=' is followed by a newline, the next line is indent one tab.
+indent_align_assign = true # false/true
+
+# Indent OC blocks at brace level instead of usual rules.
+indent_oc_block = false # false/true
+
+# Indent OC blocks in a message relative to the parameter name.
+# 0=use indent_oc_block rules, 1+=spaces to indent
+indent_oc_block_msg = 0 # number
+
+# Minimum indent for subsequent parameters
+indent_oc_msg_colon = 0 # number
+
+# If true, prioritize aligning with initial colon (and stripping spaces from lines, if necessary).
+# Default is true.
+indent_oc_msg_prioritize_first_colon = true # false/true
+
+# If indent_oc_block_msg and this option are on, blocks will be indented the way that Xcode does by default (from keyword if the parameter is on its own line; otherwise, from the previous indentation level).
+indent_oc_block_msg_xcode_style = false # false/true
+
+# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is relative to a msg keyword.
+indent_oc_block_msg_from_keyword = false # false/true
+
+# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is relative to a msg colon.
+indent_oc_block_msg_from_colon = false # false/true
+
+# If indent_oc_block_msg and this option are on, blocks will be indented from where the block caret is.
+indent_oc_block_msg_from_caret = false # false/true
+
+# If indent_oc_block_msg and this option are on, blocks will be indented from where the brace is.
+indent_oc_block_msg_from_brace = false # false/true
+
+#
+# Spacing options
+#
+
+# Add or remove space around arithmetic operator '+', '-', '/', '*', etc
+sp_arith = ignore # ignore/add/remove/force
+
+# Add or remove space around assignment operator '=', '+=', etc
+sp_assign = add # ignore/add/remove/force
+
+# Add or remove space around '=' in C++11 lambda capture specifications. Overrides sp_assign
+sp_cpp_lambda_assign = ignore # ignore/add/remove/force
+
+# Add or remove space after the capture specification in C++11 lambda.
+sp_cpp_lambda_paren = ignore # ignore/add/remove/force
+
+# Add or remove space around assignment operator '=' in a prototype
+sp_assign_default = ignore # ignore/add/remove/force
+
+# Add or remove space before assignment operator '=', '+=', etc. Overrides sp_assign.
+sp_before_assign = add # ignore/add/remove/force
+
+# Add or remove space after assignment operator '=', '+=', etc. Overrides sp_assign.
+sp_after_assign = add # ignore/add/remove/force
+
+# Add or remove space in 'NS_ENUM ('
+sp_enum_paren = ignore # ignore/add/remove/force
+
+# Add or remove space around assignment '=' in enum
+sp_enum_assign = ignore # ignore/add/remove/force
+
+# Add or remove space before assignment '=' in enum. Overrides sp_enum_assign.
+sp_enum_before_assign = ignore # ignore/add/remove/force
+
+# Add or remove space after assignment '=' in enum. Overrides sp_enum_assign.
+sp_enum_after_assign = ignore # ignore/add/remove/force
+
+# Add or remove space around preprocessor '##' concatenation operator. Default=Add
+sp_pp_concat = add # ignore/add/remove/force
+
+# Add or remove space after preprocessor '#' stringify operator. Also affects the '#@' charizing operator.
+sp_pp_stringify = ignore # ignore/add/remove/force
+
+# Add or remove space before preprocessor '#' stringify operator as in '#define x(y) L#y'.
+sp_before_pp_stringify = ignore # ignore/add/remove/force
+
+# Add or remove space around boolean operators '&&' and '||'
+sp_bool = ignore # ignore/add/remove/force
+
+# Add or remove space around compare operator '<', '>', '==', etc
+sp_compare = ignore # ignore/add/remove/force
+
+# Add or remove space inside '(' and ')'
+sp_inside_paren = ignore # ignore/add/remove/force
+
+# Add or remove space between nested parens: '((' vs ') )'
+sp_paren_paren = ignore # ignore/add/remove/force
+
+# Add or remove space between back-to-back parens: ')(' vs ') ('
+sp_cparen_oparen = ignore # ignore/add/remove/force
+
+# Whether to balance spaces inside nested parens
+sp_balance_nested_parens = false # false/true
+
+# Add or remove space between ')' and '{'
+sp_paren_brace = ignore # ignore/add/remove/force
+
+# Add or remove space before pointer star '*'
+sp_before_ptr_star = ignore # ignore/add/remove/force
+
+# Add or remove space before pointer star '*' that isn't followed by a variable name
+# If set to 'ignore', sp_before_ptr_star is used instead.
+sp_before_unnamed_ptr_star = ignore # ignore/add/remove/force
+
+# Add or remove space between pointer stars '*'
+sp_between_ptr_star = ignore # ignore/add/remove/force
+
+# Add or remove space after pointer star '*', if followed by a word.
+sp_after_ptr_star = ignore # ignore/add/remove/force
+
+# Add or remove space after pointer star '*', if followed by a qualifier.
+sp_after_ptr_star_qualifier = ignore # ignore/add/remove/force
+
+# Add or remove space after a pointer star '*', if followed by a func proto/def.
+sp_after_ptr_star_func = ignore # ignore/add/remove/force
+
+# Add or remove space after a pointer star '*', if followed by an open paren (function types).
+sp_ptr_star_paren = ignore # ignore/add/remove/force
+
+# Add or remove space before a pointer star '*', if followed by a func proto/def.
+sp_before_ptr_star_func = ignore # ignore/add/remove/force
+
+# Add or remove space before a reference sign '&'
+sp_before_byref = ignore # ignore/add/remove/force
+
+# Add or remove space before a reference sign '&' that isn't followed by a variable name
+# If set to 'ignore', sp_before_byref is used instead.
+sp_before_unnamed_byref = ignore # ignore/add/remove/force
+
+# Add or remove space after reference sign '&', if followed by a word.
+sp_after_byref = ignore # ignore/add/remove/force
+
+# Add or remove space after a reference sign '&', if followed by a func proto/def.
+sp_after_byref_func = ignore # ignore/add/remove/force
+
+# Add or remove space before a reference sign '&', if followed by a func proto/def.
+sp_before_byref_func = ignore # ignore/add/remove/force
+
+# Add or remove space between type and word. Default=Force
+sp_after_type = force # ignore/add/remove/force
+
+# Add or remove space before the paren in the D constructs 'template Foo(' and 'class Foo('.
+sp_before_template_paren = ignore # ignore/add/remove/force
+
+# Add or remove space in 'template <' vs 'template<'.
+# If set to ignore, sp_before_angle is used.
+sp_template_angle = ignore # ignore/add/remove/force
+
+# Add or remove space before '<>'
+sp_before_angle = ignore # ignore/add/remove/force
+
+# Add or remove space inside '<' and '>'
+sp_inside_angle = ignore # ignore/add/remove/force
+
+# Add or remove space after '<>'
+sp_after_angle = ignore # ignore/add/remove/force
+
+# Add or remove space between '<>' and '(' as found in 'new List<byte>();'
+sp_angle_paren = ignore # ignore/add/remove/force
+
+# Add or remove space between '<>' and a word as in 'List<byte> m;'
+sp_angle_word = ignore # ignore/add/remove/force
+
+# Add or remove space between '>' and '>' in '>>' (template stuff C++/C# only). Default=Add
+sp_angle_shift = add # ignore/add/remove/force
+
+# Permit removal of the space between '>>' in 'foo<bar<int> >' (C++11 only). Default=False
+# sp_angle_shift cannot remove the space without this option.
+sp_permit_cpp11_shift = false # false/true
+
+# Add or remove space before '(' of 'if', 'for', 'switch', and 'while'
+sp_before_sparen = ignore # ignore/add/remove/force
+
+# Add or remove space inside if-condition '(' and ')'
+sp_inside_sparen = ignore # ignore/add/remove/force
+
+# Add or remove space before if-condition ')'. Overrides sp_inside_sparen.
+sp_inside_sparen_close = ignore # ignore/add/remove/force
+
+# Add or remove space before if-condition '('. Overrides sp_inside_sparen.
+sp_inside_sparen_open = ignore # ignore/add/remove/force
+
+# Add or remove space after ')' of 'if', 'for', 'switch', and 'while'
+sp_after_sparen = ignore # ignore/add/remove/force
+
+# Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while'
+sp_sparen_brace = ignore # ignore/add/remove/force
+
+# Add or remove space between 'invariant' and '(' in the D language.
+sp_invariant_paren = ignore # ignore/add/remove/force
+
+# Add or remove space after the ')' in 'invariant (C) c' in the D language.
+sp_after_invariant_paren = ignore # ignore/add/remove/force
+
+# Add or remove space before empty statement ';' on 'if', 'for' and 'while'
+sp_special_semi = ignore # ignore/add/remove/force
+
+# Add or remove space before ';'. Default=Remove
+sp_before_semi = remove # ignore/add/remove/force
+
+# Add or remove space before ';' in non-empty 'for' statements
+sp_before_semi_for = ignore # ignore/add/remove/force
+
+# Add or remove space before a semicolon of an empty part of a for statement.
+sp_before_semi_for_empty = ignore # ignore/add/remove/force
+
+# Add or remove space after ';', except when followed by a comment. Default=Add
+sp_after_semi = add # ignore/add/remove/force
+
+# Add or remove space after ';' in non-empty 'for' statements. Default=Force
+sp_after_semi_for = force # ignore/add/remove/force
+
+# Add or remove space after the final semicolon of an empty part of a for statement: for ( ; ; <here> ).
+sp_after_semi_for_empty = ignore # ignore/add/remove/force
+
+# Add or remove space before '[' (except '[]')
+sp_before_square = ignore # ignore/add/remove/force
+
+# Add or remove space before '[]'
+sp_before_squares = ignore # ignore/add/remove/force
+
+# Add or remove space inside a non-empty '[' and ']'
+sp_inside_square = ignore # ignore/add/remove/force
+
+# Add or remove space after ','
+sp_after_comma = ignore # ignore/add/remove/force
+
+# Add or remove space before ','
+sp_before_comma = remove # ignore/add/remove/force
+
+# Add or remove space between an open paren and comma: '(,' vs '( ,'
+sp_paren_comma = force # ignore/add/remove/force
+
+# Add or remove space before the variadic '...' when preceded by a non-punctuator
+sp_before_ellipsis = ignore # ignore/add/remove/force
+
+# Add or remove space after class ':'
+sp_after_class_colon = ignore # ignore/add/remove/force
+
+# Add or remove space before class ':'
+sp_before_class_colon = ignore # ignore/add/remove/force
+
+# Add or remove space after class constructor ':'
+sp_after_constr_colon = ignore # ignore/add/remove/force
+
+# Add or remove space before class constructor ':'
+sp_before_constr_colon = ignore # ignore/add/remove/force
+
+# Add or remove space before case ':'. Default=Remove
+sp_before_case_colon = remove # ignore/add/remove/force
+
+# Add or remove space between 'operator' and operator sign
+sp_after_operator = ignore # ignore/add/remove/force
+
+# Add or remove space between the operator symbol and the open paren, as in 'operator ++('
+sp_after_operator_sym = ignore # ignore/add/remove/force
+
+# Add or remove space after C/D cast, i.e. 'cast(int)a' vs 'cast(int) a' or '(int)a' vs '(int) a'
+sp_after_cast = ignore # ignore/add/remove/force
+
+# Add or remove spaces inside cast parens
+sp_inside_paren_cast = ignore # ignore/add/remove/force
+
+# Add or remove space between the type and open paren in a C++ cast, i.e. 'int(exp)' vs 'int (exp)'
+sp_cpp_cast_paren = ignore # ignore/add/remove/force
+
+# Add or remove space between 'sizeof' and '('
+sp_sizeof_paren = ignore # ignore/add/remove/force
+
+# Add or remove space after the tag keyword (Pawn)
+sp_after_tag = ignore # ignore/add/remove/force
+
+# Add or remove space inside enum '{' and '}'
+sp_inside_braces_enum = ignore # ignore/add/remove/force
+
+# Add or remove space inside struct/union '{' and '}'
+sp_inside_braces_struct = ignore # ignore/add/remove/force
+
+# Add or remove space inside '{' and '}'
+sp_inside_braces = ignore # ignore/add/remove/force
+
+# Add or remove space inside '{}'
+sp_inside_braces_empty = ignore # ignore/add/remove/force
+
+# Add or remove space between return type and function name
+# A minimum of 1 is forced except for pointer return types.
+sp_type_func = ignore # ignore/add/remove/force
+
+# Add or remove space between function name and '(' on function declaration
+sp_func_proto_paren = ignore # ignore/add/remove/force
+
+# Add or remove space between function name and '(' on function definition
+sp_func_def_paren = ignore # ignore/add/remove/force
+
+# Add or remove space inside empty function '()'
+sp_inside_fparens = ignore # ignore/add/remove/force
+
+# Add or remove space inside function '(' and ')'
+sp_inside_fparen = ignore # ignore/add/remove/force
+
+# Add or remove space inside the first parens in the function type: 'void (*x)(...)'
+sp_inside_tparen = ignore # ignore/add/remove/force
+
+# Add or remove between the parens in the function type: 'void (*x)(...)'
+sp_after_tparen_close = ignore # ignore/add/remove/force
+
+# Add or remove space between ']' and '(' when part of a function call.
+sp_square_fparen = ignore # ignore/add/remove/force
+
+# Add or remove space between ')' and '{' of function
+sp_fparen_brace = ignore # ignore/add/remove/force
+
+# Java: Add or remove space between ')' and '{{' of double brace initializer.
+sp_fparen_dbrace = ignore # ignore/add/remove/force
+
+# Add or remove space between function name and '(' on function calls
+sp_func_call_paren = ignore # ignore/add/remove/force
+
+# Add or remove space between function name and '()' on function calls without parameters.
+# If set to 'ignore' (the default), sp_func_call_paren is used.
+sp_func_call_paren_empty = ignore # ignore/add/remove/force
+
+# Add or remove space between the user function name and '(' on function calls
+# You need to set a keyword to be a user function, like this: 'set func_call_user _' in the config file.
+sp_func_call_user_paren = ignore # ignore/add/remove/force
+
+# Add or remove space between a constructor/destructor and the open paren
+sp_func_class_paren = ignore # ignore/add/remove/force
+
+# Add or remove space between 'return' and '('
+sp_return_paren = ignore # ignore/add/remove/force
+
+# Add or remove space between '__attribute__' and '('
+sp_attribute_paren = ignore # ignore/add/remove/force
+
+# Add or remove space between 'defined' and '(' in '#if defined (FOO)'
+sp_defined_paren = ignore # ignore/add/remove/force
+
+# Add or remove space between 'throw' and '(' in 'throw (something)'
+sp_throw_paren = ignore # ignore/add/remove/force
+
+# Add or remove space between 'throw' and anything other than '(' as in '@throw [...];'
+sp_after_throw = ignore # ignore/add/remove/force
+
+# Add or remove space between 'catch' and '(' in 'catch (something) { }'
+# If set to ignore, sp_before_sparen is used.
+sp_catch_paren = ignore # ignore/add/remove/force
+
+# Add or remove space between 'version' and '(' in 'version (something) { }' (D language)
+# If set to ignore, sp_before_sparen is used.
+sp_version_paren = ignore # ignore/add/remove/force
+
+# Add or remove space between 'scope' and '(' in 'scope (something) { }' (D language)
+# If set to ignore, sp_before_sparen is used.
+sp_scope_paren = ignore # ignore/add/remove/force
+
+# Add or remove space between macro and value
+sp_macro = ignore # ignore/add/remove/force
+
+# Add or remove space between macro function ')' and value
+sp_macro_func = ignore # ignore/add/remove/force
+
+# Add or remove space between 'else' and '{' if on the same line
+sp_else_brace = ignore # ignore/add/remove/force
+
+# Add or remove space between '}' and 'else' if on the same line
+sp_brace_else = ignore # ignore/add/remove/force
+
+# Add or remove space between '}' and the name of a typedef on the same line
+sp_brace_typedef = ignore # ignore/add/remove/force
+
+# Add or remove space between 'catch' and '{' if on the same line
+sp_catch_brace = ignore # ignore/add/remove/force
+
+# Add or remove space between '}' and 'catch' if on the same line
+sp_brace_catch = ignore # ignore/add/remove/force
+
+# Add or remove space between 'finally' and '{' if on the same line
+sp_finally_brace = ignore # ignore/add/remove/force
+
+# Add or remove space between '}' and 'finally' if on the same line
+sp_brace_finally = ignore # ignore/add/remove/force
+
+# Add or remove space between 'try' and '{' if on the same line
+sp_try_brace = ignore # ignore/add/remove/force
+
+# Add or remove space between get/set and '{' if on the same line
+sp_getset_brace = ignore # ignore/add/remove/force
+
+# Add or remove space between a variable and '{' for C++ uniform initialization
+sp_word_brace = add # ignore/add/remove/force
+
+# Add or remove space between a variable and '{' for a namespace
+sp_word_brace_ns = add # ignore/add/remove/force
+
+# Add or remove space before the '::' operator
+sp_before_dc = ignore # ignore/add/remove/force
+
+# Add or remove space after the '::' operator
+sp_after_dc = ignore # ignore/add/remove/force
+
+# Add or remove around the D named array initializer ':' operator
+sp_d_array_colon = ignore # ignore/add/remove/force
+
+# Add or remove space after the '!' (not) operator. Default=Remove
+sp_not = remove # ignore/add/remove/force
+
+# Add or remove space after the '~' (invert) operator. Default=Remove
+sp_inv = remove # ignore/add/remove/force
+
+# Add or remove space after the '&' (address-of) operator. Default=Remove
+# This does not affect the spacing after a '&' that is part of a type.
+sp_addr = remove # ignore/add/remove/force
+
+# Add or remove space around the '.' or '->' operators. Default=Remove
+sp_member = remove # ignore/add/remove/force
+
+# Add or remove space after the '*' (dereference) operator. Default=Remove
+# This does not affect the spacing after a '*' that is part of a type.
+sp_deref = remove # ignore/add/remove/force
+
+# Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'. Default=Remove
+sp_sign = remove # ignore/add/remove/force
+
+# Add or remove space before or after '++' and '--', as in '(--x)' or 'y++;'. Default=Remove
+sp_incdec = remove # ignore/add/remove/force
+
+# Add or remove space before a backslash-newline at the end of a line. Default=Add
+sp_before_nl_cont = add # ignore/add/remove/force
+
+# Add or remove space after the scope '+' or '-', as in '-(void) foo;' or '+(int) bar;'
+sp_after_oc_scope = ignore # ignore/add/remove/force
+
+# Add or remove space after the colon in message specs
+# '-(int) f:(int) x;' vs '-(int) f: (int) x;'
+sp_after_oc_colon = ignore # ignore/add/remove/force
+
+# Add or remove space before the colon in message specs
+# '-(int) f: (int) x;' vs '-(int) f : (int) x;'
+sp_before_oc_colon = ignore # ignore/add/remove/force
+
+# Add or remove space after the colon in immutable dictionary expression
+# 'NSDictionary *test = @{@"foo" :@"bar"};'
+sp_after_oc_dict_colon = ignore # ignore/add/remove/force
+
+# Add or remove space before the colon in immutable dictionary expression
+# 'NSDictionary *test = @{@"foo" :@"bar"};'
+sp_before_oc_dict_colon = ignore # ignore/add/remove/force
+
+# Add or remove space after the colon in message specs
+# '[object setValue:1];' vs '[object setValue: 1];'
+sp_after_send_oc_colon = ignore # ignore/add/remove/force
+
+# Add or remove space before the colon in message specs
+# '[object setValue:1];' vs '[object setValue :1];'
+sp_before_send_oc_colon = ignore # ignore/add/remove/force
+
+# Add or remove space after the (type) in message specs
+# '-(int)f: (int) x;' vs '-(int)f: (int)x;'
+sp_after_oc_type = ignore # ignore/add/remove/force
+
+# Add or remove space after the first (type) in message specs
+# '-(int) f:(int)x;' vs '-(int)f:(int)x;'
+sp_after_oc_return_type = ignore # ignore/add/remove/force
+
+# Add or remove space between '@selector' and '('
+# '@selector(msgName)' vs '@selector (msgName)'
+# Also applies to @protocol() constructs
+sp_after_oc_at_sel = ignore # ignore/add/remove/force
+
+# Add or remove space between '@selector(x)' and the following word
+# '@selector(foo) a:' vs '@selector(foo)a:'
+sp_after_oc_at_sel_parens = ignore # ignore/add/remove/force
+
+# Add or remove space inside '@selector' parens
+# '@selector(foo)' vs '@selector( foo )'
+# Also applies to @protocol() constructs
+sp_inside_oc_at_sel_parens = ignore # ignore/add/remove/force
+
+# Add or remove space before a block pointer caret
+# '^int (int arg){...}' vs. ' ^int (int arg){...}'
+sp_before_oc_block_caret = ignore # ignore/add/remove/force
+
+# Add or remove space after a block pointer caret
+# '^int (int arg){...}' vs. '^ int (int arg){...}'
+sp_after_oc_block_caret = ignore # ignore/add/remove/force
+
+# Add or remove space between the receiver and selector in a message.
+# '[receiver selector ...]'
+sp_after_oc_msg_receiver = ignore # ignore/add/remove/force
+
+# Add or remove space after @property.
+sp_after_oc_property = ignore # ignore/add/remove/force
+
+# Add or remove space around the ':' in 'b ? t : f'
+sp_cond_colon = ignore # ignore/add/remove/force
+
+# Add or remove space before the ':' in 'b ? t : f'. Overrides sp_cond_colon.
+sp_cond_colon_before = ignore # ignore/add/remove/force
+
+# Add or remove space after the ':' in 'b ? t : f'. Overrides sp_cond_colon.
+sp_cond_colon_after = ignore # ignore/add/remove/force
+
+# Add or remove space around the '?' in 'b ? t : f'
+sp_cond_question = ignore # ignore/add/remove/force
+
+# Add or remove space before the '?' in 'b ? t : f'. Overrides sp_cond_question.
+sp_cond_question_before = ignore # ignore/add/remove/force
+
+# Add or remove space after the '?' in 'b ? t : f'. Overrides sp_cond_question.
+sp_cond_question_after = ignore # ignore/add/remove/force
+
+# In the abbreviated ternary form (a ?: b), add/remove space between ? and :.'. Overrides all other sp_cond_* options.
+sp_cond_ternary_short = ignore # ignore/add/remove/force
+
+# Fix the spacing between 'case' and the label. Only 'ignore' and 'force' make sense here.
+sp_case_label = ignore # ignore/add/remove/force
+
+# Control the space around the D '..' operator.
+sp_range = ignore # ignore/add/remove/force
+
+# Control the spacing after ':' in 'for (TYPE VAR : EXPR)' (Java)
+sp_after_for_colon = ignore # ignore/add/remove/force
+
+# Control the spacing before ':' in 'for (TYPE VAR : EXPR)' (Java)
+sp_before_for_colon = ignore # ignore/add/remove/force
+
+# Control the spacing in 'extern (C)' (D)
+sp_extern_paren = ignore # ignore/add/remove/force
+
+# Control the space after the opening of a C++ comment '// A' vs '//A'
+sp_cmt_cpp_start = ignore # ignore/add/remove/force
+
+# Controls the spaces between #else or #endif and a trailing comment
+sp_endif_cmt = ignore # ignore/add/remove/force
+
+# Controls the spaces after 'new', 'delete', and 'delete[]'
+sp_after_new = ignore # ignore/add/remove/force
+
+# Controls the spaces before a trailing or embedded comment
+sp_before_tr_emb_cmt = ignore # ignore/add/remove/force
+
+# Number of spaces before a trailing or embedded comment
+sp_num_before_tr_emb_cmt = 0 # number
+
+# Control space between a Java annotation and the open paren.
+sp_annotation_paren = ignore # ignore/add/remove/force
+
+#
+# Code alignment (not left column spaces/tabs)
+#
+
+# Whether to keep non-indenting tabs
+align_keep_tabs = false # false/true
+
+# Whether to use tabs for aligning
+align_with_tabs = false # false/true
+
+# Whether to bump out to the next tab when aligning
+align_on_tabstop = false # false/true
+
+# Whether to left-align numbers
+align_number_left = false # false/true
+
+# Whether to keep whitespace not required for alignment.
+align_keep_extra_space = false # false/true
+
+# Align variable definitions in prototypes and functions
+align_func_params = false # false/true
+
+# Align parameters in single-line functions that have the same name.
+# The function names must already be aligned with each other.
+align_same_func_call_params = false # false/true
+
+# The span for aligning variable definitions (0=don't align)
+align_var_def_span = 0 # number
+
+# How to align the star in variable definitions.
+# 0=Part of the type 'void * foo;'
+# 1=Part of the variable 'void *foo;'
+# 2=Dangling 'void *foo;'
+align_var_def_star_style = 0 # number
+
+# How to align the '&' in variable definitions.
+# 0=Part of the type
+# 1=Part of the variable
+# 2=Dangling
+align_var_def_amp_style = 0 # number
+
+# The threshold for aligning variable definitions (0=no limit)
+align_var_def_thresh = 0 # number
+
+# The gap for aligning variable definitions
+align_var_def_gap = 0 # number
+
+# Whether to align the colon in struct bit fields
+align_var_def_colon = false # false/true
+
+# Whether to align any attribute after the variable name
+align_var_def_attribute = false # false/true
+
+# Whether to align inline struct/enum/union variable definitions
+align_var_def_inline = false # false/true
+
+# The span for aligning on '=' in assignments (0=don't align)
+align_assign_span = 0 # number
+
+# The threshold for aligning on '=' in assignments (0=no limit)
+align_assign_thresh = 0 # number
+
+# The span for aligning on '=' in enums (0=don't align)
+align_enum_equ_span = 0 # number
+
+# The threshold for aligning on '=' in enums (0=no limit)
+align_enum_equ_thresh = 0 # number
+
+# The span for aligning struct/union (0=don't align)
+align_var_struct_span = 0 # number
+
+# The threshold for aligning struct/union member definitions (0=no limit)
+align_var_struct_thresh = 0 # number
+
+# The gap for aligning struct/union member definitions
+align_var_struct_gap = 0 # number
+
+# The span for aligning struct initializer values (0=don't align)
+align_struct_init_span = 0 # number
+
+# The minimum space between the type and the synonym of a typedef
+align_typedef_gap = 0 # number
+
+# The span for aligning single-line typedefs (0=don't align)
+align_typedef_span = 0 # number
+
+# How to align typedef'd functions with other typedefs
+# 0: Don't mix them at all
+# 1: align the open paren with the types
+# 2: align the function type name with the other type names
+align_typedef_func = 0 # number
+
+# Controls the positioning of the '*' in typedefs. Just try it.
+# 0: Align on typedef type, ignore '*'
+# 1: The '*' is part of type name: typedef int *pint;
+# 2: The '*' is part of the type, but dangling: typedef int *pint;
+align_typedef_star_style = 0 # number
+
+# Controls the positioning of the '&' in typedefs. Just try it.
+# 0: Align on typedef type, ignore '&'
+# 1: The '&' is part of type name: typedef int &pint;
+# 2: The '&' is part of the type, but dangling: typedef int &pint;
+align_typedef_amp_style = 0 # number
+
+# The span for aligning comments that end lines (0=don't align)
+align_right_cmt_span = 0 # number
+
+# If aligning comments, mix with comments after '}' and #endif with less than 3 spaces before the comment
+align_right_cmt_mix = false # false/true
+
+# If a trailing comment is more than this number of columns away from the text it follows,
+# it will qualify for being aligned. This has to be > 0 to do anything.
+align_right_cmt_gap = 0 # number
+
+# Align trailing comment at or beyond column N; 'pulls in' comments as a bonus side effect (0=ignore)
+align_right_cmt_at_col = 0 # number
+
+# The span for aligning function prototypes (0=don't align)
+align_func_proto_span = 0 # number
+
+# Minimum gap between the return type and the function name.
+align_func_proto_gap = 0 # number
+
+# Align function protos on the 'operator' keyword instead of what follows
+align_on_operator = false # false/true
+
+# Whether to mix aligning prototype and variable declarations.
+# If true, align_var_def_XXX options are used instead of align_func_proto_XXX options.
+align_mix_var_proto = false # false/true
+
+# Align single-line functions with function prototypes, uses align_func_proto_span
+align_single_line_func = false # false/true
+
+# Aligning the open brace of single-line functions.
+# Requires align_single_line_func=true, uses align_func_proto_span
+align_single_line_brace = false # false/true
+
+# Gap for align_single_line_brace.
+align_single_line_brace_gap = 0 # number
+
+# The span for aligning ObjC msg spec (0=don't align)
+align_oc_msg_spec_span = 0 # number
+
+# Whether to align macros wrapped with a backslash and a newline.
+# This will not work right if the macro contains a multi-line comment.
+align_nl_cont = false # false/true
+
+# # Align macro functions and variables together
+align_pp_define_together = false # false/true
+
+# The minimum space between label and value of a preprocessor define
+align_pp_define_gap = 0 # number
+
+# The span for aligning on '#define' bodies (0=don't align, other=number of lines including comments between blocks)
+align_pp_define_span = 0 # number
+
+# Align lines that start with '<<' with previous '<<'. Default=true
+align_left_shift = true # false/true
+
+# Span for aligning parameters in an Obj-C message call on the ':' (0=don't align)
+align_oc_msg_colon_span = 0 # number
+
+# If true, always align with the first parameter, even if it is too short.
+align_oc_msg_colon_first = false # false/true
+
+# Aligning parameters in an Obj-C '+' or '-' declaration on the ':'
+align_oc_decl_colon = false # false/true
+
+#
+# Newline adding and removing options
+#
+
+# Whether to collapse empty blocks between '{' and '}'
+nl_collapse_empty_body = false # false/true
+
+# Don't split one-line braced assignments - 'foo_t f = { 1, 2 };'
+nl_assign_leave_one_liners = false # false/true
+
+# Don't split one-line braced statements inside a class xx { } body
+nl_class_leave_one_liners = false # false/true
+
+# Don't split one-line enums: 'enum foo { BAR = 15 };'
+nl_enum_leave_one_liners = false # false/true
+
+# Don't split one-line get or set functions
+nl_getset_leave_one_liners = false # false/true
+
+# Don't split one-line function definitions - 'int foo() { return 0; }'
+nl_func_leave_one_liners = false # false/true
+
+# Don't split one-line C++11 lambdas - '[]() { return 0; }'
+nl_cpp_lambda_leave_one_liners = false # false/true
+
+# Don't split one-line if/else statements - 'if(a) b++;'
+nl_if_leave_one_liners = false # false/true
+
+# Don't split one-line OC messages
+nl_oc_msg_leave_one_liner = false # false/true
+
+# Add or remove newlines at the start of the file
+nl_start_of_file = ignore # ignore/add/remove/force
+
+# The number of newlines at the start of the file (only used if nl_start_of_file is 'add' or 'force'
+nl_start_of_file_min = 0 # number
+
+# Add or remove newline at the end of the file
+nl_end_of_file = ignore # ignore/add/remove/force
+
+# The number of newlines at the end of the file (only used if nl_end_of_file is 'add' or 'force')
+nl_end_of_file_min = 0 # number
+
+# Add or remove newline between '=' and '{'
+nl_assign_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between '=' and '[' (D only)
+nl_assign_square = ignore # ignore/add/remove/force
+
+# Add or remove newline after '= [' (D only). Will also affect the newline before the ']'
+nl_after_square_assign = ignore # ignore/add/remove/force
+
+# The number of blank lines after a block of variable definitions at the top of a function body
+# 0 = No change (default)
+nl_func_var_def_blk = 0 # number
+
+# The number of newlines before a block of typedefs
+# 0 = No change (default)
+nl_typedef_blk_start = 0 # number
+
+# The number of newlines after a block of typedefs
+# 0 = No change (default)
+nl_typedef_blk_end = 0 # number
+
+# The maximum consecutive newlines within a block of typedefs
+# 0 = No change (default)
+nl_typedef_blk_in = 0 # number
+
+# The number of newlines before a block of variable definitions not at the top of a function body
+# 0 = No change (default)
+nl_var_def_blk_start = 0 # number
+
+# The number of newlines after a block of variable definitions not at the top of a function body
+# 0 = No change (default)
+nl_var_def_blk_end = 0 # number
+
+# The maximum consecutive newlines within a block of variable definitions
+# 0 = No change (default)
+nl_var_def_blk_in = 0 # number
+
+# Add or remove newline between a function call's ')' and '{', as in:
+# list_for_each(item, &list) { }
+nl_fcall_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'enum' and '{'
+nl_enum_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'struct and '{'
+nl_struct_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'union' and '{'
+nl_union_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'if' and '{'
+nl_if_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between '}' and 'else'
+nl_brace_else = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'else if' and '{'
+# If set to ignore, nl_if_brace is used instead
+nl_elseif_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'else' and '{'
+nl_else_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'else' and 'if'
+nl_else_if = ignore # ignore/add/remove/force
+
+# Add or remove newline between '}' and 'finally'
+nl_brace_finally = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'finally' and '{'
+nl_finally_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'try' and '{'
+nl_try_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between get/set and '{'
+nl_getset_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'for' and '{'
+nl_for_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'catch' and '{'
+nl_catch_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between '}' and 'catch'
+nl_brace_catch = ignore # ignore/add/remove/force
+
+# Add or remove newline between '}' and ']'
+nl_brace_square = ignore # ignore/add/remove/force
+
+# Add or remove newline between '}' and ')' in a function invocation
+nl_brace_fparen = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'while' and '{'
+nl_while_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'scope (x)' and '{' (D)
+nl_scope_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'unittest' and '{' (D)
+nl_unittest_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'version (x)' and '{' (D)
+nl_version_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'using' and '{'
+nl_using_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between two open or close braces.
+# Due to general newline/brace handling, REMOVE may not work.
+nl_brace_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'do' and '{'
+nl_do_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between '}' and 'while' of 'do' statement
+nl_brace_while = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'switch' and '{'
+nl_switch_brace = ignore # ignore/add/remove/force
+
+# Add a newline between ')' and '{' if the ')' is on a different line than the if/for/etc.
+# Overrides nl_for_brace, nl_if_brace, nl_switch_brace, nl_while_switch, and nl_catch_brace.
+nl_multi_line_cond = false # false/true
+
+# Force a newline in a define after the macro name for multi-line defines.
+nl_multi_line_define = false # false/true
+
+# Whether to put a newline before 'case' statement
+nl_before_case = false # false/true
+
+# Add or remove newline between ')' and 'throw'
+nl_before_throw = ignore # ignore/add/remove/force
+
+# Whether to put a newline after 'case' statement
+nl_after_case = false # false/true
+
+# Add or remove a newline between a case ':' and '{'. Overrides nl_after_case.
+nl_case_colon_brace = ignore # ignore/add/remove/force
+
+# Newline between namespace and {
+nl_namespace_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'template<>' and whatever follows.
+nl_template_class = ignore # ignore/add/remove/force
+
+# Add or remove newline between 'class' and '{'
+nl_class_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline after each ',' in the class base list
+nl_class_init_args = ignore # ignore/add/remove/force
+
+# Add or remove newline after each ',' in the constructor member initialization
+nl_constr_init_args = ignore # ignore/add/remove/force
+
+# Add or remove newline between return type and function name in a function definition
+nl_func_type_name = ignore # ignore/add/remove/force
+
+# Add or remove newline between return type and function name inside a class {}
+# Uses nl_func_type_name or nl_func_proto_type_name if set to ignore.
+nl_func_type_name_class = ignore # ignore/add/remove/force
+
+# Add or remove newline between function scope and name in a definition
+# Controls the newline after '::' in 'void A::f() { }'
+nl_func_scope_name = ignore # ignore/add/remove/force
+
+# Add or remove newline between return type and function name in a prototype
+nl_func_proto_type_name = ignore # ignore/add/remove/force
+
+# Add or remove newline between a function name and the opening '('
+nl_func_paren = ignore # ignore/add/remove/force
+
+# Add or remove newline between a function name and the opening '(' in the definition
+nl_func_def_paren = ignore # ignore/add/remove/force
+
+# Add or remove newline after '(' in a function declaration
+nl_func_decl_start = ignore # ignore/add/remove/force
+
+# Add or remove newline after '(' in a function definition
+nl_func_def_start = ignore # ignore/add/remove/force
+
+# Overrides nl_func_decl_start when there is only one parameter.
+nl_func_decl_start_single = ignore # ignore/add/remove/force
+
+# Overrides nl_func_def_start when there is only one parameter.
+nl_func_def_start_single = ignore # ignore/add/remove/force
+
+# Add or remove newline after each ',' in a function declaration
+nl_func_decl_args = ignore # ignore/add/remove/force
+
+# Add or remove newline after each ',' in a function definition
+nl_func_def_args = ignore # ignore/add/remove/force
+
+# Add or remove newline before the ')' in a function declaration
+nl_func_decl_end = ignore # ignore/add/remove/force
+
+# Add or remove newline before the ')' in a function definition
+nl_func_def_end = ignore # ignore/add/remove/force
+
+# Overrides nl_func_decl_end when there is only one parameter.
+nl_func_decl_end_single = ignore # ignore/add/remove/force
+
+# Overrides nl_func_def_end when there is only one parameter.
+nl_func_def_end_single = ignore # ignore/add/remove/force
+
+# Add or remove newline between '()' in a function declaration.
+nl_func_decl_empty = ignore # ignore/add/remove/force
+
+# Add or remove newline between '()' in a function definition.
+nl_func_def_empty = ignore # ignore/add/remove/force
+
+# Whether to put each OC message parameter on a separate line
+# See nl_oc_msg_leave_one_liner
+nl_oc_msg_args = false # false/true
+
+# Add or remove newline between function signature and '{'
+nl_fdef_brace = ignore # ignore/add/remove/force
+
+# Add or remove newline between C++11 lambda signature and '{'
+nl_cpp_ldef_brace = ignore # ignore/add/remove/force
+
+# Add or remove a newline between the return keyword and return expression.
+nl_return_expr = ignore # ignore/add/remove/force
+
+# Whether to put a newline after semicolons, except in 'for' statements
+nl_after_semicolon = false # false/true
+
+# Java: Control the newline between the ')' and '{{' of the double brace initializer.
+nl_paren_dbrace_open = ignore # ignore/add/remove/force
+
+# Whether to put a newline after brace open.
+# This also adds a newline before the matching brace close.
+nl_after_brace_open = false # false/true
+
+# If nl_after_brace_open and nl_after_brace_open_cmt are true, a newline is
+# placed between the open brace and a trailing single-line comment.
+nl_after_brace_open_cmt = false # false/true
+
+# Whether to put a newline after a virtual brace open with a non-empty body.
+# These occur in un-braced if/while/do/for statement bodies.
+nl_after_vbrace_open = false # false/true
+
+# Whether to put a newline after a virtual brace open with an empty body.
+# These occur in un-braced if/while/do/for statement bodies.
+nl_after_vbrace_open_empty = false # false/true
+
+# Whether to put a newline after a brace close.
+# Does not apply if followed by a necessary ';'.
+nl_after_brace_close = false # false/true
+
+# Whether to put a newline after a virtual brace close.
+# Would add a newline before return in: 'if (foo) a++; return;'
+nl_after_vbrace_close = false # false/true
+
+# Control the newline between the close brace and 'b' in: 'struct { int a; } b;'
+# Affects enums, unions, and structures. If set to ignore, uses nl_after_brace_close
+nl_brace_struct_var = ignore # ignore/add/remove/force
+
+# Whether to alter newlines in '#define' macros
+nl_define_macro = false # false/true
+
+# Whether to not put blanks after '#ifxx', '#elxx', or before '#endif'
+nl_squeeze_ifdef = false # false/true
+
+# Add or remove blank line before 'if'
+nl_before_if = ignore # ignore/add/remove/force
+
+# Add or remove blank line after 'if' statement
+nl_after_if = remove # ignore/add/remove/force
+
+# Add or remove blank line before 'for'
+nl_before_for = ignore # ignore/add/remove/force
+
+# Add or remove blank line after 'for' statement
+nl_after_for = remove # ignore/add/remove/force
+
+# Add or remove blank line before 'while'
+nl_before_while = ignore # ignore/add/remove/force
+
+# Add or remove blank line after 'while' statement
+nl_after_while = ignore # ignore/add/remove/force
+
+# Add or remove blank line before 'switch'
+nl_before_switch = ignore # ignore/add/remove/force
+
+# Add or remove blank line after 'switch' statement
+nl_after_switch = ignore # ignore/add/remove/force
+
+# Add or remove blank line before 'do'
+nl_before_do = ignore # ignore/add/remove/force
+
+# Add or remove blank line after 'do/while' statement
+nl_after_do = ignore # ignore/add/remove/force
+
+# Whether to double-space commented-entries in struct/enum
+nl_ds_struct_enum_cmt = false # false/true
+
+# Whether to double-space before the close brace of a struct/union/enum
+# (lower priority than 'eat_blanks_before_close_brace')
+nl_ds_struct_enum_close_brace = false # false/true
+
+# Add or remove a newline around a class colon.
+# Related to pos_class_colon, nl_class_init_args, and pos_class_comma.
+nl_class_colon = ignore # ignore/add/remove/force
+
+# Add or remove a newline around a class constructor colon.
+# Related to pos_constr_colon, nl_constr_init_args, and pos_constr_comma.
+nl_constr_colon = ignore # ignore/add/remove/force
+
+# Change simple unbraced if statements into a one-liner
+# 'if(b)\n i++;' => 'if(b) i++;'
+nl_create_if_one_liner = false # false/true
+
+# Change simple unbraced for statements into a one-liner
+# 'for (i=0;i<5;i++)\n foo(i);' => 'for (i=0;i<5;i++) foo(i);'
+nl_create_for_one_liner = false # false/true
+
+# Change simple unbraced while statements into a one-liner
+# 'while (i<5)\n foo(i++);' => 'while (i<5) foo(i++);'
+nl_create_while_one_liner = false # false/true
+
+#
+# Positioning options
+#
+
+# The position of arithmetic operators in wrapped expressions
+pos_arith = ignore # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of assignment in wrapped expressions.
+# Do not affect '=' followed by '{'
+pos_assign = ignore # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of boolean operators in wrapped expressions
+pos_bool = ignore # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of comparison operators in wrapped expressions
+pos_compare = ignore # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of conditional (b ? t : f) operators in wrapped expressions
+pos_conditional = ignore # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of the comma in wrapped expressions
+pos_comma = ignore # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of the comma in the class base list
+pos_class_comma = ignore # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of the comma in the constructor initialization list
+pos_constr_comma = ignore # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of colons between class and base class list
+pos_class_colon = ignore # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+# The position of colons between constructor and member initialization
+pos_constr_colon = ignore # ignore/join/lead/lead_break/lead_force/trail/trail_break/trail_force
+
+#
+# Line Splitting options
+#
+
+# Try to limit code width to N number of columns
+code_width = 0 # number
+
+# Whether to fully split long 'for' statements at semi-colons
+ls_for_split_full = false # false/true
+
+# Whether to fully split long function protos/calls at commas
+ls_func_split_full = false # false/true
+
+# Whether to split lines as close to code_width as possible and ignore some groupings
+ls_code_width = false # false/true
+
+#
+# Blank line options
+#
+
+# The maximum consecutive newlines
+nl_max = 0 # number
+
+# The number of newlines after a function prototype, if followed by another function prototype
+nl_after_func_proto = 0 # number
+
+# The number of newlines after a function prototype, if not followed by another function prototype
+nl_after_func_proto_group = 0 # number
+
+# The number of newlines after '}' of a multi-line function body
+nl_after_func_body = 0 # number
+
+# The number of newlines after '}' of a multi-line function body in a class declaration
+nl_after_func_body_class = 0 # number
+
+# The number of newlines after '}' of a single line function body
+nl_after_func_body_one_liner = 0 # number
+
+# The minimum number of newlines before a multi-line comment.
+# Doesn't apply if after a brace open or another multi-line comment.
+nl_before_block_comment = 0 # number
+
+# The minimum number of newlines before a single-line C comment.
+# Doesn't apply if after a brace open or other single-line C comments.
+nl_before_c_comment = 0 # number
+
+# The minimum number of newlines before a CPP comment.
+# Doesn't apply if after a brace open or other CPP comments.
+nl_before_cpp_comment = 0 # number
+
+# Whether to force a newline after a multi-line comment.
+nl_after_multiline_comment = false # false/true
+
+# The number of newlines after '}' or ';' of a struct/enum/union definition
+nl_after_struct = 0 # number
+
+# The number of newlines after '}' or ';' of a class definition
+nl_after_class = 0 # number
+
+# The number of newlines before a 'private:', 'public:', 'protected:', 'signals:', or 'slots:' label.
+# Will not change the newline count if after a brace open.
+# 0 = No change.
+nl_before_access_spec = 0 # number
+
+# The number of newlines after a 'private:', 'public:', 'protected:', 'signals:', or 'slots:' label.
+# 0 = No change.
+nl_after_access_spec = 0 # number
+
+# The number of newlines between a function def and the function comment.
+# 0 = No change.
+nl_comment_func_def = 0 # number
+
+# The number of newlines after a try-catch-finally block that isn't followed by a brace close.
+# 0 = No change.
+nl_after_try_catch_finally = 0 # number
+
+# The number of newlines before and after a property, indexer or event decl.
+# 0 = No change.
+nl_around_cs_property = 0 # number
+
+# The number of newlines between the get/set/add/remove handlers in C#.
+# 0 = No change.
+nl_between_get_set = 0 # number
+
+# Add or remove newline between C# property and the '{'
+nl_property_brace = ignore # ignore/add/remove/force
+
+# Whether to remove blank lines after '{'
+eat_blanks_after_open_brace = false # false/true
+
+# Whether to remove blank lines before '}'
+eat_blanks_before_close_brace = false # false/true
+
+# How aggressively to remove extra newlines not in preproc.
+# 0: No change
+# 1: Remove most newlines not handled by other config
+# 2: Remove all newlines and reformat completely by config
+nl_remove_extra_newlines = 0 # number
+
+# Whether to put a blank line before 'return' statements, unless after an open brace.
+nl_before_return = false # false/true
+
+# Whether to put a blank line after 'return' statements, unless followed by a close brace.
+nl_after_return = false # false/true
+
+# Whether to put a newline after a Java annotation statement.
+# Only affects annotations that are after a newline.
+nl_after_annotation = ignore # ignore/add/remove/force
+
+# Controls the newline between two annotations.
+nl_between_annotation = ignore # ignore/add/remove/force
+
+#
+# Code modifying options (non-whitespace)
+#
+
+# Add or remove braces on single-line 'do' statement
+mod_full_brace_do = ignore # ignore/add/remove/force
+
+# Add or remove braces on single-line 'for' statement
+mod_full_brace_for = ignore # ignore/add/remove/force
+
+# Add or remove braces on single-line function definitions. (Pawn)
+mod_full_brace_function = ignore # ignore/add/remove/force
+
+# Add or remove braces on single-line 'if' statement. Will not remove the braces if they contain an 'else'.
+mod_full_brace_if = ignore # ignore/add/remove/force
+
+# Make all if/elseif/else statements in a chain be braced or not. Overrides mod_full_brace_if.
+# If any must be braced, they are all braced. If all can be unbraced, then the braces are removed.
+mod_full_brace_if_chain = false # false/true
+
+# Don't remove braces around statements that span N newlines
+mod_full_brace_nl = 0 # number
+
+# Add or remove braces on single-line 'while' statement
+mod_full_brace_while = ignore # ignore/add/remove/force
+
+# Add or remove braces on single-line 'using ()' statement
+mod_full_brace_using = ignore # ignore/add/remove/force
+
+# Add or remove unnecessary paren on 'return' statement
+mod_paren_on_return = ignore # ignore/add/remove/force
+
+# Whether to change optional semicolons to real semicolons
+mod_pawn_semicolon = false # false/true
+
+# Add parens on 'while' and 'if' statement around bools
+mod_full_paren_if_bool = false # false/true
+
+# Whether to remove superfluous semicolons
+mod_remove_extra_semicolon = true # false/true
+
+# If a function body exceeds the specified number of newlines and doesn't have a comment after
+# the close brace, a comment will be added.
+mod_add_long_function_closebrace_comment = 0 # number
+
+# If a namespace body exceeds the specified number of newlines and doesn't have a comment after
+# the close brace, a comment will be added.
+mod_add_long_namespace_closebrace_comment = 0 # number
+
+# If a switch body exceeds the specified number of newlines and doesn't have a comment after
+# the close brace, a comment will be added.
+mod_add_long_switch_closebrace_comment = 0 # number
+
+# If an #ifdef body exceeds the specified number of newlines and doesn't have a comment after
+# the #endif, a comment will be added.
+mod_add_long_ifdef_endif_comment = 0 # number
+
+# If an #ifdef or #else body exceeds the specified number of newlines and doesn't have a comment after
+# the #else, a comment will be added.
+mod_add_long_ifdef_else_comment = 0 # number
+
+# If TRUE, will sort consecutive single-line 'import' statements [Java, D]
+mod_sort_import = false # false/true
+
+# If TRUE, will sort consecutive single-line 'using' statements [C#]
+mod_sort_using = false # false/true
+
+# If TRUE, will sort consecutive single-line '#include' statements [C/C++] and '#import' statements [Obj-C]
+# This is generally a bad idea, as it may break your code.
+mod_sort_include = false # false/true
+
+# If TRUE, it will move a 'break' that appears after a fully braced 'case' before the close brace.
+mod_move_case_break = false # false/true
+
+# Will add or remove the braces around a fully braced case statement.
+# Will only remove the braces if there are no variable declarations in the block.
+mod_case_brace = ignore # ignore/add/remove/force
+
+# If TRUE, it will remove a void 'return;' that appears as the last statement in a function.
+mod_remove_empty_return = false # false/true
+
+#
+# Comment modifications
+#
+
+# Try to wrap comments at cmt_width columns
+cmt_width = 0 # number
+
+# Set the comment reflow mode (default: 0)
+# 0: no reflowing (apart from the line wrapping due to cmt_width)
+# 1: no touching at all
+# 2: full reflow
+cmt_reflow_mode = 0 # number
+
+# Whether to convert all tabs to spaces in comments. Default is to leave tabs inside comments alone, unless used for indenting.
+cmt_convert_tab_to_spaces = false # false/true
+
+# If false, disable all multi-line comment changes, including cmt_width. keyword substitution, and leading chars.
+# Default is true.
+cmt_indent_multi = false # false/true
+
+# Whether to group c-comments that look like they are in a block
+cmt_c_group = false # false/true
+
+# Whether to put an empty '/*' on the first line of the combined c-comment
+cmt_c_nl_start = false # false/true
+
+# Whether to put a newline before the closing '*/' of the combined c-comment
+cmt_c_nl_end = false # false/true
+
+# Whether to group cpp-comments that look like they are in a block
+cmt_cpp_group = false # false/true
+
+# Whether to put an empty '/*' on the first line of the combined cpp-comment
+cmt_cpp_nl_start = false # false/true
+
+# Whether to put a newline before the closing '*/' of the combined cpp-comment
+cmt_cpp_nl_end = false # false/true
+
+# Whether to change cpp-comments into c-comments
+cmt_cpp_to_c = false # false/true
+
+# Whether to put a star on subsequent comment lines
+cmt_star_cont = false # false/true
+
+# The number of spaces to insert at the start of subsequent comment lines
+cmt_sp_before_star_cont = 0 # number
+
+# The number of spaces to insert after the star on subsequent comment lines
+cmt_sp_after_star_cont = 0 # number
+
+# For multi-line comments with a '*' lead, remove leading spaces if the first and last lines of
+# the comment are the same length. Default=True
+cmt_multi_check_last = true # false/true
+
+# The filename that contains text to insert at the head of a file if the file doesn't start with a C/C++ comment.
+# Will substitute $(filename) with the current file's name.
+cmt_insert_file_header = "" # string
+
+# The filename that contains text to insert at the end of a file if the file doesn't end with a C/C++ comment.
+# Will substitute $(filename) with the current file's name.
+cmt_insert_file_footer = "" # string
+
+# The filename that contains text to insert before a function implementation if the function isn't preceded with a C/C++ comment.
+# Will substitute $(function) with the function name and $(javaparam) with the javadoc @param and @return stuff.
+# Will also substitute $(fclass) with the class name: void CFoo::Bar() { ... }
+cmt_insert_func_header = "" # string
+
+# The filename that contains text to insert before a class if the class isn't preceded with a C/C++ comment.
+# Will substitute $(class) with the class name.
+cmt_insert_class_header = "" # string
+
+# The filename that contains text to insert before a Obj-C message specification if the method isn't preceded with a C/C++ comment.
+# Will substitute $(message) with the function name and $(javaparam) with the javadoc @param and @return stuff.
+cmt_insert_oc_msg_header = "" # string
+
+# If a preprocessor is encountered when stepping backwards from a function name, then
+# this option decides whether the comment should be inserted.
+# Affects cmt_insert_oc_msg_header, cmt_insert_func_header and cmt_insert_class_header.
+cmt_insert_before_preproc = false # false/true
+
+#
+# Preprocessor options
+#
+
+# Control indent of preprocessors inside #if blocks at brace level 0 (file-level)
+pp_indent = ignore # ignore/add/remove/force
+
+# Whether to indent #if/#else/#endif at the brace level (true) or from column 1 (false)
+pp_indent_at_level = false # false/true
+
+# Specifies the number of columns to indent preprocessors per level at brace level 0 (file-level).
+# If pp_indent_at_level=false, specifies the number of columns to indent preprocessors per level at brace level > 0 (function-level).
+# Default=1.
+pp_indent_count = 1 # number
+
+# Add or remove space after # based on pp_level of #if blocks
+pp_space = ignore # ignore/add/remove/force
+
+# Sets the number of spaces added with pp_space
+pp_space_count = 0 # number
+
+# The indent for #region and #endregion in C# and '#pragma region' in C/C++
+pp_indent_region = 0 # number
+
+# Whether to indent the code between #region and #endregion
+pp_region_indent_code = false # false/true
+
+# If pp_indent_at_level=true, sets the indent for #if, #else, and #endif when not at file-level.
+# 0: indent preprocessors using output_tab_size.
+# >0: column at which all preprocessors will be indented.
+pp_indent_if = 0 # number
+
+# Control whether to indent the code between #if, #else and #endif.
+pp_if_indent_code = false # false/true
+
+# Whether to indent '#define' at the brace level (true) or from column 1 (false)
+pp_define_at_level = false # false/true
+
+# You can force a token to be a type with the 'type' option.
+# Example:
+# type myfoo1 myfoo2
+#
+# You can create custom macro-based indentation using macro-open,
+# macro-else and macro-close.
+# Example:
+# macro-open BEGIN_TEMPLATE_MESSAGE_MAP
+# macro-open BEGIN_MESSAGE_MAP
+# macro-close END_MESSAGE_MAP
+#
+# You can assign any keyword to any type with the set option.
+# set func_call_user _ N_
+#
+# The full syntax description of all custom definition config entries
+# is shown below:
+#
+# define custom tokens as:
+# - embed whitespace in token using '' escape character, or
+# put token in quotes
+# - these: ' " and ` are recognized as quote delimiters
+#
+# type token1 token2 token3 ...
+# ^ optionally specify multiple tokens on a single line
+# define def_token output_token
+# ^ output_token is optional, then NULL is assumed
+# macro-open token
+# macro-close token
+# macro-else token
+# set id token1 token2 ...
+# ^ optionally specify multiple tokens on a single line
+# ^ id is one of the names in token_enum.h sans the CT_ prefix,
+# e.g. PP_PRAGMA
+#
+# all tokens are separated by any mix of ',' commas, '=' equal signs
+# and whitespace (space, tab)
+#
+# You can add support for other file extensions using the 'file_ext' command.
+# The first arg is the language name used with the '-l' option.
+# The remaining args are file extensions, matched with 'endswith'.
+# file_ext CPP .ch .cxx .cpp.in
+#
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-gsl.git
More information about the Pkg-ruby-extras-commits
mailing list