vala r1778 - in trunk: . vapi
- From: juergbi svn gnome org
- To: svn-commits-list gnome org
- Subject: vala r1778 - in trunk: . vapi
- Date: Thu, 25 Sep 2008 09:16:32 +0000 (UTC)
Author: juergbi
Date: Thu Sep 25 09:16:32 2008
New Revision: 1778
URL: http://svn.gnome.org/viewvc/vala?rev=1778&view=rev
Log:
2008-09-25 JÃrg Billeter <j bitron ch>
* vapi/Makefile.am:
* vapi/gsl.vapi:
Add GSL bindings, patch by MatÃas De la Puente
Added:
trunk/vapi/gsl.vapi
Modified:
trunk/ChangeLog
trunk/vapi/Makefile.am
Modified: trunk/vapi/Makefile.am
==============================================================================
--- trunk/vapi/Makefile.am (original)
+++ trunk/vapi/Makefile.am Thu Sep 25 09:16:32 2008
@@ -33,6 +33,7 @@
gnome-vfs-2.0.vapi \
goocanvas.deps \
goocanvas.vapi \
+ gsl.vapi \
gstreamer-0.10.deps \
gstreamer-0.10.vapi \
gstreamer-audio-0.10.deps \
Added: trunk/vapi/gsl.vapi
==============================================================================
--- (empty file)
+++ trunk/vapi/gsl.vapi Thu Sep 25 09:16:32 2008
@@ -0,0 +1,4594 @@
+/* gsl.vapi
+ *
+ * Copyright (C) 2008 Matias De la Puente
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+
+ * This library 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
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Author:
+ * Matias De la Puente <mfpuente ar gmail com>
+ */
+
+namespace Gsl
+{
+ /*
+ * Physical Constants
+ */
+ [CCode (cprefix="GSL_CONST_NUM_", cheader_filename="gsl/gsl_const_num.h")]
+ public enum ConstNum
+ {
+ FINE_STRUCTURE,
+ AVOGADRO,
+ YOTTA,
+ ZETTA,
+ EXA,
+ PETA,
+ TERA,
+ GIGA,
+ MEGA,
+ KILO,
+ MILLI,
+ MICRO,
+ NANO,
+ PICO,
+ FEMTO,
+ ATTO,
+ ZEPTO,
+ YOCTO
+ }
+
+ [CCode (cprefix="GSL_CONST_CGS_", cheader_filename="gsl/gsl_const_cgs.h")]
+ public enum ConstCGS
+ {
+ SPEED_OF_LIGHT,
+ GRAVITATIONAL_CONSTANT,
+ PLANCKS_CONSTANT_H,
+ PLANCKS_CONSTANT_HBAR,
+ ASTRONOMICAL_UNIT,
+ LIGHT_YEAR,
+ PARSEC,
+ GRAV_ACCEL,
+ ELECTRON_VOLT,
+ MASS_ELECTRON,
+ MASS_MUON,
+ MASS_PROTON,
+ MASS_NEUTRON,
+ RYDBERG,
+ BOLTZMANN,
+ BOHR_MAGNETON,
+ NUCLEAR_MAGNETON,
+ ELECTRON_MAGNETIC_MOMENT,
+ PROTON_MAGNETIC_MOMENT,
+ MOLAR_GAS,
+ STANDARD_GAS_VOLUME,
+ MINUTE,
+ HOUR,
+ DAY,
+ WEEK,
+ INCH,
+ FOOT,
+ YARD,
+ MILE,
+ NAUTICAL_MILE,
+ FATHOM,
+ MIL,
+ POINT,
+ TEXPOINT,
+ MICRON,
+ ANGSTROM,
+ HECTARE,
+ ACRE,
+ BARN,
+ LITER,
+ US_GALLON,
+ QUART,
+ PINT,
+ CUP,
+ FLUID_OUNCE,
+ TABLESPOON,
+ TEASPOON,
+ CANADIAN_GALLON,
+ UK_GALLON,
+ MILES_PER_HOUR,
+ KILOMETERS_PER_HOUR,
+ KNOT,
+ POUND_MASS,
+ OUNCE_MASS,
+ TON,
+ METRIC_TON,
+ UK_TON,
+ TROY_OUNCE,
+ CARAT,
+ UNIFIED_ATOMIC_MASS,
+ GRAM_FORCE,
+ POUND_FORCE,
+ KILOPOUND_FORCE,
+ POUNDAL,
+ CALORIE,
+ BTU,
+ THERM,
+ HORSEPOWER,
+ BAR,
+ STD_ATMOSPHERE,
+ TORR,
+ METER_OF_MERCURY,
+ INCH_OF_MERCURY,
+ INCH_OF_WATER,
+ PSI,
+ POISE,
+ STOKES,
+ FARADAY,
+ ELECTRON_CHARGE,
+ GAUSS,
+ STILB,
+ LUMEN,
+ LUX,
+ PHOT,
+ FOOTCANDLE,
+ LAMBERT,
+ FOOTLAMBERT,
+ CURIE,
+ ROENTGEN,
+ RAD,
+ SOLAR_MASS,
+ BOHR_RADIUS,
+ NEWTON,
+ DYNE,
+ JOULE,
+ ERG,
+ STEFAN_BOLTZMANN_CONSTANT,
+ THOMSON_CROSS_SECTION
+ }
+
+ [CCode (cprefix="GSL_CONST_CGSM_", cheader_filename="gsl/gsl_const_cgsm.h")]
+ public enum ConstCGSM
+ {
+ SPEED_OF_LIGHT,
+ GRAVITATIONAL_CONSTANT,
+ PLANCKS_CONSTANT_H,
+ PLANCKS_CONSTANT_HBAR,
+ ASTRONOMICAL_UNIT,
+ LIGHT_YEAR,
+ PARSEC,
+ GRAV_ACCEL,
+ ELECTRON_VOLT,
+ MASS_ELECTRON,
+ MASS_MUON,
+ MASS_PROTON,
+ MASS_NEUTRON,
+ RYDBERG,
+ BOLTZMANN,
+ BOHR_MAGNETON,
+ NUCLEAR_MAGNETON,
+ ELECTRON_MAGNETIC_MOMENT,
+ PROTON_MAGNETIC_MOMENT,
+ MOLAR_GAS,
+ STANDARD_GAS_VOLUME,
+ MINUTE,
+ HOUR,
+ DAY,
+ WEEK,
+ INCH,
+ FOOT,
+ YARD,
+ MILE,
+ NAUTICAL_MILE,
+ FATHOM,
+ MIL,
+ POINT,
+ TEXPOINT,
+ MICRON,
+ ANGSTROM,
+ HECTARE,
+ ACRE,
+ BARN,
+ LITER,
+ US_GALLON,
+ QUART,
+ PINT,
+ CUP,
+ FLUID_OUNCE,
+ TABLESPOON,
+ TEASPOON,
+ CANADIAN_GALLON,
+ UK_GALLON,
+ MILES_PER_HOUR,
+ KILOMETERS_PER_HOUR,
+ KNOT,
+ POUND_MASS,
+ OUNCE_MASS,
+ TON,
+ METRIC_TON,
+ UK_TON,
+ TROY_OUNCE,
+ CARAT,
+ UNIFIED_ATOMIC_MASS,
+ GRAM_FORCE,
+ POUND_FORCE,
+ KILOPOUND_FORCE,
+ POUNDAL,
+ CALORIE,
+ BTU,
+ THERM,
+ HORSEPOWER,
+ BAR,
+ STD_ATMOSPHERE,
+ TORR,
+ METER_OF_MERCURY,
+ INCH_OF_MERCURY,
+ INCH_OF_WATER,
+ PSI,
+ POISE,
+ STOKES,
+ FARADAY,
+ ELECTRON_CHARGE,
+ GAUSS,
+ STILB,
+ LUMEN,
+ LUX,
+ PHOT,
+ FOOTCANDLE,
+ LAMBERT,
+ FOOTLAMBERT,
+ CURIE,
+ ROENTGEN,
+ RAD,
+ SOLAR_MASS,
+ BOHR_RADIUS,
+ NEWTON,
+ DYNE,
+ JOULE,
+ ERG,
+ STEFAN_BOLTZMANN_CONSTANT,
+ THOMSON_CROSS_SECTION
+ }
+
+ [CCode (cprefix="GSL_CONST_MKS_", cheader_filename="gsl/gsl_const_mks.h")]
+ public enum ConstMKS
+ {
+ SPEED_OF_LIGHT,
+ GRAVITATIONAL_CONSTANT,
+ PLANCKS_CONSTANT_H,
+ PLANCKS_CONSTANT_HBAR,
+ ASTRONOMICAL_UNIT,
+ LIGHT_YEAR,
+ PARSEC,
+ GRAV_ACCEL,
+ ELECTRON_VOLT,
+ MASS_ELECTRON,
+ MASS_MUON,
+ MASS_PROTON,
+ MASS_NEUTRON,
+ RYDBERG,
+ BOLTZMANN,
+ BOHR_MAGNETON,
+ NUCLEAR_MAGNETON,
+ ELECTRON_MAGNETIC_MOMENT,
+ PROTON_MAGNETIC_MOMENT,
+ MOLAR_GAS,
+ STANDARD_GAS_VOLUME,
+ MINUTE,
+ HOUR,
+ DAY,
+ WEEK,
+ INCH,
+ FOOT,
+ YARD,
+ MILE,
+ NAUTICAL_MILE,
+ FATHOM,
+ MIL,
+ POINT,
+ TEXPOINT,
+ MICRON,
+ ANGSTROM,
+ HECTARE,
+ ACRE,
+ BARN,
+ LITER,
+ US_GALLON,
+ QUART,
+ PINT,
+ CUP,
+ FLUID_OUNCE,
+ TABLESPOON,
+ TEASPOON,
+ CANADIAN_GALLON,
+ UK_GALLON,
+ MILES_PER_HOUR,
+ KILOMETERS_PER_HOUR,
+ KNOT,
+ POUND_MASS,
+ OUNCE_MASS,
+ TON,
+ METRIC_TON,
+ UK_TON,
+ TROY_OUNCE,
+ CARAT,
+ UNIFIED_ATOMIC_MASS,
+ GRAM_FORCE,
+ POUND_FORCE,
+ KILOPOUND_FORCE,
+ POUNDAL,
+ CALORIE,
+ BTU,
+ THERM,
+ HORSEPOWER,
+ BAR,
+ STD_ATMOSPHERE,
+ TORR,
+ METER_OF_MERCURY,
+ INCH_OF_MERCURY,
+ INCH_OF_WATER,
+ PSI,
+ POISE,
+ STOKES,
+ FARADAY,
+ ELECTRON_CHARGE,
+ GAUSS,
+ STILB,
+ LUMEN,
+ LUX,
+ PHOT,
+ FOOTCANDLE,
+ LAMBERT,
+ FOOTLAMBERT,
+ CURIE,
+ ROENTGEN,
+ RAD,
+ SOLAR_MASS,
+ BOHR_RADIUS,
+ NEWTON,
+ DYNE,
+ JOULE,
+ ERG,
+ STEFAN_BOLTZMANN_CONSTANT,
+ THOMSON_CROSS_SECTION,
+ VACUUM_PERMITTIVITY,
+ VACUUM_PERMEABILITY,
+ DEBYE
+ }
+
+ [CCode (cprefix="GSL_CONST_MKSA_", cheader_filename="gsl/gsl_const_mksa.h")]
+ public enum ConstMKSA
+ {
+ SPEED_OF_LIGHT,
+ GRAVITATIONAL_CONSTANT,
+ PLANCKS_CONSTANT_H,
+ PLANCKS_CONSTANT_HBAR,
+ ASTRONOMICAL_UNIT,
+ LIGHT_YEAR,
+ PARSEC,
+ GRAV_ACCEL,
+ ELECTRON_VOLT,
+ MASS_ELECTRON,
+ MASS_MUON,
+ MASS_PROTON,
+ MASS_NEUTRON,
+ RYDBERG,
+ BOLTZMANN,
+ BOHR_MAGNETON,
+ NUCLEAR_MAGNETON,
+ ELECTRON_MAGNETIC_MOMENT,
+ PROTON_MAGNETIC_MOMENT,
+ MOLAR_GAS,
+ STANDARD_GAS_VOLUME,
+ MINUTE,
+ HOUR,
+ DAY,
+ WEEK,
+ INCH,
+ FOOT,
+ YARD,
+ MILE,
+ NAUTICAL_MILE,
+ FATHOM,
+ MIL,
+ POINT,
+ TEXPOINT,
+ MICRON,
+ ANGSTROM,
+ HECTARE,
+ ACRE,
+ BARN,
+ LITER,
+ US_GALLON,
+ QUART,
+ PINT,
+ CUP,
+ FLUID_OUNCE,
+ TABLESPOON,
+ TEASPOON,
+ CANADIAN_GALLON,
+ UK_GALLON,
+ MILES_PER_HOUR,
+ KILOMETERS_PER_HOUR,
+ KNOT,
+ POUND_MASS,
+ OUNCE_MASS,
+ TON,
+ METRIC_TON,
+ UK_TON,
+ TROY_OUNCE,
+ CARAT,
+ UNIFIED_ATOMIC_MASS,
+ GRAM_FORCE,
+ POUND_FORCE,
+ KILOPOUND_FORCE,
+ POUNDAL,
+ CALORIE,
+ BTU,
+ THERM,
+ HORSEPOWER,
+ BAR,
+ STD_ATMOSPHERE,
+ TORR,
+ METER_OF_MERCURY,
+ INCH_OF_MERCURY,
+ INCH_OF_WATER,
+ PSI,
+ POISE,
+ STOKES,
+ FARADAY,
+ ELECTRON_CHARGE,
+ GAUSS,
+ STILB,
+ LUMEN,
+ LUX,
+ PHOT,
+ FOOTCANDLE,
+ LAMBERT,
+ FOOTLAMBERT,
+ CURIE,
+ ROENTGEN,
+ RAD,
+ SOLAR_MASS,
+ BOHR_RADIUS,
+ NEWTON,
+ DYNE,
+ JOULE,
+ ERG,
+ STEFAN_BOLTZMANN_CONSTANT,
+ THOMSON_CROSS_SECTION,
+ VACUUM_PERMITTIVITY,
+ VACUUM_PERMEABILITY,
+ DEBYE
+ }
+
+
+ /*
+ * Error Handling
+ */
+ [CCode (cprefix="GSL_", cheader_filename="gsl/gsl_errno.h")]
+ public enum Status
+ {
+ SUCCESS,
+ FAILURE,
+ CONTINUE,
+ EDOM,
+ ERANGE,
+ EFAULT,
+ EINVAL,
+ EFAILED,
+ EFACTOR,
+ ESANITY,
+ ENOMEM,
+ EBADFUNC,
+ ERUNAWAY,
+ EMAXITER,
+ EZERODIV,
+ EBADTOL,
+ ETOL,
+ EUNDRFLW,
+ EOVRFLW,
+ ELOSS,
+ EROUND,
+ EBADLEN,
+ ENOTSQR,
+ ESING,
+ EDIVERGE,
+ EUNSUP,
+ EUNIMPL,
+ ECACHE,
+ ETABLE,
+ ENOPROG,
+ ENOPROGJ,
+ ETOLF,
+ ETOLX,
+ ETOLG,
+ EOF
+ }
+
+ [CCode (cprefix="GSL_PREC_", cheader_filename="gsl/gsl_mode.h")]
+ public enum Mode
+ {
+ DOUBLE,
+ SINGLE,
+ APPROX
+ }
+
+ public static delegate void ErrorHandler (string reason, string file, int line, int errno);
+ public static delegate void StreamHandler (string label, string file, int line, string reason);
+
+ [CCode (lower_case_cprefix="gsl_", cheader_filename="gsl/gsl_errno.h")]
+ namespace Error
+ {
+ public static void error (string reason, string file, int line, int errno);
+ public static weak string strerror (int errno);
+ public static ErrorHandler set_error_handler (ErrorHandler new_handler);
+ public static ErrorHandler set_error_handler_off ();
+ }
+
+ [CCode (lower_case_cprefix="gsl_", cheader_filename="gsl/gsl_errno.h")]
+ namespace Stream
+ {
+ [CCode (cname="gsl_stream_printf")]
+ public static void printf (string label, string file, int line, string reason);
+ public static StreamHandler set_stream_handler (StreamHandler new_handler);
+ public static GLib.FileStream set_stream (GLib.FileStream new_stream);
+ }
+
+
+ /*
+ * Mathematical Functions
+ */
+ [CCode (cprefix="", cheader_filename="gsl/gsl_math.h")]
+ public enum MathConst
+ {
+ M_E,
+ M_LOG2E,
+ M_LOG10E,
+ M_SQRT2,
+ M_SQRT1_2,
+ M_SQRT3,
+ M_PI,
+ M_PI_2,
+ M_PI_4,
+ M_2_SQRTPI,
+ M_1_PI,
+ M_2_PI,
+ M_LN10,
+ M_LN2,
+ M_LNPI,
+ M_EULER
+ }
+
+ /* The isnan, isinf and finite are define in the double type. The elementary functions are in GLib.Math */
+
+ static delegate double _Function (double x, void* params);
+ static delegate void _FunctionFdf (double x, void* params, out double f, out double df);
+
+ [SimpleType]
+ [CCode (cname="gsl_function", cheader_filename="gsl/gsl_math.h")]
+ public struct Function
+ {
+ public _Function function;
+ public void* params;
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_function_fdf", cheader_filename="gsl/gsl_math.h")]
+ public struct FunctionFdf
+ {
+ public _Function f;
+ public _Function df;
+ public _FunctionFdf fdf;
+ public void* params;
+ }
+
+
+ /*
+ * Complex Numbers
+ */
+ [SimpleType]
+ [CCode (cname="gsl_complex", cheader_filename="gsl/gsl_complex.h,gsl/gsl_complex_math.h")]
+ public struct Complex
+ {
+ [CCode (cname="dat[0]")]
+ public double real;
+ [CCode (cname="dat[1]")]
+ public double imag;
+ public static Complex rect (double x, double y);
+ public static Complex polar (double r, double theta);
+
+ public static double arg (Complex z);
+ public static double abs (Complex z);
+ public static double abs2 (Complex z);
+ public static double logabs (Complex z);
+
+ public static Complex add (Complex a, Complex b);
+ public static Complex sub (Complex a, Complex b);
+ public static Complex mul (Complex a, Complex b);
+ public static Complex div (Complex a, Complex b);
+ public static Complex add_real (Complex a, double x);
+ public static Complex sub_real (Complex a, double x);
+ public static Complex mul_real (Complex a, double x);
+ public static Complex div_real (Complex a, double x);
+ public static Complex add_imag (Complex a, double y);
+ public static Complex sub_imag (Complex a, double y);
+ public static Complex mul_imag (Complex a, double y);
+ public static Complex div_imag (Complex a, double y);
+ public static Complex conjugate (Complex z);
+ public static Complex inverse (Complex z);
+ public static Complex negative (Complex z);
+
+ public static Complex sqrt (Complex z);
+ public static Complex sqrt_real (double x);
+ public static Complex pow (Complex z, Complex a);
+ public static Complex pow_real (Complex z, double x);
+ public static Complex exp (Complex z);
+ public static Complex log (Complex z);
+ public static Complex log10 (Complex z);
+ public static Complex log_b (Complex z, Complex b);
+
+ public static Complex sin (Complex z);
+ public static Complex cos (Complex z);
+ public static Complex tan (Complex z);
+ public static Complex sec (Complex z);
+ public static Complex csc (Complex z);
+ public static Complex cot (Complex z);
+
+ public static Complex arcsin (Complex z);
+ public static Complex arcsin_real (double z);
+ public static Complex arccos (Complex z);
+ public static Complex arccos_real (double z);
+ public static Complex arctan (Complex z);
+ public static Complex arcsec (Complex z);
+ public static Complex arcsec_real (double z);
+ public static Complex arccsc (Complex z);
+ public static Complex arccsc_real (double z);
+ public static Complex arccot (Complex z);
+
+ public static Complex sinh (Complex z);
+ public static Complex cosh (Complex z);
+ public static Complex tanh (Complex z);
+ public static Complex sech (Complex z);
+ public static Complex csch (Complex z);
+ public static Complex coth (Complex z);
+
+ public static Complex arcsinh (Complex z);
+ public static Complex arccosh (Complex z);
+ public static Complex arccosh_real (double z);
+ public static Complex arctanh (Complex z);
+ public static Complex arctanh_real (double z);
+ public static Complex arcsech (Complex z);
+ public static Complex arccsch (Complex z);
+ public static Complex arccoth (Complex z);
+ }
+
+
+ /*
+ * Polynomials
+ */
+ [CCode (lower_case_cprefix="gsl_poly_", cheader_filename="gsl/gsl_poly.h")]
+ namespace Poly
+ {
+ public static double eval (double[] c, double x);
+ public static Complex complex_eval (double[] c, Complex z);
+ [CCode (cname="gsl_complex_poly_complex_eval")]
+ public static Complex poly_complex_eval (Complex[] c, Complex z);
+
+ [NoArrayLength]
+ public static int dd_init (double[] dd, double[] xa, double[] ya, size_t size);
+ [NoArrayLength]
+ public static double dd_eval (double[] dd, double[] xa, size_t size, double x);
+ [NoArrayLength]
+ public static int dd_taylor (double[] c, double xp, double[] dd, double[] xa, size_t size, double[] w);
+
+ public static int solve_quadratic (double a, double b, double c, out double x0, out double x1);
+ public static int complex_solve_quadratic (double a, double b, double c, out Complex z0, out Complex z1);
+
+ public static int solve_cubic (double a, double b, double c, out double x0, out double x1, out double x2);
+ public static int complex_solve_cubic (double a, double b, double c, out Complex z0, out Complex z1, out Complex z2);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_poly_complex_workspace", cheader_filename="gsl/gsl_poly.h")]
+ public class PolyComplexWorkspace
+ {
+ public size_t nc;
+ public double* matrix;
+
+ [CCode (cname="gsl_poly_complex_workspace_alloc")]
+ public PolyComplexWorkspace (size_t n);
+ [CCode (cname="gsl_poly_complex_solve")]
+ public static int solve (double[]a, PolyComplexWorkspace w, out double z);
+ }
+
+
+ /*
+ * Special Functions
+ */
+ [SimpleType]
+ [CCode (cname="gsl_sf_result", cheader_filename="gsl/gsl_sf_result.h")]
+ public struct Result
+ {
+ public double val;
+ public double err;
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_sf_result_e10", cheader_filename="gsl/gsl_sf_result.h")]
+ public struct ResultE10
+ {
+ public double val;
+ public double err;
+ public int e10;
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_airy_", cheader_filename="gsl/gsl_sf_airy.h")]
+ namespace Airy
+ {
+ public static double Ai (double x, Mode mode);
+ public static int Ai_e (double x, Mode mode, out Result result);
+ public static double Bi (double x, Mode mode);
+ public static int Bi_e (double x, Mode mode, out Result result);
+ public static double Ai_scaled (double x, Mode mode);
+ public static int Ai_scaled_e (double x, Mode mode, out Result result);
+ public static double Bi_scaled (double x, Mode mode);
+ public static int Bi_scaled_e (double x, Mode mode, out Result result);
+
+ public static double Ai_deriv (double x, Mode mode);
+ public static int Ai_deriv_e (double x, Mode mode, out Result result);
+ public static double Bi_deriv (double x, Mode mode);
+ public static int Bi_deriv_e (double x, Mode mode, out Result result);
+ public static double Ai_deriv_scaled (double x, Mode mode);
+ public static int Ai_deriv_scaled_e (double x, Mode mode, out Result result);
+ public static double Bi_deriv_scaled (double x, Mode mode);
+ public static int Bi_deriv_scaled_e (double x, Mode mode, out Result result);
+
+ public static double zero_Ai (uint s);
+ public static int zero_Ai_e (uint s, out Result result);
+ public static double zero_Bi (uint s);
+ public static int zero_Bi_e (uint s, out Result result);
+
+ public static double zero_Ai_deriv (uint s);
+ public static int zero_Ai_deriv_e (uint s, out Result result);
+ public static double zero_Bi_deriv (uint s);
+ public static int zero_Bi_deriv_e (uint s, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_bessel_", cheader_filename="gsl/gsl_sf_bessel.h")]
+ namespace Bessel
+ {
+ public static double J0 (double x);
+ public static int J0_e (double x, out Result result);
+ public static double J1 (double x);
+ public static int J1_e (double x, out Result result);
+ public static double Jn (int n, double x);
+ public static int Jn_e (int n, double x, out Result result);
+ [NoArrayLength]
+ public static int Jn_array (int nmin, int nmax, double x, double[] result_array);
+
+ public static double Y0 (double x);
+ public static int Y0_e (double x, out Result result);
+ public static double Y1 (double x);
+ public static int Y1_e (double x, out Result result);
+ public static double Yn (int n, double x);
+ public static int Yn_e (int n, double x, out Result result);
+ [NoArrayLength]
+ public static int Yn_array (int nmin, int nmax, double x, double[] result_array);
+
+ public static double I0 (double x);
+ public static int I0_e (double x, out Result result);
+ public static double I1 (double x);
+ public static int I1_e (double x, out Result result);
+ public static double In (int n, double x);
+ public static int In_e (int n, double x, out Result result);
+ [NoArrayLength]
+ public static int In_array (int nmin, int nmax, double x, double[] result_array);
+ public static double I0_scaled (double x);
+ public static int I0_scaled_e (double x, out Result result);
+ public static double I1_scaled (double x);
+ public static int I1_scaled_e (double x, out Result result);
+ public static double In_scaled (int n, double x);
+ public static int In_scaled_e (int n, double x, out Result result);
+ [NoArrayLength]
+ public static int In_scaled_array (int nmin, int nmax, double x, double[] result_array);
+
+ public static double K0 (double x);
+ public static int K0_e (double x, out Result result);
+ public static double K1 (double x);
+ public static int K1_e (double x, out Result result);
+ public static double Kn (int n, double x);
+ public static int Kn_e (int n, double x, out Result result);
+ [NoArrayLength]
+ public static int Kn_array (int nmin, int nmax, double x, double[] result_array);
+ public static double K0_scaled (double x);
+ public static int K0_scaled_e (double x, out Result result);
+ public static double K1_scaled (double x);
+ public static int K1_scaled_e (double x, out Result result);
+ public static double Kn_scaled (int n, double x);
+ public static int Kn_scaled_e (int n, double x, out Result result);
+ [NoArrayLength]
+ public static int Kn_scaled_array (int nmin, int nmax, double x, double[] result_array);
+
+ public static double j0 (double x);
+ public static int j0_e (double x, out Result result);
+ public static double j1 (double x);
+ public static int j1_e (double x, out Result result);
+ public static double j2 (double x);
+ public static int j2_e (double x, out Result result);
+ public static double jl (int l, double x);
+ public static int jl_e (int l, double x, out Result result);
+ [NoArrayLength]
+ public static int jl_array (int lmax, double x, double[] result_array);
+ [NoArrayLength]
+ public static int jl_steed_array (int lmax, double x, double[] jl_x_array);
+
+ public static double y0 (double x);
+ public static int y0_e (double x, out Result result);
+ public static double y1 (double x);
+ public static int y1_e (double x, out Result result);
+ public static double y2 (double x);
+ public static int y2_e (double x, out Result result);
+ public static double yl (int l, double x);
+ public static int yl_e (int l, double x, out Result result);
+ [NoArrayLength]
+ public static int yl_array (int lmax, double x, double[] result_array);
+
+ public static double i0_scaled (double x);
+ public static int i0_scaled_e (double x, out Result result);
+ public static double i1_scaled (double x);
+ public static int i1_scaled_e (double x, out Result result);
+ public static double i2_scaled (double x);
+ public static int i2_scaled_e (double x, out Result result);
+ public static double il_scaled (int l, double x);
+ public static int il_scaled_e (int l, double x, out Result result);
+ [NoArrayLength]
+ public static int il_scaled_array (int lmax, double x, double[] result_array);
+
+ public static double k0_scaled (double x);
+ public static int k0_scaled_e (double x, out Result result);
+ public static double k1_scaled (double x);
+ public static int k1_scaled_e (double x, out Result result);
+ public static double k2_scaled (double x);
+ public static int k2_scaled_e (double x, out Result result);
+ public static double kl_scaled (int l, double x);
+ public static int kl_scaled_e (int l, double x, out Result result);
+ [NoArrayLength]
+ public static int kl_scaled_array (int lmax, double x, double[] result_array);
+
+ public static double Jnu (double nu, double x);
+ public static int Jnu_e (double nu, double x, out Result result);
+ [NoArrayLength]
+ public static int sequence_Jnu_e (double nu, Mode mode, size_t size, double[] v);
+
+ public static double Ynu (double nu, double x);
+ public static int Ynu_e (double nu, double x, out Result result);
+
+ public static double Inu (double nu, double x);
+ public static int Inu_e (double nu, double x, out Result result);
+ public static double Inu_scaled (double nu, double x);
+ public static int Inu_scaled_e (double nu, double x, out Result result);
+
+ public static double Knu (double nu, double x);
+ public static int Knu_e (double nu, double x, out Result result);
+ public static double lnKnu (double nu, double x);
+ public static int lnKnu_e (double nu, double x, out Result result);
+ public static double Knu_scaled (double nu, double x);
+ public static int Knu_scaled_e (double nu, double x, out Result result);
+
+ public static double zero_J0 (uint s);
+ public static int zero_J0_e (uint s, out Result result);
+ public static double zero_J1 (uint s);
+ public static int zero_J1_e (uint s, out Result result);
+ public static double zero_Jnu (double nu, uint s);
+ public static int zero_Jnu_e (double nu, uint s, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_clausen.h")]
+ namespace Clausen
+ {
+ public static double clausen (double x);
+ public static int clausen_e (double x, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_coulomb.h")]
+ namespace Hydrogenic
+ {
+ public static double hydrogenicR_1 (double z, double r);
+ public static int hydrogenicR_1_e (double z, double r, out Result result);
+ public static double hydrogenicR (int n, int l, double z, double r);
+ public static int hydrogenicR_e (int n, int l, double z, double r, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_coulomb_wave_", cheader_filename="gsl/gsl_sf_coulomb.h")]
+ namespace CoulombWave
+ {
+ public static int FG_e (double eta, double x, double l_f, int k, out Result f, out Result fp, out Result g, out Result gp, out double exp_f, out double exp_g);
+ [NoArrayLength]
+ public static int F_array (double l_min, int kmax, double eta, double x, double[] fc_array, out double f_exponent);
+ [NoArrayLength]
+ public static int FG_array (double l_min, int kmax, double eta, double x, double[] fc_array, double[] gc_array, out double f_exponent, out double g_exponent);
+ [NoArrayLength]
+ public static int FGp_array (double l_min, int kmax, double eta, double x, double[] fc_array, double[] fcp_array, double[] gc_array, double[] gcp_array, out double f_exponent, out double g_exponent);
+ [NoArrayLength]
+ public static int sphF_array (double l_min, int kmax, double eta, double x, double[] fc_array, double[] f_exponent);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_coulomb_", cheader_filename="gsl/gsl_sf_coulomb.h")]
+ namespace Coulomb
+ {
+ public static int CL_e (double l, double eta, out Result result);
+ [NoArrayLength]
+ public static int CL_array (double lmin, int kmax, double eta, double[] cl);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_coupling_", cheader_filename="gsl/gsl_coupling.h")]
+ namespace Coupling
+ {
+ public static double 3j (int two_ja, int two_jb, int two_jc, int two_ma, int two_mb, int two_mc);
+ public static int 3j_e (int two_ja, int two_jb, int two_jc, int two_ma, int two_mb, int two_mc, out Result result);
+
+ public static double 6j (int two_ja, int two_jb, int two_jc, int two_jd, int two_je, int two_jf);
+ public static int 6j_e (int two_ja, int two_jb, int two_jc, int two_jd, int two_je, int two_jf, out Result result);
+
+ public static double 9j (int two_ja, int two_jb, int two_jc, int two_jd, int two_je, int two_jf, int two_jg, int two_jh, int two_ji);
+ public static int 9j_e (int two_ja, int two_jb, int two_jc, int two_jd, int two_je, int two_jf, int two_jg, int two_jh, int two_ji, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_dawson.h")]
+ namespace Dawson
+ {
+ public static double dawson (double x);
+ public static int dawson_e (double x, out Result result);
+ }
+
+ [CCode (cheader_filename="gsl/gsl_sf_debye.h")]
+ namespace Debye
+ {
+ [CCode (cname="gsl_sf_debye_1")]
+ public static double D1 (double x);
+ [CCode (cname="gsl_sf_debye_1_e")]
+ public static int D1_e (double x, out Result result);
+ [CCode (cname="gsl_sf_debye_2")]
+ public static double D2 (double x);
+ [CCode (cname="gsl_sf_debye_2_e")]
+ public static int D2_e (double x, out Result result);
+ [CCode (cname="gsl_sf_debye_3")]
+ public static double D3 (double x);
+ [CCode (cname="gsl_sf_debye_3_e")]
+ public static int D3_e (double x, out Result result);
+ [CCode (cname="gsl_sf_debye_4")]
+ public static double D4 (double x);
+ [CCode (cname="gsl_sf_debye_4_e")]
+ public static int D4_e (double x, out Result result);
+ [CCode (cname="gsl_sf_debye_5")]
+ public static double D5 (double x);
+ [CCode (cname="gsl_sf_debye_5_e")]
+ public static int D5_e (double x, out Result result);
+ [CCode (cname="gsl_sf_debye_6")]
+ public static double D6 (double x);
+ [CCode (cname="gsl_sf_debye_6_e")]
+ public static int D6_e (double x, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_dilog.h")]
+ namespace Dilog
+ {
+ public static double dilog (double x);
+ public static int dilog_e (double x, out Result result);
+ public static int complex_dilog_e (double r, double theta, out Result result_re, out Result result_im);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_multiply_", cheader_filename="gsl/gsl_sf_elementary.h")]
+ namespace Multiply
+ {
+ public static int e (double x, double y, out Result result);
+ public static int err_e (double x, double dx, double y, double dy, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_ellint_", cheader_filename="gsl/gsl_sf_ellint.h")]
+ namespace EllInt
+ {
+ public static double Kcomp (double k, Mode mode);
+ public static int Kcomp_e (double k, Mode mode, out Result result);
+ public static double Ecomp (double k, Mode mode);
+ public static int Ecomp_e (double k, Mode mode, out Result result);
+ public static double Pcomp (double k, double n, Mode mode);
+ public static int Pcomp_e (double k, double n, Mode mode, out Result result);
+
+ public static double F (double phi, double k, Mode mode);
+ public static int F_e (double phi, double k, Mode mode, out Result result);
+ public static double E (double phi, double k, Mode mode);
+ public static int E_e (double phi, double k, Mode mode, out Result result);
+ public static double P (double phi, double k, double n, Mode mode);
+ public static int P_e (double phi, double k, double n, Mode mode, out Result result);
+ public static double D (double phi, double k, double n, Mode mode);
+ public static int D_e (double phi, double k, double n, Mode mode, out Result result);
+
+ public static double RC (double x, double y, Mode mode);
+ public static int RC_e (double x, double y, Mode mode, out Result result);
+ public static double RD (double x, double y, double z, Mode mode);
+ public static int RD_e (double x, double y, double z, Mode mode, out Result result);
+ public static double RF (double x, double y, double z, Mode mode);
+ public static int RF_e (double x, double y, double z, Mode mode, out Result result);
+ public static double RJ (double x, double y, double z, double p, Mode mode);
+ public static int RJ_e (double x, double y, double z, double p, Mode mode, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_elljac_", cheader_filename="gsl/gsl_elljac.h")]
+ namespace EllJac
+ {
+ public static int e (double u, double m, out double sn, out double cn, out double dn);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_erf.h")]
+ namespace Erf
+ {
+ public static double erf (double x);
+ public static int erf_e (double x, out Result result);
+ public static double erf_Z (double x);
+ public static int erf_Z_e (double x, out Result result);
+ public static double erf_Q (double x);
+ public static int erf_Q_e (double x, out Result result);
+ public static double erfc (double x);
+ public static int erfc_e (double x, out Result result);
+ public static double log_erfc (double x);
+ public static int log_erfc_e (double x, out Result result);
+ public static double hazard (double x);
+ public static int hazard_e (double x, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_exp.h")]
+ namespace Exp
+ {
+ public static double exp (double x);
+ public static int exp_e (double x, out Result result);
+ public static int exp_e10_e (double x, out ResultE10 result);
+ public static double exp_mult (double x, double y);
+ public static int exp_mult_e (double x, double y, out Result result);
+ public static int exp_mult_e10_e (double x, double y, out ResultE10 result);
+ public static int exp_err_e (double x, double dx, out Result result);
+ public static int exp_err_e10_e (double x, double dx, out ResultE10 result);
+ public static int exp_mul_err_e (double x, double dx, double y, double dy, out Result result);
+ public static int exp_mul_err_e10_e (double x, double dx, double y, double dy, out ResultE10 result);
+ public static double expm1 (double x);
+ public static int expm1_e (double x, out Result result);
+ public static double exprel (double x);
+ public static int exprel_e (double x, out Result result);
+ public static double exprel_2 (double x);
+ public static int exprel_2_e (double x, out Result result);
+ public static double exprel_n (int n, double x);
+ public static int exprel_n_e (int n, double x, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_expint.h")]
+ namespace Expint
+ {
+ public static double expint_E1 (double x);
+ public static int expint_E1_e (double x, out Result result);
+ public static double expint_E2 (double x);
+ public static int expint_E2_e (double x, out Result result);
+ public static double expint_En (int n, double x);
+ public static int expint_En_e (int n, double x, out Result result);
+ public static double expint_Ei (double x);
+ public static int expint_Ei_e (double x, out Result result);
+ public static double expint_Ei_3 (double x);
+ public static int expint_Ei_3_e (double x, out Result result);
+ public static double Shi (double x);
+ public static int Shi_e (double x, out Result result);
+ public static double Chi (double x);
+ public static int Chi_e (double x, out Result result);
+ public static double Si (double x);
+ public static int Si_e (double x, out Result result);
+ public static double Ci (double x);
+ public static int Ci_e (double x, out Result result);
+ public static double atanint (double x);
+ public static double atanint_e (double x, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_fermi_dirac_", cheader_filename="gsl/gsl_sf_fermi_dirach.h")]
+ namespace FermiDirac
+ {
+ public static double m1 (double x);
+ public static int m1_e (double x, out Result result);
+ [CCode (cname="gsl_sf_fermi_dirac_0")]
+ public static double F0 (double x);
+ [CCode (cname="gsl_sf_fermi_dirac_0_e")]
+ public static int F0_e (double x, out Result result);
+ [CCode (cname="gsl_sf_fermi_dirac_1")]
+ public static double F1 (double x);
+ [CCode (cname="gsl_sf_fermi_dirac_1_e")]
+ public static int F1_e (double x, out Result result);
+ [CCode (cname="gsl_sf_fermi_dirac_2")]
+ public static double F2 (double x);
+ [CCode (cname="gsl_sf_fermi_dirac_2_e")]
+ public static int F2_e (double x, out Result result);
+ [CCode (cname="gsl_sf_fermi_dirac_int")]
+ public static double Fint (int j, double x);
+ [CCode (cname="gsl_sf_fermi_dirac_int_e")]
+ public static int Fint_e (int j, double x, out Result result);
+ public static double mhalf (double x);
+ public static int mhalf_e (double x, out Result result);
+ public static double half (double x);
+ public static int half_e (double x, out Result result);
+ public static double 3half (double x);
+ public static int 3half_e (double x, out Result result);
+ public static double inc_0 (double x, double b);
+ public static int inc_0_e (double x, double b, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_gamma.h")]
+ namespace GammaBeta
+ {
+ public static double gamma (double x);
+ public static int gamma_e (double x, out Result result);
+ public static double lngamma (double x);
+ public static int lngamma_e (double x, out Result result);
+ public static int lngamma_sgn_e (double x, out Result result, out double sgn);
+ public static double gammastar (double x);
+ public static int gammastar_e (double x, out Result result);
+ public static double gammainv (double x);
+ public static int gammainv_e (double x, out Result result);
+ public static int lngamma_complex_e (double zr, double zi, out Result lnr, out Result arg);
+
+ public static double fact (uint n);
+ public static int fact_e (uint n, out Result result);
+ public static double doublefact (uint n);
+ public static int doublefact_e (uint n, out Result result);
+ public static double lnfact (uint n);
+ public static int lnfact_e (uint n, out Result result);
+ public static double lndoublefact (uint n);
+ public static int lndoublefact_e (uint n, out Result result);
+ public static double choose (uint n, uint m);
+ public static int choose_e (uint n, uint m, out Result result);
+ public static double lnchoose (uint n, uint m);
+ public static int lnchoose_e (uint n, uint m, out Result result);
+ public static double taylorcoeff (int n, double x);
+ public static int taylorcoeff_e (int n, double x, out Result result);
+
+ public static double poch (double a, double x);
+ public static int poch_e (double a, double x, out Result result);
+ public static double lnpoch (double a, double x);
+ public static int lnpoch_e (double a, double x, out Result result);
+ public static int lnpoch_sgn_e (double a, double x, out Result result, out double sgn);
+ public static double pochrel (double a, double x);
+ public static int pochrel_e (double a, double x, out Result result);
+
+ public static double gamma_inc (double a, double x);
+ public static int gamma_inc_e (double a, double x, out Result result);
+ public static double gamma_inc_Q (double a, double x);
+ public static int gamma_inc_Q_e (double a, double x, out Result result);
+ public static double gamma_inc_P (double a, double x);
+ public static int gamma_inc_P_e (double a, double x, out Result result);
+
+ public static double beta (double a, double b);
+ public static int beta_e (double a, double b, out Result result);
+ public static double lnbeta (double a, double b);
+ public static int lnbeta_e (double a, double b, out Result result);
+
+ public static double beta_inc (double a, double b, double x);
+ public static int beta_inc_e (double a, double b, double x, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_gegenpoly_", cheader_filename="gsl/gsl_sf_gegenbauer.h")]
+ namespace GegenPoly
+ {
+ [CCode (cname="gsl_sf_gegenpoly_1")]
+ public static double C1 (double lambda, double x);
+ [CCode (cname="gsl_sf_gegenpoly_1_e")]
+ public static double C1_e (double lambda, double x, out Result result);
+ [CCode (cname="gsl_sf_gegenpoly_2")]
+ public static double C2 (double lambda, double x);
+ [CCode (cname="gsl_sf_gegenpoly_2_e")]
+ public static double C2_e (double lambda, double x, out Result result);
+ [CCode (cname="gsl_sf_gegenpoly_3")]
+ public static double C3 (double lambda, double x);
+ [CCode (cname="gsl_sf_gegenpoly_3_e")]
+ public static double C3_e (double lambda, double x, out Result result);
+ [CCode (cname="gsl_sf_gegenpoly_n")]
+ public static double Cn (double lambda, double x);
+ [CCode (cname="gsl_sf_gegenpoly_n_e")]
+ public static double Cn_e (double lambda, double x, out Result result);
+ public static int array (int nmax, double lambda, double x, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_hyperg_", cheader_filename="gsl/gsl_sf_hyperg.h")]
+ namespace Hyperg
+ {
+ public static double 0F1 (double c, double x);
+ public static int 0F1_e (double c, double x, out Result result);
+ public static double 1F1_int (int m, int n, double x);
+ public static int 1F1_int_e (int m, int n, double x, out Result result);
+ public static double 1F1 (double a, double b, double x);
+ public static int 1F1_e (double a, double b, double x, out Result result);
+ public static double U_int (int m, int n, double x);
+ public static int U_int_e (int m, int n, double x, out Result result);
+ public static int U_int_e10_e (int m, int n, double x, out ResultE10 result);
+ public static double U (double a, double b, double x);
+ public static int U_e (double a, double b, double x, out Result result);
+ public static int U_e10_e (double a, double b, double x, out ResultE10 result);
+ public static double 2F1 (double a, double b, double c, double x);
+ public static int 2F1_e (double a, double b, double c, double x, out Result result);
+ public static double 2F1_conj (double aR, double aI, double c, double x);
+ public static int 2F1_conj_e (double aR, double aI, double c, double x, out Result result);
+ public static double 2F1_renorm (double a, double b, double c, double x);
+ public static int 2F1_renorm_e (double a, double b, double c, double x, out Result result);
+ public static double 2F1_conj_renorm (double aR, double aI, double c, double x);
+ public static int 2F1_conj_renorm_e (double aR, double aI, double c, double x, out Result result);
+ public static double 2F0 (double a, double b, double x);
+ public static int 2F0_e (double a, double b, double x, out Result result);
+ }
+
+ [CCode (cheader_filename="gsl/gsl_sf_laguerre.h")]
+ namespace Laguerre
+ {
+ [CCode (cname="gsl_sf_laguerre_1")]
+ public static double L1 (double a, double x);
+ [CCode (cname="gsl_sf_laguerre_1_e")]
+ public static double L1_e (double a, double x, out Result result);
+ [CCode (cname="gsl_sf_laguerre_2")]
+ public static double L2 (double a, double x);
+ [CCode (cname="gsl_sf_laguerre_2_e")]
+ public static double L2_e (double a, double x, out Result result);
+ [CCode (cname="gsl_sf_laguerre_3")]
+ public static double L3 (double a, double x);
+ [CCode (cname="gsl_sf_laguerre_3_e")]
+ public static double L3_e (double a, double x, out Result result);
+ [CCode (cname="gsl_sf_laguerre_n")]
+ public static double Ln (int n, double a, double x);
+ [CCode (cname="gsl_sf_laguerre_n_e")]
+ public static double Ln_e (int n, double a, double x, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_lambert_", cheader_filename="gsl/gsl_sf_lambert.h")]
+ namespace Lambert
+ {
+ public static double W0 (double x);
+ public static int W0_e (double x, out Result result);
+ public static double Wm1 (double x);
+ public static int Wm1_e (double x, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_legendre_", cheader_filename="gsl/gsl_sf_legendre.h")]
+ namespace LegendrePoly
+ {
+ public static double P1 (double x);
+ public static int P1_e (double x, out Result result);
+ public static double P2 (double x);
+ public static int P2_e (double x, out Result result);
+ public static double P3 (double x);
+ public static int P3_e (double x, out Result result);
+ public static double Pl (int l, double x);
+ public static int Pl_e (int l, double x, out Result result);
+ [NoArrayLength]
+ public static int Pl_array (int lmax, double x, double[] result_array);
+ [NoArrayLength]
+ public static int Pl_deriv_array (int lmax, double x, double[] result_array, double[] result_deriv_array);
+ public static double Q0 (double x);
+ public static int Q0_e (double x, out Result result);
+ public static double Q1 (double x);
+ public static int Q1_e (double x, out Result result);
+ public static double Ql (int l, double x);
+ public static int Ql_e (int l, double x, out Result result);
+
+ public static double Plm (int l, int m, double x);
+ public static int Plm_e (int l, int m, double x, out Result result);
+ [NoArrayLength]
+ public static int Plm_array (int lmax, int m, double x, double[] result_array);
+ [NoArrayLength]
+ public static int Plm_deriv_array (int lmax, int m, double x, double[] result_array, double[] result_deriv_array);
+ public static double sphPlm (int l, int m, double x);
+ public static int sphPlm_e (int l, int m, double x, out Result result);
+ [NoArrayLength]
+ public static int sphPlm_array (int lmax, int m, double x, double[] result_array);
+ [NoArrayLength]
+ public static int sphPlm_deriv_array (int lmax, int m, double x, double[] result_array, double[] result_deriv_array);
+ public static int array_size (int lmax, int m);
+
+ [CCode (cname="gsl_sf_conicalP_half")]
+ public static double conicalP_half (double lambda, double x);
+ [CCode (cname="gsl_sf_conicalP_half_e")]
+ public static int conicalP_half_e (double lambda, double x, out Result result);
+ [CCode (cname="gsl_sf_conicalP_mhalf")]
+ public static double conicalP_mhalf (double lambda, double x);
+ [CCode (cname="gsl_sf_conicalP_mhalf_e")]
+ public static int conicalP_mhalf_e (double lambda, double x, out Result result);
+ [CCode (cname="gsl_sf_conicalP_0")]
+ public static double conicalP_0 (double lambda, double x);
+ [CCode (cname="gsl_sf_conicalP_0_e")]
+ public static int conicalP_0_e (double lambda, double x, out Result result);
+ [CCode (cname="gsl_sf_conicalP_1")]
+ public static double conicalP_1 (double lambda, double x);
+ [CCode (cname="gsl_sf_conicalP_1_e")]
+ public static int conicalP_1_e (double lambda, double x, out Result result);
+ [CCode (cname="gsl_sf_conicalP_sph_reg")]
+ public static double conicalP_sph_reg (int l, double lambda, double x);
+ [CCode (cname="gsl_sf_conicalP_sph_reg_e")]
+ public static int conicalP_sph_reg_e (int l, double lambda, double x, out Result result);
+ [CCode (cname="gsl_sf_conicalP_cyl_reg")]
+ public static double conicalP_cyl_reg (int m, double lambda, double x);
+ [CCode (cname="gsl_sf_conicalP_cyl_reg_e")]
+ public static int conicalP_cyl_reg_e (int m, double lambda, double x, out Result result);
+
+ public static double H3d_0 (double lambda, double eta);
+ public static int H3d_0_e (double lambda, double eta, out Result result);
+ public static double H3d_1 (double lambda, double eta);
+ public static int H3d_1_e (double lambda, double eta, out Result result);
+ public static double H3d (int l, double lambda, double eta);
+ public static int H3d_e (int l, double lambda, double eta, out Result result);
+ [NoArrayLength]
+ public static int H3d_array (int lmax, double lambda, double eta, double[] result_array);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_log.h")]
+ namespace Log
+ {
+ public static double log (double x);
+ public static int log_e (double x, out Result result);
+ public static double log_abs (double x);
+ public static int log_abs_e (double x, out Result result);
+ public static int complex_log_e (double zr, double zi, out Result result, out Result theta);
+ public static double log_1plusx (double x);
+ public static int log_1plusx_e (double x, out Result result);
+ public static double log_1plusx_mx (double x);
+ public static int log_1plusx_mx_e (double x, out Result result);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_sf_mathieu_workspace", cprefix="gsl_sf_mathieu_", cheader_filename="gsl/gsl_sf_mathieu.h")]
+ public class MathieuWorkspace
+ {
+ public size_t size;
+ public size_t even_order;
+ public size_t odd_order;
+ public int extra_values;
+ public double qa;
+ public double qb;
+ public double* aa;
+ public double* bb;
+ public double* dd;
+ public double* ee;
+ public double* tt;
+ public double* e2;
+ public double* zz;
+ public Vector eval;
+ public Matrix evec;
+ public EigenSymmvWorkspace wmat;
+
+ [NoArrayLength]
+ public static int a_array (int order_min, int order_max, double qq, MathieuWorkspace work, double[] result_array);
+ [NoArrayLength]
+ public static int b_array (int order_min, int order_max, double qq, MathieuWorkspace work, double[] result_array);
+ public static int a (int order, double qq, out Result result);
+ public static int b (int order, double qq, out Result result);
+ [NoArrayLength]
+ public static int a_coeff (int order, double qq, double aa, double[] coeff);
+ [NoArrayLength]
+ public static int b_coeff (int order, double qq, double aa, double[] coeff);
+
+ [CCode (cname="gsl_sf_mathieu_alloc")]
+ public MathieuWorkspace (size_t nn, double qq);
+
+ public static int ce (int order, double qq, double zz, out Result result);
+ public static int se (int order, double qq, double zz, out Result result);
+ [NoArrayLength]
+ public static int ce_array (int nmin, int nmax, double qq, double zz, MathieuWorkspace work, double[] result_array);
+ [NoArrayLength]
+ public static int se_array (int nmin, int nmax, double qq, double zz, MathieuWorkspace work, double[] result_array);
+
+ public static int Mc (int kind, int order, double qq, double zz, out Result result);
+ public static int Ms (int kind, int order, double qq, double zz, out Result result);
+ [NoArrayLength]
+ public static int Mc_array (int kind, int nmin, int nmax, double qq, double zz, MathieuWorkspace work, double[] result_array);
+ [NoArrayLength]
+ public static int Ms_array (int kind, int nmin, int nmax, double qq, double zz, MathieuWorkspace work, double[] result_array);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_pow_int.h")]
+ namespace Pow
+ {
+ public static double pow_int (double x, int n);
+ public static int pow_int_e (double x, int n, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_psi.h")]
+ namespace Psi
+ {
+ public static double psi_int (int n);
+ public static int psi_int_e (int n, out Result result);
+ public static double psi (double x);
+ public static int psi_e (double x, out Result result);
+ public static double psi_1piy (double y);
+ public static int psi_1piy_e (double y, out Result result);
+
+ public static double psi_1_int (int n);
+ public static int psi_1_int_e (int n, out Result result);
+ public static double psi_1 (double x);
+ public static int psi_1_e (double x, out Result result);
+
+ public static double psi_n (int n, double x);
+ public static int psi_e_n (int n, double x, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_synchrotron.h")]
+ namespace Synchrotron
+ {
+ public static double synchrotron_1 (double x);
+ public static int synchrotron_1_e (double x, out Result result);
+ public static double synchrotron_2 (double x);
+ public static double synchrotron_2_e (double x, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_transport.h")]
+ namespace Transport
+ {
+ public static double transport_2 (double x);
+ public static int transport_2_e (double x, out Result result);
+ public static double transport_3 (double x);
+ public static int transport_3_e (double x, out Result result);
+ public static double transport_4 (double x);
+ public static int transport_4_e (double x, out Result result);
+ public static double transport_5 (double x);
+ public static int transport_5_e (double x, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_trig.h")]
+ namespace Trig
+ {
+ public static double sin (double x);
+ public static int sin_e (double x, out Result result);
+ public static double cos (double x);
+ public static int cos_e (double x, out Result result);
+ public static double hypot (double x, double y);
+ public static int hypot_e (double x, double y, out Result result);
+ public static double sinc (double x);
+ public static int sinc_e (double x, out Result result);
+ public static double complex_sin_e (double zr, double zi, out Result szr, out Result szi);
+ public static double complex_cos_e (double zr, double zi, out Result czr, out Result czi);
+ public static double complex_logsin_e (double zr, double zi, out Result lszr, out Result lszi);
+ public static double lnsinh (double x);
+ public static int lnsinh_e (double x, out Result result);
+ public static double lncosh (double x);
+ public static int lncosh_e (double x, out Result result);
+ public static int polar_to_rect (double r, double theta, out Result x, out Result y);
+ public static int rect_to_polar (double x, double y, out Result r, out Result theta);
+ public static double angle_restrict_symm (double theta);
+ public static int angle_restrict_symm_e (out double theta);
+ public static double angle_restrict_pos (double theta);
+ public static int angle_restrict_pos_e (out double theta);
+ public static int sin_err_e (double x, double dx, out Result result);
+ public static int cos_err_e (double x, double dx, out Result result);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_zeta.h")]
+ namespace Zeta
+ {
+ public static double zeta_int (int n);
+ public static int zeta_int_e (int n, out Result result);
+ public static double zeta (double s);
+ public static int zeta_e (double s, out Result result);
+ public static double zetam1_int (int n);
+ public static int zetam1_int_e (int n, out Result result);
+ public static double zetam1 (double s);
+ public static int zetam1_e (double s, out Result result);
+ public static double hzeta (double s, double q);
+ public static int hzeta_e (double s, double q, out Result result);
+ public static double eta_int (int n);
+ public static int eta_int_e (int n, out Result result);
+ public static double eta (double s);
+ public static int eta_e (double s, out Result result);
+ }
+
+
+ /*
+ * Blocks, Vectors and Matrices
+ */
+ [Compact]
+ [CCode (cname="gsl_block", cheader_filename="gsl/gsl_block_double.h")]
+ public class Block
+ {
+ public size_t size;
+ public double* data;
+
+ [CCode (cname="gsl_block_alloc")]
+ public Block (size_t n);
+ [CCode (cname="gsl_block_calloc")]
+ public Block.with_zeros (size_t n);
+
+ [CCode (instance_pos=-1)]
+ public int fwrite (GLib.FileStream stream);
+ [CCode (instance_pos=-1)]
+ public int fread (GLib.FileStream stream);
+ public static int fprintf (GLib.FileStream stream, Block b, string format);
+ [CCode (instance_pos=-1)]
+ public int fscanf (GLib.FileStream stream);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_block_complex", cheader_filename="gsl/gsl_block_complex_double.h")]
+ public class BlockComplex
+ {
+ public size_t size;
+ public double* data;
+
+ [CCode (cname="gsl_block_complex_alloc")]
+ public BlockComplex (size_t n);
+ [CCode (cname="gsl_block_complex_calloc")]
+ public BlockComplex.with_zeros (size_t n);
+
+ [CCode (instance_pos=-1)]
+ public int fwrite (GLib.FileStream stream);
+ [CCode (instance_pos=-1)]
+ public int fread (GLib.FileStream stream);
+ public static int fprintf (GLib.FileStream stream, BlockComplex b, string format);
+ [CCode (instance_pos=-1)]
+ public int fscanf (GLib.FileStream stream);
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_vector_view", cheader_filename="gsl/gsl_vector_double.h")]
+ public struct VectorView
+ {
+ public Vector vector;
+
+ public static VectorView array (double[] v);
+ [NoArrayLength]
+ public static VectorView array_with_stride (double[] v, size_t stride, size_t n);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_vector", cheader_filename="gsl/gsl_vector_double.h")]
+ public class Vector
+ {
+ public size_t size;
+ public size_t stride;
+ public double* data;
+ public Block block;
+ public int owner;
+
+ [CCode (cname="gsl_vector_alloc")]
+ public Vector (size_t n);
+ [CCode (cname="gsl_vector_calloc")]
+ public Vector.with_zeros (size_t n);
+ [CCode (cname="gsl_vector_alloc_from_block")]
+ public Vector.from_block (Block b, size_t offset, size_t n, size_t stride);
+ [CCode (cname="gsl_vector_alloc_from_vector")]
+ public Vector.from_vector (Vector v, size_t offset, size_t n, size_t stride);
+
+ public double @get (size_t i);
+ public void @set (size_t i, double x);
+ public double* ptr (size_t i);
+
+ public void set_all (double x);
+ public void set_zero ();
+ public void set_basis (size_t i);
+
+ [CCode (instance_pos=-1)]
+ public int fwrite (GLib.FileStream stream);
+ [CCode (instance_pos=-1)]
+ public int fread (GLib.FileStream stream);
+ public static int fprintf (GLib.FileStream stream, Vector v, string format);
+ [CCode (instance_pos=-1)]
+ public int fscanf (GLib.FileStream stream);
+
+ public VectorView subvector (size_t offset, size_t n);
+ public VectorView subvector_with_stride (size_t offset, size_t stride, size_t n);
+
+ public int memcpy (Vector src);
+ public int swap (Vector w);
+
+ public int swap_elements (size_t i, size_t j);
+ public int reverse ();
+
+ public int add (Vector b);
+ public int sub (Vector b);
+ public int mul (Vector b);
+ public int div (Vector b);
+ public int scale (double x);
+ public int add_constant (double x);
+
+ public double max ();
+ public double min ();
+ public void minmax (out double min_out, out double max_out);
+ public size_t max_index ();
+ public size_t min_index ();
+ public void minmax_index (out size_t imin, out size_t imax);
+
+ public bool isnull ();
+ public bool ispos ();
+ public bool isneg ();
+ public bool isnonneg ();
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_vector_complex_view", cheader_filename="gsl/gsl_vector_complex_double.h")]
+ public struct VectorComplexView
+ {
+ public VectorComplex vector;
+
+ public static VectorComplexView array (double[] v);
+ [NoArrayLength]
+ public static VectorComplexView array_with_stride (double[] v, size_t stride, size_t n);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_vector_complex", cheader_filename="gsl/gsl_vector_complex_double.h")]
+ public class VectorComplex
+ {
+ public size_t size;
+ public size_t stride;
+ public double* data;
+ public BlockComplex block;
+ public int owner;
+
+ [CCode (cname="gsl_vector_complex_alloc")]
+ public VectorComplex (size_t n);
+ [CCode (cname="gsl_vector_complex_calloc")]
+ public VectorComplex.with_zeros (size_t n);
+ [CCode (cname="gsl_vector_complex_alloc_from_block")]
+ public VectorComplex.from_block (BlockComplex b, size_t offset, size_t n, size_t stride);
+ [CCode (cname="gsl_vector_complex_alloc_from_vector")]
+ public VectorComplex.from_vector (VectorComplex v, size_t offset, size_t n, size_t stride);
+
+ public Complex @get (size_t i);
+ public void @set (size_t i, Complex x);
+ public Complex* ptr (size_t i);
+
+ public void set_all (Complex x);
+ public void set_zero ();
+ public void set_basis (size_t i);
+
+ [CCode (instance_pos=-1)]
+ public int fwrite (GLib.FileStream stream);
+ [CCode (instance_pos=-1)]
+ public int fread (GLib.FileStream stream);
+ public static int fprintf (GLib.FileStream stream, VectorComplex v, string format);
+ [CCode (instance_pos=-1)]
+ public int fscanf (GLib.FileStream stream);
+
+ public VectorComplexView subvector (size_t i, size_t n);
+ public VectorComplexView subvector_with_stride (size_t i, size_t stride, size_t n);
+ public VectorView complex_real ();
+ public VectorView complex_imag ();
+
+ public int memcpy (VectorComplex src);
+ public int swap (VectorComplex w);
+
+ public int swap_elements (size_t i, size_t j);
+ public int reverse ();
+
+ public int add (VectorComplex b);
+ public int sub (VectorComplex b);
+ public int mul (VectorComplex b);
+ public int div (VectorComplex b);
+ public int scale (double x);
+ public int add_constant (double x);
+
+ public double max ();
+ public double min ();
+ public void minmax (out double min_out, out double max_out);
+ public size_t max_index ();
+ public size_t min_index ();
+ public void minmax_index (out size_t imin, out size_t imax);
+
+ public bool isnull ();
+ public bool ispos ();
+ public bool isneg ();
+ public bool isnonneg ();
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_matrix_view", cheader_filename="gsl/gsl_matrix_double.h")]
+ public struct MatrixView
+ {
+ public Matrix matrix;
+
+ [NoArrayLength]
+ public static MatrixView array (double[] v, size_t n1, size_t n2);
+ [NoArrayLength]
+ public static MatrixView array_with_tda (double[] v, size_t n1, size_t n2, size_t tda);
+ public static MatrixView vector (Vector v, size_t n1, size_t n2);
+ public static MatrixView vectr_with_tda (Vector v, size_t n1, size_t n2, size_t tda);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_matrix", cheader_filename="gsl/gsl_matrix_double.h")]
+ public class Matrix
+ {
+ public size_t size1;
+ public size_t size2;
+ public size_t tda;
+ public double* data;
+ public Block block;
+ public int owner;
+
+ [CCode (cname="gsl_matrix_alloc")]
+ public Matrix (size_t n1, size_t n2);
+ [CCode (cname="gsl_matrix_calloc")]
+ public Matrix.with_zeros (size_t n1, size_t n2);
+ [CCode (cname="gsl_matrix_alloc_from_block")]
+ public Matrix.from_block (Block b, size_t offset, size_t n1, size_t n2, size_t d2);
+ [CCode (cname="gsl_matrix_alloc_from_matrix")]
+ public Matrix.from_matrix (Matrix m, size_t k1, size_t k2, size_t n1, size_t n2);
+
+ public Vector alloc_row_from_matrix (size_t i);
+ public Vector alloc_col_from_matrix (size_t j);
+
+ public double @get (size_t i, size_t j);
+ public void @set (size_t i, size_t j, double x);
+ public double* ptr (size_t i, size_t j);
+
+ public void set_all (double x);
+ public void set_zero ();
+ public void set_identity ();
+
+ [CCode (instance_pos=-1)]
+ public int fwrite (GLib.FileStream stream);
+ [CCode (instance_pos=-1)]
+ public int fread (GLib.FileStream stream);
+ public static int fprintf (GLib.FileStream stream, Matrix m, string format);
+ [CCode (instance_pos=-1)]
+ public int fscanf (GLib.FileStream stream);
+
+ public MatrixView submatrix (size_t k, size_t k2, size_t n1, size_t n2);
+ public VectorView row (size_t i);
+ public VectorView column (size_t j);
+ public VectorView subrow (size_t i, size_t offset, size_t n);
+ public VectorView subcolumn (size_t i, size_t offset, size_t n);
+ public VectorView diagonal ();
+ public VectorView subdiagonal (size_t k);
+ public VectorView superdiagonal (size_t k);
+
+ public int memcpy (Matrix src);
+ public int swap (Matrix m2);
+
+ public static int get_row (Vector v, Matrix m, size_t i);
+ public static int get_col (Vector v, Matrix m, size_t j);
+ public int set_row (size_t i, Vector v);
+ public int set_col (size_t j, Vector v);
+
+ public int swap_rows (size_t i, size_t j);
+ public int swap_columns (size_t i, size_t j);
+ public int swap_rowcol (size_t i, size_t j);
+ public int transpose_memcpy (Matrix src);
+ public int transpose ();
+
+ public int add (Matrix b);
+ public int sub (Matrix b);
+ public int mul_elements (Matrix b);
+ public int div_elements (Matrix b);
+ public int scale (double x);
+ public int add_constant (double x);
+ public int add_diagonal (double x);
+
+ public double max ();
+ public double min ();
+ public void minmax (out double min_out, out double max_out);
+ public void max_index (out size_t imax, out size_t jmax);
+ public void min_index (out size_t imin, out size_t jmin);
+ public void minmax_index (out size_t imin, out size_t jmin, out size_t imax, out size_t jmax);
+
+ public bool isnull ();
+ public bool ispos ();
+ public bool isneg ();
+ public bool isnonneg ();
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_matrix_complex_view", cheader_filename="gsl/gsl_matrix_complex_double.h")]
+ public struct MatrixComplexView
+ {
+ public MatrixComplex matrix;
+
+ [NoArrayLength]
+ public static MatrixComplexView array (double[] v, size_t n1, size_t n2);
+ [NoArrayLength]
+ public static MatrixComplexView array_with_tda (double[] v, size_t n1, size_t n2, size_t tda);
+ public static MatrixComplexView vector (VectorComplex v, size_t n1, size_t n2);
+ public static MatrixComplexView vectr_with_tda (VectorComplex v, size_t n1, size_t n2, size_t tda);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_matrix_complex", cheader_filename="gsl/gsl_matrix_complex_double.h")]
+ public class MatrixComplex
+ {
+ public size_t size1;
+ public size_t size2;
+ public size_t tda;
+ public double* data;
+ public BlockComplex block;
+ public int owner;
+
+ [CCode (cname="gsl_matrix_complex_alloc")]
+ public MatrixComplex (size_t n1, size_t n2);
+ [CCode (cname="gsl_matrix_complex_calloc")]
+ public MatrixComplex.with_zeros (size_t n1, size_t n2);
+ [CCode (cname="gsl_matrix_complex_alloc_from_block")]
+ public MatrixComplex.from_block (BlockComplex b, size_t offset, size_t n1, size_t n2, size_t d2);
+ [CCode (cname="gsl_matrix_complex_alloc_from_matrix")]
+ public MatrixComplex.from_matrix (MatrixComplex m, size_t k1, size_t k2, size_t n1, size_t n2);
+
+ public VectorComplex alloc_row_from_matrix (size_t i);
+ public VectorComplex alloc_col_from_matrix (size_t j);
+
+ public double @get (size_t i, size_t j);
+ public void @set (size_t i, size_t j, double x);
+ public double* ptr (size_t i, size_t j);
+
+ public void set_all (double x);
+ public void set_zero ();
+ public void set_identity ();
+
+ [CCode (instance_pos=-1)]
+ public int fwrite (GLib.FileStream stream);
+ [CCode (instance_pos=-1)]
+ public int fread (GLib.FileStream stream);
+ public static int fprintf (GLib.FileStream stream, MatrixComplex m, string format);
+ [CCode (instance_pos=-1)]
+ public int fscanf (GLib.FileStream stream);
+
+ public MatrixComplexView submatrix (size_t k, size_t k2, size_t n1, size_t n2);
+ public VectorComplexView row (size_t i);
+ public VectorComplexView column (size_t j);
+ public VectorComplexView subrow (size_t i, size_t offset, size_t n);
+ public VectorComplexView subcolumn (size_t i, size_t offset, size_t n);
+ public VectorComplexView diagonal ();
+ public VectorComplexView subdiagonal (size_t k);
+ public VectorComplexView superdiagonal (size_t k);
+
+ public int memcpy (MatrixComplex src);
+ public int swap (MatrixComplex m2);
+
+ public static int get_row (VectorComplex v, MatrixComplex m, size_t i);
+ public static int get_col (VectorComplex v, MatrixComplex m, size_t j);
+ public int set_row (size_t i, VectorComplex v);
+ public int set_col (size_t j, VectorComplex v);
+
+ public int swap_rows (size_t i, size_t j);
+ public int swap_columns (size_t i, size_t j);
+ public int swap_rowcol (size_t i, size_t j);
+ public int transpose_memcpy (MatrixComplex src);
+ public int transpose ();
+
+ public int add (MatrixComplex b);
+ public int sub (MatrixComplex b);
+ public int mul_elements (MatrixComplex b);
+ public int div_elements (MatrixComplex b);
+ public int scale (double x);
+ public int add_constant (double x);
+ public int add_diagonal (double x);
+
+ public double max ();
+ public double min ();
+ public void minmax (out double min_out, out double max_out);
+ public void max_index (out size_t imax, out size_t jmax);
+ public void min_index (out size_t imin, out size_t jmin);
+ public void minmax_index (out size_t imin, out size_t jmin, out size_t imax, out size_t jmax);
+
+ public bool isnull ();
+ public bool ispos ();
+ public bool isneg ();
+ public bool isnonneg ();
+ }
+
+
+ /*
+ * Permutations
+ */
+ [Compact]
+ [CCode (cname="gsl_permutation", cheader_filename="gsl/gsl_permutation.h")]
+ public class Permutation
+ {
+ public size_t size;
+ public size_t* data;
+
+ [CCode (cname="gsl_permutation_alloc")]
+ public Permutation (size_t n);
+ [CCode (cname="gsl_permutation_calloc")]
+ public Permutation.with_zeros (size_t n);
+
+ public void init ();
+ public int memcpy (Permutation src);
+
+ public size_t @get (size_t i);
+ public int swap (size_t i, size_t j);
+
+ public int valid ();
+
+ public void reverse ();
+ public int inverse (Permutation p);
+ public int next ();
+ public int prev ();
+
+ public int mul (Permutation pa, Permutation pb);
+
+ [CCode (instance_pos=-1)]
+ public int fwrite (GLib.FileStream stream);
+ [CCode (instance_pos=-1)]
+ public int fread (GLib.FileStream stream);
+ public static int fprintf (GLib.FileStream stream, Permutation p, string format);
+ [CCode (instance_pos=-1)]
+ public int fscanf (GLib.FileStream stream);
+
+ public int linear_to_canonical (Permutation p);
+ public int canonical_to_linear (Permutation q);
+ public size_t inversions ();
+ public size_t linear_cycles ();
+ public size_t canonical_cycles ();
+ }
+
+ [CCode (lower_case_cprefix="gsl_", cheader_filename="gsl/gsl_permute_double.h")]
+ namespace Permute
+ {
+ [NoArrayLength]
+ public static int permute (size_t* p, double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static int permute_inverse (size_t* p, double[] data, size_t stride, size_t n);
+ }
+
+ [CCode (cheader_filename="gsl/gsl_permute_complex_double.h")]
+ namespace PermuteComplex
+ {
+ [NoArrayLength]
+ [CCode (cname="gsl_permute_complex")]
+ public static int permute (size_t* p, double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ [CCode (cname="gsl_permute_complex_inverse")]
+ public static int permute_inverse (size_t* p, double[] data, size_t stride, size_t n);
+ }
+
+ [CCode (cheader_filename="gsl/gsl_permute_vector_double.h")]
+ namespace PermuteVector
+ {
+ [CCode (cname="gsl_permute_vector")]
+ public static int permute (Permutation p, Vector v);
+ [CCode (cname="gsl_permute_vector_inverse")]
+ public static int permute_inverse (Permutation p, Vector v);
+ }
+
+ [CCode (cheader_filename="gsl/gsl_permute_vector_complex_double.h")]
+ namespace PermuteVectorComplex
+ {
+ [CCode (cname="gsl_permute_vector_complex")]
+ public static int permute (Permutation p, Vector v);
+ [CCode (cname="gsl_permute_vector_complex_inverse")]
+ public static int permute_inverse (Permutation p, Vector v);
+ }
+
+
+ /*
+ * Combinations
+ */
+ [Compact]
+ [CCode (cname="gsl_combination", cheader_filename="gsl/gsl_combination.h")]
+ public class Combination
+ {
+ public size_t n;
+ public size_t k;
+ public size_t* data;
+
+ [CCode (cname="gsl_combination_alloc")]
+ public Combination (size_t n, size_t k);
+ [CCode (cname="gsl_combination_calloc")]
+ public Combination.with_zeros (size_t n, size_t k);
+
+ public void init_first ();
+ public void init_last ();
+ public int memcpy (Combination src);
+
+ public size_t @get (size_t i);
+
+ public int valid ();
+
+ public int next ();
+ public int prev ();
+
+ [CCode (instance_pos=-1)]
+ public int fwrite (GLib.FileStream stream);
+ [CCode (instance_pos=-1)]
+ public int fread (GLib.FileStream stream);
+ public static int fprintf (GLib.FileStream stream, Combination c, string format);
+ [CCode (instance_pos=-1)]
+ public int fscanf (GLib.FileStream stream);
+ }
+
+
+ /*
+ * Sorting
+ */
+ [CCode (lower_case_cprefix="gsl_sort_", cheader_filename="gsl/gsl_sort_double.h")]
+ namespace Sort
+ {
+ [NoArrayLength]
+ [CCode (cname="gsl_sort")]
+ public static void sort (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ [CCode (cname="gsl_sort_index")]
+ public static void sort_index (size_t[] p, double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static int smallest (double[] dest, size_t k, double[] src, size_t stride, size_t n);
+ [NoArrayLength]
+ public static int smallest_index (size_t[] p, size_t k, double[] src, size_t stride, size_t n);
+ [NoArrayLength]
+ public static int largest (double[] dest, size_t k, double[] src, size_t stride, size_t n);
+ [NoArrayLength]
+ public static int largest_index (size_t[] p, size_t k, double[] src, size_t stride, size_t n);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sort_vector_", cheader_filename="gsl/gsl_sort_vector_double.h")]
+ namespace SortVector
+ {
+ [CCode (cname="gsl_sort_vector")]
+ public static void sort (Vector v);
+ [CCode (cname="gsl_sort_vector_index")]
+ public static int sort_index (Permutation p, Vector v);
+ [NoArrayLength]
+ public static int smallest (double[] dest, size_t k, Vector v);
+ [NoArrayLength]
+ public static int smallest_index (size_t[] p, size_t k, Vector v);
+ [NoArrayLength]
+ public static int largest (double[] dest, size_t k, Vector v);
+ [NoArrayLength]
+ public static int largest_index (size_t[] p, size_t k, Vector v);
+ }
+
+
+ /*
+ * Linear Algebra
+ */
+ [CCode (lower_case_cprefix="gsl_linalg_", cheader_filename="gsl/gsl_linalg.h")]
+ namespace LinAlg
+ {
+ public static int LU_decomp (Matrix A, Permutation p, out int signum);
+ public static int complex_LU_decomp (MatrixComplex A, Permutation p, out int signum);
+ public static int LU_solve (Matrix LU, Permutation p, Vector b, Vector x);
+ public static int complex_LU_solve (MatrixComplex LU, Permutation p, VectorComplex b, VectorComplex x);
+ public static int LU_svx (Matrix LU, Permutation p, Vector x);
+ public static int complex_LU_svx (MatrixComplex LU, Permutation p, VectorComplex x);
+ public static int LU_refine (Matrix A, Matrix LU, Permutation p, Vector b, Vector x, Vector residual);
+ public static int complex_LU_refine (MatrixComplex A, MatrixComplex LU, Permutation p, VectorComplex b, VectorComplex x, VectorComplex residual);
+ public static int LU_invert (Matrix LU, Permutation p, Matrix inverse);
+ public static int complex_LU_invert (MatrixComplex LU, Permutation p, Matrix inverse);
+ public static double LU_det (Matrix LU, int signum);
+ public static Complex complex_LU_det (MatrixComplex LU, int signum);
+ public static double LU_lndet (Matrix LU);
+ public static double complex_LU_lndet (MatrixComplex LU);
+ public static int LU_sgndet (Matrix LU, int signum);
+ public static Complex complex_LU_sgndet (MatrixComplex LU, int signum);
+
+ public static int QR_decomp (Matrix A, Vector tau);
+ public static int QR_solve (Matrix QR, Vector tau, Vector b, Vector x);
+ public static int QR_svx (Matrix QR, Vector tau, Vector x);
+ public static int QR_lssolve (Matrix QR, Vector tau, Vector b, Vector x, Vector residual);
+ public static int QR_QTvec (Matrix QR, Vector tau, Vector v);
+ public static int QR_Qvec (Matrix QR, Vector tau, Vector v);
+ public static int QR_QTmat (Matrix QR, Vector tau, Matrix A);
+ public static int QR_Rsolve (Matrix QR, Vector b, Vector x);
+ public static int QR_Rsvx (Matrix QR, Vector x);
+ public static int QR_unpack (Matrix QR, Vector tau, Matrix Q, Matrix R);
+ public static int QR_QRsolve (Matrix Q, Matrix R, Vector b, Vector x);
+ public static int QR_update (Matrix Q, Matrix R, Vector w, Vector v);
+ public static int R_solve (Matrix R, Vector b, Vector x);
+ public static int R_svx (Matrix R, Vector x);
+
+ public static int QRPT_decomp (Matrix A, Vector tau, Permutation p, out int signum, Vector norm);
+ public static int QRPT_decomp2 (Matrix A, Matrix q, Matrix r, Vector tau, Permutation p, out int signum, Vector norm);
+ public static int QRPT_solve (Matrix QR, Vector tau, Permutation p, Vector b, Vector x);
+ public static int QRPT_svx (Matrix QR, Vector tau, Permutation p, Vector x);
+ public static int QRPT_QRsolve (Matrix Q, Matrix R, Permutation p, Vector b, Vector x);
+ public static int QRPT_update (Matrix Q, Matrix R, Permutation p, Vector u, Vector v);
+ public static int QRPT_Rsolve (Matrix QR, Permutation p, Vector b, Vector x);
+ public static int QRPT_Rsvx (Matrix QR, Permutation p, Vector x);
+
+ public static int SV_decomp (Matrix A, Matrix V, Vector S, Vector work);
+ public static int SV_decomp_mod (Matrix A, Matrix X, Matrix V, Vector S, Vector work);
+ public static int SV_decomp_jacobi (Matrix A, Matrix V, Vector S);
+ public static int SV_solve (Matrix U, Matrix V, Vector S, Vector b, Vector x);
+
+ public static int cholesky_decomp (Matrix A);
+ public static int complex_cholesky_decomp (MatrixComplex A);
+ public static int cholesky_solve (Matrix cholesky, Vector b, Vector x);
+ public static int complex_cholesky_solve (MatrixComplex cholesky, VectorComplex b, VectorComplex x);
+ public static int cholesky_svx (Matrix cholesky, Vector x);
+ public static int complex_cholesky_svx (MatrixComplex cholesky, VectorComplex x);
+
+ public static int symmtd_decomp (Matrix A, Vector tau);
+ public static int symmtd_unpack (Matrix A, Vector tau, Matrix Q, Vector diag, Vector subdiag);
+ public static int symmtd_unpack_T (Matrix A, Vector diag, Vector subdiag);
+
+ public static int hermtd_decomp (MatrixComplex A, VectorComplex tau);
+ public static int hermtd_unpack (MatrixComplex A, VectorComplex tau, MatrixComplex Q, Vector diag, Vector subdiag);
+ public static int hermtd_unpack_T (MatrixComplex A, Vector diag, Vector subdiag);
+
+ public static int hessenberg_decomp (Matrix A, Vector tau);
+ public static int hessenberg_unpack (Matrix H, Vector tau, Matrix U);
+ public static int hessenberg_unpack_accum (Matrix H, Vector tau, Matrix V);
+ public static int hessenberg_set_zero (Matrix H);
+
+ public static int hesstri_decomp (Matrix A, Matrix B, Matrix U, Matrix V, Vector work);
+
+ public static int bidiag_decomp (Matrix A, Vector tau_U, Vector tau_V);
+ public static int bidiag_unpack (Matrix A, Vector tau_U, Matrix U, Vector tau_V, Matrix V, Vector diag, Vector superdiag);
+ public static int bidiag_unpack2 (Matrix A, Vector tau_U, Vector tau_V, Matrix V);
+ public static int bidiag_unpack_B (Matrix A, Vector diag, Vector superdiag);
+
+ public static int householder_tansform (Vector v);
+ public static Complex complex_householder_transform (VectorComplex V);
+ public static int householder_hm (double tau, Vector v, Matrix A);
+ public static int complex_householder_hm (Complex tau, VectorComplex V, MatrixComplex A);
+ public static int householder_mh (double tau, Vector v, Matrix A);
+ public static int complex_householder_mh (Complex tau, VectorComplex V, MatrixComplex A);
+ public static int householder_hv (double tau, Vector v, Vector w);
+ public static int complex_householder_hv (Complex tau, VectorComplex V, VectorComplex w);
+
+ public static int HH_solve (Matrix A, Vector b, Vector x);
+ public static int HH_svx (Matrix A, Vector x);
+
+ public static int solve_tridiag (Vector diag, Vector e, Vector f, Vector b, Vector x);
+ public static int solve_symm_tridiag (Vector diag, Vector e, Vector b, Vector x);
+ public static int solve_cyc_tridiag (Vector diag, Vector e, Vector f, Vector b, Vector x);
+ public static int solve_symm_cyc_tridiag (Vector diag, Vector e, Vector b, Vector x);
+
+ public static int balance_matrix (Matrix A, Vector D);
+ }
+
+
+ /*
+ * Eigensystems
+ */
+ [CCode (cname="gsl_eigen_sort_t", cprefix="GSL_EIGEN_SORT_", cheader_filename="gsl/gsl_eigen.h")]
+ public enum EigenSortType
+ {
+ VAL_ASC,
+ VAL_DESC,
+ ABS_ASC,
+ ABS_DESC
+ }
+
+ [Compact]
+ [CCode (cname="gsl_eigen_symm_workspace", free_function="gsl_eigen_symm_free", cheader_filename="gsl/gsl_eigen.h")]
+ public class EigenSymmWorkspace
+ {
+ public size_t size;
+ public double* d;
+ public double* sd;
+
+ [CCode (cname="gsl_eigen_symm_alloc")]
+ public EigenSymmWorkspace (size_t n);
+ [CCode (cname="gsl_eigen_symm", instance_pos=-1)]
+ public int init (Matrix A, Vector eval);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_eigen_symmv_workspace", free_function="gsl_eigen_symmv_free", cheader_filename="gsl/gsl_eigen.h")]
+ public class EigenSymmvWorkspace
+ {
+ public size_t size;
+ public double* d;
+ public double* sd;
+ public double* gc;
+ public double* gs;
+
+ [CCode (cname="gsl_eigen_symmv_alloc")]
+ public EigenSymmvWorkspace (size_t n);
+ [CCode (cname="gsl_eigen_symmv", instance_pos=-1)]
+ public int init (Matrix A, Vector eval, Matrix evec);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_eigen_herm_workspace", free_function="gsl_eigen_herm_free", cheader_filename="gsl/gsl_eigen.h")]
+ public class EigenHermWorkspace
+ {
+ public size_t size;
+ public double* d;
+ public double* sd;
+ public double* tau;
+
+ [CCode (cname="gsl_eigen_herm_alloc")]
+ public EigenHermWorkspace (size_t n);
+ [CCode (cname="gsl_eigen_herm", instance_pos=-1)]
+ public int init (MatrixComplex A, VectorComplex eval);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_eigen_hermv_workspace", free_function="gsl_eigen_hermv_free", cheader_filename="gsl/gsl_eigen.h")]
+ public class EigenHermvWorkspace
+ {
+ public size_t size;
+ public double* d;
+ public double* sd;
+ public double* tau;
+ public double* gc;
+ public double* gs;
+
+ [CCode (cname="gsl_eigen_hermv_alloc")]
+ public EigenHermvWorkspace (size_t n);
+ [CCode (cname="gsl_eigen_hermv", instance_pos=-1)]
+ public int init (MatrixComplex A, VectorComplex eval, MatrixComplex evec);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_eigen_nonsymm_workspace", free_function="gsl_eigen_nonsymm_free", cheader_filename="gsl/gsl_eigen.h")]
+ public class EigenNonsymmWorkspace
+ {
+ public size_t size;
+ public Vector diag;
+ public Vector tau;
+ public Matrix Z;
+ public int do_balance;
+ size_t n_evals;
+
+ [CCode (cname="gsl_eigen_nonsymm_alloc")]
+ public EigenNonsymmWorkspace (size_t n);
+ [CCode (cname="gsl_eigen_nonsymm_params", instance_pos=-1)]
+ public void params (int compute_t, int balance);
+ [CCode (cname="gsl_eigen_nonsymm", instance_pos=-1)]
+ public int init (Matrix A, VectorComplex eval);
+ [CCode (cname="gsl_eigen_nonsymm_Z", instance_pos=-1)]
+ public int init_Z (Matrix A, VectorComplex eval, Matrix Z);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_eigen_nonsymmv_workspace", free_function="gsl_eigen_nonsymmv_free", cheader_filename="gsl/gsl_eigen.h")]
+ public class EigenNonsymmvWorkspace
+ {
+ public size_t size;
+ public Vector work;
+ public Vector work2;
+ public Vector work3;
+ public Matrix Z;
+ public EigenNonsymmWorkspace nonsymm_workspace_p;
+
+ [CCode (cname="gsl_eigen_nonsymmv_alloc")]
+ public EigenNonsymmvWorkspace (size_t n);
+ [CCode (cname="gsl_eigen_nonsymmv", instance_pos=-1)]
+ public int init (Matrix A, VectorComplex eval, MatrixComplex evec);
+ [CCode (cname="gsl_eigen_nonsymmv_Z", instance_pos=-1)]
+ public int init_Z (Matrix A, VectorComplex eval, MatrixComplex evec, Matrix Z);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_eigen_gensymm_workspace", free_function="gsl_eigen_gensymm_free", cheader_filename="gsl/gsl_eigen.h")]
+ public class EigenGensymmWorkspace
+ {
+ public size_t size;
+ public EigenSymmWorkspace symm_workspace_p;
+
+ [CCode (cname="gsl_eigen_gensymm_alloc")]
+ public EigenGensymmWorkspace (size_t n);
+ [CCode (cname="gsl_eigen_gensymm", instance_pos=-1)]
+ public int init (Matrix A, Matrix B, Vector eval);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_eigen_gensymmv_workspace", free_function="gsl_eigen_gensymmv_free", cheader_filename="gsl/gsl_eigen.h")]
+ public class EigenGensymmvWorkspace
+ {
+ public size_t size;
+ public EigenSymmvWorkspace symmv_workspace_p;
+
+ [CCode (cname="gsl_eigen_gensymmv_alloc")]
+ public EigenGensymmvWorkspace (size_t n);
+ [CCode (cname="gsl_eigen_gensymmv", instance_pos=-1)]
+ public int init (Matrix A, Matrix B, Vector eval, Matrix evec);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_eigen_genherm_workspace", free_function="gsl_eigen_genherm_free", cheader_filename="gsl/gsl_eigen.h")]
+ public class EigenGenhermWorkspace
+ {
+ public size_t size;
+ public EigenHermWorkspace herm_workspace_p;
+
+ [CCode (cname="gsl_eigen_genherm_alloc")]
+ public EigenGenhermWorkspace (size_t n);
+ [CCode (cname="gsl_eigen_genherm", instance_pos=-1)]
+ public int init (MatrixComplex A, MatrixComplex B, Vector eval);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_eigen_genhermv_workspace", free_function="gsl_eigen_genhermv_free", cheader_filename="gsl/gsl_eigen.h")]
+ public class EigenGenhermvWorkspace
+ {
+ public size_t size;
+ public EigenHermvWorkspace hermv_workspace_p;
+
+ [CCode (cname="gsl_eigen_genhermv_alloc")]
+ public EigenGenhermvWorkspace (size_t n);
+ [CCode (cname="gsl_eigen_genhermv", instance_pos=-1)]
+ public int init (MatrixComplex A, MatrixComplex B, Vector eval, MatrixComplex evec);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_eigen_gen_workspace", free_function="gsl_eigen_gen_free", cheader_filename="gsl/gsl_eigen.h")]
+ public class EigenGenWorkspace
+ {
+ public size_t size;
+ public Vector work;
+ public size_t n_evals;
+ public size_t max_iterations;
+ public size_t n_iter;
+ public double eshift;
+ public int needtop;
+ public double atol;
+ public double btol;
+ public double ascale;
+ public double bscale;
+ public Matrix H;
+ public Matrix R;
+ public int compute_s;
+ public int compute_t;
+ public Matrix Q;
+ public Matrix Z;
+
+ [CCode (cname="gsl_eigen_gen_alloc")]
+ public EigenGenWorkspace (size_t n);
+ [CCode (cname="gsl_eigen_gen_params", instance_pos=-1)]
+ public void params (int compute_s, int compute_t, int balance);
+ [CCode (cname="gsl_eigen_gen", instance_pos=-1)]
+ public int init (Matrix A, Matrix B, VectorComplex alpha, Vector beta);
+ [CCode (cname="gsl_eigen_gen_QZ", instance_pos=-1)]
+ public int init_QZ (Matrix A, Matrix B, VectorComplex alpha, Vector beta, Matrix Q, Matrix Z);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_eigen_genv_workspace", free_function="gsl_eigen_genv_free", cheader_filename="gsl/gsl_eigen.h")]
+ public class EigenGenvWorkspace
+ {
+ public size_t size;
+ public Vector work1;
+ public Vector work2;
+ public Vector work3;
+ public Vector work4;
+ public Vector work5;
+ public Vector work6;
+ public Matrix Q;
+ public Matrix Z;
+ public EigenGenWorkspace gen_workspace_p;
+
+ [CCode (cname="gsl_eigen_genv_alloc")]
+ public EigenGenvWorkspace (size_t n);
+ [CCode (cname="gsl_eigen_genv", instance_pos=-1)]
+ public int init (Matrix A, Matrix B, VectorComplex alpha, Vector beta, MatrixComplex evec);
+ [CCode (cname="gsl_eigen_genv_QZ", instance_pos=-1)]
+ public int init_QZ (Matrix A, Matrix B, VectorComplex alpha, Vector beta, MatrixComplex evec, Matrix Q, Matrix Z);
+ }
+
+ [CCode (lower_case_cprefix="gsl_eigen_", cheader_filename="gsl/gsl_eigen.h")]
+ namespace EigenSort
+ {
+ public static int symmv_sort (Vector eval, Matrix evec, EigenSortType sort_type);
+ public static int hermv_sort (Vector eval, MatrixComplex evec, EigenSortType sort_type);
+ public static int nonsymmv_sort (VectorComplex eval, MatrixComplex evec, EigenSortType sort_type);
+ public static int gensymmv_sort (Vector eval, Matrix evec, EigenSortType sort_type);
+ public static int genhermv_sort (Vector eval, MatrixComplex evec, EigenSortType sort_type);
+ public static int genv_sort (VectorComplex alpha, Vector beta, MatrixComplex evec, EigenSortType sort_type);
+ }
+
+
+ /*
+ * Fast Fourier Transforms (FFTs)
+ */
+ [CCode (cname="gsl_fft_direction", cheader_filename="gsl/gsl_fft.h")]
+ public enum FFTDirection
+ {
+ forward = -1,
+ backward = 1
+ }
+
+ [Compact]
+ [CCode (cname="gsl_fft_complex_wavetable", cheader_filename="gsl/gsl_fft_complex.h")]
+ public class FFTComplexWavetable
+ {
+ public size_t n;
+ public size_t nf;
+ public size_t[64] factor;
+ public Complex[64] twiddle;
+ public Complex trig;
+
+ [CCode (cname="gsl_fft_complex_wavetable_alloc")]
+ public FFTComplexWavetable (size_t n);
+ public int memcpy (FFTComplexWavetable src);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_fft_complex_workspace", cheader_filename="gsl/gsl_fft_complex.h")]
+ public class FFTComplexWorkspace
+ {
+ size_t n;
+ double *scratch;
+
+ [CCode (cname="gsl_fft_complex_workspace_alloc")]
+ public FFTComplexWorkspace (size_t n);
+ }
+
+ [Compact]
+ [CCode (lower_case_cprefix="gsl_fft_complex_", cheader_filename="gsl/gsl_fft_complex.h")]
+ namespace FFTComplex
+ {
+ [NoArrayLength]
+ public static int radix2_forward (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static int radix2_transform (double[] data, size_t stride, size_t n, FFTDirection sign);
+ [NoArrayLength]
+ public static int radix2_backward (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static int radix2_inverse (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static int radix2_dif_forward (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static int radix2_dif_transform (double[] data, size_t stride, size_t n, FFTDirection sign);
+ [NoArrayLength]
+ public static int radix2_dif_backward (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static int radix2_dif_inverse (double[] data, size_t stride, size_t n);
+
+ [NoArrayLength]
+ public static int forward (double[] data, size_t stride, size_t n, FFTComplexWavetable wavetable, FFTComplexWorkspace work);
+ [NoArrayLength]
+ public static int transform (double[] data, size_t stride, size_t n, FFTComplexWavetable wavetable, FFTComplexWorkspace work, FFTDirection sign);
+ [NoArrayLength]
+ public static int backward (double[] data, size_t stride, size_t n, FFTComplexWavetable wavetable, FFTComplexWorkspace work);
+ [NoArrayLength]
+ public static int inverse (double[] data, size_t stride, size_t n, FFTComplexWavetable wavetable, FFTComplexWorkspace work);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_fft_real_wavetable", cheader_filename="gsl/gsl_fft_real.h")]
+ public class FFTRealWavetable
+ {
+ public size_t n;
+ public size_t nf;
+ public size_t[64] factor;
+ public Complex[64] twiddle;
+ public Complex trig;
+
+ [CCode (cname="gsl_fft_real_wavetable_alloc")]
+ public FFTRealWavetable (size_t n);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_fft_real_workspace", cheader_filename="gsl/gsl_fft_real.h")]
+ public class FFTRealWorkspace
+ {
+ size_t n;
+ double *scratch;
+
+ [CCode (cname="gsl_fft_real_workspace_alloc")]
+ public FFTRealWorkspace (size_t n);
+ }
+
+ [Compact]
+ [CCode (lower_case_cprefix="gsl_fft_real_", cheader_filename="gsl/gsl_fft_real.h")]
+ namespace FFTReal
+ {
+ [NoArrayLength]
+ public static int radix2_forward (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static int transform (double[] data, size_t stride, size_t n, FFTRealWavetable wavetable, FFTRealWorkspace work);
+ [NoArrayLength]
+ public static int unpack (double[] real_coefficient, double[] complex_coeficient, size_t stride, size_t n);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_fft_halfcomplex_wavetable", cheader_filename="gsl/gsl_fft_halfcomplex.h")]
+ public class FFTHalfcomplexWavetable
+ {
+ public size_t n;
+ public size_t nf;
+ public size_t[64] factor;
+ public Complex[64] twiddle;
+ public Complex trig;
+
+ [CCode (cname="gsl_fft_halfcomplex_wavetable_alloc")]
+ public FFTHalfcomplexWavetable (size_t n);
+ }
+
+ [CCode (lower_case_cprefix="gsl_fft_halfcomplex_", cheader_filename="gsl/gsl_fft_halfcomplex.h")]
+ namespace FFTHalfcomplex
+ {
+ [NoArrayLength]
+ public static int radix2_inverse (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static int radix2_backward (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static int radix2_transform (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static int backward (double[] data, size_t stride, size_t n, FFTHalfcomplexWavetable wavetable, FFTRealWorkspace work);
+ [NoArrayLength]
+ public static int inverse (double[] data, size_t stride, size_t n, FFTHalfcomplexWavetable wavetable, FFTRealWorkspace work);
+ [NoArrayLength]
+ public static int transform (double[] data, size_t stride, size_t n, FFTHalfcomplexWavetable wavetable, FFTRealWorkspace work);
+ [NoArrayLength]
+ public static int unpack (double[] halfcomplex_coefficient, double[] complex_coefficient, size_t stride, size_t n);
+ [NoArrayLength]
+ public static int radix2_unpack (double[] halfcomplex_coefficient, double[] complex_coefficient, size_t stride, size_t n);
+ }
+
+
+ /*
+ * Numerical Integration
+ */
+ [CCode (cprefix="GSL_INTEG_", cheader_filename="gsl/gsl_integration.h")]
+ public enum QAWO
+ {
+ COSINE,
+ SINE
+ }
+
+ [CCode (cprefix="GSL_INTEG_", cheader_filename="gsl/gsl_integration.h")]
+ public enum GaussRules
+ {
+ GAUSS15,
+ GAUSS21,
+ GAUSS31,
+ GAUSS41,
+ GAUSS51,
+ GAUSS61
+ }
+
+ [Compact]
+ [CCode (cname="gsl_integration_workspace", cheader_filename="gsl/gsl_integration.h")]
+ public class IntegrationWorkspace
+ {
+ public size_t limit;
+ public size_t size;
+ public size_t nrmax;
+ public size_t i;
+ public size_t maximum_level;
+ public double* alist;
+ public double* blist;
+ public double* rlist;
+ public double* elist;
+ public size_t* order;
+ public size_t* level;
+
+ [CCode (cname="gsl_integration_workspace_alloc")]
+ public IntegrationWorkspace (size_t n);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_integration_qaws_table", cheader_filaname="gsl/gsl_integration.h")]
+ public class IntegrationQAWSTable
+ {
+ public double alpha;
+ public double beta;
+ public int mu;
+ public int nu;
+ public double[25] ri;
+ public double[25] rj;
+ public double[25] rg;
+ public double[25] rh;
+
+ [CCode (cname="gsl_integration_qaws_table_alloc")]
+ public IntegrationQAWSTable (double alpha, double beta, int mu, int nu);
+ public int @set (double alpha, double beta, int mu, int nu);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_integration_qawo_table", unref="gsl_integration_qawo_table_free", cheader_filename="gsl/gsl_integration.h")]
+ public class IntegrationQAWOTable
+ {
+ public size_t n;
+ public double omega;
+ public double L;
+ public double par;
+ public QAWO sine;
+ public double* chebmo;
+
+ [CCode (cname="gsl_integration_qawo_table_alloc")]
+ public IntegrationQAWOTable (double omega, double L, QAWO sine, size_t n);
+ public int @set (double omega, double L, QAWO sine);
+ public int set_length (double L);
+ }
+
+ [CCode (cname="gsl_integration", cheader_filename="gsl/gsl_integration.h")]
+ namespace Integration
+ {
+ public static void qk15 (Function* f, double a, double b, out double result, out double abserr, out double resabs, out double resasc);
+ public static void qk21 (Function* f, double a, double b, out double result, out double abserr, out double resabs, out double resasc);
+ public static void qk31 (Function* f, double a, double b, out double result, out double abserr, out double resabs, out double resasc);
+ public static void qk41 (Function* f, double a, double b, out double result, out double abserr, out double resabs, out double resasc);
+ public static void qk51 (Function* f, double a, double b, out double result, out double abserr, out double resabs, out double resasc);
+ public static void qk61 (Function* f, double a, double b, out double result, out double abserr, out double resabs, out double resasc);
+ public static void qcheb (Function* f, double a, double b, out double cheb12, out double cheb24);
+
+ [NoArrayLength]
+ public static void qk (int n, double[] xgk, double[] wg, double[] wgk, double[] fv1, double[] fv2, Function* f, double a, double b, out double result, out double abserr, out double resabs, double resasc);
+ public static int qng (Function* f, double a, double b, double epsabs, double epsrel, out double result, out double abserr, out size_t neval);
+ public static int qag (Function* f, double a, double b, double epsabs, double epsrel, size_t limit, int key, IntegrationWorkspace workspace, out double result, out double abserr);
+ public static int qagi (Function* f, double epsabs, double epsrel, size_t limit, IntegrationWorkspace workspace, out double result, out double abserr);
+ public static int qagiu (Function* f, double a, double epsabs, double epsrel, size_t limit, IntegrationWorkspace workspace, out double result, out double abserr);
+ public static int qagil (Function* f, double b, double epsabs, double epsrel, size_t limit, IntegrationWorkspace workspace, out double result, out double abserr);
+ public static int qags (Function* f, double a, double b, double epsabs, double epsrel, size_t limit, IntegrationWorkspace workspace, out double result, out double abserr);
+ [NoArrayLength]
+ public static int qagp (Function* f, double[] pts, size_t npts, double epsabs, double epsrel, size_t limit, IntegrationWorkspace workspace, out double result, out double abserr);
+ public static int qawc (Function* f, double a, double b, double c, double epsabs, double epsrel, size_t limit, IntegrationWorkspace workspace, out double result, out double abserr);
+ public static int qaws (Function* f, double a, double b, IntegrationQAWSTable t, double epsabs, double epsrel, size_t limit, IntegrationWorkspace workspace, out double result, out double abserr);
+ public static int qawo (Function* f, double a, double epsabs, double epsrel, size_t limit, IntegrationWorkspace workspace, IntegrationQAWOTable wf, out double result, out double abserr);
+ public static int qawf (Function* f, double a, double epsabs, size_t limit, IntegrationWorkspace workspace, IntegrationWorkspace cycle_workspace, IntegrationQAWOTable wf, out double result, out double abserr);
+ }
+
+
+ /*
+ * Random Number Generation
+ */
+ static delegate void RNGSetState (void *state, ulong seed);
+ static delegate ulong RNGGetState (void* state);
+ static delegate double RNGGetDouble (void* state);
+
+ [SimpleType]
+ [CCode (cname="gsl_rng_type", cheader_filename="gsl/gsl_rng.h")]
+ public struct RNGType
+ {
+ public string name;
+ public ulong max;
+ public ulong min;
+ public size_t size;
+ public RNGSetState @set;
+ public RNGGetState @get;
+ public RNGGetDouble get_double;
+ }
+
+ [CCode (lower_case_cprefix="gsl_rng_", cheader_filename="gsl/gsl_rng.h")]
+ namespace RNGTypes
+ {
+ public static RNGType* borosh13;
+ public static RNGType* coveyou;
+ public static RNGType* cmrg;
+ public static RNGType* fishman18;
+ public static RNGType* fishman20;
+ public static RNGType* fishman2x;
+ public static RNGType* gfsr4;
+ public static RNGType* knuthran;
+ public static RNGType* knuthran2;
+ public static RNGType* knuthran2002;
+ public static RNGType* lecuyer21;
+ public static RNGType* minstd;
+ public static RNGType* mrg;
+ public static RNGType* mt19937;
+ public static RNGType* mt19937_1999;
+ public static RNGType* mt19937_1998;
+ public static RNGType* r250;
+ public static RNGType* ran0;
+ public static RNGType* ran1;
+ public static RNGType* ran2;
+ public static RNGType* ran3;
+ public static RNGType* rand;
+ public static RNGType* rand48;
+ public static RNGType* random128_bsd;
+ public static RNGType* random128_glibc2;
+ public static RNGType* random128_libc5;
+ public static RNGType* random256_bsd;
+ public static RNGType* random256_glibc2;
+ public static RNGType* random256_libc5;
+ public static RNGType* random32_bsd;
+ public static RNGType* random32_glibc2;
+ public static RNGType* random32_libc5;
+ public static RNGType* random64_bsd;
+ public static RNGType* random64_glibc2;
+ public static RNGType* random64_libc5;
+ public static RNGType* random8_bsd;
+ public static RNGType* random8_glibc2;
+ public static RNGType* random8_libc5;
+ public static RNGType* random_bsd;
+ public static RNGType* random_glibc2;
+ public static RNGType* random_libc5;
+ public static RNGType* randu;
+ public static RNGType* ranf;
+ public static RNGType* ranlux;
+ public static RNGType* ranlux389;
+ public static RNGType* ranlxd1;
+ public static RNGType* ranlxd2;
+ public static RNGType* ranlxs0;
+ public static RNGType* ranlxs1;
+ public static RNGType* ranlxs2;
+ public static RNGType* ranmar;
+ public static RNGType* slatec;
+ public static RNGType* taus;
+ public static RNGType* taus2;
+ public static RNGType* taus113;
+ public static RNGType* transputer;
+ public static RNGType* tt800;
+ public static RNGType* uni;
+ public static RNGType* uni32;
+ public static RNGType* vax;
+ public static RNGType* waterman14;
+ public static RNGType* zuf;
+ public static RNGType* @default;
+ public static ulong default_seed;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_rng", cheader_filename="gsl/gsl_rng.h")]
+ public class RNG
+ {
+ public RNGType* type;
+ public void* state;
+
+ [CCode (cname="gsl_rng_alloc")]
+ public RNG (RNGType* T);
+ public void @set (ulong s);
+ public ulong @get ();
+ public double uniform ();
+ public double uniform_pos ();
+ public ulong uniform_int (ulong n);
+ public string name ();
+ public ulong max ();
+ public ulong min ();
+ public size_t size ();
+ public static RNGType* env_setup ();
+ public int memcpy (RNG src);
+ public RNG clone ();
+
+ [CCode (instance_pos=-1)]
+ public int fwrite (GLib.FileStream stream);
+ [CCode (instance_pos=-1)]
+ public int fread (GLib.FileStream stream);
+
+ public void print_state ();
+ }
+
+ [CCode (lower_case_cprefix="gsl_cdf_", cheader_filename="gsl/gsl_cdf.h")]
+ namespace CDF
+ {
+ public static double ugaussian_P (double x);
+ public static double ugaussian_Q (double x);
+
+ public static double ugaussian_Pinv (double P);
+ public static double ugaussian_Qinv (double Q);
+
+ public static double gaussian_P (double x, double sigma);
+ public static double gaussian_Q (double x, double sigma);
+
+ public static double gaussian_Pinv (double P, double sigma);
+ public static double gaussian_Qinv (double Q, double sigma);
+
+ public static double gamma_P (double x, double a, double b);
+ public static double gamma_Q (double x, double a, double b);
+
+ public static double gamma_Pinv (double P, double a, double b);
+ public static double gamma_Qinv (double Q, double a, double b);
+
+ public static double cauchy_P (double x, double a);
+ public static double cauchy_Q (double x, double a);
+
+ public static double cauchy_Pinv (double P, double a);
+ public static double cauchy_Qinv (double Q, double a);
+
+ public static double laplace_P (double x, double a);
+ public static double laplace_Q (double x, double a);
+
+ public static double laplace_Pinv (double P, double a);
+ public static double laplace_Qinv (double Q, double a);
+
+ public static double rayleigh_P (double x, double sigma);
+ public static double rayleigh_Q (double x, double sigma);
+
+ public static double rayleigh_Pinv (double P, double sigma);
+ public static double rayleigh_Qinv (double Q, double sigma);
+
+ public static double chisq_P (double x, double nu);
+ public static double chisq_Q (double x, double nu);
+
+ public static double chisq_Pinv (double P, double nu);
+ public static double chisq_Qinv (double Q, double nu);
+
+ public static double exponential_P (double x, double mu);
+ public static double exponential_Q (double x, double mu);
+
+ public static double exponential_Pinv (double P, double mu);
+ public static double exponential_Qinv (double Q, double mu);
+
+ public static double exppow_P (double x, double a, double b);
+ public static double exppow_Q (double x, double a, double b);
+
+ public static double tdist_P (double x, double nu);
+ public static double tdist_Q (double x, double nu);
+
+ public static double tdist_Pinv (double P, double nu);
+ public static double tdist_Qinv (double Q, double nu);
+
+ public static double fdist_P (double x, double nu1, double nu2);
+ public static double fdist_Q (double x, double nu1, double nu2);
+
+ public static double fdist_Pinv (double P, double nu1, double nu2);
+ public static double fdist_Qinv (double Q, double nu1, double nu2);
+
+ public static double beta_P (double x, double a, double b);
+ public static double beta_Q (double x, double a, double b);
+
+ public static double beta_Pinv (double P, double a, double b);
+ public static double beta_Qinv (double Q, double a, double b);
+
+ public static double flat_P (double x, double a, double b);
+ public static double flat_Q (double x, double a, double b);
+
+ public static double flat_Pinv (double P, double a, double b);
+ public static double flat_Qinv (double Q, double a, double b);
+
+ public static double lognormal_P (double x, double zeta, double sigma);
+ public static double lognormal_Q (double x, double zeta, double sigma);
+
+ public static double lognormal_Pinv (double P, double zeta, double sigma);
+ public static double lognormal_Qinv (double Q, double zeta, double sigma);
+
+ public static double gumbel1_P (double x, double a, double b);
+ public static double gumbel1_Q (double x, double a, double b);
+
+ public static double gumbel1_Pinv (double P, double a, double b);
+ public static double gumbel1_Qinv (double Q, double a, double b);
+
+ public static double gumbel2_P (double x, double a, double b);
+ public static double gumbel2_Q (double x, double a, double b);
+
+ public static double gumbel2_Pinv (double P, double a, double b);
+ public static double gumbel2_Qinv (double Q, double a, double b);
+
+ public static double weibull_P (double x, double a, double b);
+ public static double weibull_Q (double x, double a, double b);
+
+ public static double weibull_Pinv (double P, double a, double b);
+ public static double weibull_Qinv (double Q, double a, double b);
+
+ public static double pareto_P (double x, double a, double b);
+ public static double pareto_Q (double x, double a, double b);
+
+ public static double pareto_Pinv (double P, double a, double b);
+ public static double pareto_Qinv (double Q, double a, double b);
+
+ public static double logistic_P (double x, double a);
+ public static double logistic_Q (double x, double a);
+
+ public static double logistic_Pinv (double P, double a);
+ public static double logistic_Qinv (double Q, double a);
+
+ public static double binomial_P (uint k, double p, uint n);
+ public static double binomial_Q (uint k, double p, uint n);
+
+ public static double poisson_P (uint k, double mu);
+ public static double poisson_Q (uint k, double mu);
+
+ public static double geometric_P (uint k, double p);
+ public static double geometric_Q (uint k, double p);
+
+ public static double negative_binomial_P (uint k, double p, double n);
+ public static double negative_binomial_Q (uint k, double p, double n);
+
+ public static double pascal_P (uint k, double p, uint n);
+ public static double pascal_Q (uint k, double p, uint n);
+
+ public static double hypergeometric_P (uint k, uint n1, uint n2, uint t);
+ public static double hypergeometric_Q (uint k, uint n1, uint n2, uint t);
+ }
+
+
+ /*
+ * Quasi-Random Sequences
+ */
+ static delegate size_t QRNGStateSize (uint dimension);
+ static delegate int QRNGInitState (void* state, uint dimension);
+ static delegate int QRNGGetState2 (void* state, uint dimension, out double x);
+
+ [SimpleType]
+ [CCode (cname="gsl_qrng_type", cheader_filename="gsl/gsl_qrng.h")]
+ public struct QRNGType
+ {
+ public string name;
+ public uint max_dimension;
+ public QRNGStateSize state_size;
+ public QRNGInitState init_state;
+ public QRNGGetState2 @get;
+ }
+
+ [CCode (lower_case_cprefix="gsl_qrng_", cheader_filename="gsl/gsl_qrng.h")]
+ namespace QRNGAlgorithms
+ {
+ public static QRNGType* niederreiter_2;
+ public static QRNGType* sobol;
+ public static QRNGType* halton;
+ public static QRNGType* reversehalton;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_qrng", cheader_filename="gsl/gsl_qrng.h")]
+ public class QRNG
+ {
+ public QRNGType* type;
+ public uint dimension;
+ size_t state_size;
+ void* state;
+
+ [CCode (cname="gsl_qrng_alloc")]
+ public QRNG (QRNGType* T, uint d);
+ public void init ();
+ public int memcpy (QRNG src);
+ public QRNG clone ();
+ public string name ();
+ public size_t size ();
+ [NoArrayLength]
+ public int @get (double[] x);
+ }
+
+
+ /*
+ * Random Number Distributions
+ */
+ [CCode (lower_case_cprefix="gsl_ran_", cheader_filename="gsl/gsl_randist.h")]
+ namespace Randist
+ {
+ public static uint bernoulli (RNG r, double p);
+ public static double bernoulli_pdf (uint k, double p);
+
+ public static double beta (RNG r, double a, double b);
+ public static double beta_pdf (double x, double a, double b);
+
+ public static uint binomial (RNG r, double p, uint n);
+ public static uint binomial_knuth (RNG r, double p, uint n);
+ public static uint binomial_tpe (RNG r, double p, uint n);
+ public static double binomial_pdf (uint k, double p, uint n);
+
+ public static double exponential (RNG r, double mu);
+ public static double exponential_pdf (double x, double mu);
+
+ public static double exppow (RNG r, double a, double b);
+ public static double exppow_pdf (double x, double a, double b);
+
+ public static double cauchy (RNG r, double a);
+ public static double cauchy_pdf (double x, double a);
+
+ public static double chisq (RNG r, double nu);
+ public static double chisq_pdf (double x, double nu);
+
+ public static void dirichlet (RNG r, size_t K, out double alpha, out double theta);
+ public static double dirichlet_pdf (size_t K, out double alpha, out double theta);
+ public static double dirichlet_lnpdf (size_t K, out double alpha, out double theta);
+
+ public static double erlang (RNG r, double a, double n);
+ public static double erlang_pdf (double x, double a, double n);
+
+ public static double fdist (RNG r, double nu1, double nu2);
+ public static double fdist_pdf (double x, double nu1, double nu2);
+
+ public static double flat (RNG r, double a, double b);
+ public static double flat_pdf (double x, double a, double b);
+
+ public static double gamma (RNG r, double a, double b);
+ public static double gamma_int (RNG r, uint a);
+ public static double gamma_pdf (double x, double a, double b);
+ public static double gamma_mt (RNG r, double a, double b);
+ public static double gamma_knuth (RNG r, double a, double b);
+
+ public static double gaussian (RNG r, double sigma);
+ public static double gaussian_ratio_method (RNG r, double sigma);
+ public static double gaussian_ziggurat (RNG r, double sigma);
+ public static double gaussian_pdf (double x, double sigma);
+
+ public static double ugaussian (RNG r);
+ public static double ugaussian_ratio_method (RNG r);
+ public static double ugaussian_pdf (double x);
+
+ public static double gaussian_tail (RNG r, double a, double sigma);
+ public static double gaussian_tail_pdf (double x, double a, double sigma);
+
+ public static double ugaussian_tail (RNG r, double a);
+ public static double ugaussian_tail_pdf (double x, double a);
+
+ public static void bivariate_gaussian (RNG r, double sigma_x, double sigma_y, double rho, out double x, out double y);
+ public static double bivariate_gaussian_pdf (double x, double y, double sigma_x, double sigma_y, double rho);
+
+ public static double landau (RNG r);
+ public static double landau_pdf (double x);
+
+ public static uint geometric (RNG r, double p);
+ public static double geometric_pdf (uint k, double p);
+
+ public static uint hypergeometric (RNG r, uint n1, uint n2, uint t);
+ public static double hypergeometric_pdf (uint k, uint n1, uint n2, uint t);
+
+ public static double gumbel1 (RNG r, double a, double b);
+ public static double gumbel1_pdf (double x, double a, double b);
+
+ public static double gumbel2 (RNG r, double a, double b);
+ public static double gumbel2_pdf (double x, double a, double b);
+
+ public static double logistic (RNG r, double a);
+ public static double logistic_pdf (double x, double a);
+
+ public static double lognormal (RNG r, double zeta, double sigma);
+ public static double lognormal_pdf (double x, double zeta, double sigma);
+
+ public static uint logarithmic (RNG r, double p);
+ public static double logarithmic_pdf (uint k, double p);
+
+ [NoArrayLength]
+ public static void multinomial (RNG r, size_t K, uint N, double[] p, uint[] n);
+ [NoArrayLength]
+ public static double multinomial_pdf (size_t K, double[] p, uint[] n);
+ [NoArrayLength]
+ public static double multinomial_lnpdf (size_t K, double[] p, uint[] n);
+
+ public static uint negative_binomial (RNG r, double p, double n);
+ public static double negative_binomial_pdf (uint k, double p, double n);
+
+ public static uint pascal (RNG r, double p, uint n);
+ public static double pascal_pdf (uint k, double p, uint n);
+
+ public static double pareto (RNG r, double a, double b);
+ public static double pareto_pdf (double x, double a, double b);
+
+ public static uint poisson (RNG r, double mu);
+ [NoArrayLength]
+ public static void poisson_array (RNG r, size_t n, uint[] array, double mu);
+ public static double poisson_pdf (uint k, double mu);
+
+ public static double rayleigh (RNG r, double sigma);
+ public static double rayleigh_pdf (double x, double sigma);
+
+ public static double rayleigh_tail (RNG r, double a, double sigma);
+ public static double rayleigh_tail_pdf (double x, double a, double sigma);
+
+ public static double tdist (RNG r, double nu);
+ public static double tdist_pdf (double x, double nu);
+
+ public static double laplace (RNG r, double a);
+ public static double laplace_pdf (double x, double a);
+
+ public static double levy (RNG r, double c, double alpha);
+ public static double levy_skew (RNG r, double c, double alpha, double beta);
+
+ public static double weibull (RNG r, double a, double b);
+ public static double weibull_pdf (double x, double a, double b);
+
+ public static void dir_2d (RNG r, out double x, out double y);
+ public static void dir_2d_trig_method (RNG r, out double x, out double y);
+ public static void dir_3d (RNG r, out double x, out double y, out double z);
+ public static void dir_nd (RNG r, size_t n, out double x);
+
+ public static void shuffle (RNG r, void* b, size_t nmembm, size_t size);
+ public static int choose (RNG r, void* dest, size_t k, void* src, size_t n, size_t size);
+ public static void sample (RNG r, void* dest, size_t k, void* src, size_t n, size_t size);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_ran_discrete_t", cprefix="gsl_ran_discrete_", cheader_filename="gsl/gsl_randist.h")]
+ public class RanDiscrete
+ {
+ public size_t K;
+ public size_t* A;
+ public double* F;
+
+ [CCode (cname="gsl_ran_discrete_preproc")]
+ public RanDiscrete (size_t K, double* P);
+ [CCode (cname="gsl_ran_discrete")]
+ public size_t discrete (RNG g);
+ [CCode (instance_pos=-1)]
+ public double pdf (size_t k);
+ }
+
+
+ /*
+ * Statistics
+ */
+ [CCode (lower_case_cprefix="gsl_stats_", cheader_filename="gsl/gsl_statistics.h")]
+ namespace Stats
+ {
+ [NoArrayLength]
+ public static double mean (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double variance (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double variance_m (double[] data, size_t stride, size_t n, double mean);
+ [NoArrayLength]
+ public static double sd (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double sd_m (double[] data, size_t stride, size_t n, double mean);
+ [NoArrayLength]
+ public static double tss (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double tss_m (double[] data, size_t stride, size_t n, double mean);
+ [NoArrayLength]
+ public static double variance_with_fixed_mean (double[] data, size_t stride, size_t n, double mean);
+ [NoArrayLength]
+ public static double sd_with_fixed_mean (double[] data, size_t stride, size_t n, double mean);
+ [NoArrayLength]
+ public static double absdev (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double absdev_m (double[] data, size_t stride, size_t n, double mean);
+ [NoArrayLength]
+ public static double skew (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double skew_m_sd (double[] data, size_t stride, size_t n, double mean, double sd);
+ [NoArrayLength]
+ public static double kurtosis (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double kurtosis_m_sd (double[] data, size_t stride, size_t n, double mean, double sd);
+ [NoArrayLength]
+ public static double lag1_autocorrelation (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double lag1_autocorrelation_m (double[] data, size_t stride, size_t n, double mean);
+ [NoArrayLength]
+ public static double covariance (double[] data1, size_t stride1, double[] data2, size_t stride2, size_t n);
+ [NoArrayLength]
+ public static double covariance_m (double[] data1, size_t stride1, double[] data2, size_t stride2, size_t n, double mean1, double mean2);
+ [NoArrayLength]
+ public static double correlation (double[] data1, size_t stride1, double[] data2, size_t stride2, size_t n);
+
+ [NoArrayLength]
+ public static double wmean (double[] w, size_t wstride, double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double wvariance (double[] w, size_t wstride, double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double wvariance_m (double[] w, size_t wstride, double[] data, size_t stride, size_t n, double wmean);
+ [NoArrayLength]
+ public static double wsd (double[] w, size_t wstride, double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double wsd_m (double[] w, size_t wstride, double[] data, size_t stride, size_t n, double wmean);
+ [NoArrayLength]
+ public static double wtss (double[] w, size_t wstride, double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double wtss_m (double[] w, size_t wstride, double[] data, size_t stride, size_t n, double mean);
+ [NoArrayLength]
+ public static double wvariance_with_fixed_mean (double[] w, size_t wstride, double[] data, size_t stride, size_t n, double wmean);
+ [NoArrayLength]
+ public static double wsd_with_fixed_mean (double[] w, size_t wstride, double[] data, size_t stride, size_t n, double wmean);
+ [NoArrayLength]
+ public static double wabsdev (double[] w, size_t wstride, double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double wabsdev_m (double[] w, size_t wstride, double[] data, size_t stride, size_t n, double wmean);
+ [NoArrayLength]
+ public static double wskew (double[] w, size_t wstride, double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double wskew_m_sd (double[] w, size_t wstride, double[] data, size_t stride, size_t n, double wmean, double wsd);
+ [NoArrayLength]
+ public static double wkurtosis (double[] w, size_t wstride, double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double wkurtosis_m_sd (double[] w, size_t wstride, double[] data, size_t stride, size_t n, double wmean, double wsd);
+
+ [NoArrayLength]
+ public static double max (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double min (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static void minmax (out double min, out double max, double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static size_t max_index (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static size_t min_index (double[] data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static void minmax_index (out size_t min, out size_t max, double[] data, size_t stride, size_t n);
+
+ [NoArrayLength]
+ public static double median_from_sorted_data (double[] sorted_data, size_t stride, size_t n);
+ [NoArrayLength]
+ public static double quantile_from_sorted_data (double[] sorted_data, size_t stride, size_t n, double f);
+ }
+
+
+ /*
+ * Histograms
+ */
+ [Compact]
+ [CCode (cname="gsl_histogram", cheader_filename="gsl/gsl_histogram.h")]
+ public class Histogram
+ {
+ public size_t n;
+ public double* range;
+ public double* bin;
+
+ [CCode (cname="gsl_histogram_alloc")]
+ public Histogram (size_t n);
+ [CCode (cname="gsl_histogram_calloc")]
+ public Histogram.with_zeros (size_t n);
+ [CCode (cname="gsl_histogram_calloc_uniform")]
+ public Histogram.uniform (size_t n, double xmin, double xmax);
+ [NoArrayLength]
+ [CCode (cname="gsl_histogram_calloc_range")]
+ public Histogram.range (size_t n, double[] range);
+
+ public int increment (double x);
+ public int accumulate (double x, double weight);
+ public int find (double x, out size_t i);
+ public double @get (size_t i);
+ public int get_range (size_t i, out double lower, out double upper);
+ public double max ();
+ public double min ();
+ public size_t bins ();
+
+ public void reset ();
+
+ public int set_ranges (double[] range);
+ public int set_ranges_uniform (double xmin, double xmax);
+
+ public int memcpy (Histogram source);
+ public Histogram clone();
+
+ public double max_val ();
+ public size_t max_bin ();
+ public double min_val ();
+ public size_t min_bin ();
+
+ public int equal_bins_p (Histogram h2);
+ public int add (Histogram h2);
+ public int sub (Histogram h2);
+ public int mul (Histogram h2);
+ public int div (Histogram h2);
+ public int scale (double scale);
+ public int shift (double shift);
+
+ public double sigma ();
+ public double mean ();
+ public double sum ();
+
+ [CCode (instance_pos=-1)]
+ public int fwrite (GLib.FileStream stream);
+ [CCode (instance_pos=-1)]
+ public int fread (GLib.FileStream stream);
+ public static int fprintf (GLib.FileStream stream, Histogram h, string range_format, string bin_format);
+ [CCode (instance_pos=-1)]
+ public int fscanf (GLib.FileStream stream);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_histogram_pdf", cheader_filename="gsl/gsl_histogram.h")]
+ public class HistogramPDF
+ {
+ public size_t n;
+ public double* range;
+ public double* sum ;
+
+ [CCode (cname="gsl_histogram_pdf_alloc")]
+ public HistogramPDF (size_t n);
+ public int init (Histogram h);
+ public double sample (double r);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_histogram2d", cheader_filename="gsl/gsl_histogram2d.h")]
+ public class Histogram2d
+ {
+ public size_t nx;
+ public size_t ny;
+ public double* xrange;
+ public double* yrange;
+ public double* bin;
+
+ [CCode (cname="gsl_histogram2d_alloc")]
+ public Histogram2d (size_t nx, size_t ny);
+ [CCode (cname="gsl_histogram2d_calloc")]
+ public Histogram2d.with_zeros (size_t nx, size_t ny);
+ [CCode (cname="gsl_histogram2d_calloc_uniform")]
+ public Histogram2d.uniform (size_t nx, size_t ny, double xmin, double xmax, double ymin, double ymax);
+ [CCode (cname="gsl_histogram2d_calloc_range")]
+ public Histogram2d.range (size_t nx, size_t ny, out double xrange, out double yrange);
+
+ public int increment (double x, double y);
+ public int accumulate (double x, double y, double weight);
+ public int find (double x, double y, out size_t i, out size_t j);
+ public double @get (size_t i, size_t j);
+ public int get_xrange (size_t i, out double xlower, out double xupper);
+ public int get_yrange (size_t j, out double ylower, out double yupper);
+
+ public double xmax ();
+ public double xmin ();
+ public double ymax ();
+ public double ymin ();
+
+ public void reset ();
+
+ public int set_ranges_uniform (double xmin, double xmax, double ymin, double ymax);
+ public int set_ranges (double[] xrange, double[] yrange);
+
+ public int memcpy (Histogram2d source);
+ public Histogram2d clone ();
+
+ public double max_val();
+ public void max_bin (out size_t i, out size_t j);
+ public double min_val();
+ public void min_bin (out size_t i, out size_t j);
+
+ public double xmean ();
+ public double ymean ();
+ public double xsigma ();
+ public double ysigma ();
+ public double cov ();
+
+ public double sum ();
+ public int equal_bins_p (Histogram h2) ;
+ public int add (Histogram h2);
+ public int sub (Histogram h2);
+ public int mul (Histogram2d h2);
+ public int div (Histogram2d h2);
+ public int scale (double scale);
+ public int shift (double shift);
+
+ [CCode (instance_pos=-1)]
+ public int fwrite (GLib.FileStream stream);
+ [CCode (instance_pos=-1)]
+ public int fread (GLib.FileStream stream);
+ public static int fprintf (GLib.FileStream stream, Histogram h, string range_format, string bin_format);
+ [CCode (instance_pos=-1)]
+ public int fscanf (GLib.FileStream stream);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_histogram2d_pdf", cheader_filename="gsl/gsl_histogram2d.h")]
+ public class Histogram2dPDF
+ {
+ public size_t nx;
+ public size_t ny;
+ public double* xrange;
+ public double* yrange;
+ public double* sum;
+
+ [CCode (cname="gsl_histogram2d_pdf_alloc")]
+ public Histogram2dPDF (size_t nx, size_t ny);
+ public int init (Histogram2d h);
+ public int sample (double r1, double r2, out double x, out double y);
+ }
+
+
+ /*
+ * N-Tuples
+ */
+ static delegate int NTupleFunc (void* ntuple_data, void* params);
+
+ [SimpleType]
+ [CCode (cname="gsl_ntuple_select_fn", cheader_filename="gsl/gsl_ntuple.h")]
+ public struct NTupleSelectFn
+ {
+ public NTupleFunc function;
+ public void* params;
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_ntuple_value_fn", cheader_filename="gsl/gsl_ntuple.h")]
+ public struct NTupleValueFn
+ {
+ public NTupleFunc function;
+ public void* params;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_ntuple", free_function="gsl_ntuple_close", cheader_filename="gsl/gsl_ntuple.h")]
+ public class NTuple
+ {
+ public GLib.FileStream file;
+ public void* ntrupel_data;
+ public size_t size;
+
+ public static NTuple open (string filename, void* ntuple_data, size_t size);
+ public static NTuple create (string filename, void* ntuple_data, size_t size);
+ public int write ();
+ public int read ();
+ public int bookdata ();
+
+ public static int project (Histogram h, NTuple ntuple, NTupleValueFn* value_func, NTupleSelectFn* select_func);
+ }
+
+
+ /*
+ * Monte Carlo Integration
+ */
+ [CCode (cprefix="GSL_VEGAS_MODE_", cheader_filename="gsl/gsl_monte_vegas.h")]
+ public enum MonteVegasMode
+ {
+ IMPORTANCE,
+ IMPORTANCE_ONLY,
+ STRATIFIED
+ }
+
+ [NoArrayLength]
+ static delegate double MonteFunc (double[] x_array, size_t dim, void* params);
+
+ [SimpleType]
+ [CCode (cname="gsl_monte_function", cheader_filanema="gsl/gsl_monte.h")]
+ public struct MonteFunction
+ {
+ public MonteFunc f;
+ public size_t dim;
+ public void* params;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_monte_plain_state", cprefix="gsl_monte_plain_", cheader_filename="gsl/gsl_monte_plain.h")]
+ public class MontePlainState
+ {
+ public size_t dim;
+ public double* x;
+
+ [CCode (cname="gsl_monte_plain_alloc")]
+ public MontePlainState (size_t dim);
+ public int init ();
+ [NoArrayLength]
+ public static int integrate (MonteFunction* f, double[] xl, double[] xu, size_t dim, size_t calls, RNG r, MontePlainState state, out double result, out double abserr);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_monte_miser_state", cprefix="gsl_monte_miser_", cheader_filename="gsl/gsl_monte_miser.h")]
+ public class MonteMiserState
+ {
+ public size_t min_calls;
+ public size_t min_calls_per_bisection;
+ public double dither;
+ public double estimate_frac;
+ public double alpha;
+ public size_t dim;
+ public int estimate_style;
+ public int depth;
+ public int verbose;
+ public double* x;
+ public double* xmid;
+ public double* sigma_l;
+ public double* sigma_r;
+ public double* fmax_l;
+ public double* fmax_r;
+ public double* fmin_l;
+ public double* fmin_r;
+ public double* fsum_l;
+ public double* fsum_r;
+ public double* fsum2_l;
+ public double* fsum2_r;
+ public size_t* hits_l;
+ public size_t* hits_r;
+
+ [CCode (cname="gsl_monte_miser_alloc")]
+ public MonteMiserState (size_t dim);
+ public int init ();
+ [NoArrayLength]
+ public static int integrate (MonteFunction* f, double[] xl, double[] xh, size_t dim, size_t calls, RNG r, MonteMiserState state, out double result, out double abserr);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_monte_vegas_state", cprefix="gsl_monte_vegas_", cheader_filename="gsl/gsl_monte_vegas.h")]
+ public class MonteVegasState
+ {
+ public size_t dim;
+ public size_t bins_max;
+ public uint bins;
+ public uint boxes;
+ public double* xi;
+ public double* xin;
+ public double* delx;
+ public double* weight;
+ public double vol;
+ public double* x;
+ public int* bin;
+ public int* box;
+ public double* d;
+ public double alpha;
+ public int mode;
+ public int verbose;
+ public uint iterations;
+ public int stage;
+ public double jac;
+ public double wtd_int_sum;
+ public double sum_wgts;
+ public double chi_sum;
+ public double chisq;
+ public double result;
+ public double sigma;
+ public uint it_start;
+ public uint it_num;
+ public uint samples;
+ public uint calls_per_box;
+ public GLib.FileStream ostream;
+
+ [CCode (cname="gsl_monte_vegas_alloc")]
+ public MonteVegasState (size_t dim);
+ public int init ();
+ [NoArrayLength]
+ public static int integrate (MonteFunction* f, double[] xl, double[] xu, size_t dim, size_t calls, RNG r, MonteVegasState state, out double result, out double abserr);
+ }
+
+
+ /*
+ * Simulated Annealing
+ */
+ [SimpleType]
+ [CCode (cname="gsl_siman_params_t", cheader_filename="gsl/gsl_siman.h")]
+ public struct SimanParams
+ {
+ public int n_tries;
+ public int iters_fixed_T;
+ public double step_size;
+ public double k;
+ public double t_initial;
+ public double mu_t;
+ public double t_min;
+ }
+
+ [CCode (lower_case_cprefix="gsl_siman_", cheader_filename="gsl/gsl_siman.h")]
+ namespace Siman
+ {
+ public static delegate double Efunc_t (void *xp);
+ public static delegate void step_t (RNG r, void *xp, double step_size);
+ public static delegate double metric_t (void *xp, void* yp);
+ public static delegate void print_t (void* xp);
+ public static delegate void copy_t (void* source, void* dest);
+ public static delegate void copy_construct_t (void* xp);
+ public static delegate void destroy_t (void* xp);
+
+ public static void solve(RNG r, void *x0_p, Efunc_t Ef, step_t take_step, metric_t distance, print_t print_position, copy_t copyfunc, copy_construct_t copy_constructor, destroy_t destructor, size_t element_size, SimanParams params);
+ public static void solve_many (RNG r, void *x0_p, Efunc_t Ef, step_t take_step, metric_t distance, print_t print_position, size_t element_size, SimanParams params);
+ }
+
+
+ /*
+ * Ordinary Differential Equations
+ */
+ [CCode (cprefix="GSL_ODEIV_HADJ_", cheader_filename="gsl/gsl_odeiv.h")]
+ public enum OdeivHadjustTypes
+ {
+ INC,
+ NIL,
+ DEC
+ }
+
+ [NoArrayLength]
+ static delegate int OdeivFunction (double t, double[] y, double[] dydt, void* params);
+ [NoArrayLength]
+ static delegate int OdeivJacobian (double t, double[] y, double[] dfdy, double[] dfdt, void* params);
+ static delegate void* OdeivStepAlloc (size_t dim);
+ [NoArrayLength]
+ static delegate int OdeivStepApply (void* state, size_t dim, double t, double h, double[] y, double[] yerr, double[] dydt_in, double[] dydt_out, OdeivSystem* dydt);
+ static delegate int OdeivStepReset (void* state, size_t dim);
+ static delegate uint OdeivStepOrder (void* state);
+ static delegate void OdeivStepFree (void* state);
+ static delegate void* OdeivControlAlloc ();
+ static delegate int OdeivControlInit (void* state, double eps_abs, double eps_rel, double a_y, double a_dydt);
+ [NoArrayLength]
+ static delegate int OdeivControlHadjust (void* state, size_t dim, uint ord, double[] y, double[] yerr, double[] yp, double[] h);
+ static delegate void OdeivControlFree (void* state);
+
+ [SimpleType]
+ [CCode (cname="gsl_odeiv_system", cheader_filename="gsl/gsl_odeiv.h")]
+ public struct OdeivSystem
+ {
+ public OdeivFunction function;
+ public OdeivJacobian jacobian;
+ public size_t dimension;
+ public void* params;
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_odeiv_step_type", cheader_filename="gsl/gsl_odeiv.h")]
+ public struct OdeivStepType
+ {
+ public string name;
+ public int can_use_dydt_in;
+ public int gives_exact_dydt_out;
+ public OdeivStepAlloc alloc;
+ public OdeivStepApply apply;
+ public OdeivStepReset reset;
+ public OdeivStepOrder order;
+ public OdeivStepFree free;
+ }
+
+ [CCode (lower_case_cprefix="gsl_odeiv_step_", cheader_filename="gsl/gsl_odeiv.h")]
+ namespace OdeivStepTypes
+ {
+ public static OdeivStepType* rk2;
+ public static OdeivStepType* rk4;
+ public static OdeivStepType* rkf45;
+ public static OdeivStepType* rkck;
+ public static OdeivStepType* rk8pd;
+ public static OdeivStepType* rk2imp;
+ public static OdeivStepType* rk2simp;
+ public static OdeivStepType* rk4imp;
+ public static OdeivStepType* bsimp;
+ public static OdeivStepType* gear1;
+ public static OdeivStepType* gear2;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_odeiv_step", cheader_filename="gsl/gsl_odeiv.h")]
+ public class OdeivStep
+ {
+ public OdeivStepType* type;
+ public size_t dimension;
+ public void* state;
+
+ [CCode (cname="gsl_odeiv_step_alloc")]
+ public OdeivStep (OdeivStepType* T, size_t dim);
+ public int reset ();
+ public string name ();
+ public uint order ();
+
+ [NoArrayLength]
+ public int apply (double t, double h, double[] y, double[] yerr, double[] dydt_in, double[] dydt_out, OdeivSystem* dydt);
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_odeiv_control_type", cheader_filename="gsl/gsl_odeiv.h")]
+ public struct OdeivControlType
+ {
+ public string name;
+ public OdeivControlAlloc alloc;
+ public OdeivControlInit init;
+ public OdeivControlHadjust hadjust;
+ public OdeivControlFree free;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_odeiv_control", cheader_filename="gsl/gsl_odeiv.h")]
+ public class OdeivControl
+ {
+ public OdeivControlType* type;
+ public void* state;
+
+ [CCode (cname="gsl_odeiv_control_alloc")]
+ public OdeivControl (OdeivControlType* T);
+ [CCode (cname="gsl_odeiv_control_standard_new")]
+ public OdeivControl.standard (double eps_abs, double eps_rel, double a_y, double a_dydt);
+ [CCode (cname="gsl_odeiv_control_y_new")]
+ public OdeivControl.y (double eps_abs, double eps_rel);
+ [CCode (cname="gsl_odeiv_control_yp_new")]
+ public OdeivControl.yp (double eps_abs, double eps_rel);
+ [CCode (cname="gsl_odeiv_control_scaled_new")]
+ public OdeivControl.scaled (double eps_abs, double eps_rel, double a_y, double a_dydt, double[] scale_abs);
+
+ public int init (double eps_abs, double eps_rel, double a_y, double a_dydt);
+ public int hadjust (OdeivStep s, out double y, out double yerr, out double dydt, out double h);
+ public string name ();
+ }
+
+ [Compact]
+ [CCode (cname="gsl_odeiv_evolve", cheader_filename="gsl/gsl_odeiv.h")]
+ public class OdeivEvolve
+ {
+ public size_t dimension;
+ public double* y0;
+ public double* yerr;
+ public double* dydt_in;
+ public double* dydt_out;
+ public double last_step;
+ public ulong count;
+ public ulong failed_steps;
+
+ [CCode (cname="gsl_odeiv_evolve_alloc")]
+ public OdeivEvolve (size_t dim);
+ [NoArrayLength]
+ public int apply (OdeivControl con, OdeivStep step, OdeivSystem* dydt, double[] t, double t1, double[] h, double[] y);
+ public int reset ();
+ }
+
+
+ /*
+ * Interpolation
+ */
+ static delegate void* InterpAlloc (size_t size);
+ [NoArrayLength]
+ static delegate int InterpInit (void* t, double[] xa, double[] ya, size_t size);
+ [NoArrayLength]
+ static delegate int InterpEval (void* t, double[] xa, double[] ya, size_t size, double x, InterpAccel* i, out double y);
+ [NoArrayLength]
+ static delegate int InterpEvalDeriv (void* t, double[] xa, double[] ya, size_t size, double x, InterpAccel* i, out double y_p);
+ [NoArrayLength]
+ static delegate int InterpEvalDeriv2 (void* t, double[] xa, double[] ya, size_t size, double x, InterpAccel* i, out double y_pp);
+ [NoArrayLength]
+ static delegate int InterpEvalInteg (void* t, double[] xa, double[] ya, size_t size, InterpAccel* i, double a, double b, out double result);
+ static delegate void InterpFree (void* t);
+
+ [Compact]
+ [CCode (cname="gsl_interp_accel", cheader_filname="gsl/gsl_interp.h")]
+ public class InterpAccel
+ {
+ public size_t cache;
+ public size_t miss_count;
+ public size_t hit_count;
+
+ [CCode (cname="gsl_interp_accel_alloc")]
+ public InterpAccel ();
+ public size_t find (double[] x_array, double x);
+ public int reset ();
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_interp_type", cheader_filename="gsl/gsl_interp.h")]
+ public struct InterpType
+ {
+ public string name;
+ public uint min_size;
+ public InterpAlloc alloc;
+ public InterpInit init;
+ public InterpEval eval;
+ public InterpEvalDeriv eval_deriv;
+ public InterpEvalDeriv2 eval_deriv2;
+ public InterpEvalInteg eval_integ;
+ public InterpFree free;
+ }
+
+ [CCode (lower_case_cprefix="gsl_interp_", cheader_filename="gsl/gsl_interp.h")]
+ namespace InterpTypes
+ {
+ public static InterpType* linear;
+ public static InterpType* polynomial;
+ public static InterpType* cspline;
+ public static InterpType* cspline_periodic;
+ public static InterpType* akima;
+ public static InterpType* akima_periodic;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_interp", cheader_filename="gsl/gsl_interp.h")]
+ public class Interp
+ {
+ InterpType* type;
+ public double xmin;
+ public double xmax;
+ public size_t size;
+ public void* state;
+
+ [CCode (cname="gsl_interp_alloc")]
+ public Interp (InterpType T, size_t n);
+ [NoArrayLength]
+ public int init (double[] xa, double[] ya, size_t size);
+ public string name ();
+ public uint min_size ();
+ [NoArrayLength]
+ public int eval_e (double[] xa, double[] ya, double x, InterpAccel a, out double y);
+ [NoArrayLength]
+ public double eval (double[] xa, double[] ya, double x, InterpAccel a);
+ [NoArrayLength]
+ public int eval_deriv_e (double[] xa, double[] ya, double x, InterpAccel a, out double d);
+ [NoArrayLength]
+ public double eval_deriv (double[] xa, double[] ya, double x, InterpAccel a);
+ [NoArrayLength]
+ public int eval_deriv2_e (double[] xa, double[] ya, double x, InterpAccel a, out double d2);
+ [NoArrayLength]
+ public double eval_deriv2 (double[] xa, double[] ya, double x, InterpAccel a);
+ [NoArrayLength]
+ public int eval_integ_e (double[] xa, double[] ya, double a, double b, InterpAccel acc, out double result);
+ [NoArrayLength]
+ public double eval_integ (double[] xa, double[] ya, double a, double b, InterpAccel acc);
+ [NoArrayLength]
+ public static size_t bsearch(double[] x_array, double x, size_t index_lo, size_t index_hi);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_spline", cheader_filename="gsl/gsl_spline.h")]
+ public class Spline
+ {
+ public Interp interp;
+ public double* x;
+ public double* y;
+ public size_t size;
+
+ [CCode (cname="gsl_spline_alloc")]
+ public Spline (InterpType* T, size_t size);
+ [NoArrayLength]
+ public int init (double[] xa, double[] ya, size_t size);
+ public string name ();
+ public uint min_size ();
+ public int eval_e (double x, InterpAccel a, out double y);
+ public double eval (double x, InterpAccel a);
+ public int eval_deriv_e (double x, InterpAccel a, out double y);
+ public double eval_deriv (double x, InterpAccel a);
+ public int eval_deriv2_e (double x, InterpAccel a, out double y);
+ public double eval_deriv2 (double x, InterpAccel a);
+ public int eval_integ_e (double a, double b, InterpAccel acc, out double y);
+ public double eval_integ (double a, double b, InterpAccel acc);
+ }
+
+ /*
+ * Numerical Differentiation
+ */
+ [CCode (lower_case_cprefix="gsl_deriv_", cheader_fileame="gsl/gsl_deriv.h")]
+ namespace Deriv
+ {
+ public static int central (Function* f, double x, double h, out double result, out double abserr);
+ public static int backward (Function* f, double x, double h, out double result, out double abserr);
+ public static int forward (Function* f, double x, double h, out double result, out double abserr);
+ }
+
+
+ /*
+ * Chebyshev Approximations
+ */
+ [Compact]
+ [CCode (cname="gsl_cheb_series", cprefix="gsl_cheb_", cheader_filename="gsl/gsl_chebyshev.h")]
+ public class ChebSeries
+ {
+ public double* c;
+ public size_t order;
+ public double a;
+ public double b;
+ public size_t order_sp;
+ public double *f;
+
+ [CCode (cname="gsl_cheb_alloc")]
+ public ChebSeries (size_t order);
+ public int init (Function* func, double a, double b);
+ public double eval (double x);
+ public int eval_err (double x, out double result, out double abserr);
+ public double eval_n (size_t order, double x);
+ public int eval_n_err (size_t order, double x, out double result, out double abserr);
+ public double eval_mode (double x, Mode mode);
+ public int eval_mode_e (double x, Mode mode, out double result, out double abserr);
+ public int calc_deriv (ChebSeries cs);
+ public int calc_integ (ChebSeries cs);
+ }
+
+
+ /*
+ * Series Acceleration
+ */
+ [Compact]
+ [CCode (cname="gsl_sum_levin_u_workspace", free_function="gsl_sum_levin_u_free", cheader_filename="gsl/gsl_sum.h")]
+ public class SumLevinUWorkspace
+ {
+ public size_t size;
+ public size_t i;
+ public size_t terms_used;
+ public double sum_plain;
+ public double* q_num;
+ public double* q_den;
+ public double* dq_num;
+ public double* dq_den;
+ public double* dsum;
+
+ [CCode (cname="gsl_sum_levin_u_alloc")]
+ public SumLevinUWorkspace (size_t n);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sum_levin_u_", cheader_filename="gsl/gsl_sum.h")]
+ namespace SumLevinU
+ {
+ public static int accel (double[] array, SumLevinUWorkspace w, out double sum_accel, out double abserr);
+ public static int minmax (double[] array, size_t min_terms, size_t max_terms, SumLevinUWorkspace w, out double sum_accel, out double abserr);
+ public static int step (double term, size_t n, size_t nmax, SumLevinUWorkspace w, out double sum_accel);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_sum_levin_utrunc_workspace", free_function="gsl_sum_levin_utrunc_free", cheader_filename="gsl/gsl_sum.h")]
+ public class SumLevinUtruncWorkspace
+ {
+ public size_t size;
+ public size_t i;
+ public size_t terms_used;
+ public double sum_plain;
+ public double* q_num;
+ public double* q_den;
+ public double* dsum;
+
+ [CCode (cname="gsl_sum_levin_utrunc_alloc")]
+ public SumLevinUtruncWorkspace (size_t n);
+ }
+
+ [CCode (lower_case_cprefix="gsl_sum_levin_utrunc_", cheader_filename="gsl/gsl_sum.h")]
+ namespace SumLevinUtrunc
+ {
+ public static int accel (double[] array, SumLevinUtruncWorkspace w, out double sum_accel, out double abserr_trunc);
+ public static int minmax (double[] array, size_t min_terms, size_t max_terms, SumLevinUtruncWorkspace w, out double sum_accel, out double abserr_trunc);
+ public static int step (double term, size_t n, SumLevinUtruncWorkspace w, out double sum_accel);
+ }
+
+
+ /*
+ * Wavelet Transforms
+ */
+ public enum WaveletDirection
+ {
+ forward = 1,
+ backward = -1
+ }
+
+ static delegate int WaveletInit (double** h1, double** g1, double** h2, double** g2, size_t* nc, size_t* offset, size_t member);
+
+ [SimpleType]
+ [CCode (cname="gsl_wavelet_type", cheader_filename="gsl/gsl_wavelet.h")]
+ public struct WaveletType
+ {
+ public string name;
+ public WaveletInit init;
+ }
+
+ [CCode (lower_case_cprefix="gsl_wavelet_", cheader_filename="gsl/gsl_wavelet.h")]
+ namespace WaveletTypes
+ {
+ public static WaveletType* daubechies;
+ public static WaveletType* daubechies_centered;
+ public static WaveletType* haar;
+ public static WaveletType* haar_centered;
+ public static WaveletType* bspline;
+ public static WaveletType* bspline_centered;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_wavelet_workspace", cheader_filename="gsl/gsl_wavelet.h")]
+ public class WaveletWorkspace
+ {
+ public double* scratch;
+ public size_t n;
+
+ [CCode (cname="gsl_wavelet_workspace_alloc")]
+ public WaveletWorkspace (size_t n);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_wavelet", cheader_filename="gsl/gsl_wavelet.h,gsl/gsl_wavelet2d.h")]
+ public class Wavelet
+ {
+ public WaveletType* type;
+ public double* h1;
+ public double* g1;
+ public double* h2;
+ public double* g2;
+ public size_t nc;
+ public size_t offset;
+
+ [CCode (cname="gsl_wavelet_alloc")]
+ public Wavelet (WaveletType* T, size_t k);
+ public string name ();
+ [NoArrayLength]
+ public int transform (double[] data, size_t stride, size_t n, WaveletDirection dir, WaveletWorkspace work);
+ [NoArrayLength]
+ public int transform_forward (double[] data, size_t stride, size_t n, WaveletWorkspace work);
+ [NoArrayLength]
+ public int transform_inverse (double[] data, size_t stride, size_t n, WaveletWorkspace work);
+
+ [NoArrayLength]
+ [CCode (cname="gsl_wavelet2d_transform")]
+ public int transform_2d (double[] data, size_t tda, size_t size1, size_t size2, WaveletDirection dir, WaveletWorkspace work);
+ [NoArrayLength]
+ [CCode (cname="gsl_wavelet2d_transform_forward")]
+ public int transform_forward_2d (double[] data, size_t tda, size_t size1, size_t size2, WaveletWorkspace work);
+ [NoArrayLength]
+ [CCode (cname="gsl_wavelet2d__transform_inverse")]
+ public int transform_inverse_2d (double[] data, size_t tda, size_t size1, size_t size2, WaveletWorkspace work);
+ [NoArrayLength]
+ [CCode (cprefix="gsl_wavelet2d_")]
+ public int nstransform (double[] data, size_t tda, size_t size1, size_t size2, WaveletDirection dir,WaveletWorkspace work);
+ [NoArrayLength]
+ [CCode (cprefix="gsl_wavelet2d_")]
+ public int nstransform_forward (double[] data, size_t tda, size_t size1, size_t size2, WaveletWorkspace work);
+ [NoArrayLength]
+ [CCode (cprefix="gsl_wavelet2d_")]
+ public int nstransform_inverse (double[] data, size_t tda, size_t size1, size_t size2, WaveletWorkspace * work);
+ [CCode (cprefix="gsl_wavelet2d_")]
+ public int transform_matrix (Matrix a, WaveletDirection dir, WaveletWorkspace work);
+ [CCode (cprefix="gsl_wavelet2d_")]
+ public int transform_matrix_forward (Matrix a, WaveletWorkspace work);
+ [CCode (cprefix="gsl_wavelet2d_")]
+ public int transform_matrix_inverse (Matrix a, WaveletWorkspace work);
+ [CCode (cprefix="gsl_wavelet2d_")]
+ public int nstransform_matrix (Matrix a, WaveletDirection dir, WaveletWorkspace work);
+ [CCode (cprefix="gsl_wavelet2d_")]
+ public int nstransform_matrix_forward (Matrix a, WaveletWorkspace work);
+ [CCode (cprefix="gsl_wavelet2d_")]
+ public int nstransform_matrix_inverse (Matrix a, WaveletWorkspace work);
+ }
+
+
+ /*
+ * Discrete Hankel Transforms
+ */
+ [Compact]
+ [CCode (cname="gsl_dht", cheader_filename="gsl/gsl_dht.h")]
+ public class DHT
+ {
+ public size_t size;
+ public double nu;
+ public double xmax;
+ public double kmax;
+ public double* j;
+ public double* Jjj;
+ public double* J2;
+
+ [CCode (cname="gsl_dht_alloc")]
+ public DHT (size_t size);
+ [CCode (cname="gsl_dht_new")]
+ public DHT.recalc (size_t size, double nu, double xmax);
+ public int init (double nu, double xmax);
+ public double x_sample (int n);
+ public double k_sample (int n);
+ [NoArrayLength]
+ public int apply (double[] f_in, double[] f_out);
+ }
+
+
+ /*
+ * One dimensional Root-Finding
+ */
+ static delegate int RootFsolverSet (void* state, Function* f, double* root, double x_lower, double x_upper);
+ static delegate int RootFsolverIterate (void* state, Function* f, double* root, double* x_lower, double* x_upper);
+ static delegate int RootFdfsolverSet (void* state, FunctionFdf* f, double* root);
+ static delegate int RootFdfsolverIterate (void* state, FunctionFdf* d, double* root);
+
+ [SimpleType]
+ [CCode (cname="gsl_root_fsolver_type", cheader_filename="gsl/gsl_roots.h")]
+ public struct RootFsolverType
+ {
+ public string name;
+ public size_t size;
+ public RootFsolverSet @set;
+ public RootFsolverIterate iterate;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_root_fsolver", cheader_filename="gsl/gsl_roots.h")]
+ public class RootFsolver
+ {
+ public RootFsolverType* type;
+ public Function* function;
+ public double root;
+ public double x_lower;
+ public double x_upper;
+ public void* state;
+
+ [CCode (cname="gsl_root_fsolver_alloc")]
+ public RootFsolver (RootFsolverType* T);
+ public int @set (Function* f, double x_lower, double x_upper);
+ public int iterate ();
+ public weak string name ();
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_root_fdfsolver_type", cheader_filename="gsl/gsl_roots.h")]
+ public struct RootFdfsolverType
+ {
+ public string name;
+ public size_t size;
+ public RootFdfsolverSet @set;
+ public RootFdfsolverIterate iterate;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_root_fdfsolver", cheader_filename="gsl/gsl_roots.h")]
+ public class RootFdfsolver
+ {
+ public RootFdfsolverType* type;
+ public FunctionFdf* fdf;
+ public double root;
+ public void* state;
+
+ [CCode (cname="gsl_root_fdfsolver_alloc")]
+ public RootFdfsolver (RootFdfsolverType* T);
+ public int @set (FunctionFdf* fdf, double root);
+ public int iterate ();
+ public weak string name ();
+ }
+
+ [CCode (lower_case_cprefix="gsl_root_test_", cheader_filename="gsl/gsl_roots.h")]
+ namespace RootTest
+ {
+ public static int interval (double x_lower, double x_upper, double epsabs, double epsrel);
+ public static int residual (double f, double epsabs);
+ public static int delta (double x1, double x0, double epsabs, double epsrel);
+ }
+
+ [CCode (lower_case_cprefix="gsl_root_fsolver_", cheader_filename="gsl/gsl_roots.h")]
+ namespace RootFsolverTypes
+ {
+ public static RootFsolverType* bisection;
+ public static RootFsolverType* brent;
+ public static RootFsolverType* falsepos;
+ }
+
+ [CCode (lower_case_cprefix="gsl_root_fdfsolver_", cheader_filename="gsl/gsl_roots.h")]
+ namespace RootFdfsolverTypes
+ {
+ public static RootFdfsolverType* newton;
+ public static RootFdfsolverType* secant;
+ public static RootFdfsolverType* steffenson;
+ }
+
+
+ /*
+ * One dimensional Minimization
+ */
+ static delegate int MinSet (void* state, Function* f, double xminimun, double f_minimum, double x_lower, double f_lower, double x_upper, double f_upper);
+ static delegate int MinIterate (void *state, Function* f, double* x_minimum, double* f_minimum, double* x_lower, double* f_lower, double* x_upper, double* f_upper);
+ public static delegate int MinBracketingFunction (Function* f, double* x_minimum, double* f_minimum, double* x_lower, double* f_lower, double* x_upper, double* f_upper, size_t eval_max);
+
+ [SimpleType]
+ [CCode (cname="gsl_min_fminimizer_type", cheader_filename="gsl/gsl_min.h")]
+ public struct MinFminimizerType
+ {
+ public string name;
+ public size_t size;
+ public MinSet @set;
+ public MinIterate iterate;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_min_fminimizer", cheader_filename="gsl/gsl_min.h")]
+ public class MinFminimizer
+ {
+ public MinFminimizerType* type;
+ public Function* function;
+ public double x_minimum;
+ public double x_lower;
+ public double x_upper;
+ public double f_minimum;
+ public double f_lower;
+ public double f_upper;
+ public void* state;
+
+ [CCode (cname="gsl_min_fminimizer_alloc")]
+ public MinFminimizer (MinFminimizerType* T) ;
+ public int @set (Function* f, double x_minimum, double x_lower, double x_upper);
+ public int set_with_values (Function* f, double x_minimum, double f_minimum, double x_lower, double f_lower, double x_upper, double f_upper);
+ public int iterate ();
+ public weak string name ();
+ }
+
+ [CCode (lower_case_cprefix="gsl_min_test_", cheader_filename="gsl/gsl_min.h")]
+ namespace MinTest
+ {
+ public static int interval (double x_lower, double x_upper, double epsabs, double epsrel);
+ }
+
+ [CCode (lower_case_cprefix="gsl_min_fminimizer_", cheader_filename="gsl/gsl_min.h")]
+ namespace MinFminimizerTypes
+ {
+ public static MinFminimizerType* goldensection;
+ public static MinFminimizerType* brent;
+ }
+
+ [CCode (cname="gsl_min_find_bracket", cheader_filename="gsl/gsl_min.h")]
+ public static int find_bracket (Function* f, double* x_minimum, double* f_minimum, double* x_lower, double* f_lower, double* x_upper, double* f_upper, size_t eval_max);
+
+
+ /*
+ * Multidimensional Root-Finding
+ */
+ static delegate int MultirootF (Vector x, void* params, Vector f);
+ static delegate int MultirootFAlloc (void* state, size_t n);
+ static delegate int MultirootFSet (void* state, MultirootFunction* function, Vector x, Vector f, Vector dx);
+ static delegate int MultirootFIterate (void* state, MultirootFunction* function, Vector x, Vector f, Vector dx);
+ static delegate void MultirootFFree (void* state);
+ static delegate int MultirootDF (Vector x, void* params, Matrix df);
+ static delegate int MultirootFDF (Vector x, void* params, Vector f, Matrix df);
+ static delegate int MultirootFdfAlloc (void* state, size_t n);
+ static delegate int MultirootFdfSet (void* state, MultirootFunctionFdf* fdf, Vector x, Vector f, Matrix J, Vector dx);
+ static delegate int MultirootFdfIterate (void* state, MultirootFunctionFdf* fdf, Vector x, Vector f, Matrix J, Vector dx);
+ static delegate int MultirootFdfFree (void* state);
+
+ [SimpleType]
+ [CCode (cname="gsl_multiroot_function", cheaer_filename="gsl/gsl_multiroots.h")]
+ public struct MultirootFunction
+ {
+ public MultirootF f;
+ public size_t n;
+ public void* params;
+ }
+
+ [CCode (cname="gsl_multiroot_fdjacobian", cheader_filename="gsl/gsl_multiroots.h")]
+ public static int multiroot_fdjacobian (MultirootFunction* F, Vector x, Vector f, double epsrel, Matrix jacobian);
+
+ [SimpleType]
+ [CCode (cname="gsl_multiroot_fsolver_type", cheader_filename="gsl/gsl_multiroots.h")]
+ public struct MultirootFsolverType
+ {
+ public string name;
+ public size_t size;
+ public MultirootFAlloc alloc;
+ public MultirootFSet @set;
+ public MultirootFIterate iterate;
+ public MultirootFFree free;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_multiroot_fsolver", cheader_filename="gsl/gsl_multiroots.h")]
+ public class MultirootFsolver
+ {
+ public MultirootFsolverType* type;
+ public MultirootFunction* function;
+ public Vector x;
+ public Vector f;
+ public Vector dx;
+ public void* state;
+
+ [CCode (cname="gsl_multiroot_fsolver_alloc")]
+ public MultirootFsolver (MultirootFsolverType* T, size_t n);
+ public int @set (MultirootFunction* f, Vector x);
+ public int iterate ();
+ public weak string name ();
+ public Vector root ();
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_multiroot_function_fdf", cheader_filename="gsl/gsl_multiroots.h")]
+ public struct MultirootFunctionFdf
+ {
+ public MultirootF f;
+ public MultirootDF df;
+ public MultirootFDF fdf;
+ public size_t n;
+ public void* params;
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_multiroot_fdfsolver_type", cheader_filename="gsl/gsl_multiroots.h")]
+ public struct MultirootFdfsolverType
+ {
+ public string name;
+ public size_t size;
+ public MultirootFdfAlloc alloc;
+ public MultirootFdfSet @set;
+ public MultirootFdfIterate iterate;
+ public MultirootFdfFree free;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_multiroot_fdfsolver", cheader_filename="gsl/gsl_multiroots.h")]
+ public class MultirootFdfsolver
+ {
+ public MultirootFdfsolverType* type;
+ public MultirootFunctionFdf* fdf;
+ public Vector x;
+ public Vector f;
+ public Matrix J;
+ public Vector dx;
+ public void* state;
+
+ [CCode (cname="gsl_multiroot_fdfsolver_alloc")]
+ public MultirootFdfsolver (MultirootFdfsolverType* T, size_t n);
+ public int @set (MultirootFunctionFdf* fdf, Vector x);
+ public int iterate ();
+ public weak string name ();
+ public Vector root ();
+ }
+
+ [CCode (lower_case_cprefix="gsl_multiroot_test_", cheader_filename="gsl/gsl_multiroots.h")]
+ namespace MultirootTest
+ {
+ public static int delta (Vector dx, Vector x, double epsabs, double epsrel);
+ public static int residual (Vector f, double epsabs);
+ }
+
+ [CCode (lower_case_cprefix="gsl_multiroot_fsolver_", cheader_filename="gsl/gsl_multiroots.h")]
+ namespace MultirootFsolverTypes
+ {
+ public static MultirootFsolverType* dnewton;
+ public static MultirootFsolverType* broyden;
+ public static MultirootFsolverType* hybrid;
+ public static MultirootFsolverType* hybrids;
+ }
+
+ [CCode (lower_case_cprefix="gsl_multiroot_fdfsolver_", cheader_filename="gsl/gsl_multiroots.h")]
+ namespace MultirootFdfsolverTypes
+ {
+ public static MultirootFdfsolverType* newton;
+ public static MultirootFdfsolverType* gnewton;
+ public static MultirootFdfsolverType* hybridj;
+ public static MultirootFdfsolverType* hybridsj;
+ }
+
+
+ /*
+ * Multidimensional Minimization
+ */
+ static delegate double MultiminF (Vector x, void* params);
+ static delegate void MultiminDf (Vector x, void* params, Vector df);
+ static delegate void MultiminFdf (Vector x, void* params, double* f, Vector df);
+ static delegate int MultiminFAlloc (void *state, size_t n);
+ static delegate int MultiminFSet (void* state, MultiminFunction* f, Vector x, double* size);
+ static delegate int MultiminFIterate (void* state, MultiminFunction* f, Vector x, double* size, double* fval);
+ static delegate int MultiminFFree (void* state);
+
+ [SimpleType]
+ [CCode (cname="gsl_multimin_function", cheader_filename="gsl/gsl_multimin.h")]
+ public struct MultiminFunction
+ {
+ public MultiminF f;
+ public size_t n;
+ public void* params;
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_multimin_function_fdf", cheader_filename="gsl/gsl_multimin.h")]
+ public struct MultiminFunctionFdf
+ {
+ public MultiminF f;
+ public MultiminDf df;
+ public MultiminFdf fdf;
+ public size_t n;
+ public void* params;
+ }
+
+ [CCode (cname="gsl_multimin_diff", cheader_filename="gsl/gsl_multimin.h")]
+ public static int multimin_diff (MultiminFunction* f, Vector x, Vector g);
+
+ [SimpleType]
+ [CCode (cname="gsl_multimin_fminimizer_type", cheader_filename="gsl/gsl_multimin.h")]
+ public struct MultiminFminimizerType
+ {
+ public string name;
+ public size_t size;
+ public MultiminFAlloc alloc;
+ public MultiminFSet @set;
+ public MultiminFIterate iterate;
+ public MultiminFFree free;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_multimin_fminimizer", cheader_filename="gsl/gsl_multimin.h")]
+ public class MultiminFminimizer
+ {
+ public MultiminFminimizerType* type;
+ public MultiminFunction* f;
+ public double fval;
+ public Vector x;
+ public double size;
+ public void* state;
+
+ [CCode (cname="gsl_multimin_fminimizer_alloc")]
+ public MultiminFminimizer (MultiminFminimizerType* T, size_t n);
+ public int @set (MultiminFunction* f, Vector x, Vector step_size);
+ public weak string name ();
+ public int iterate ();
+ public double minimum ();
+ }
+
+ [CCode (lower_case_cprefix="gsl_multimin_test_", cheader_filename="gsl/gsl_multimin.h")]
+ namespace MultiminTest
+ {
+ public static int gradient(Vector g, double epsabs);
+ public static int size (double size, double epsabs);
+ }
+
+ static delegate int MultiminFdfAlloc (void *state, size_t n);
+ static delegate int MultiminFdfSet (void* state, MultiminFunctionFdf* fdf, Vector x, double* f, Vector gradient, double step_size, double tol);
+ static delegate int MultiminFdfIterate (void* state, MultiminFunctionFdf* fdf, Vector x, double* f, Vector gradient, Vector dx);
+ static delegate int MultiminFdfRestart (void* state);
+ static delegate int MultiminFdfFree (void* state);
+
+ [SimpleType]
+ [CCode (cname="gsl_multimin_fdfminimizer_type", cheader_filename="gsl/gsl_multimin.h")]
+ public struct MultiminFdfminimizerType
+ {
+ public string name;
+ public size_t size;
+ public MultiminFdfAlloc alloc;
+ public MultiminFdfSet @set;
+ public MultiminFdfIterate iterate;
+ public MultiminFdfRestart restart;
+ public MultiminFdfFree free;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_multimin_fdfminimizer", cheader_filename="gsl/gsl_multimin.h")]
+ public class MultiminFdfminimizer
+ {
+ public MultiminFdfminimizerType* type;
+ public MultiminFunctionFdf* fdf;
+ public double f;
+ public Vector x;
+ public Vector gradient;
+ public Vector dx;
+ public void* state;
+
+ [CCode (cname="gsl_multimin_fdfminimizer_alloc")]
+ public MultiminFdfminimizer (MultiminFdfminimizerType* T, size_t n);
+ public int @set (MultiminFunctionFdf* fdf, Vector x, double step_size, double tol);
+ public weak string name ();
+ public int iterate ();
+ public int restart ();
+ public double minimum ();
+ }
+
+ [CCode (lower_case_cprefix="gsl_multimin_fdfminimizer_", cheader_filename="gsl/gsl_multimin.h")]
+ namespace MultiminFdfminimizerTypes
+ {
+ public static MultiminFdfminimizerType* steepest_descent;
+ public static MultiminFdfminimizerType* conjugate_pr;
+ public static MultiminFdfminimizerType* conjugate_fr;
+ public static MultiminFdfminimizerType* vector_bfgs;
+ public static MultiminFdfminimizerType* vector_bfgs2;
+ }
+
+ [CCode (lower_case_cprefix="gsl_multimin_fminimizer_", cheader_filename="gsl/gsl_multimin.h")]
+ namespace MultiminFminimizerTypes
+ {
+ public static MultiminFminimizerType* nmsimplex;
+ }
+
+
+ /*
+ * Least-Squares Fitting
+ */
+ [CCode (lower_case_cprefix="gsl_fit_", cheader_filename="gsl/gsl_fit.h")]
+ namespace Fit
+ {
+ [NoArrayLength]
+ public static int linear (double[] x, size_t xstride, double[] y, size_t ystride, size_t n, out double c0, out double c1, out double cov00, out double cov01, out double cov11, out double sumsq);
+ [NoArrayLength]
+ public static int wlinear (double[] x, size_t xstride, double[] w, size_t wstride, double[] y, size_t ystride, size_t n, out double c0, out double c1, out double cov00, out double cov01, out double cov11, double chisq);
+ [NoArrayLength]
+ public static int linear_est (double x, double c0, double c1, double cov00, double cov01, double cov11, out double y, out double y_err);
+ [NoArrayLength]
+ public static int mul (double[] x, size_t xstride, double[] y, size_t ystride, size_t n, out double c1, out double cov11, out double sumsq);
+ [NoArrayLength]
+ public static int wmul (double[] x, size_t xstride, double[] w, size_t wstride, double[] y, size_t ystride, size_t n, out double c1, out double cov11, out double sumsq);
+ public static int mul_est (double x, double c1, double cov11, out double y, out double y_err);
+ }
+
+ [Compact]
+ [CCode (cname="gsl_multifit_linear_workspace", cheader_filename="gsl/gsl_multifit.h")]
+ public class MultifitLinearWorkspace
+ {
+ public size_t n;
+ public size_t p;
+ public Matrix A;
+ public Matrix Q;
+ public Matrix QSI;
+ public Vector S;
+ public Vector t;
+ public Vector xt;
+ public Vector D;
+
+ [CCode (cname="gsl_multifit_linear_workspace_alloc")]
+ public MultifitLinearWorkspace (size_t n, size_t p);
+ }
+
+ [CCcode (lower_case_cprefix="gsl_multifit_", cheader_filename="gsl/gsl_multifit.h")]
+ namespace Multifit
+ {
+ public static int linear (Matrix X, Vector y, Vector c, Matrix cov, out double chisq, MultifitLinearWorkspace work);
+ public static int linear_svd (Matrix X, Vector y, double tol, out size_t rank, Vector c, Matrix cov, out double chisq, MultifitLinearWorkspace work);
+ public static int wlinear (Matrix X, Vector w, Vector y, Vector c, Matrix cov, out double chisq, MultifitLinearWorkspace work);
+ public static int wlinear_svd (Matrix X, Vector w, Vector y, double tol, out size_t rank, Vector c, Matrix cov, out double chisq, MultifitLinearWorkspace work);
+ public static int linear_est (Vector x, Vector c, Matrix cov, out double y, out double y_err);
+ public int linear_residuals (Matrix X, Vector y, Vector c, Vector r);
+ }
+
+
+ /*
+ * Nonlinear Least-Squares Fitting
+ */
+ static delegate int MultifitF (Vector x, void* params, Vector f);
+ static delegate int MultifitFAlloc (void* state, size_t n, size_t p);
+ static delegate int MultifitFSet (void* state, MultifitFunction* function, Vector x, Vector f, Vector dx);
+ static delegate int MultifitFIterate (void* state, MultifitFunction* function, Vector x, Vector f, Vector dx);
+ static delegate void MultifitFFree (void* state);
+ static delegate int MultifitDf (Vector x, void* params, Matrix df);
+ static delegate int MultifitFdf (Vector x, void* params, Vector f, Matrix df);
+ static delegate int MultifitFdfAlloc (void* state, size_t n, size_t p);
+ static delegate int MultifitFdfSet (void* state, MultifitFunctionFdf fdf, Vector x, Vector f, Matrix J, Vector dx);
+ static delegate int MultifitFdfIterate (void* state, MultifitFunctionFdf fdf, Vector x, Vector f, Matrix J, Vector dx);
+ static delegate void MultifitFdfFree (void* state);
+
+ [CCode (lower_case_cprefix="gsl_multifit_", cheader_filename="gsl/gsl_multifit_nlin.h")]
+ namespace Multifit
+ {
+ public static int gradient (Matrix J, Vector f, Vector g);
+ public static int covar (Matrix J, double epsrel, Matrix covar);
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_multifit_function", cheader_filename="gls/gsl_multifit_nlin.h")]
+ public struct MultifitFunction
+ {
+ public MultifitF f;
+ public size_t n;
+ public size_t p;
+ public void* params;
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_multifit_fsolver_type", cheader_filename="gsl/gsl_multifit_nlin.h")]
+ public struct MultifitFsolverType
+ {
+ public string name;
+ public size_t size;
+ public MultifitFAlloc alloc;
+ public MultifitFSet @set;
+ public MultifitFIterate iterate;
+ public MultifitFFree free;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_multifit_fsolver", cheader_filename="gsl/gsl_multifit_nlin.h")]
+ public class MultifitFsolver
+ {
+ public MultifitFsolverType* type;
+ public MultifitFunction* function;
+ public Vector x;
+ public Vector f;
+ public Vector dx;
+ public void* state;
+
+ [CCode (cname="gsl_multifit_fsolver_alloc")]
+ public MultifitFsolver (MultifitFsolverType* T, size_t n, size_t p);
+ public int @set (MultifitFunction* f, Vector x);
+ public int iterate ();
+ public weak string name ();
+ public Vector position ();
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_multifit_function_fdf", cheader_filename="gsl/gsl_multifit_nlin.h")]
+ public struct MultifitFunctionFdf
+ {
+ public MultifitF f;
+ public MultifitDf df;
+ public MultifitFdf fdf;
+ public size_t n;
+ public size_t p;
+ public void* params;
+ }
+
+ [SimpleType]
+ [CCode (cname="gsl_multifit_fdfsolver_type", cheader_filename="gsl/gsl_multifit_nlin.h")]
+ public struct MultifitFdfsolverType
+ {
+ public string name;
+ public size_t size;
+ public MultifitFdfAlloc alloc;
+ public MultifitFdfSet @set;
+ public MultifitFdfIterate iterate;
+ public MultifitFdfFree free;
+ }
+
+ [Compact]
+ [CCode (cname="gsl_multifit_fdfsolver", cheader_filename="gsl/gsl_multifit_nlin.h")]
+ public class MultifitFdfsolver
+ {
+ public MultifitFdfsolverType* type;
+ public MultifitFunctionFdf* fdf;
+ public Vector x;
+ public Vector f;
+ public Vector J;
+ public Vector dx;
+ public void* state;
+
+ [CCode (cname="gsl_multifit_fdfsolver_alloc")]
+ public MultifitFdfsolver (MultifitFdfsolverType* T, size_t n, size_t p);
+ public int @set (MultifitFunctionFdf* fdf, Vector x);
+ public int iterate ();
+ public weak string name ();
+ public Vector position ();
+ }
+
+ [CCode (lower_case_cprefix="gsl_multifit_test_", cheader_filename="gsl/gsl_multifit_nlin.h")]
+ namespace MultifitTest
+ {
+ public static int delta (Vector dx, Vector x, double epsabs, double epsrel);
+ public static int gradient (Vector g, double epsabs);
+ }
+
+ [CCode (lower_case_cprefix="gsl_multifit_fdfsolver_", cheader_filename="gsl/gsl_multifit_nlin.h")]
+ namespace MultifitFdfsolverTypes
+ {
+ public static MultifitFdfsolverType* lmder;
+ public static MultifitFdfsolverType* lmsder;
+ }
+
+
+ /*
+ * Basis Splines
+ */
+ [Compact]
+ [CCode (cname="gsl_bspline_workspace", cprefix="gsl_bspline_", cheader_filename="gsl/gsl_bspline.h")]
+ public class BsplineWorkspace
+ {
+ public size_t k;
+ public size_t km1;
+ public size_t l;
+ public size_t nbreak;
+ public size_t n;
+ public Vector knots;
+ public Vector deltal;
+ public Vector deltar;
+ public Vector B;
+
+ [CCode (cname="gsl_bspline_alloc")]
+ public BsplineWorkspace (size_t k, size_t nbreak);
+ public size_t ncoeffs ();
+ public size_t order ();
+ [CCode (instance_pos=-1)]
+ public double breakpoint (size_t i);
+ [CCode (instance_pos=-1)]
+ public int knots_uniform (double a, double b);
+ [CCode (instance_pos=-1)]
+ public int eval (double x, Vector B);
+ }
+}
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]