1/* gsl.vapi 2 * 3 * Copyright (C) 2008 Matias De la Puente 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2.1 of the License, or (at your option) any later version. 9 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with this library; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 * 19 * Author: 20 * Matias De la Puente <mfpuente.ar@gmail.com> 21 */ 22 23namespace Gsl 24{ 25 /* 26 * Physical Constants 27 */ 28 [CCode (cprefix="GSL_CONST_NUM_", cheader_filename="gsl/gsl_const_num.h", has_type_id = false)] 29 public enum ConstNum 30 { 31 FINE_STRUCTURE, 32 AVOGADRO, 33 YOTTA, 34 ZETTA, 35 EXA, 36 PETA, 37 TERA, 38 GIGA, 39 MEGA, 40 KILO, 41 MILLI, 42 MICRO, 43 NANO, 44 PICO, 45 FEMTO, 46 ATTO, 47 ZEPTO, 48 YOCTO 49 } 50 51 [CCode (cprefix="GSL_CONST_CGS_", cheader_filename="gsl/gsl_const_cgs.h", has_type_id = false)] 52 public enum ConstCGS 53 { 54 SPEED_OF_LIGHT, 55 GRAVITATIONAL_CONSTANT, 56 PLANCKS_CONSTANT_H, 57 PLANCKS_CONSTANT_HBAR, 58 ASTRONOMICAL_UNIT, 59 LIGHT_YEAR, 60 PARSEC, 61 GRAV_ACCEL, 62 ELECTRON_VOLT, 63 MASS_ELECTRON, 64 MASS_MUON, 65 MASS_PROTON, 66 MASS_NEUTRON, 67 RYDBERG, 68 BOLTZMANN, 69 MOLAR_GAS, 70 STANDARD_GAS_VOLUME, 71 MINUTE, 72 HOUR, 73 DAY, 74 WEEK, 75 INCH, 76 FOOT, 77 YARD, 78 MILE, 79 NAUTICAL_MILE, 80 FATHOM, 81 MIL, 82 POINT, 83 TEXPOINT, 84 MICRON, 85 ANGSTROM, 86 HECTARE, 87 ACRE, 88 BARN, 89 LITER, 90 US_GALLON, 91 QUART, 92 PINT, 93 CUP, 94 FLUID_OUNCE, 95 TABLESPOON, 96 TEASPOON, 97 CANADIAN_GALLON, 98 UK_GALLON, 99 MILES_PER_HOUR, 100 KILOMETERS_PER_HOUR, 101 KNOT, 102 POUND_MASS, 103 OUNCE_MASS, 104 TON, 105 METRIC_TON, 106 UK_TON, 107 TROY_OUNCE, 108 CARAT, 109 UNIFIED_ATOMIC_MASS, 110 GRAM_FORCE, 111 POUND_FORCE, 112 KILOPOUND_FORCE, 113 POUNDAL, 114 CALORIE, 115 BTU, 116 THERM, 117 HORSEPOWER, 118 BAR, 119 STD_ATMOSPHERE, 120 TORR, 121 METER_OF_MERCURY, 122 INCH_OF_MERCURY, 123 INCH_OF_WATER, 124 PSI, 125 POISE, 126 STOKES, 127 STILB, 128 LUMEN, 129 LUX, 130 PHOT, 131 FOOTCANDLE, 132 LAMBERT, 133 FOOTLAMBERT, 134 CURIE, 135 ROENTGEN, 136 RAD, 137 SOLAR_MASS, 138 BOHR_RADIUS, 139 NEWTON, 140 DYNE, 141 JOULE, 142 ERG, 143 STEFAN_BOLTZMANN_CONSTANT, 144 THOMSON_CROSS_SECTION 145 } 146 147 [CCode (cprefix="GSL_CONST_CGSM_", cheader_filename="gsl/gsl_const_cgsm.h", has_type_id = false)] 148 public enum ConstCGSM 149 { 150 SPEED_OF_LIGHT, 151 GRAVITATIONAL_CONSTANT, 152 PLANCKS_CONSTANT_H, 153 PLANCKS_CONSTANT_HBAR, 154 ASTRONOMICAL_UNIT, 155 LIGHT_YEAR, 156 PARSEC, 157 GRAV_ACCEL, 158 ELECTRON_VOLT, 159 MASS_ELECTRON, 160 MASS_MUON, 161 MASS_PROTON, 162 MASS_NEUTRON, 163 RYDBERG, 164 BOLTZMANN, 165 MOLAR_GAS, 166 STANDARD_GAS_VOLUME, 167 MINUTE, 168 HOUR, 169 DAY, 170 WEEK, 171 INCH, 172 FOOT, 173 YARD, 174 MILE, 175 NAUTICAL_MILE, 176 FATHOM, 177 MIL, 178 POINT, 179 TEXPOINT, 180 MICRON, 181 ANGSTROM, 182 HECTARE, 183 ACRE, 184 BARN, 185 LITER, 186 US_GALLON, 187 QUART, 188 PINT, 189 CUP, 190 FLUID_OUNCE, 191 TABLESPOON, 192 TEASPOON, 193 CANADIAN_GALLON, 194 UK_GALLON, 195 MILES_PER_HOUR, 196 KILOMETERS_PER_HOUR, 197 KNOT, 198 POUND_MASS, 199 OUNCE_MASS, 200 TON, 201 METRIC_TON, 202 UK_TON, 203 TROY_OUNCE, 204 CARAT, 205 UNIFIED_ATOMIC_MASS, 206 GRAM_FORCE, 207 POUND_FORCE, 208 KILOPOUND_FORCE, 209 POUNDAL, 210 CALORIE, 211 BTU, 212 THERM, 213 HORSEPOWER, 214 BAR, 215 STD_ATMOSPHERE, 216 TORR, 217 METER_OF_MERCURY, 218 INCH_OF_MERCURY, 219 INCH_OF_WATER, 220 PSI, 221 POISE, 222 STOKES, 223 STILB, 224 LUMEN, 225 LUX, 226 PHOT, 227 FOOTCANDLE, 228 LAMBERT, 229 FOOTLAMBERT, 230 CURIE, 231 ROENTGEN, 232 RAD, 233 SOLAR_MASS, 234 BOHR_RADIUS, 235 NEWTON, 236 DYNE, 237 JOULE, 238 ERG, 239 STEFAN_BOLTZMANN_CONSTANT, 240 THOMSON_CROSS_SECTION, 241 BOHR_MAGNETON, 242 NUCLEAR_MAGNETON, 243 ELECTRON_MAGNETIC_MOMENT, 244 PROTON_MAGNETIC_MOMENT, 245 FARADAY, 246 ELECTRON_CHARGE 247 } 248 249 [CCode (cprefix="GSL_CONST_MKS_", cheader_filename="gsl/gsl_const_mks.h", has_type_id = false)] 250 public enum ConstMKS 251 { 252 SPEED_OF_LIGHT, 253 GRAVITATIONAL_CONSTANT, 254 PLANCKS_CONSTANT_H, 255 PLANCKS_CONSTANT_HBAR, 256 ASTRONOMICAL_UNIT, 257 LIGHT_YEAR, 258 PARSEC, 259 GRAV_ACCEL, 260 ELECTRON_VOLT, 261 MASS_ELECTRON, 262 MASS_MUON, 263 MASS_PROTON, 264 MASS_NEUTRON, 265 RYDBERG, 266 BOLTZMANN, 267 MOLAR_GAS, 268 STANDARD_GAS_VOLUME, 269 MINUTE, 270 HOUR, 271 DAY, 272 WEEK, 273 INCH, 274 FOOT, 275 YARD, 276 MILE, 277 NAUTICAL_MILE, 278 FATHOM, 279 MIL, 280 POINT, 281 TEXPOINT, 282 MICRON, 283 ANGSTROM, 284 HECTARE, 285 ACRE, 286 BARN, 287 LITER, 288 US_GALLON, 289 QUART, 290 PINT, 291 CUP, 292 FLUID_OUNCE, 293 TABLESPOON, 294 TEASPOON, 295 CANADIAN_GALLON, 296 UK_GALLON, 297 MILES_PER_HOUR, 298 KILOMETERS_PER_HOUR, 299 KNOT, 300 POUND_MASS, 301 OUNCE_MASS, 302 TON, 303 METRIC_TON, 304 UK_TON, 305 TROY_OUNCE, 306 CARAT, 307 UNIFIED_ATOMIC_MASS, 308 GRAM_FORCE, 309 POUND_FORCE, 310 KILOPOUND_FORCE, 311 POUNDAL, 312 CALORIE, 313 BTU, 314 THERM, 315 HORSEPOWER, 316 BAR, 317 STD_ATMOSPHERE, 318 TORR, 319 METER_OF_MERCURY, 320 INCH_OF_MERCURY, 321 INCH_OF_WATER, 322 PSI, 323 POISE, 324 STOKES, 325 STILB, 326 LUMEN, 327 LUX, 328 PHOT, 329 FOOTCANDLE, 330 LAMBERT, 331 FOOTLAMBERT, 332 CURIE, 333 ROENTGEN, 334 RAD, 335 SOLAR_MASS, 336 BOHR_RADIUS, 337 NEWTON, 338 DYNE, 339 JOULE, 340 ERG, 341 BOHR_MAGNETON, 342 NUCLEAR_MAGNETON, 343 ELECTRON_MAGNETIC_MOMENT, 344 PROTON_MAGNETIC_MOMENT, 345 STEFAN_BOLTZMANN_CONSTANT, 346 THOMSON_CROSS_SECTION, 347 FARADAY, 348 ELECTRON_CHARGE, 349 VACUUM_PERMITTIVITY, 350 VACUUM_PERMEABILITY, 351 DEBYE, 352 GAUSS 353 } 354 355 [CCode (cprefix="GSL_CONST_MKSA_", cheader_filename="gsl/gsl_const_mksa.h", has_type_id = false)] 356 public enum ConstMKSA 357 { 358 SPEED_OF_LIGHT, 359 GRAVITATIONAL_CONSTANT, 360 PLANCKS_CONSTANT_H, 361 PLANCKS_CONSTANT_HBAR, 362 ASTRONOMICAL_UNIT, 363 LIGHT_YEAR, 364 PARSEC, 365 GRAV_ACCEL, 366 ELECTRON_VOLT, 367 MASS_ELECTRON, 368 MASS_MUON, 369 MASS_PROTON, 370 MASS_NEUTRON, 371 RYDBERG, 372 BOLTZMANN, 373 MOLAR_GAS, 374 STANDARD_GAS_VOLUME, 375 MINUTE, 376 HOUR, 377 DAY, 378 WEEK, 379 INCH, 380 FOOT, 381 YARD, 382 MILE, 383 NAUTICAL_MILE, 384 FATHOM, 385 MIL, 386 POINT, 387 TEXPOINT, 388 MICRON, 389 ANGSTROM, 390 HECTARE, 391 ACRE, 392 BARN, 393 LITER, 394 US_GALLON, 395 QUART, 396 PINT, 397 CUP, 398 FLUID_OUNCE, 399 TABLESPOON, 400 TEASPOON, 401 CANADIAN_GALLON, 402 UK_GALLON, 403 MILES_PER_HOUR, 404 KILOMETERS_PER_HOUR, 405 KNOT, 406 POUND_MASS, 407 OUNCE_MASS, 408 TON, 409 METRIC_TON, 410 UK_TON, 411 TROY_OUNCE, 412 CARAT, 413 UNIFIED_ATOMIC_MASS, 414 GRAM_FORCE, 415 POUND_FORCE, 416 KILOPOUND_FORCE, 417 POUNDAL, 418 CALORIE, 419 BTU, 420 THERM, 421 HORSEPOWER, 422 BAR, 423 STD_ATMOSPHERE, 424 TORR, 425 METER_OF_MERCURY, 426 INCH_OF_MERCURY, 427 INCH_OF_WATER, 428 PSI, 429 POISE, 430 STOKES, 431 STILB, 432 LUMEN, 433 LUX, 434 PHOT, 435 FOOTCANDLE, 436 LAMBERT, 437 FOOTLAMBERT, 438 CURIE, 439 ROENTGEN, 440 RAD, 441 SOLAR_MASS, 442 BOHR_RADIUS, 443 NEWTON, 444 DYNE, 445 JOULE, 446 ERG, 447 STEFAN_BOLTZMANN_CONSTANT, 448 THOMSON_CROSS_SECTION, 449 BOHR_MAGNETON, 450 NUCLEAR_MAGNETON, 451 ELECTRON_MAGNETIC_MOMENT, 452 PROTON_MAGNETIC_MOMENT, 453 FARADAY, 454 ELECTRON_CHARGE, 455 VACUUM_PERMITTIVITY, 456 VACUUM_PERMEABILITY, 457 DEBYE, 458 GAUSS 459 } 460 461 462 /* 463 * Error Handling 464 */ 465 [CCode (cprefix="GSL_", cheader_filename="gsl/gsl_errno.h", has_type_id = false)] 466 public enum Status 467 { 468 SUCCESS, 469 FAILURE, 470 CONTINUE, 471 EDOM, 472 ERANGE, 473 EFAULT, 474 EINVAL, 475 EFAILED, 476 EFACTOR, 477 ESANITY, 478 ENOMEM, 479 EBADFUNC, 480 ERUNAWAY, 481 EMAXITER, 482 EZERODIV, 483 EBADTOL, 484 ETOL, 485 EUNDRFLW, 486 EOVRFLW, 487 ELOSS, 488 EROUND, 489 EBADLEN, 490 ENOTSQR, 491 ESING, 492 EDIVERGE, 493 EUNSUP, 494 EUNIMPL, 495 ECACHE, 496 ETABLE, 497 ENOPROG, 498 ENOPROGJ, 499 ETOLF, 500 ETOLX, 501 ETOLG, 502 EOF 503 } 504 505 [CCode (cprefix="GSL_PREC_", cheader_filename="gsl/gsl_mode.h", has_type_id = false)] 506 public enum Mode 507 { 508 DOUBLE, 509 SINGLE, 510 APPROX 511 } 512 513 [CCode (cname = "gsl_error_handler_t*", has_target = false)] 514 public delegate void ErrorHandler (string reason, string file, int line, int errno); 515 [CCode (cname = "gsl_stream_handler_t*", has_target = false)] 516 public delegate void StreamHandler (string label, string file, int line, string reason); 517 518 [CCode (lower_case_cprefix="gsl_", cheader_filename="gsl/gsl_errno.h")] 519 namespace Error 520 { 521 public static void error (string reason, string file, int line, int errno); 522 public static unowned string strerror (int errno); 523 public static ErrorHandler set_error_handler (ErrorHandler? new_handler); 524 public static ErrorHandler set_error_handler_off (); 525 } 526 527 [CCode (lower_case_cprefix="gsl_", cheader_filename="gsl/gsl_errno.h")] 528 namespace Stream 529 { 530 [CCode (cname="gsl_stream_printf")] 531 public static void printf (string label, string file, int line, string reason); 532 public static StreamHandler set_stream_handler (StreamHandler new_handler); 533 public static GLib.FileStream set_stream (GLib.FileStream new_stream); 534 } 535 536 537 /* 538 * Mathematical Functions 539 */ 540 [CCode (cprefix="", cheader_filename="gsl/gsl_math.h", has_type_id = false)] 541 public enum MathConst 542 { 543 M_E, 544 M_LOG2E, 545 M_LOG10E, 546 M_SQRT2, 547 M_SQRT1_2, 548 M_SQRT3, 549 M_PI, 550 M_PI_2, 551 M_PI_4, 552 M_2_SQRTPI, 553 M_1_PI, 554 M_2_PI, 555 M_LN10, 556 M_LN2, 557 M_LNPI, 558 M_EULER 559 } 560 561 /* The isnan, isinf and finite are define in the double type. The elementary functions are in GLib.Math */ 562 563 [CCode (has_target = false, has_typedef = false)] 564 public delegate double _Function (double x, void* params); 565 [CCode (has_target = false, has_typedef = false)] 566 public delegate void _FunctionFdf (double x, void* params, out double f, out double df); 567 568 [SimpleType] 569 [CCode (cname="gsl_function", cheader_filename="gsl/gsl_math.h", has_type_id = false)] 570 public struct Function 571 { 572 public _Function function; 573 public void* params; 574 } 575 576 [SimpleType] 577 [CCode (cname="gsl_function_fdf", cheader_filename="gsl/gsl_math.h", has_type_id = false)] 578 public struct FunctionFdf 579 { 580 public _Function f; 581 public _Function df; 582 public _FunctionFdf fdf; 583 public void* params; 584 } 585 586 587 /* 588 * Complex Numbers 589 */ 590 [SimpleType] 591 [CCode (cname="gsl_complex", cheader_filename="gsl/gsl_complex.h,gsl/gsl_complex_math.h", has_type_id = false)] 592 public struct Complex 593 { 594 [CCode (cname="dat[0]")] 595 public double real; 596 [CCode (cname="dat[1]")] 597 public double imag; 598 public static Complex rect (double x, double y); 599 public static Complex polar (double r, double theta); 600 601 public static double arg (Complex z); 602 public static double abs (Complex z); 603 public static double abs2 (Complex z); 604 public static double logabs (Complex z); 605 606 public static Complex add (Complex a, Complex b); 607 public static Complex sub (Complex a, Complex b); 608 public static Complex mul (Complex a, Complex b); 609 public static Complex div (Complex a, Complex b); 610 public static Complex add_real (Complex a, double x); 611 public static Complex sub_real (Complex a, double x); 612 public static Complex mul_real (Complex a, double x); 613 public static Complex div_real (Complex a, double x); 614 public static Complex add_imag (Complex a, double y); 615 public static Complex sub_imag (Complex a, double y); 616 public static Complex mul_imag (Complex a, double y); 617 public static Complex div_imag (Complex a, double y); 618 public static Complex conjugate (Complex z); 619 public static Complex inverse (Complex z); 620 public static Complex negative (Complex z); 621 622 public static Complex sqrt (Complex z); 623 public static Complex sqrt_real (double x); 624 public static Complex pow (Complex z, Complex a); 625 public static Complex pow_real (Complex z, double x); 626 public static Complex exp (Complex z); 627 public static Complex log (Complex z); 628 public static Complex log10 (Complex z); 629 public static Complex log_b (Complex z, Complex b); 630 631 public static Complex sin (Complex z); 632 public static Complex cos (Complex z); 633 public static Complex tan (Complex z); 634 public static Complex sec (Complex z); 635 public static Complex csc (Complex z); 636 public static Complex cot (Complex z); 637 638 public static Complex arcsin (Complex z); 639 public static Complex arcsin_real (double z); 640 public static Complex arccos (Complex z); 641 public static Complex arccos_real (double z); 642 public static Complex arctan (Complex z); 643 public static Complex arcsec (Complex z); 644 public static Complex arcsec_real (double z); 645 public static Complex arccsc (Complex z); 646 public static Complex arccsc_real (double z); 647 public static Complex arccot (Complex z); 648 649 public static Complex sinh (Complex z); 650 public static Complex cosh (Complex z); 651 public static Complex tanh (Complex z); 652 public static Complex sech (Complex z); 653 public static Complex csch (Complex z); 654 public static Complex coth (Complex z); 655 656 public static Complex arcsinh (Complex z); 657 public static Complex arccosh (Complex z); 658 public static Complex arccosh_real (double z); 659 public static Complex arctanh (Complex z); 660 public static Complex arctanh_real (double z); 661 public static Complex arcsech (Complex z); 662 public static Complex arccsch (Complex z); 663 public static Complex arccoth (Complex z); 664 } 665 666 667 /* 668 * Polynomials 669 */ 670 [CCode (lower_case_cprefix="gsl_poly_", cheader_filename="gsl/gsl_poly.h")] 671 namespace Poly 672 { 673 public static double eval (double[] c, double x); 674 public static Complex complex_eval (double[] c, Complex z); 675 [CCode (cname="gsl_complex_poly_complex_eval")] 676 public static Complex poly_complex_eval (Complex[] c, Complex z); 677 678 public static int dd_init ([CCode (array_length = false)] double[] dd, [CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, size_t size); 679 public static double dd_eval ([CCode (array_length = false)] double[] dd, [CCode (array_length = false)] double[] xa, size_t size, double x); 680 public static int dd_taylor ([CCode (array_length = false)] double[] c, double xp, [CCode (array_length = false)] double[] dd, [CCode (array_length = false)] double[] xa, size_t size, [CCode (array_length = false)] double[] w); 681 682 public static int solve_quadratic (double a, double b, double c, out double x0, out double x1); 683 public static int complex_solve_quadratic (double a, double b, double c, out Complex z0, out Complex z1); 684 685 public static int solve_cubic (double a, double b, double c, out double x0, out double x1, out double x2); 686 public static int complex_solve_cubic (double a, double b, double c, out Complex z0, out Complex z1, out Complex z2); 687 } 688 689 [Compact] 690 [CCode (cname="gsl_poly_complex_workspace", cheader_filename="gsl/gsl_poly.h")] 691 public class PolyComplexWorkspace 692 { 693 public size_t nc; 694 public double* matrix; 695 696 [CCode (cname="gsl_poly_complex_workspace_alloc")] 697 public PolyComplexWorkspace (size_t n); 698 [CCode (cname="gsl_poly_complex_solve")] 699 public static int solve (double[]a, PolyComplexWorkspace w, out double z); 700 } 701 702 703 /* 704 * Special Functions 705 */ 706 [SimpleType] 707 [CCode (cname="gsl_sf_result", cheader_filename="gsl/gsl_sf_result.h", has_type_id = false)] 708 public struct Result 709 { 710 public double val; 711 public double err; 712 } 713 714 [SimpleType] 715 [CCode (cname="gsl_sf_result_e10", cheader_filename="gsl/gsl_sf_result.h", has_type_id = false)] 716 public struct ResultE10 717 { 718 public double val; 719 public double err; 720 public int e10; 721 } 722 723 [CCode (lower_case_cprefix="gsl_sf_airy_", cheader_filename="gsl/gsl_sf_airy.h")] 724 namespace Airy 725 { 726 public static double Ai (double x, Mode mode); 727 public static int Ai_e (double x, Mode mode, out Result result); 728 public static double Bi (double x, Mode mode); 729 public static int Bi_e (double x, Mode mode, out Result result); 730 public static double Ai_scaled (double x, Mode mode); 731 public static int Ai_scaled_e (double x, Mode mode, out Result result); 732 public static double Bi_scaled (double x, Mode mode); 733 public static int Bi_scaled_e (double x, Mode mode, out Result result); 734 735 public static double Ai_deriv (double x, Mode mode); 736 public static int Ai_deriv_e (double x, Mode mode, out Result result); 737 public static double Bi_deriv (double x, Mode mode); 738 public static int Bi_deriv_e (double x, Mode mode, out Result result); 739 public static double Ai_deriv_scaled (double x, Mode mode); 740 public static int Ai_deriv_scaled_e (double x, Mode mode, out Result result); 741 public static double Bi_deriv_scaled (double x, Mode mode); 742 public static int Bi_deriv_scaled_e (double x, Mode mode, out Result result); 743 744 public static double zero_Ai (uint s); 745 public static int zero_Ai_e (uint s, out Result result); 746 public static double zero_Bi (uint s); 747 public static int zero_Bi_e (uint s, out Result result); 748 749 public static double zero_Ai_deriv (uint s); 750 public static int zero_Ai_deriv_e (uint s, out Result result); 751 public static double zero_Bi_deriv (uint s); 752 public static int zero_Bi_deriv_e (uint s, out Result result); 753 } 754 755 [CCode (lower_case_cprefix="gsl_sf_bessel_", cheader_filename="gsl/gsl_sf_bessel.h")] 756 namespace Bessel 757 { 758 public static double J0 (double x); 759 public static int J0_e (double x, out Result result); 760 public static double J1 (double x); 761 public static int J1_e (double x, out Result result); 762 public static double Jn (int n, double x); 763 public static int Jn_e (int n, double x, out Result result); 764 public static int Jn_array (int nmin, int nmax, double x, [CCode (array_length = false)] double[] result_array); 765 766 public static double Y0 (double x); 767 public static int Y0_e (double x, out Result result); 768 public static double Y1 (double x); 769 public static int Y1_e (double x, out Result result); 770 public static double Yn (int n, double x); 771 public static int Yn_e (int n, double x, out Result result); 772 public static int Yn_array (int nmin, int nmax, double x, [CCode (array_length = false)] double[] result_array); 773 774 public static double I0 (double x); 775 public static int I0_e (double x, out Result result); 776 public static double I1 (double x); 777 public static int I1_e (double x, out Result result); 778 public static double In (int n, double x); 779 public static int In_e (int n, double x, out Result result); 780 public static int In_array (int nmin, int nmax, double x, [CCode (array_length = false)] double[] result_array); 781 public static double I0_scaled (double x); 782 public static int I0_scaled_e (double x, out Result result); 783 public static double I1_scaled (double x); 784 public static int I1_scaled_e (double x, out Result result); 785 public static double In_scaled (int n, double x); 786 public static int In_scaled_e (int n, double x, out Result result); 787 public static int In_scaled_array (int nmin, int nmax, double x, [CCode (array_length = false)] double[] result_array); 788 789 public static double K0 (double x); 790 public static int K0_e (double x, out Result result); 791 public static double K1 (double x); 792 public static int K1_e (double x, out Result result); 793 public static double Kn (int n, double x); 794 public static int Kn_e (int n, double x, out Result result); 795 public static int Kn_array (int nmin, int nmax, double x, [CCode (array_length = false)] double[] result_array); 796 public static double K0_scaled (double x); 797 public static int K0_scaled_e (double x, out Result result); 798 public static double K1_scaled (double x); 799 public static int K1_scaled_e (double x, out Result result); 800 public static double Kn_scaled (int n, double x); 801 public static int Kn_scaled_e (int n, double x, out Result result); 802 public static int Kn_scaled_array (int nmin, int nmax, double x, [CCode (array_length = false)] double[] result_array); 803 804 public static double j0 (double x); 805 public static int j0_e (double x, out Result result); 806 public static double j1 (double x); 807 public static int j1_e (double x, out Result result); 808 public static double j2 (double x); 809 public static int j2_e (double x, out Result result); 810 public static double jl (int l, double x); 811 public static int jl_e (int l, double x, out Result result); 812 public static int jl_array (int lmax, double x, [CCode (array_length = false)] double[] result_array); 813 public static int jl_steed_array (int lmax, double x, [CCode (array_length = false)] double[] jl_x_array); 814 815 public static double y0 (double x); 816 public static int y0_e (double x, out Result result); 817 public static double y1 (double x); 818 public static int y1_e (double x, out Result result); 819 public static double y2 (double x); 820 public static int y2_e (double x, out Result result); 821 public static double yl (int l, double x); 822 public static int yl_e (int l, double x, out Result result); 823 public static int yl_array (int lmax, double x, [CCode (array_length = false)] double[] result_array); 824 825 public static double i0_scaled (double x); 826 public static int i0_scaled_e (double x, out Result result); 827 public static double i1_scaled (double x); 828 public static int i1_scaled_e (double x, out Result result); 829 public static double i2_scaled (double x); 830 public static int i2_scaled_e (double x, out Result result); 831 public static double il_scaled (int l, double x); 832 public static int il_scaled_e (int l, double x, out Result result); 833 public static int il_scaled_array (int lmax, double x, [CCode (array_length = false)] double[] result_array); 834 835 public static double k0_scaled (double x); 836 public static int k0_scaled_e (double x, out Result result); 837 public static double k1_scaled (double x); 838 public static int k1_scaled_e (double x, out Result result); 839 public static double k2_scaled (double x); 840 public static int k2_scaled_e (double x, out Result result); 841 public static double kl_scaled (int l, double x); 842 public static int kl_scaled_e (int l, double x, out Result result); 843 public static int kl_scaled_array (int lmax, double x, [CCode (array_length = false)] double[] result_array); 844 845 public static double Jnu (double nu, double x); 846 public static int Jnu_e (double nu, double x, out Result result); 847 public static int sequence_Jnu_e (double nu, Mode mode, size_t size, [CCode (array_length = false)] double[] v); 848 849 public static double Ynu (double nu, double x); 850 public static int Ynu_e (double nu, double x, out Result result); 851 852 public static double Inu (double nu, double x); 853 public static int Inu_e (double nu, double x, out Result result); 854 public static double Inu_scaled (double nu, double x); 855 public static int Inu_scaled_e (double nu, double x, out Result result); 856 857 public static double Knu (double nu, double x); 858 public static int Knu_e (double nu, double x, out Result result); 859 public static double lnKnu (double nu, double x); 860 public static int lnKnu_e (double nu, double x, out Result result); 861 public static double Knu_scaled (double nu, double x); 862 public static int Knu_scaled_e (double nu, double x, out Result result); 863 864 public static double zero_J0 (uint s); 865 public static int zero_J0_e (uint s, out Result result); 866 public static double zero_J1 (uint s); 867 public static int zero_J1_e (uint s, out Result result); 868 public static double zero_Jnu (double nu, uint s); 869 public static int zero_Jnu_e (double nu, uint s, out Result result); 870 } 871 872 [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_clausen.h")] 873 namespace Clausen 874 { 875 public static double clausen (double x); 876 public static int clausen_e (double x, out Result result); 877 } 878 879 [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_coulomb.h")] 880 namespace Hydrogenic 881 { 882 public static double hydrogenicR_1 (double z, double r); 883 public static int hydrogenicR_1_e (double z, double r, out Result result); 884 public static double hydrogenicR (int n, int l, double z, double r); 885 public static int hydrogenicR_e (int n, int l, double z, double r, out Result result); 886 } 887 888 [CCode (lower_case_cprefix="gsl_sf_coulomb_wave_", cheader_filename="gsl/gsl_sf_coulomb.h")] 889 namespace CoulombWave 890 { 891 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); 892 public static int F_array (double l_min, int kmax, double eta, double x, [CCode (array_length = false)] double[] fc_array, out double f_exponent); 893 public static int FG_array (double l_min, int kmax, double eta, double x, [CCode (array_length = false)] double[] fc_array, [CCode (array_length = false)] double[] gc_array, out double f_exponent, out double g_exponent); 894 public static int FGp_array (double l_min, int kmax, double eta, double x, [CCode (array_length = false)] double[] fc_array, [CCode (array_length = false)] double[] fcp_array, [CCode (array_length = false)] double[] gc_array, [CCode (array_length = false)] double[] gcp_array, out double f_exponent, out double g_exponent); 895 public static int sphF_array (double l_min, int kmax, double eta, double x, [CCode (array_length = false)] double[] fc_array, [CCode (array_length = false)] double[] f_exponent); 896 } 897 898 [CCode (lower_case_cprefix="gsl_sf_coulomb_", cheader_filename="gsl/gsl_sf_coulomb.h")] 899 namespace Coulomb 900 { 901 public static int CL_e (double l, double eta, out Result result); 902 public static int CL_array (double lmin, int kmax, double eta, [CCode (array_length = false)] double[] cl); 903 } 904 905 [CCode (lower_case_cprefix="gsl_sf_coupling_", cheader_filename="gsl/gsl_sf_coupling.h")] 906 namespace Coupling 907 { 908 public static double 3j (int two_ja, int two_jb, int two_jc, int two_ma, int two_mb, int two_mc); 909 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); 910 911 public static double 6j (int two_ja, int two_jb, int two_jc, int two_jd, int two_je, int two_jf); 912 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); 913 914 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); 915 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); 916 } 917 918 [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_dawson.h")] 919 namespace Dawson 920 { 921 public static double dawson (double x); 922 public static int dawson_e (double x, out Result result); 923 } 924 925 [CCode (cheader_filename="gsl/gsl_sf_debye.h")] 926 namespace Debye 927 { 928 [CCode (cname="gsl_sf_debye_1")] 929 public static double D1 (double x); 930 [CCode (cname="gsl_sf_debye_1_e")] 931 public static int D1_e (double x, out Result result); 932 [CCode (cname="gsl_sf_debye_2")] 933 public static double D2 (double x); 934 [CCode (cname="gsl_sf_debye_2_e")] 935 public static int D2_e (double x, out Result result); 936 [CCode (cname="gsl_sf_debye_3")] 937 public static double D3 (double x); 938 [CCode (cname="gsl_sf_debye_3_e")] 939 public static int D3_e (double x, out Result result); 940 [CCode (cname="gsl_sf_debye_4")] 941 public static double D4 (double x); 942 [CCode (cname="gsl_sf_debye_4_e")] 943 public static int D4_e (double x, out Result result); 944 [CCode (cname="gsl_sf_debye_5")] 945 public static double D5 (double x); 946 [CCode (cname="gsl_sf_debye_5_e")] 947 public static int D5_e (double x, out Result result); 948 [CCode (cname="gsl_sf_debye_6")] 949 public static double D6 (double x); 950 [CCode (cname="gsl_sf_debye_6_e")] 951 public static int D6_e (double x, out Result result); 952 } 953 954 [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_dilog.h")] 955 namespace Dilog 956 { 957 public static double dilog (double x); 958 public static int dilog_e (double x, out Result result); 959 public static int complex_dilog_e (double r, double theta, out Result result_re, out Result result_im); 960 } 961 962 [CCode (lower_case_cprefix="gsl_sf_multiply_", cheader_filename="gsl/gsl_sf_elementary.h")] 963 namespace Multiply 964 { 965 public static int e (double x, double y, out Result result); 966 public static int err_e (double x, double dx, double y, double dy, out Result result); 967 } 968 969 [CCode (lower_case_cprefix="gsl_sf_ellint_", cheader_filename="gsl/gsl_sf_ellint.h")] 970 namespace EllInt 971 { 972 public static double Kcomp (double k, Mode mode); 973 public static int Kcomp_e (double k, Mode mode, out Result result); 974 public static double Ecomp (double k, Mode mode); 975 public static int Ecomp_e (double k, Mode mode, out Result result); 976 public static double Pcomp (double k, double n, Mode mode); 977 public static int Pcomp_e (double k, double n, Mode mode, out Result result); 978 979 public static double F (double phi, double k, Mode mode); 980 public static int F_e (double phi, double k, Mode mode, out Result result); 981 public static double E (double phi, double k, Mode mode); 982 public static int E_e (double phi, double k, Mode mode, out Result result); 983 public static double P (double phi, double k, double n, Mode mode); 984 public static int P_e (double phi, double k, double n, Mode mode, out Result result); 985 public static double D (double phi, double k, Mode mode); 986 public static int D_e (double phi, double k, Mode mode, out Result result); 987 988 public static double RC (double x, double y, Mode mode); 989 public static int RC_e (double x, double y, Mode mode, out Result result); 990 public static double RD (double x, double y, double z, Mode mode); 991 public static int RD_e (double x, double y, double z, Mode mode, out Result result); 992 public static double RF (double x, double y, double z, Mode mode); 993 public static int RF_e (double x, double y, double z, Mode mode, out Result result); 994 public static double RJ (double x, double y, double z, double p, Mode mode); 995 public static int RJ_e (double x, double y, double z, double p, Mode mode, out Result result); 996 } 997 998 [CCode (lower_case_cprefix="gsl_sf_elljac_", cheader_filename="gsl/gsl_sf_elljac.h")] 999 namespace EllJac 1000 { 1001 public static int e (double u, double m, out double sn, out double cn, out double dn); 1002 } 1003 1004 [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_erf.h")] 1005 namespace Erf 1006 { 1007 public static double erf (double x); 1008 public static int erf_e (double x, out Result result); 1009 public static double erf_Z (double x); 1010 public static int erf_Z_e (double x, out Result result); 1011 public static double erf_Q (double x); 1012 public static int erf_Q_e (double x, out Result result); 1013 public static double erfc (double x); 1014 public static int erfc_e (double x, out Result result); 1015 public static double log_erfc (double x); 1016 public static int log_erfc_e (double x, out Result result); 1017 public static double hazard (double x); 1018 public static int hazard_e (double x, out Result result); 1019 } 1020 1021 [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_exp.h")] 1022 namespace Exp 1023 { 1024 public static double exp (double x); 1025 public static int exp_e (double x, out Result result); 1026 public static int exp_e10_e (double x, out ResultE10 result); 1027 public static double exp_mult (double x, double y); 1028 public static int exp_mult_e (double x, double y, out Result result); 1029 public static int exp_mult_e10_e (double x, double y, out ResultE10 result); 1030 public static int exp_err_e (double x, double dx, out Result result); 1031 public static int exp_err_e10_e (double x, double dx, out ResultE10 result); 1032 public static int exp_mult_err_e (double x, double dx, double y, double dy, out Result result); 1033 public static int exp_mult_err_e10_e (double x, double dx, double y, double dy, out ResultE10 result); 1034 public static double expm1 (double x); 1035 public static int expm1_e (double x, out Result result); 1036 public static double exprel (double x); 1037 public static int exprel_e (double x, out Result result); 1038 public static double exprel_2 (double x); 1039 public static int exprel_2_e (double x, out Result result); 1040 public static double exprel_n (int n, double x); 1041 public static int exprel_n_e (int n, double x, out Result result); 1042 } 1043 1044 [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_expint.h")] 1045 namespace Expint 1046 { 1047 public static double expint_E1 (double x); 1048 public static int expint_E1_e (double x, out Result result); 1049 public static double expint_E2 (double x); 1050 public static int expint_E2_e (double x, out Result result); 1051 public static double expint_En (int n, double x); 1052 public static int expint_En_e (int n, double x, out Result result); 1053 public static double expint_Ei (double x); 1054 public static int expint_Ei_e (double x, out Result result); 1055 public static double expint_3 (double x); 1056 public static int expint_3_e (double x, out Result result); 1057 public static double Shi (double x); 1058 public static int Shi_e (double x, out Result result); 1059 public static double Chi (double x); 1060 public static int Chi_e (double x, out Result result); 1061 public static double Si (double x); 1062 public static int Si_e (double x, out Result result); 1063 public static double Ci (double x); 1064 public static int Ci_e (double x, out Result result); 1065 public static double atanint (double x); 1066 public static double atanint_e (double x, out Result result); 1067 } 1068 1069 [CCode (lower_case_cprefix="gsl_sf_fermi_dirac_", cheader_filename="gsl/gsl_sf_fermi_dirac.h")] 1070 namespace FermiDirac 1071 { 1072 public static double m1 (double x); 1073 public static int m1_e (double x, out Result result); 1074 [CCode (cname="gsl_sf_fermi_dirac_0")] 1075 public static double F0 (double x); 1076 [CCode (cname="gsl_sf_fermi_dirac_0_e")] 1077 public static int F0_e (double x, out Result result); 1078 [CCode (cname="gsl_sf_fermi_dirac_1")] 1079 public static double F1 (double x); 1080 [CCode (cname="gsl_sf_fermi_dirac_1_e")] 1081 public static int F1_e (double x, out Result result); 1082 [CCode (cname="gsl_sf_fermi_dirac_2")] 1083 public static double F2 (double x); 1084 [CCode (cname="gsl_sf_fermi_dirac_2_e")] 1085 public static int F2_e (double x, out Result result); 1086 [CCode (cname="gsl_sf_fermi_dirac_int")] 1087 public static double Fint (int j, double x); 1088 [CCode (cname="gsl_sf_fermi_dirac_int_e")] 1089 public static int Fint_e (int j, double x, out Result result); 1090 public static double mhalf (double x); 1091 public static int mhalf_e (double x, out Result result); 1092 public static double half (double x); 1093 public static int half_e (double x, out Result result); 1094 public static double 3half (double x); 1095 public static int 3half_e (double x, out Result result); 1096 public static double inc_0 (double x, double b); 1097 public static int inc_0_e (double x, double b, out Result result); 1098 } 1099 1100 [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_gamma.h")] 1101 namespace GammaBeta 1102 { 1103 public static double gamma (double x); 1104 public static int gamma_e (double x, out Result result); 1105 public static double lngamma (double x); 1106 public static int lngamma_e (double x, out Result result); 1107 public static int lngamma_sgn_e (double x, out Result result, out double sgn); 1108 public static double gammastar (double x); 1109 public static int gammastar_e (double x, out Result result); 1110 public static double gammainv (double x); 1111 public static int gammainv_e (double x, out Result result); 1112 public static int lngamma_complex_e (double zr, double zi, out Result lnr, out Result arg); 1113 1114 public static double fact (uint n); 1115 public static int fact_e (uint n, out Result result); 1116 public static double doublefact (uint n); 1117 public static int doublefact_e (uint n, out Result result); 1118 public static double lnfact (uint n); 1119 public static int lnfact_e (uint n, out Result result); 1120 public static double lndoublefact (uint n); 1121 public static int lndoublefact_e (uint n, out Result result); 1122 public static double choose (uint n, uint m); 1123 public static int choose_e (uint n, uint m, out Result result); 1124 public static double lnchoose (uint n, uint m); 1125 public static int lnchoose_e (uint n, uint m, out Result result); 1126 public static double taylorcoeff (int n, double x); 1127 public static int taylorcoeff_e (int n, double x, out Result result); 1128 1129 public static double poch (double a, double x); 1130 public static int poch_e (double a, double x, out Result result); 1131 public static double lnpoch (double a, double x); 1132 public static int lnpoch_e (double a, double x, out Result result); 1133 public static int lnpoch_sgn_e (double a, double x, out Result result, out double sgn); 1134 public static double pochrel (double a, double x); 1135 public static int pochrel_e (double a, double x, out Result result); 1136 1137 public static double gamma_inc (double a, double x); 1138 public static int gamma_inc_e (double a, double x, out Result result); 1139 public static double gamma_inc_Q (double a, double x); 1140 public static int gamma_inc_Q_e (double a, double x, out Result result); 1141 public static double gamma_inc_P (double a, double x); 1142 public static int gamma_inc_P_e (double a, double x, out Result result); 1143 1144 public static double beta (double a, double b); 1145 public static int beta_e (double a, double b, out Result result); 1146 public static double lnbeta (double a, double b); 1147 public static int lnbeta_e (double a, double b, out Result result); 1148 1149 public static double beta_inc (double a, double b, double x); 1150 public static int beta_inc_e (double a, double b, double x, out Result result); 1151 } 1152 1153 [CCode (lower_case_cprefix="gsl_sf_gegenpoly_", cheader_filename="gsl/gsl_sf_gegenbauer.h")] 1154 namespace GegenPoly 1155 { 1156 [CCode (cname="gsl_sf_gegenpoly_1")] 1157 public static double C1 (double lambda, double x); 1158 [CCode (cname="gsl_sf_gegenpoly_1_e")] 1159 public static double C1_e (double lambda, double x, out Result result); 1160 [CCode (cname="gsl_sf_gegenpoly_2")] 1161 public static double C2 (double lambda, double x); 1162 [CCode (cname="gsl_sf_gegenpoly_2_e")] 1163 public static double C2_e (double lambda, double x, out Result result); 1164 [CCode (cname="gsl_sf_gegenpoly_3")] 1165 public static double C3 (double lambda, double x); 1166 [CCode (cname="gsl_sf_gegenpoly_3_e")] 1167 public static double C3_e (double lambda, double x, out Result result); 1168 [CCode (cname="gsl_sf_gegenpoly_n")] 1169 public static double Cn (int n, double lambda, double x); 1170 [CCode (cname="gsl_sf_gegenpoly_n_e")] 1171 public static double Cn_e (int n, double lambda, double x, out Result result); 1172 public static int array (int nmax, double lambda, double x, [CCode (array_length = false)] double[] result_array); 1173 } 1174 1175 [CCode (lower_case_cprefix="gsl_sf_hyperg_", cheader_filename="gsl/gsl_sf_hyperg.h")] 1176 namespace Hyperg 1177 { 1178 public static double 0F1 (double c, double x); 1179 public static int 0F1_e (double c, double x, out Result result); 1180 public static double 1F1_int (int m, int n, double x); 1181 public static int 1F1_int_e (int m, int n, double x, out Result result); 1182 public static double 1F1 (double a, double b, double x); 1183 public static int 1F1_e (double a, double b, double x, out Result result); 1184 public static double U_int (int m, int n, double x); 1185 public static int U_int_e (int m, int n, double x, out Result result); 1186 public static int U_int_e10_e (int m, int n, double x, out ResultE10 result); 1187 public static double U (double a, double b, double x); 1188 public static int U_e (double a, double b, double x, out Result result); 1189 public static int U_e10_e (double a, double b, double x, out ResultE10 result); 1190 public static double 2F1 (double a, double b, double c, double x); 1191 public static int 2F1_e (double a, double b, double c, double x, out Result result); 1192 public static double 2F1_conj (double aR, double aI, double c, double x); 1193 public static int 2F1_conj_e (double aR, double aI, double c, double x, out Result result); 1194 public static double 2F1_renorm (double a, double b, double c, double x); 1195 public static int 2F1_renorm_e (double a, double b, double c, double x, out Result result); 1196 public static double 2F1_conj_renorm (double aR, double aI, double c, double x); 1197 public static int 2F1_conj_renorm_e (double aR, double aI, double c, double x, out Result result); 1198 public static double 2F0 (double a, double b, double x); 1199 public static int 2F0_e (double a, double b, double x, out Result result); 1200 } 1201 1202 [CCode (cheader_filename="gsl/gsl_sf_laguerre.h")] 1203 namespace Laguerre 1204 { 1205 [CCode (cname="gsl_sf_laguerre_1")] 1206 public static double L1 (double a, double x); 1207 [CCode (cname="gsl_sf_laguerre_1_e")] 1208 public static double L1_e (double a, double x, out Result result); 1209 [CCode (cname="gsl_sf_laguerre_2")] 1210 public static double L2 (double a, double x); 1211 [CCode (cname="gsl_sf_laguerre_2_e")] 1212 public static double L2_e (double a, double x, out Result result); 1213 [CCode (cname="gsl_sf_laguerre_3")] 1214 public static double L3 (double a, double x); 1215 [CCode (cname="gsl_sf_laguerre_3_e")] 1216 public static double L3_e (double a, double x, out Result result); 1217 [CCode (cname="gsl_sf_laguerre_n")] 1218 public static double Ln (int n, double a, double x); 1219 [CCode (cname="gsl_sf_laguerre_n_e")] 1220 public static double Ln_e (int n, double a, double x, out Result result); 1221 } 1222 1223 [CCode (lower_case_cprefix="gsl_sf_lambert_", cheader_filename="gsl/gsl_sf_lambert.h")] 1224 namespace Lambert 1225 { 1226 public static double W0 (double x); 1227 public static int W0_e (double x, out Result result); 1228 public static double Wm1 (double x); 1229 public static int Wm1_e (double x, out Result result); 1230 } 1231 1232 [CCode (lower_case_cprefix="gsl_sf_legendre_", cheader_filename="gsl/gsl_sf_legendre.h")] 1233 namespace LegendrePoly 1234 { 1235 public static double P1 (double x); 1236 public static int P1_e (double x, out Result result); 1237 public static double P2 (double x); 1238 public static int P2_e (double x, out Result result); 1239 public static double P3 (double x); 1240 public static int P3_e (double x, out Result result); 1241 public static double Pl (int l, double x); 1242 public static int Pl_e (int l, double x, out Result result); 1243 public static int Pl_array (int lmax, double x, [CCode (array_length = false)] double[] result_array); 1244 public static int Pl_deriv_array (int lmax, double x, [CCode (array_length = false)] double[] result_array, [CCode (array_length = false)] double[] result_deriv_array); 1245 public static double Q0 (double x); 1246 public static int Q0_e (double x, out Result result); 1247 public static double Q1 (double x); 1248 public static int Q1_e (double x, out Result result); 1249 public static double Ql (int l, double x); 1250 public static int Ql_e (int l, double x, out Result result); 1251 1252 public static double Plm (int l, int m, double x); 1253 public static int Plm_e (int l, int m, double x, out Result result); 1254 public static int Plm_array (int lmax, int m, double x, [CCode (array_length = false)] double[] result_array); 1255 public static int Plm_deriv_array (int lmax, int m, double x, [CCode (array_length = false)] double[] result_array, [CCode (array_length = false)] double[] result_deriv_array); 1256 public static double sphPlm (int l, int m, double x); 1257 public static int sphPlm_e (int l, int m, double x, out Result result); 1258 public static int sphPlm_array (int lmax, int m, double x, [CCode (array_length = false)] double[] result_array); 1259 public static int sphPlm_deriv_array (int lmax, int m, double x, [CCode (array_length = false)] double[] result_array, [CCode (array_length = false)] double[] result_deriv_array); 1260 public static int array_size (int lmax, int m); 1261 1262 [CCode (cname="gsl_sf_conicalP_half")] 1263 public static double conicalP_half (double lambda, double x); 1264 [CCode (cname="gsl_sf_conicalP_half_e")] 1265 public static int conicalP_half_e (double lambda, double x, out Result result); 1266 [CCode (cname="gsl_sf_conicalP_mhalf")] 1267 public static double conicalP_mhalf (double lambda, double x); 1268 [CCode (cname="gsl_sf_conicalP_mhalf_e")] 1269 public static int conicalP_mhalf_e (double lambda, double x, out Result result); 1270 [CCode (cname="gsl_sf_conicalP_0")] 1271 public static double conicalP_0 (double lambda, double x); 1272 [CCode (cname="gsl_sf_conicalP_0_e")] 1273 public static int conicalP_0_e (double lambda, double x, out Result result); 1274 [CCode (cname="gsl_sf_conicalP_1")] 1275 public static double conicalP_1 (double lambda, double x); 1276 [CCode (cname="gsl_sf_conicalP_1_e")] 1277 public static int conicalP_1_e (double lambda, double x, out Result result); 1278 [CCode (cname="gsl_sf_conicalP_sph_reg")] 1279 public static double conicalP_sph_reg (int l, double lambda, double x); 1280 [CCode (cname="gsl_sf_conicalP_sph_reg_e")] 1281 public static int conicalP_sph_reg_e (int l, double lambda, double x, out Result result); 1282 [CCode (cname="gsl_sf_conicalP_cyl_reg")] 1283 public static double conicalP_cyl_reg (int m, double lambda, double x); 1284 [CCode (cname="gsl_sf_conicalP_cyl_reg_e")] 1285 public static int conicalP_cyl_reg_e (int m, double lambda, double x, out Result result); 1286 1287 public static double H3d_0 (double lambda, double eta); 1288 public static int H3d_0_e (double lambda, double eta, out Result result); 1289 public static double H3d_1 (double lambda, double eta); 1290 public static int H3d_1_e (double lambda, double eta, out Result result); 1291 public static double H3d (int l, double lambda, double eta); 1292 public static int H3d_e (int l, double lambda, double eta, out Result result); 1293 public static int H3d_array (int lmax, double lambda, double eta, [CCode (array_length = false)] double[] result_array); 1294 } 1295 1296 [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_log.h")] 1297 namespace Log 1298 { 1299 public static double log (double x); 1300 public static int log_e (double x, out Result result); 1301 public static double log_abs (double x); 1302 public static int log_abs_e (double x, out Result result); 1303 public static int complex_log_e (double zr, double zi, out Result result, out Result theta); 1304 public static double log_1plusx (double x); 1305 public static int log_1plusx_e (double x, out Result result); 1306 public static double log_1plusx_mx (double x); 1307 public static int log_1plusx_mx_e (double x, out Result result); 1308 } 1309 1310 [Compact] 1311 [CCode (cname="gsl_sf_mathieu_workspace", cprefix="gsl_sf_mathieu_", cheader_filename="gsl/gsl_sf_mathieu.h")] 1312 public class MathieuWorkspace 1313 { 1314 public size_t size; 1315 public size_t even_order; 1316 public size_t odd_order; 1317 public int extra_values; 1318 public double qa; 1319 public double qb; 1320 public double* aa; 1321 public double* bb; 1322 public double* dd; 1323 public double* ee; 1324 public double* tt; 1325 public double* e2; 1326 public double* zz; 1327 public Vector eval; 1328 public Matrix evec; 1329 public EigenSymmvWorkspace wmat; 1330 1331 public static int a_array (int order_min, int order_max, double qq, MathieuWorkspace work, [CCode (array_length = false)] double[] result_array); 1332 public static int b_array (int order_min, int order_max, double qq, MathieuWorkspace work, [CCode (array_length = false)] double[] result_array); 1333 public static int a (int order, double qq); 1334 public static int b (int order, double qq); 1335 public static int a_coeff (int order, double qq, double aa, [CCode (array_length = false)] double[] coeff); 1336 public static int b_coeff (int order, double qq, double aa, [CCode (array_length = false)] double[] coeff); 1337 1338 [CCode (cname="gsl_sf_mathieu_alloc")] 1339 public MathieuWorkspace (size_t nn, double qq); 1340 1341 public static int ce (int order, double qq, double zz); 1342 public static int se (int order, double qq, double zz); 1343 public static int ce_array (int nmin, int nmax, double qq, double zz, MathieuWorkspace work, [CCode (array_length = false)] double[] result_array); 1344 public static int se_array (int nmin, int nmax, double qq, double zz, MathieuWorkspace work, [CCode (array_length = false)] double[] result_array); 1345 1346 public static int Mc (int kind, int order, double qq, double zz); 1347 public static int Ms (int kind, int order, double qq, double zz); 1348 public static int Mc_array (int kind, int nmin, int nmax, double qq, double zz, MathieuWorkspace work, [CCode (array_length = false)] double[] result_array); 1349 public static int Ms_array (int kind, int nmin, int nmax, double qq, double zz, MathieuWorkspace work, [CCode (array_length = false)] double[] result_array); 1350 } 1351 1352 [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_pow_int.h")] 1353 namespace Pow 1354 { 1355 public static double pow_int (double x, int n); 1356 public static int pow_int_e (double x, int n, out Result result); 1357 } 1358 1359 [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_psi.h")] 1360 namespace Psi 1361 { 1362 public static double psi_int (int n); 1363 public static int psi_int_e (int n, out Result result); 1364 public static double psi (double x); 1365 public static int psi_e (double x, out Result result); 1366 public static double psi_1piy (double y); 1367 public static int psi_1piy_e (double y, out Result result); 1368 1369 public static double psi_1_int (int n); 1370 public static int psi_1_int_e (int n, out Result result); 1371 public static double psi_1 (double x); 1372 public static int psi_1_e (double x, out Result result); 1373 1374 public static double psi_n (int n, double x); 1375 public static int psi_n_e (int n, double x, out Result result); 1376 } 1377 1378 [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_synchrotron.h")] 1379 namespace Synchrotron 1380 { 1381 public static double synchrotron_1 (double x); 1382 public static int synchrotron_1_e (double x, out Result result); 1383 public static double synchrotron_2 (double x); 1384 public static double synchrotron_2_e (double x, out Result result); 1385 } 1386 1387 [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_transport.h")] 1388 namespace Transport 1389 { 1390 public static double transport_2 (double x); 1391 public static int transport_2_e (double x, out Result result); 1392 public static double transport_3 (double x); 1393 public static int transport_3_e (double x, out Result result); 1394 public static double transport_4 (double x); 1395 public static int transport_4_e (double x, out Result result); 1396 public static double transport_5 (double x); 1397 public static int transport_5_e (double x, out Result result); 1398 } 1399 1400 [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_trig.h")] 1401 namespace Trig 1402 { 1403 public static double sin (double x); 1404 public static int sin_e (double x, out Result result); 1405 public static double cos (double x); 1406 public static int cos_e (double x, out Result result); 1407 public static double hypot (double x, double y); 1408 public static int hypot_e (double x, double y, out Result result); 1409 public static double sinc (double x); 1410 public static int sinc_e (double x, out Result result); 1411 public static double complex_sin_e (double zr, double zi, out Result szr, out Result szi); 1412 public static double complex_cos_e (double zr, double zi, out Result czr, out Result czi); 1413 public static double complex_logsin_e (double zr, double zi, out Result lszr, out Result lszi); 1414 public static double lnsinh (double x); 1415 public static int lnsinh_e (double x, out Result result); 1416 public static double lncosh (double x); 1417 public static int lncosh_e (double x, out Result result); 1418 public static int polar_to_rect (double r, double theta, out Result x, out Result y); 1419 public static int rect_to_polar (double x, double y, out Result r, out Result theta); 1420 public static double angle_restrict_symm (double theta); 1421 public static int angle_restrict_symm_e (out double theta); 1422 public static double angle_restrict_pos (double theta); 1423 public static int angle_restrict_pos_e (out double theta); 1424 public static int sin_err_e (double x, double dx, out Result result); 1425 public static int cos_err_e (double x, double dx, out Result result); 1426 } 1427 1428 [CCode (lower_case_cprefix="gsl_sf_", cheader_filename="gsl/gsl_sf_zeta.h")] 1429 namespace Zeta 1430 { 1431 public static double zeta_int (int n); 1432 public static int zeta_int_e (int n, out Result result); 1433 public static double zeta (double s); 1434 public static int zeta_e (double s, out Result result); 1435 public static double zetam1_int (int n); 1436 public static int zetam1_int_e (int n, out Result result); 1437 public static double zetam1 (double s); 1438 public static int zetam1_e (double s, out Result result); 1439 public static double hzeta (double s, double q); 1440 public static int hzeta_e (double s, double q, out Result result); 1441 public static double eta_int (int n); 1442 public static int eta_int_e (int n, out Result result); 1443 public static double eta (double s); 1444 public static int eta_e (double s, out Result result); 1445 } 1446 1447 1448 /* 1449 * Blocks, Vectors and Matrices 1450 */ 1451 [Compact] 1452 [CCode (cname="gsl_block", cheader_filename="gsl/gsl_block_double.h")] 1453 public class Block 1454 { 1455 public size_t size; 1456 public double* data; 1457 1458 [CCode (cname="gsl_block_alloc")] 1459 public Block (size_t n); 1460 [CCode (cname="gsl_block_calloc")] 1461 public Block.with_zeros (size_t n); 1462 1463 [CCode (instance_pos=-1)] 1464 public int fwrite (GLib.FileStream stream); 1465 [CCode (instance_pos=-1)] 1466 public int fread (GLib.FileStream stream); 1467 public static int fprintf (GLib.FileStream stream, Block b, string format); 1468 [CCode (instance_pos=-1)] 1469 public int fscanf (GLib.FileStream stream); 1470 } 1471 1472 [Compact] 1473 [CCode (cname="gsl_block_complex", cheader_filename="gsl/gsl_block_complex_double.h")] 1474 public class BlockComplex 1475 { 1476 public size_t size; 1477 public double* data; 1478 1479 [CCode (cname="gsl_block_complex_alloc")] 1480 public BlockComplex (size_t n); 1481 [CCode (cname="gsl_block_complex_calloc")] 1482 public BlockComplex.with_zeros (size_t n); 1483 1484 [CCode (instance_pos=-1)] 1485 public int fwrite (GLib.FileStream stream); 1486 [CCode (instance_pos=-1)] 1487 public int fread (GLib.FileStream stream); 1488 public static int fprintf (GLib.FileStream stream, BlockComplex b, string format); 1489 [CCode (instance_pos=-1)] 1490 public int fscanf (GLib.FileStream stream); 1491 } 1492 1493 [SimpleType] 1494 [CCode (cname="gsl_vector_view", cheader_filename="gsl/gsl_vector_double.h", has_type_id = false)] 1495 public struct VectorView 1496 { 1497 public unowned Vector vector; 1498 1499 public static VectorView array (double[] v); 1500 public static VectorView array_with_stride ([CCode (array_length = false)] double[] v, size_t stride, size_t n); 1501 } 1502 1503 [Compact] 1504 [CCode (cname="gsl_vector", cheader_filename="gsl/gsl_vector_double.h")] 1505 public class Vector 1506 { 1507 public size_t size; 1508 public size_t stride; 1509 public double* data; 1510 public Block block; 1511 public int owner; 1512 1513 [CCode (cname="gsl_vector_alloc")] 1514 public Vector (size_t n); 1515 [CCode (cname="gsl_vector_calloc")] 1516 public Vector.with_zeros (size_t n); 1517 [CCode (cname="gsl_vector_alloc_from_block")] 1518 public Vector.from_block (Block b, size_t offset, size_t n, size_t stride); 1519 [CCode (cname="gsl_vector_alloc_from_vector")] 1520 public Vector.from_vector (Vector v, size_t offset, size_t n, size_t stride); 1521 1522 public double @get (size_t i); 1523 public void @set (size_t i, double x); 1524 public double* ptr (size_t i); 1525 1526 public void set_all (double x); 1527 public void set_zero (); 1528 public void set_basis (size_t i); 1529 1530 [CCode (instance_pos=-1)] 1531 public int fwrite (GLib.FileStream stream); 1532 [CCode (instance_pos=-1)] 1533 public int fread (GLib.FileStream stream); 1534 public static int fprintf (GLib.FileStream stream, Vector v, string format); 1535 [CCode (instance_pos=-1)] 1536 public int fscanf (GLib.FileStream stream); 1537 1538 public VectorView subvector (size_t offset, size_t n); 1539 public VectorView subvector_with_stride (size_t offset, size_t stride, size_t n); 1540 1541 public int memcpy (Vector src); 1542 public int swap (Vector w); 1543 1544 public int swap_elements (size_t i, size_t j); 1545 public int reverse (); 1546 1547 public int add (Vector b); 1548 public int sub (Vector b); 1549 public int mul (Vector b); 1550 public int div (Vector b); 1551 public int scale (double x); 1552 public int add_constant (double x); 1553 1554 public double max (); 1555 public double min (); 1556 public void minmax (out double min_out, out double max_out); 1557 public size_t max_index (); 1558 public size_t min_index (); 1559 public void minmax_index (out size_t imin, out size_t imax); 1560 1561 public bool isnull (); 1562 public bool ispos (); 1563 public bool isneg (); 1564 public bool isnonneg (); 1565 } 1566 1567 [SimpleType] 1568 [CCode (cname="gsl_vector_complex_view", cheader_filename="gsl/gsl_vector_complex_double.h", has_type_id = false)] 1569 public struct VectorComplexView 1570 { 1571 public unowned VectorComplex vector; 1572 1573 public static VectorComplexView array (double[] v); 1574 public static VectorComplexView array_with_stride ([CCode (array_length = false)] double[] v, size_t stride, size_t n); 1575 } 1576 1577 [Compact] 1578 [CCode (cname="gsl_vector_complex", cheader_filename="gsl/gsl_vector_complex_double.h")] 1579 public class VectorComplex 1580 { 1581 public size_t size; 1582 public size_t stride; 1583 public double* data; 1584 public BlockComplex block; 1585 public int owner; 1586 1587 [CCode (cname="gsl_vector_complex_alloc")] 1588 public VectorComplex (size_t n); 1589 [CCode (cname="gsl_vector_complex_calloc")] 1590 public VectorComplex.with_zeros (size_t n); 1591 [CCode (cname="gsl_vector_complex_alloc_from_block")] 1592 public VectorComplex.from_block (BlockComplex b, size_t offset, size_t n, size_t stride); 1593 [CCode (cname="gsl_vector_complex_alloc_from_vector")] 1594 public VectorComplex.from_vector (VectorComplex v, size_t offset, size_t n, size_t stride); 1595 1596 public Complex @get (size_t i); 1597 public void @set (size_t i, Complex x); 1598 public Complex* ptr (size_t i); 1599 1600 public void set_all (Complex x); 1601 public void set_zero (); 1602 public void set_basis (size_t i); 1603 1604 [CCode (instance_pos=-1)] 1605 public int fwrite (GLib.FileStream stream); 1606 [CCode (instance_pos=-1)] 1607 public int fread (GLib.FileStream stream); 1608 public static int fprintf (GLib.FileStream stream, VectorComplex v, string format); 1609 [CCode (instance_pos=-1)] 1610 public int fscanf (GLib.FileStream stream); 1611 1612 public VectorComplexView subvector (size_t i, size_t n); 1613 public VectorComplexView subvector_with_stride (size_t i, size_t stride, size_t n); 1614 public VectorView const_real (); 1615 public VectorView const_imag (); 1616 1617 public int memcpy (VectorComplex src); 1618 public int swap (VectorComplex w); 1619 1620 public int swap_elements (size_t i, size_t j); 1621 public int reverse (); 1622 1623 public int add (VectorComplex b); 1624 public int sub (VectorComplex b); 1625 public int mul (VectorComplex b); 1626 public int div (VectorComplex b); 1627 public int scale (Complex x); 1628 public int add_constant (Complex x); 1629 1630 public bool isnull (); 1631 public bool ispos (); 1632 public bool isneg (); 1633 public bool isnonneg (); 1634 } 1635 1636 [SimpleType] 1637 [CCode (cname="gsl_matrix_view", cheader_filename="gsl/gsl_matrix_double.h", has_type_id = false)] 1638 public struct MatrixView 1639 { 1640 public unowned Matrix matrix; 1641 1642 public static MatrixView array ([CCode (array_length = false)] double[] v, size_t n1, size_t n2); 1643 public static MatrixView array_with_tda ([CCode (array_length = false)] double[] v, size_t n1, size_t n2, size_t tda); 1644 public static MatrixView vector (Vector v, size_t n1, size_t n2); 1645 public static MatrixView vector_with_tda (Vector v, size_t n1, size_t n2, size_t tda); 1646 } 1647 1648 [Compact] 1649 [CCode (cname="gsl_matrix", cheader_filename="gsl/gsl_matrix_double.h")] 1650 public class Matrix 1651 { 1652 public size_t size1; 1653 public size_t size2; 1654 public size_t tda; 1655 public double* data; 1656 public Block block; 1657 public int owner; 1658 1659 [CCode (cname="gsl_matrix_alloc")] 1660 public Matrix (size_t n1, size_t n2); 1661 [CCode (cname="gsl_matrix_calloc")] 1662 public Matrix.with_zeros (size_t n1, size_t n2); 1663 [CCode (cname="gsl_matrix_alloc_from_block")] 1664 public Matrix.from_block (Block b, size_t offset, size_t n1, size_t n2, size_t d2); 1665 [CCode (cname="gsl_matrix_alloc_from_matrix")] 1666 public Matrix.from_matrix (Matrix m, size_t k1, size_t k2, size_t n1, size_t n2); 1667 1668 [CCode (cname="gsl_vector_alloc_row_from_matrix")] 1669 public Vector alloc_row_from_matrix (size_t i); 1670 [CCode (cname="gsl_vector_alloc_col_from_matrix")] 1671 public Vector alloc_col_from_matrix (size_t j); 1672 1673 public double @get (size_t i, size_t j); 1674 public void @set (size_t i, size_t j, double x); 1675 public double* ptr (size_t i, size_t j); 1676 1677 public void set_all (double x); 1678 public void set_zero (); 1679 public void set_identity (); 1680 1681 [CCode (instance_pos=-1)] 1682 public int fwrite (GLib.FileStream stream); 1683 [CCode (instance_pos=-1)] 1684 public int fread (GLib.FileStream stream); 1685 public static int fprintf (GLib.FileStream stream, Matrix m, string format); 1686 [CCode (instance_pos=-1)] 1687 public int fscanf (GLib.FileStream stream); 1688 1689 public MatrixView submatrix (size_t k, size_t k2, size_t n1, size_t n2); 1690 public VectorView row (size_t i); 1691 public VectorView column (size_t j); 1692 public VectorView subrow (size_t i, size_t offset, size_t n); 1693 public VectorView subcolumn (size_t i, size_t offset, size_t n); 1694 public VectorView diagonal (); 1695 public VectorView subdiagonal (size_t k); 1696 public VectorView superdiagonal (size_t k); 1697 1698 public int memcpy (Matrix src); 1699 public int swap (Matrix m2); 1700 1701 public static int get_row (Vector v, Matrix m, size_t i); 1702 public static int get_col (Vector v, Matrix m, size_t j); 1703 public int set_row (size_t i, Vector v); 1704 public int set_col (size_t j, Vector v); 1705 1706 public int swap_rows (size_t i, size_t j); 1707 public int swap_columns (size_t i, size_t j); 1708 public int swap_rowcol (size_t i, size_t j); 1709 public int transpose_memcpy (Matrix src); 1710 public int transpose (); 1711 1712 public int add (Matrix b); 1713 public int sub (Matrix b); 1714 public int mul_elements (Matrix b); 1715 public int div_elements (Matrix b); 1716 public int scale (double x); 1717 public int add_constant (double x); 1718 public int add_diagonal (double x); 1719 1720 public double max (); 1721 public double min (); 1722 public void minmax (out double min_out, out double max_out); 1723 public void max_index (out size_t imax, out size_t jmax); 1724 public void min_index (out size_t imin, out size_t jmin); 1725 public void minmax_index (out size_t imin, out size_t jmin, out size_t imax, out size_t jmax); 1726 1727 public bool isnull (); 1728 public bool ispos (); 1729 public bool isneg (); 1730 public bool isnonneg (); 1731 } 1732 1733 [SimpleType] 1734 [CCode (cname="gsl_matrix_complex_view", cheader_filename="gsl/gsl_matrix_complex_double.h", has_type_id = false)] 1735 public struct MatrixComplexView 1736 { 1737 public unowned MatrixComplex matrix; 1738 1739 public static MatrixComplexView array ([CCode (array_length = false)] double[] v, size_t n1, size_t n2); 1740 public static MatrixComplexView array_with_tda ([CCode (array_length = false)] double[] v, size_t n1, size_t n2, size_t tda); 1741 public static MatrixComplexView vector (VectorComplex v, size_t n1, size_t n2); 1742 public static MatrixComplexView vector_with_tda (VectorComplex v, size_t n1, size_t n2, size_t tda); 1743 } 1744 1745 [Compact] 1746 [CCode (cname="gsl_matrix_complex", cheader_filename="gsl/gsl_matrix_complex_double.h")] 1747 public class MatrixComplex 1748 { 1749 public size_t size1; 1750 public size_t size2; 1751 public size_t tda; 1752 public double* data; 1753 public BlockComplex block; 1754 public int owner; 1755 1756 [CCode (cname="gsl_matrix_complex_alloc")] 1757 public MatrixComplex (size_t n1, size_t n2); 1758 [CCode (cname="gsl_matrix_complex_calloc")] 1759 public MatrixComplex.with_zeros (size_t n1, size_t n2); 1760 [CCode (cname="gsl_matrix_complex_alloc_from_block")] 1761 public MatrixComplex.from_block (BlockComplex b, size_t offset, size_t n1, size_t n2, size_t d2); 1762 [CCode (cname="gsl_matrix_complex_alloc_from_matrix")] 1763 public MatrixComplex.from_matrix (MatrixComplex m, size_t k1, size_t k2, size_t n1, size_t n2); 1764 1765 [CCode (cname="gsl_vector_complex_alloc_row_from_matrix")] 1766 public VectorComplex alloc_row_from_matrix (size_t i); 1767 [CCode (cname="gsl_vector_complex_alloc_col_from_matrix")] 1768 public VectorComplex alloc_col_from_matrix (size_t j); 1769 1770 public Complex @get (size_t i, size_t j); 1771 public void @set (size_t i, size_t j, Complex x); 1772 public Complex* ptr (size_t i, size_t j); 1773 1774 public void set_all (Complex x); 1775 public void set_zero (); 1776 public void set_identity (); 1777 1778 [CCode (instance_pos=-1)] 1779 public int fwrite (GLib.FileStream stream); 1780 [CCode (instance_pos=-1)] 1781 public int fread (GLib.FileStream stream); 1782 public static int fprintf (GLib.FileStream stream, MatrixComplex m, string format); 1783 [CCode (instance_pos=-1)] 1784 public int fscanf (GLib.FileStream stream); 1785 1786 public MatrixComplexView submatrix (size_t k, size_t k2, size_t n1, size_t n2); 1787 public VectorComplexView row (size_t i); 1788 public VectorComplexView column (size_t j); 1789 public VectorComplexView subrow (size_t i, size_t offset, size_t n); 1790 public VectorComplexView subcolumn (size_t i, size_t offset, size_t n); 1791 public VectorComplexView diagonal (); 1792 public VectorComplexView subdiagonal (size_t k); 1793 public VectorComplexView superdiagonal (size_t k); 1794 1795 public int memcpy (MatrixComplex src); 1796 public int swap (MatrixComplex m2); 1797 1798 public static int get_row (VectorComplex v, MatrixComplex m, size_t i); 1799 public static int get_col (VectorComplex v, MatrixComplex m, size_t j); 1800 public int set_row (size_t i, VectorComplex v); 1801 public int set_col (size_t j, VectorComplex v); 1802 1803 public int swap_rows (size_t i, size_t j); 1804 public int swap_columns (size_t i, size_t j); 1805 public int swap_rowcol (size_t i, size_t j); 1806 public int transpose_memcpy (MatrixComplex src); 1807 public int transpose (); 1808 1809 public int add (MatrixComplex b); 1810 public int sub (MatrixComplex b); 1811 public int mul_elements (MatrixComplex b); 1812 public int div_elements (MatrixComplex b); 1813 public int scale (Complex x); 1814 public int add_constant (Complex x); 1815 public int add_diagonal (Complex x); 1816 1817 public bool isnull (); 1818 public bool ispos (); 1819 public bool isneg (); 1820 public bool isnonneg (); 1821 } 1822 1823 1824 /* 1825 * Permutations 1826 */ 1827 [Compact] 1828 [CCode (cname="gsl_permutation", cheader_filename="gsl/gsl_permutation.h")] 1829 public class Permutation 1830 { 1831 public size_t size; 1832 public size_t* data; 1833 1834 [CCode (cname="gsl_permutation_alloc")] 1835 public Permutation (size_t n); 1836 [CCode (cname="gsl_permutation_calloc")] 1837 public Permutation.with_zeros (size_t n); 1838 1839 public void init (); 1840 public int memcpy (Permutation src); 1841 1842 public size_t @get (size_t i); 1843 public int swap (size_t i, size_t j); 1844 1845 public int valid (); 1846 1847 public void reverse (); 1848 public int inverse (Permutation p); 1849 public int next (); 1850 public int prev (); 1851 1852 public int mul (Permutation pa, Permutation pb); 1853 1854 [CCode (instance_pos=-1)] 1855 public int fwrite (GLib.FileStream stream); 1856 [CCode (instance_pos=-1)] 1857 public int fread (GLib.FileStream stream); 1858 public static int fprintf (GLib.FileStream stream, Permutation p, string format); 1859 [CCode (instance_pos=-1)] 1860 public int fscanf (GLib.FileStream stream); 1861 1862 public int linear_to_canonical (Permutation p); 1863 public int canonical_to_linear (Permutation q); 1864 public size_t inversions (); 1865 public size_t linear_cycles (); 1866 public size_t canonical_cycles (); 1867 } 1868 1869 [CCode (lower_case_cprefix="gsl_", cheader_filename="gsl/gsl_permute_double.h")] 1870 namespace Permute 1871 { 1872 public static int permute (size_t* p, [CCode (array_length = false)] double[] data, size_t stride, size_t n); 1873 public static int permute_inverse (size_t* p, [CCode (array_length = false)] double[] data, size_t stride, size_t n); 1874 } 1875 1876 [CCode (cheader_filename="gsl/gsl_permute_complex_double.h")] 1877 namespace PermuteComplex 1878 { 1879 [CCode (cname="gsl_permute_complex")] 1880 public static int permute (size_t* p, [CCode (array_length = false)] double[] data, size_t stride, size_t n); 1881 [CCode (cname="gsl_permute_complex_inverse")] 1882 public static int permute_inverse (size_t* p, [CCode (array_length = false)] double[] data, size_t stride, size_t n); 1883 } 1884 1885 [CCode (cheader_filename="gsl/gsl_permute_vector_double.h")] 1886 namespace PermuteVector 1887 { 1888 [CCode (cname="gsl_permute_vector")] 1889 public static int permute (Permutation p, Vector v); 1890 [CCode (cname="gsl_permute_vector_inverse")] 1891 public static int permute_inverse (Permutation p, Vector v); 1892 } 1893 1894 [CCode (cheader_filename="gsl/gsl_permute_vector_complex_double.h")] 1895 namespace PermuteVectorComplex 1896 { 1897 [CCode (cname="gsl_permute_vector_complex")] 1898 public static int permute (Permutation p, VectorComplex v); 1899 [CCode (cname="gsl_permute_vector_complex_inverse")] 1900 public static int permute_inverse (Permutation p, VectorComplex v); 1901 } 1902 1903 1904 /* 1905 * Combinations 1906 */ 1907 [Compact] 1908 [CCode (cname="gsl_combination", cheader_filename="gsl/gsl_combination.h")] 1909 public class Combination 1910 { 1911 public size_t n; 1912 public size_t k; 1913 public size_t* data; 1914 1915 [CCode (cname="gsl_combination_alloc")] 1916 public Combination (size_t n, size_t k); 1917 [CCode (cname="gsl_combination_calloc")] 1918 public Combination.with_zeros (size_t n, size_t k); 1919 1920 public void init_first (); 1921 public void init_last (); 1922 public int memcpy (Combination src); 1923 1924 public size_t @get (size_t i); 1925 1926 public int valid (); 1927 1928 public int next (); 1929 public int prev (); 1930 1931 [CCode (instance_pos=-1)] 1932 public int fwrite (GLib.FileStream stream); 1933 [CCode (instance_pos=-1)] 1934 public int fread (GLib.FileStream stream); 1935 public static int fprintf (GLib.FileStream stream, Combination c, string format); 1936 [CCode (instance_pos=-1)] 1937 public int fscanf (GLib.FileStream stream); 1938 } 1939 1940 1941 /* 1942 * Sorting 1943 */ 1944 [CCode (lower_case_cprefix="gsl_sort_", cheader_filename="gsl/gsl_sort_double.h")] 1945 namespace Sort 1946 { 1947 [CCode (cname="gsl_sort")] 1948 public static void sort ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 1949 [CCode (cname="gsl_sort_index")] 1950 public static void sort_index ([CCode (array_length = false)] size_t[] p, [CCode (array_length = false)] double[] data, size_t stride, size_t n); 1951 public static int smallest ([CCode (array_length = false)] double[] dest, size_t k, [CCode (array_length = false)] double[] src, size_t stride, size_t n); 1952 public static int smallest_index ([CCode (array_length = false)] size_t[] p, size_t k, [CCode (array_length = false)] double[] src, size_t stride, size_t n); 1953 public static int largest ([CCode (array_length = false)] double[] dest, size_t k, [CCode (array_length = false)] double[] src, size_t stride, size_t n); 1954 public static int largest_index ([CCode (array_length = false)] size_t[] p, size_t k, [CCode (array_length = false)] double[] src, size_t stride, size_t n); 1955 } 1956 1957 [CCode (lower_case_cprefix="gsl_sort_vector_", cheader_filename="gsl/gsl_sort_vector_double.h")] 1958 namespace SortVector 1959 { 1960 [CCode (cname="gsl_sort_vector")] 1961 public static void sort (Vector v); 1962 [CCode (cname="gsl_sort_vector_index")] 1963 public static int sort_index (Permutation p, Vector v); 1964 public static int smallest ([CCode (array_length = false)] double[] dest, size_t k, Vector v); 1965 public static int smallest_index ([CCode (array_length = false)] size_t[] p, size_t k, Vector v); 1966 public static int largest ([CCode (array_length = false)] double[] dest, size_t k, Vector v); 1967 public static int largest_index ([CCode (array_length = false)] size_t[] p, size_t k, Vector v); 1968 } 1969 1970 1971 /* 1972 * Linear Algebra 1973 */ 1974 [CCode (lower_case_cprefix="gsl_linalg_", cheader_filename="gsl/gsl_linalg.h")] 1975 namespace LinAlg 1976 { 1977 public static int LU_decomp (Matrix A, Permutation p, out int signum); 1978 public static int complex_LU_decomp (MatrixComplex A, Permutation p, out int signum); 1979 public static int LU_solve (Matrix LU, Permutation p, Vector b, Vector x); 1980 public static int complex_LU_solve (MatrixComplex LU, Permutation p, VectorComplex b, VectorComplex x); 1981 public static int LU_svx (Matrix LU, Permutation p, Vector x); 1982 public static int complex_LU_svx (MatrixComplex LU, Permutation p, VectorComplex x); 1983 public static int LU_refine (Matrix A, Matrix LU, Permutation p, Vector b, Vector x, Vector residual); 1984 public static int complex_LU_refine (MatrixComplex A, MatrixComplex LU, Permutation p, VectorComplex b, VectorComplex x, VectorComplex residual); 1985 public static int LU_invert (Matrix LU, Permutation p, Matrix inverse); 1986 public static int complex_LU_invert (MatrixComplex LU, Permutation p, MatrixComplex inverse); 1987 public static double LU_det (Matrix LU, int signum); 1988 public static Complex complex_LU_det (MatrixComplex LU, int signum); 1989 public static double LU_lndet (Matrix LU); 1990 public static double complex_LU_lndet (MatrixComplex LU); 1991 public static int LU_sgndet (Matrix LU, int signum); 1992 public static Complex complex_LU_sgndet (MatrixComplex LU, int signum); 1993 1994 public static int QR_decomp (Matrix A, Vector tau); 1995 public static int QR_solve (Matrix QR, Vector tau, Vector b, Vector x); 1996 public static int QR_svx (Matrix QR, Vector tau, Vector x); 1997 public static int QR_lssolve (Matrix QR, Vector tau, Vector b, Vector x, Vector residual); 1998 public static int QR_QTvec (Matrix QR, Vector tau, Vector v); 1999 public static int QR_Qvec (Matrix QR, Vector tau, Vector v); 2000 public static int QR_QTmat (Matrix QR, Vector tau, Matrix A); 2001 public static int QR_Rsolve (Matrix QR, Vector b, Vector x); 2002 public static int QR_Rsvx (Matrix QR, Vector x); 2003 public static int QR_unpack (Matrix QR, Vector tau, Matrix Q, Matrix R); 2004 public static int QR_QRsolve (Matrix Q, Matrix R, Vector b, Vector x); 2005 public static int QR_update (Matrix Q, Matrix R, Vector w, Vector v); 2006 public static int R_solve (Matrix R, Vector b, Vector x); 2007 public static int R_svx (Matrix R, Vector x); 2008 2009 public static int QRPT_decomp (Matrix A, Vector tau, Permutation p, out int signum, Vector norm); 2010 public static int QRPT_decomp2 (Matrix A, Matrix q, Matrix r, Vector tau, Permutation p, out int signum, Vector norm); 2011 public static int QRPT_solve (Matrix QR, Vector tau, Permutation p, Vector b, Vector x); 2012 public static int QRPT_svx (Matrix QR, Vector tau, Permutation p, Vector x); 2013 public static int QRPT_QRsolve (Matrix Q, Matrix R, Permutation p, Vector b, Vector x); 2014 public static int QRPT_update (Matrix Q, Matrix R, Permutation p, Vector u, Vector v); 2015 public static int QRPT_Rsolve (Matrix QR, Permutation p, Vector b, Vector x); 2016 public static int QRPT_Rsvx (Matrix QR, Permutation p, Vector x); 2017 2018 public static int SV_decomp (Matrix A, Matrix V, Vector S, Vector work); 2019 public static int SV_decomp_mod (Matrix A, Matrix X, Matrix V, Vector S, Vector work); 2020 public static int SV_decomp_jacobi (Matrix A, Matrix V, Vector S); 2021 public static int SV_solve (Matrix U, Matrix V, Vector S, Vector b, Vector x); 2022 2023 public static int cholesky_decomp (Matrix A); 2024 public static int complex_cholesky_decomp (MatrixComplex A); 2025 public static int cholesky_solve (Matrix cholesky, Vector b, Vector x); 2026 public static int complex_cholesky_solve (MatrixComplex cholesky, VectorComplex b, VectorComplex x); 2027 public static int cholesky_svx (Matrix cholesky, Vector x); 2028 public static int complex_cholesky_svx (MatrixComplex cholesky, VectorComplex x); 2029 2030 public static int symmtd_decomp (Matrix A, Vector tau); 2031 public static int symmtd_unpack (Matrix A, Vector tau, Matrix Q, Vector diag, Vector subdiag); 2032 public static int symmtd_unpack_T (Matrix A, Vector diag, Vector subdiag); 2033 2034 public static int hermtd_decomp (MatrixComplex A, VectorComplex tau); 2035 public static int hermtd_unpack (MatrixComplex A, VectorComplex tau, MatrixComplex Q, Vector diag, Vector subdiag); 2036 public static int hermtd_unpack_T (MatrixComplex A, Vector diag, Vector subdiag); 2037 2038 public static int hessenberg_decomp (Matrix A, Vector tau); 2039 public static int hessenberg_unpack (Matrix H, Vector tau, Matrix U); 2040 public static int hessenberg_unpack_accum (Matrix H, Vector tau, Matrix V); 2041 public static int hessenberg_set_zero (Matrix H); 2042 2043 public static int hesstri_decomp (Matrix A, Matrix B, Matrix U, Matrix V, Vector work); 2044 2045 public static int bidiag_decomp (Matrix A, Vector tau_U, Vector tau_V); 2046 public static int bidiag_unpack (Matrix A, Vector tau_U, Matrix U, Vector tau_V, Matrix V, Vector diag, Vector superdiag); 2047 public static int bidiag_unpack2 (Matrix A, Vector tau_U, Vector tau_V, Matrix V); 2048 public static int bidiag_unpack_B (Matrix A, Vector diag, Vector superdiag); 2049 2050 public static int householder_transform (Vector v); 2051 public static Complex complex_householder_transform (VectorComplex V); 2052 public static int householder_hm (double tau, Vector v, Matrix A); 2053 public static int complex_householder_hm (Complex tau, VectorComplex V, MatrixComplex A); 2054 public static int householder_mh (double tau, Vector v, Matrix A); 2055 public static int complex_householder_mh (Complex tau, VectorComplex V, MatrixComplex A); 2056 public static int householder_hv (double tau, Vector v, Vector w); 2057 public static int complex_householder_hv (Complex tau, VectorComplex V, VectorComplex w); 2058 2059 public static int HH_solve (Matrix A, Vector b, Vector x); 2060 public static int HH_svx (Matrix A, Vector x); 2061 2062 public static int solve_tridiag (Vector diag, Vector e, Vector f, Vector b, Vector x); 2063 public static int solve_symm_tridiag (Vector diag, Vector e, Vector b, Vector x); 2064 public static int solve_cyc_tridiag (Vector diag, Vector e, Vector f, Vector b, Vector x); 2065 public static int solve_symm_cyc_tridiag (Vector diag, Vector e, Vector b, Vector x); 2066 2067 public static int balance_matrix (Matrix A, Vector D); 2068 } 2069 2070 2071 /* 2072 * Eigensystems 2073 */ 2074 [CCode (cname="gsl_eigen_sort_t", cprefix="GSL_EIGEN_SORT_", cheader_filename="gsl/gsl_eigen.h", has_type_id = false)] 2075 public enum EigenSortType 2076 { 2077 VAL_ASC, 2078 VAL_DESC, 2079 ABS_ASC, 2080 ABS_DESC 2081 } 2082 2083 [Compact] 2084 [CCode (cname="gsl_eigen_symm_workspace", free_function="gsl_eigen_symm_free", cheader_filename="gsl/gsl_eigen.h")] 2085 public class EigenSymmWorkspace 2086 { 2087 public size_t size; 2088 public double* d; 2089 public double* sd; 2090 2091 [CCode (cname="gsl_eigen_symm_alloc")] 2092 public EigenSymmWorkspace (size_t n); 2093 [CCode (cname="gsl_eigen_symm", instance_pos=-1)] 2094 public int init (Matrix A, Vector eval); 2095 } 2096 2097 [Compact] 2098 [CCode (cname="gsl_eigen_symmv_workspace", free_function="gsl_eigen_symmv_free", cheader_filename="gsl/gsl_eigen.h")] 2099 public class EigenSymmvWorkspace 2100 { 2101 public size_t size; 2102 public double* d; 2103 public double* sd; 2104 public double* gc; 2105 public double* gs; 2106 2107 [CCode (cname="gsl_eigen_symmv_alloc")] 2108 public EigenSymmvWorkspace (size_t n); 2109 [CCode (cname="gsl_eigen_symmv", instance_pos=-1)] 2110 public int init (Matrix A, Vector eval, Matrix evec); 2111 } 2112 2113 [Compact] 2114 [CCode (cname="gsl_eigen_herm_workspace", free_function="gsl_eigen_herm_free", cheader_filename="gsl/gsl_eigen.h")] 2115 public class EigenHermWorkspace 2116 { 2117 public size_t size; 2118 public double* d; 2119 public double* sd; 2120 public double* tau; 2121 2122 [CCode (cname="gsl_eigen_herm_alloc")] 2123 public EigenHermWorkspace (size_t n); 2124 [CCode (cname="gsl_eigen_herm", instance_pos=-1)] 2125 public int init (MatrixComplex A, Vector eval); 2126 } 2127 2128 [Compact] 2129 [CCode (cname="gsl_eigen_hermv_workspace", free_function="gsl_eigen_hermv_free", cheader_filename="gsl/gsl_eigen.h")] 2130 public class EigenHermvWorkspace 2131 { 2132 public size_t size; 2133 public double* d; 2134 public double* sd; 2135 public double* tau; 2136 public double* gc; 2137 public double* gs; 2138 2139 [CCode (cname="gsl_eigen_hermv_alloc")] 2140 public EigenHermvWorkspace (size_t n); 2141 [CCode (cname="gsl_eigen_hermv", instance_pos=-1)] 2142 public int init (MatrixComplex A, Vector eval, MatrixComplex evec); 2143 } 2144 2145 [Compact] 2146 [CCode (cname="gsl_eigen_nonsymm_workspace", free_function="gsl_eigen_nonsymm_free", cheader_filename="gsl/gsl_eigen.h")] 2147 public class EigenNonsymmWorkspace 2148 { 2149 public size_t size; 2150 public Vector diag; 2151 public Vector tau; 2152 public Matrix Z; 2153 public int do_balance; 2154 size_t n_evals; 2155 2156 [CCode (cname="gsl_eigen_nonsymm_alloc")] 2157 public EigenNonsymmWorkspace (size_t n); 2158 [CCode (cname="gsl_eigen_nonsymm_params", instance_pos=-1)] 2159 public void params (int compute_t, int balance); 2160 [CCode (cname="gsl_eigen_nonsymm", instance_pos=-1)] 2161 public int init (Matrix A, VectorComplex eval); 2162 [CCode (cname="gsl_eigen_nonsymm_Z", instance_pos=-1)] 2163 public int init_Z (Matrix A, VectorComplex eval, Matrix Z); 2164 } 2165 2166 [Compact] 2167 [CCode (cname="gsl_eigen_nonsymmv_workspace", free_function="gsl_eigen_nonsymmv_free", cheader_filename="gsl/gsl_eigen.h")] 2168 public class EigenNonsymmvWorkspace 2169 { 2170 public size_t size; 2171 public Vector work; 2172 public Vector work2; 2173 public Vector work3; 2174 public Matrix Z; 2175 public EigenNonsymmWorkspace nonsymm_workspace_p; 2176 2177 [CCode (cname="gsl_eigen_nonsymmv_alloc")] 2178 public EigenNonsymmvWorkspace (size_t n); 2179 [CCode (cname="gsl_eigen_nonsymmv", instance_pos=-1)] 2180 public int init (Matrix A, VectorComplex eval, MatrixComplex evec); 2181 [CCode (cname="gsl_eigen_nonsymmv_Z", instance_pos=-1)] 2182 public int init_Z (Matrix A, VectorComplex eval, MatrixComplex evec, Matrix Z); 2183 } 2184 2185 [Compact] 2186 [CCode (cname="gsl_eigen_gensymm_workspace", free_function="gsl_eigen_gensymm_free", cheader_filename="gsl/gsl_eigen.h")] 2187 public class EigenGensymmWorkspace 2188 { 2189 public size_t size; 2190 public EigenSymmWorkspace symm_workspace_p; 2191 2192 [CCode (cname="gsl_eigen_gensymm_alloc")] 2193 public EigenGensymmWorkspace (size_t n); 2194 [CCode (cname="gsl_eigen_gensymm", instance_pos=-1)] 2195 public int init (Matrix A, Matrix B, Vector eval); 2196 } 2197 2198 [Compact] 2199 [CCode (cname="gsl_eigen_gensymmv_workspace", free_function="gsl_eigen_gensymmv_free", cheader_filename="gsl/gsl_eigen.h")] 2200 public class EigenGensymmvWorkspace 2201 { 2202 public size_t size; 2203 public EigenSymmvWorkspace symmv_workspace_p; 2204 2205 [CCode (cname="gsl_eigen_gensymmv_alloc")] 2206 public EigenGensymmvWorkspace (size_t n); 2207 [CCode (cname="gsl_eigen_gensymmv", instance_pos=-1)] 2208 public int init (Matrix A, Matrix B, Vector eval, Matrix evec); 2209 } 2210 2211 [Compact] 2212 [CCode (cname="gsl_eigen_genherm_workspace", free_function="gsl_eigen_genherm_free", cheader_filename="gsl/gsl_eigen.h")] 2213 public class EigenGenhermWorkspace 2214 { 2215 public size_t size; 2216 public EigenHermWorkspace herm_workspace_p; 2217 2218 [CCode (cname="gsl_eigen_genherm_alloc")] 2219 public EigenGenhermWorkspace (size_t n); 2220 [CCode (cname="gsl_eigen_genherm", instance_pos=-1)] 2221 public int init (MatrixComplex A, MatrixComplex B, Vector eval); 2222 } 2223 2224 [Compact] 2225 [CCode (cname="gsl_eigen_genhermv_workspace", free_function="gsl_eigen_genhermv_free", cheader_filename="gsl/gsl_eigen.h")] 2226 public class EigenGenhermvWorkspace 2227 { 2228 public size_t size; 2229 public EigenHermvWorkspace hermv_workspace_p; 2230 2231 [CCode (cname="gsl_eigen_genhermv_alloc")] 2232 public EigenGenhermvWorkspace (size_t n); 2233 [CCode (cname="gsl_eigen_genhermv", instance_pos=-1)] 2234 public int init (MatrixComplex A, MatrixComplex B, Vector eval, MatrixComplex evec); 2235 } 2236 2237 [Compact] 2238 [CCode (cname="gsl_eigen_gen_workspace", free_function="gsl_eigen_gen_free", cheader_filename="gsl/gsl_eigen.h")] 2239 public class EigenGenWorkspace 2240 { 2241 public size_t size; 2242 public Vector work; 2243 public size_t n_evals; 2244 public size_t max_iterations; 2245 public size_t n_iter; 2246 public double eshift; 2247 public int needtop; 2248 public double atol; 2249 public double btol; 2250 public double ascale; 2251 public double bscale; 2252 public Matrix H; 2253 public Matrix R; 2254 public int compute_s; 2255 public int compute_t; 2256 public Matrix Q; 2257 public Matrix Z; 2258 2259 [CCode (cname="gsl_eigen_gen_alloc")] 2260 public EigenGenWorkspace (size_t n); 2261 [CCode (cname="gsl_eigen_gen_params", instance_pos=-1)] 2262 public void params (int compute_s, int compute_t, int balance); 2263 [CCode (cname="gsl_eigen_gen", instance_pos=-1)] 2264 public int init (Matrix A, Matrix B, VectorComplex alpha, Vector beta); 2265 [CCode (cname="gsl_eigen_gen_QZ", instance_pos=-1)] 2266 public int init_QZ (Matrix A, Matrix B, VectorComplex alpha, Vector beta, Matrix Q, Matrix Z); 2267 } 2268 2269 [Compact] 2270 [CCode (cname="gsl_eigen_genv_workspace", free_function="gsl_eigen_genv_free", cheader_filename="gsl/gsl_eigen.h")] 2271 public class EigenGenvWorkspace 2272 { 2273 public size_t size; 2274 public Vector work1; 2275 public Vector work2; 2276 public Vector work3; 2277 public Vector work4; 2278 public Vector work5; 2279 public Vector work6; 2280 public Matrix Q; 2281 public Matrix Z; 2282 public EigenGenWorkspace gen_workspace_p; 2283 2284 [CCode (cname="gsl_eigen_genv_alloc")] 2285 public EigenGenvWorkspace (size_t n); 2286 [CCode (cname="gsl_eigen_genv", instance_pos=-1)] 2287 public int init (Matrix A, Matrix B, VectorComplex alpha, Vector beta, MatrixComplex evec); 2288 [CCode (cname="gsl_eigen_genv_QZ", instance_pos=-1)] 2289 public int init_QZ (Matrix A, Matrix B, VectorComplex alpha, Vector beta, MatrixComplex evec, Matrix Q, Matrix Z); 2290 } 2291 2292 [CCode (lower_case_cprefix="gsl_eigen_", cheader_filename="gsl/gsl_eigen.h")] 2293 namespace EigenSort 2294 { 2295 public static int symmv_sort (Vector eval, Matrix evec, EigenSortType sort_type); 2296 public static int hermv_sort (Vector eval, MatrixComplex evec, EigenSortType sort_type); 2297 public static int nonsymmv_sort (VectorComplex eval, MatrixComplex evec, EigenSortType sort_type); 2298 public static int gensymmv_sort (Vector eval, Matrix evec, EigenSortType sort_type); 2299 public static int genhermv_sort (Vector eval, MatrixComplex evec, EigenSortType sort_type); 2300 public static int genv_sort (VectorComplex alpha, Vector beta, MatrixComplex evec, EigenSortType sort_type); 2301 } 2302 2303 2304 /* 2305 * Fast Fourier Transforms (FFTs) 2306 */ 2307 [CCode (cname="gsl_fft_direction", cprefix = "gsl_fft_", cheader_filename="gsl/gsl_fft.h", has_type_id = false)] 2308 public enum FFTDirection 2309 { 2310 forward = -1, 2311 backward = 1 2312 } 2313 2314 [Compact] 2315 [CCode (cname="gsl_fft_complex_wavetable", cheader_filename="gsl/gsl_fft_complex.h")] 2316 public class FFTComplexWavetable 2317 { 2318 public size_t n; 2319 public size_t nf; 2320 public size_t factor[64]; 2321 public Complex* twiddle[64]; 2322 public Complex* trig; 2323 2324 [CCode (cname="gsl_fft_complex_wavetable_alloc")] 2325 public FFTComplexWavetable (size_t n); 2326 [CCode (cname="gsl_fft_complex_memcpy")] 2327 public int memcpy (FFTComplexWavetable src); 2328 } 2329 2330 [Compact] 2331 [CCode (cname="gsl_fft_complex_workspace", cheader_filename="gsl/gsl_fft_complex.h")] 2332 public class FFTComplexWorkspace 2333 { 2334 size_t n; 2335 double *scratch; 2336 2337 [CCode (cname="gsl_fft_complex_workspace_alloc")] 2338 public FFTComplexWorkspace (size_t n); 2339 } 2340 2341 [CCode (lower_case_cprefix="gsl_fft_complex_", cheader_filename="gsl/gsl_fft_complex.h")] 2342 namespace FFTComplex 2343 { 2344 public static int radix2_forward ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2345 public static int radix2_transform ([CCode (array_length = false)] double[] data, size_t stride, size_t n, FFTDirection sign); 2346 public static int radix2_backward ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2347 public static int radix2_inverse ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2348 public static int radix2_dif_forward ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2349 public static int radix2_dif_transform ([CCode (array_length = false)] double[] data, size_t stride, size_t n, FFTDirection sign); 2350 public static int radix2_dif_backward ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2351 public static int radix2_dif_inverse ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2352 2353 public static int forward ([CCode (array_length = false)] double[] data, size_t stride, size_t n, FFTComplexWavetable wavetable, FFTComplexWorkspace work); 2354 public static int transform ([CCode (array_length = false)] double[] data, size_t stride, size_t n, FFTComplexWavetable wavetable, FFTComplexWorkspace work, FFTDirection sign); 2355 public static int backward ([CCode (array_length = false)] double[] data, size_t stride, size_t n, FFTComplexWavetable wavetable, FFTComplexWorkspace work); 2356 public static int inverse ([CCode (array_length = false)] double[] data, size_t stride, size_t n, FFTComplexWavetable wavetable, FFTComplexWorkspace work); 2357 } 2358 2359 [Compact] 2360 [CCode (cname="gsl_fft_real_wavetable", cheader_filename="gsl/gsl_fft_real.h")] 2361 public class FFTRealWavetable 2362 { 2363 public size_t n; 2364 public size_t nf; 2365 public size_t factor[64]; 2366 public Complex* twiddle[64]; 2367 public Complex* trig; 2368 2369 [CCode (cname="gsl_fft_real_wavetable_alloc")] 2370 public FFTRealWavetable (size_t n); 2371 } 2372 2373 [Compact] 2374 [CCode (cname="gsl_fft_real_workspace", cheader_filename="gsl/gsl_fft_real.h")] 2375 public class FFTRealWorkspace 2376 { 2377 size_t n; 2378 double *scratch; 2379 2380 [CCode (cname="gsl_fft_real_workspace_alloc")] 2381 public FFTRealWorkspace (size_t n); 2382 } 2383 2384 [CCode (lower_case_cprefix="gsl_fft_real_", cheader_filename="gsl/gsl_fft_real.h")] 2385 namespace FFTReal 2386 { 2387 public static int radix2_transform ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2388 public static int transform ([CCode (array_length = false)] double[] data, size_t stride, size_t n, FFTRealWavetable wavetable, FFTRealWorkspace work); 2389 public static int unpack ([CCode (array_length = false)] double[] real_coefficient, [CCode (array_length = false)] double[] complex_coeficient, size_t stride, size_t n); 2390 } 2391 2392 [Compact] 2393 [CCode (cname="gsl_fft_halfcomplex_wavetable", cheader_filename="gsl/gsl_fft_halfcomplex.h")] 2394 public class FFTHalfcomplexWavetable 2395 { 2396 public size_t n; 2397 public size_t nf; 2398 public size_t factor[64]; 2399 public Complex* twiddle[64]; 2400 public Complex* trig; 2401 2402 [CCode (cname="gsl_fft_halfcomplex_wavetable_alloc")] 2403 public FFTHalfcomplexWavetable (size_t n); 2404 } 2405 2406 [CCode (lower_case_cprefix="gsl_fft_halfcomplex_", cheader_filename="gsl/gsl_fft_halfcomplex.h")] 2407 namespace FFTHalfcomplex 2408 { 2409 public static int radix2_inverse ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2410 public static int radix2_backward ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2411 public static int radix2_transform ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2412 public static int backward ([CCode (array_length = false)] double[] data, size_t stride, size_t n, FFTHalfcomplexWavetable wavetable, FFTRealWorkspace work); 2413 public static int inverse ([CCode (array_length = false)] double[] data, size_t stride, size_t n, FFTHalfcomplexWavetable wavetable, FFTRealWorkspace work); 2414 public static int transform ([CCode (array_length = false)] double[] data, size_t stride, size_t n, FFTHalfcomplexWavetable wavetable, FFTRealWorkspace work); 2415 public static int unpack ([CCode (array_length = false)] double[] halfcomplex_coefficient, [CCode (array_length = false)] double[] complex_coefficient, size_t stride, size_t n); 2416 public static int radix2_unpack ([CCode (array_length = false)] double[] halfcomplex_coefficient, [CCode (array_length = false)] double[] complex_coefficient, size_t stride, size_t n); 2417 } 2418 2419 2420 /* 2421 * Numerical Integration 2422 */ 2423 [CCode (cname = "enum gsl_integration_qawo_enum", cprefix="GSL_INTEG_", cheader_filename="gsl/gsl_integration.h", has_type_id = false)] 2424 public enum QAWO 2425 { 2426 COSINE, 2427 SINE 2428 } 2429 2430 [CCode (cprefix="GSL_INTEG_", cheader_filename="gsl/gsl_integration.h", has_type_id = false)] 2431 public enum GaussRules 2432 { 2433 GAUSS15, 2434 GAUSS21, 2435 GAUSS31, 2436 GAUSS41, 2437 GAUSS51, 2438 GAUSS61 2439 } 2440 2441 [Compact] 2442 [CCode (cname="gsl_integration_workspace", cheader_filename="gsl/gsl_integration.h")] 2443 public class IntegrationWorkspace 2444 { 2445 public size_t limit; 2446 public size_t size; 2447 public size_t nrmax; 2448 public size_t i; 2449 public size_t maximum_level; 2450 public double* alist; 2451 public double* blist; 2452 public double* rlist; 2453 public double* elist; 2454 public size_t* order; 2455 public size_t* level; 2456 2457 [CCode (cname="gsl_integration_workspace_alloc")] 2458 public IntegrationWorkspace (size_t n); 2459 } 2460 2461 [Compact] 2462 [CCode (cname="gsl_integration_qaws_table", cheader_filename="gsl/gsl_integration.h")] 2463 public class IntegrationQAWSTable 2464 { 2465 public double alpha; 2466 public double beta; 2467 public int mu; 2468 public int nu; 2469 public double ri[25]; 2470 public double rj[25]; 2471 public double rg[25]; 2472 public double rh[25]; 2473 2474 [CCode (cname="gsl_integration_qaws_table_alloc")] 2475 public IntegrationQAWSTable (double alpha, double beta, int mu, int nu); 2476 public int @set (double alpha, double beta, int mu, int nu); 2477 } 2478 2479 [Compact] 2480 [CCode (cname="gsl_integration_qawo_table", free_function="gsl_integration_qawo_table_free", cheader_filename="gsl/gsl_integration.h")] 2481 public class IntegrationQAWOTable 2482 { 2483 public size_t n; 2484 public double omega; 2485 public double L; 2486 public double par; 2487 public QAWO sine; 2488 public double* chebmo; 2489 2490 [CCode (cname="gsl_integration_qawo_table_alloc")] 2491 public IntegrationQAWOTable (double omega, double L, QAWO sine, size_t n); 2492 public int @set (double omega, double L, QAWO sine); 2493 public int set_length (double L); 2494 } 2495 2496 [CCode (cname="gsl_integration", cheader_filename="gsl/gsl_integration.h")] 2497 namespace Integration 2498 { 2499 public static void qk15 (Function* f, double a, double b, out double result, out double abserr, out double resabs, out double resasc); 2500 public static void qk21 (Function* f, double a, double b, out double result, out double abserr, out double resabs, out double resasc); 2501 public static void qk31 (Function* f, double a, double b, out double result, out double abserr, out double resabs, out double resasc); 2502 public static void qk41 (Function* f, double a, double b, out double result, out double abserr, out double resabs, out double resasc); 2503 public static void qk51 (Function* f, double a, double b, out double result, out double abserr, out double resabs, out double resasc); 2504 public static void qk61 (Function* f, double a, double b, out double result, out double abserr, out double resabs, out double resasc); 2505 public static void qcheb (Function* f, double a, double b, out double cheb12, out double cheb24); 2506 2507 public static void qk (int n, [CCode (array_length = false)] double[] xgk, [CCode (array_length = false)] double[] wg, [CCode (array_length = false)] double[] wgk, [CCode (array_length = false)] double[] fv1, [CCode (array_length = false)] double[] fv2, Function* f, double a, double b, out double result, out double abserr, out double resabs, out double resasc); 2508 public static int qng (Function* f, double a, double b, double epsabs, double epsrel, out double result, out double abserr, out size_t neval); 2509 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); 2510 public static int qagi (Function* f, double epsabs, double epsrel, size_t limit, IntegrationWorkspace workspace, out double result, out double abserr); 2511 public static int qagiu (Function* f, double a, double epsabs, double epsrel, size_t limit, IntegrationWorkspace workspace, out double result, out double abserr); 2512 public static int qagil (Function* f, double b, double epsabs, double epsrel, size_t limit, IntegrationWorkspace workspace, out double result, out double abserr); 2513 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); 2514 public static int qagp (Function* f, [CCode (array_length = false)] double[] pts, size_t npts, double epsabs, double epsrel, size_t limit, IntegrationWorkspace workspace, out double result, out double abserr); 2515 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); 2516 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); 2517 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); 2518 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); 2519 } 2520 2521 2522 /* 2523 * Random Number Generation 2524 */ 2525 [CCode (has_target = false, has_typedef = false)] 2526 public delegate void RNGSetState (void *state, ulong seed); 2527 [CCode (has_target = false, has_typedef = false)] 2528 public delegate ulong RNGGetState (void* state); 2529 [CCode (has_target = false, has_typedef = false)] 2530 public delegate double RNGGetDouble (void* state); 2531 2532 [SimpleType] 2533 [CCode (cname="gsl_rng_type", cheader_filename="gsl/gsl_rng.h", has_type_id = false)] 2534 public struct RNGType 2535 { 2536 public unowned string name; 2537 public ulong max; 2538 public ulong min; 2539 public size_t size; 2540 public RNGSetState @set; 2541 public RNGGetState @get; 2542 public RNGGetDouble get_double; 2543 } 2544 2545 [CCode (lower_case_cprefix="gsl_rng_", cheader_filename="gsl/gsl_rng.h")] 2546 namespace RNGTypes 2547 { 2548 public static RNGType* borosh13; 2549 public static RNGType* coveyou; 2550 public static RNGType* cmrg; 2551 public static RNGType* fishman18; 2552 public static RNGType* fishman20; 2553 public static RNGType* fishman2x; 2554 public static RNGType* gfsr4; 2555 public static RNGType* knuthran; 2556 public static RNGType* knuthran2; 2557 public static RNGType* knuthran2002; 2558 public static RNGType* lecuyer21; 2559 public static RNGType* minstd; 2560 public static RNGType* mrg; 2561 public static RNGType* mt19937; 2562 public static RNGType* mt19937_1999; 2563 public static RNGType* mt19937_1998; 2564 public static RNGType* r250; 2565 public static RNGType* ran0; 2566 public static RNGType* ran1; 2567 public static RNGType* ran2; 2568 public static RNGType* ran3; 2569 public static RNGType* rand; 2570 public static RNGType* rand48; 2571 public static RNGType* random128_bsd; 2572 public static RNGType* random128_glibc2; 2573 public static RNGType* random128_libc5; 2574 public static RNGType* random256_bsd; 2575 public static RNGType* random256_glibc2; 2576 public static RNGType* random256_libc5; 2577 public static RNGType* random32_bsd; 2578 public static RNGType* random32_glibc2; 2579 public static RNGType* random32_libc5; 2580 public static RNGType* random64_bsd; 2581 public static RNGType* random64_glibc2; 2582 public static RNGType* random64_libc5; 2583 public static RNGType* random8_bsd; 2584 public static RNGType* random8_glibc2; 2585 public static RNGType* random8_libc5; 2586 public static RNGType* random_bsd; 2587 public static RNGType* random_glibc2; 2588 public static RNGType* random_libc5; 2589 public static RNGType* randu; 2590 public static RNGType* ranf; 2591 public static RNGType* ranlux; 2592 public static RNGType* ranlux389; 2593 public static RNGType* ranlxd1; 2594 public static RNGType* ranlxd2; 2595 public static RNGType* ranlxs0; 2596 public static RNGType* ranlxs1; 2597 public static RNGType* ranlxs2; 2598 public static RNGType* ranmar; 2599 public static RNGType* slatec; 2600 public static RNGType* taus; 2601 public static RNGType* taus2; 2602 public static RNGType* taus113; 2603 public static RNGType* transputer; 2604 public static RNGType* tt800; 2605 public static RNGType* uni; 2606 public static RNGType* uni32; 2607 public static RNGType* vax; 2608 public static RNGType* waterman14; 2609 public static RNGType* zuf; 2610 public static RNGType* @default; 2611 public static ulong default_seed; 2612 } 2613 2614 [Compact] 2615 [CCode (cname="gsl_rng", cheader_filename="gsl/gsl_rng.h")] 2616 public class RNG 2617 { 2618 public RNGType* type; 2619 public void* state; 2620 2621 [CCode (cname="gsl_rng_alloc")] 2622 public RNG (RNGType* T); 2623 public void @set (ulong s); 2624 public ulong @get (); 2625 public double uniform (); 2626 public double uniform_pos (); 2627 public ulong uniform_int (ulong n); 2628 public string name (); 2629 public ulong max (); 2630 public ulong min (); 2631 public size_t size (); 2632 public static RNGType* env_setup (); 2633 public int memcpy (RNG src); 2634 public RNG clone (); 2635 2636 [CCode (instance_pos=-1)] 2637 public int fwrite (GLib.FileStream stream); 2638 [CCode (instance_pos=-1)] 2639 public int fread (GLib.FileStream stream); 2640 2641 public void print_state (); 2642 } 2643 2644 [CCode (lower_case_cprefix="gsl_cdf_", cheader_filename="gsl/gsl_cdf.h")] 2645 namespace CDF 2646 { 2647 public static double ugaussian_P (double x); 2648 public static double ugaussian_Q (double x); 2649 2650 public static double ugaussian_Pinv (double P); 2651 public static double ugaussian_Qinv (double Q); 2652 2653 public static double gaussian_P (double x, double sigma); 2654 public static double gaussian_Q (double x, double sigma); 2655 2656 public static double gaussian_Pinv (double P, double sigma); 2657 public static double gaussian_Qinv (double Q, double sigma); 2658 2659 public static double gamma_P (double x, double a, double b); 2660 public static double gamma_Q (double x, double a, double b); 2661 2662 public static double gamma_Pinv (double P, double a, double b); 2663 public static double gamma_Qinv (double Q, double a, double b); 2664 2665 public static double cauchy_P (double x, double a); 2666 public static double cauchy_Q (double x, double a); 2667 2668 public static double cauchy_Pinv (double P, double a); 2669 public static double cauchy_Qinv (double Q, double a); 2670 2671 public static double laplace_P (double x, double a); 2672 public static double laplace_Q (double x, double a); 2673 2674 public static double laplace_Pinv (double P, double a); 2675 public static double laplace_Qinv (double Q, double a); 2676 2677 public static double rayleigh_P (double x, double sigma); 2678 public static double rayleigh_Q (double x, double sigma); 2679 2680 public static double rayleigh_Pinv (double P, double sigma); 2681 public static double rayleigh_Qinv (double Q, double sigma); 2682 2683 public static double chisq_P (double x, double nu); 2684 public static double chisq_Q (double x, double nu); 2685 2686 public static double chisq_Pinv (double P, double nu); 2687 public static double chisq_Qinv (double Q, double nu); 2688 2689 public static double exponential_P (double x, double mu); 2690 public static double exponential_Q (double x, double mu); 2691 2692 public static double exponential_Pinv (double P, double mu); 2693 public static double exponential_Qinv (double Q, double mu); 2694 2695 public static double exppow_P (double x, double a, double b); 2696 public static double exppow_Q (double x, double a, double b); 2697 2698 public static double tdist_P (double x, double nu); 2699 public static double tdist_Q (double x, double nu); 2700 2701 public static double tdist_Pinv (double P, double nu); 2702 public static double tdist_Qinv (double Q, double nu); 2703 2704 public static double fdist_P (double x, double nu1, double nu2); 2705 public static double fdist_Q (double x, double nu1, double nu2); 2706 2707 public static double fdist_Pinv (double P, double nu1, double nu2); 2708 public static double fdist_Qinv (double Q, double nu1, double nu2); 2709 2710 public static double beta_P (double x, double a, double b); 2711 public static double beta_Q (double x, double a, double b); 2712 2713 public static double beta_Pinv (double P, double a, double b); 2714 public static double beta_Qinv (double Q, double a, double b); 2715 2716 public static double flat_P (double x, double a, double b); 2717 public static double flat_Q (double x, double a, double b); 2718 2719 public static double flat_Pinv (double P, double a, double b); 2720 public static double flat_Qinv (double Q, double a, double b); 2721 2722 public static double lognormal_P (double x, double zeta, double sigma); 2723 public static double lognormal_Q (double x, double zeta, double sigma); 2724 2725 public static double lognormal_Pinv (double P, double zeta, double sigma); 2726 public static double lognormal_Qinv (double Q, double zeta, double sigma); 2727 2728 public static double gumbel1_P (double x, double a, double b); 2729 public static double gumbel1_Q (double x, double a, double b); 2730 2731 public static double gumbel1_Pinv (double P, double a, double b); 2732 public static double gumbel1_Qinv (double Q, double a, double b); 2733 2734 public static double gumbel2_P (double x, double a, double b); 2735 public static double gumbel2_Q (double x, double a, double b); 2736 2737 public static double gumbel2_Pinv (double P, double a, double b); 2738 public static double gumbel2_Qinv (double Q, double a, double b); 2739 2740 public static double weibull_P (double x, double a, double b); 2741 public static double weibull_Q (double x, double a, double b); 2742 2743 public static double weibull_Pinv (double P, double a, double b); 2744 public static double weibull_Qinv (double Q, double a, double b); 2745 2746 public static double pareto_P (double x, double a, double b); 2747 public static double pareto_Q (double x, double a, double b); 2748 2749 public static double pareto_Pinv (double P, double a, double b); 2750 public static double pareto_Qinv (double Q, double a, double b); 2751 2752 public static double logistic_P (double x, double a); 2753 public static double logistic_Q (double x, double a); 2754 2755 public static double logistic_Pinv (double P, double a); 2756 public static double logistic_Qinv (double Q, double a); 2757 2758 public static double binomial_P (uint k, double p, uint n); 2759 public static double binomial_Q (uint k, double p, uint n); 2760 2761 public static double poisson_P (uint k, double mu); 2762 public static double poisson_Q (uint k, double mu); 2763 2764 public static double geometric_P (uint k, double p); 2765 public static double geometric_Q (uint k, double p); 2766 2767 public static double negative_binomial_P (uint k, double p, double n); 2768 public static double negative_binomial_Q (uint k, double p, double n); 2769 2770 public static double pascal_P (uint k, double p, uint n); 2771 public static double pascal_Q (uint k, double p, uint n); 2772 2773 public static double hypergeometric_P (uint k, uint n1, uint n2, uint t); 2774 public static double hypergeometric_Q (uint k, uint n1, uint n2, uint t); 2775 } 2776 2777 2778 /* 2779 * Quasi-Random Sequences 2780 */ 2781 [CCode (has_target = false, has_typedef = false)] 2782 public delegate size_t QRNGStateSize (uint dimension); 2783 [CCode (has_target = false, has_typedef = false)] 2784 public delegate int QRNGInitState (void* state, uint dimension); 2785 [CCode (has_target = false, has_typedef = false)] 2786 public delegate int QRNGGetState2 (void* state, uint dimension, out double x); 2787 2788 [SimpleType] 2789 [CCode (cname="gsl_qrng_type", cheader_filename="gsl/gsl_qrng.h", has_type_id = false)] 2790 public struct QRNGType 2791 { 2792 public unowned string name; 2793 public uint max_dimension; 2794 public QRNGStateSize state_size; 2795 public QRNGInitState init_state; 2796 public QRNGGetState2 @get; 2797 } 2798 2799 [CCode (lower_case_cprefix="gsl_qrng_", cheader_filename="gsl/gsl_qrng.h")] 2800 namespace QRNGAlgorithms 2801 { 2802 public static QRNGType* niederreiter_2; 2803 public static QRNGType* sobol; 2804 public static QRNGType* halton; 2805 public static QRNGType* reversehalton; 2806 } 2807 2808 [Compact] 2809 [CCode (cname="gsl_qrng", cheader_filename="gsl/gsl_qrng.h")] 2810 public class QRNG 2811 { 2812 public QRNGType* type; 2813 public uint dimension; 2814 size_t state_size; 2815 void* state; 2816 2817 [CCode (cname="gsl_qrng_alloc")] 2818 public QRNG (QRNGType* T, uint d); 2819 public void init (); 2820 public int memcpy (QRNG src); 2821 public QRNG clone (); 2822 public string name (); 2823 public size_t size (); 2824 public int @get ([CCode (array_length = false)] double[] x); 2825 } 2826 2827 2828 /* 2829 * Random Number Distributions 2830 */ 2831 [CCode (lower_case_cprefix="gsl_ran_", cheader_filename="gsl/gsl_randist.h")] 2832 namespace Randist 2833 { 2834 public static uint bernoulli (RNG r, double p); 2835 public static double bernoulli_pdf (uint k, double p); 2836 2837 public static double beta (RNG r, double a, double b); 2838 public static double beta_pdf (double x, double a, double b); 2839 2840 public static uint binomial (RNG r, double p, uint n); 2841 public static uint binomial_knuth (RNG r, double p, uint n); 2842 public static uint binomial_tpe (RNG r, double p, uint n); 2843 public static double binomial_pdf (uint k, double p, uint n); 2844 2845 public static double exponential (RNG r, double mu); 2846 public static double exponential_pdf (double x, double mu); 2847 2848 public static double exppow (RNG r, double a, double b); 2849 public static double exppow_pdf (double x, double a, double b); 2850 2851 public static double cauchy (RNG r, double a); 2852 public static double cauchy_pdf (double x, double a); 2853 2854 public static double chisq (RNG r, double nu); 2855 public static double chisq_pdf (double x, double nu); 2856 2857 public static void dirichlet (RNG r, size_t K, out double alpha, out double theta); 2858 public static double dirichlet_pdf (size_t K, out double alpha, out double theta); 2859 public static double dirichlet_lnpdf (size_t K, out double alpha, out double theta); 2860 2861 public static double erlang (RNG r, double a, double n); 2862 public static double erlang_pdf (double x, double a, double n); 2863 2864 public static double fdist (RNG r, double nu1, double nu2); 2865 public static double fdist_pdf (double x, double nu1, double nu2); 2866 2867 public static double flat (RNG r, double a, double b); 2868 public static double flat_pdf (double x, double a, double b); 2869 2870 public static double gamma (RNG r, double a, double b); 2871 public static double gamma_int (RNG r, uint a); 2872 public static double gamma_pdf (double x, double a, double b); 2873 public static double gamma_mt (RNG r, double a, double b); 2874 public static double gamma_knuth (RNG r, double a, double b); 2875 2876 public static double gaussian (RNG r, double sigma); 2877 public static double gaussian_ratio_method (RNG r, double sigma); 2878 public static double gaussian_ziggurat (RNG r, double sigma); 2879 public static double gaussian_pdf (double x, double sigma); 2880 2881 public static double ugaussian (RNG r); 2882 public static double ugaussian_ratio_method (RNG r); 2883 public static double ugaussian_pdf (double x); 2884 2885 public static double gaussian_tail (RNG r, double a, double sigma); 2886 public static double gaussian_tail_pdf (double x, double a, double sigma); 2887 2888 public static double ugaussian_tail (RNG r, double a); 2889 public static double ugaussian_tail_pdf (double x, double a); 2890 2891 public static void bivariate_gaussian (RNG r, double sigma_x, double sigma_y, double rho, out double x, out double y); 2892 public static double bivariate_gaussian_pdf (double x, double y, double sigma_x, double sigma_y, double rho); 2893 2894 public static double landau (RNG r); 2895 public static double landau_pdf (double x); 2896 2897 public static uint geometric (RNG r, double p); 2898 public static double geometric_pdf (uint k, double p); 2899 2900 public static uint hypergeometric (RNG r, uint n1, uint n2, uint t); 2901 public static double hypergeometric_pdf (uint k, uint n1, uint n2, uint t); 2902 2903 public static double gumbel1 (RNG r, double a, double b); 2904 public static double gumbel1_pdf (double x, double a, double b); 2905 2906 public static double gumbel2 (RNG r, double a, double b); 2907 public static double gumbel2_pdf (double x, double a, double b); 2908 2909 public static double logistic (RNG r, double a); 2910 public static double logistic_pdf (double x, double a); 2911 2912 public static double lognormal (RNG r, double zeta, double sigma); 2913 public static double lognormal_pdf (double x, double zeta, double sigma); 2914 2915 public static uint logarithmic (RNG r, double p); 2916 public static double logarithmic_pdf (uint k, double p); 2917 2918 public static void multinomial (RNG r, size_t K, uint N, [CCode (array_length = false)] double[] p, [CCode (array_length = false)] uint[] n); 2919 public static double multinomial_pdf (size_t K, [CCode (array_length = false)] double[] p, [CCode (array_length = false)] uint[] n); 2920 public static double multinomial_lnpdf (size_t K, [CCode (array_length = false)] double[] p, [CCode (array_length = false)] uint[] n); 2921 2922 public static uint negative_binomial (RNG r, double p, double n); 2923 public static double negative_binomial_pdf (uint k, double p, double n); 2924 2925 public static uint pascal (RNG r, double p, uint n); 2926 public static double pascal_pdf (uint k, double p, uint n); 2927 2928 public static double pareto (RNG r, double a, double b); 2929 public static double pareto_pdf (double x, double a, double b); 2930 2931 public static uint poisson (RNG r, double mu); 2932 public static void poisson_array (RNG r, size_t n, [CCode (array_length = false)] uint[] array, double mu); 2933 public static double poisson_pdf (uint k, double mu); 2934 2935 public static double rayleigh (RNG r, double sigma); 2936 public static double rayleigh_pdf (double x, double sigma); 2937 2938 public static double rayleigh_tail (RNG r, double a, double sigma); 2939 public static double rayleigh_tail_pdf (double x, double a, double sigma); 2940 2941 public static double tdist (RNG r, double nu); 2942 public static double tdist_pdf (double x, double nu); 2943 2944 public static double laplace (RNG r, double a); 2945 public static double laplace_pdf (double x, double a); 2946 2947 public static double levy (RNG r, double c, double alpha); 2948 public static double levy_skew (RNG r, double c, double alpha, double beta); 2949 2950 public static double weibull (RNG r, double a, double b); 2951 public static double weibull_pdf (double x, double a, double b); 2952 2953 public static void dir_2d (RNG r, out double x, out double y); 2954 public static void dir_2d_trig_method (RNG r, out double x, out double y); 2955 public static void dir_3d (RNG r, out double x, out double y, out double z); 2956 public static void dir_nd (RNG r, size_t n, out double x); 2957 2958 public static void shuffle (RNG r, void* b, size_t nmembm, size_t size); 2959 public static int choose (RNG r, void* dest, size_t k, void* src, size_t n, size_t size); 2960 public static void sample (RNG r, void* dest, size_t k, void* src, size_t n, size_t size); 2961 } 2962 2963 [Compact] 2964 [CCode (cname="gsl_ran_discrete_t", cprefix="gsl_ran_discrete_", cheader_filename="gsl/gsl_randist.h")] 2965 public class RanDiscrete 2966 { 2967 public size_t K; 2968 public size_t* A; 2969 public double* F; 2970 2971 [CCode (cname="gsl_ran_discrete_preproc")] 2972 public RanDiscrete (size_t K, double* P); 2973 [CCode (cname="gsl_ran_discrete", instance_pos = -1)] 2974 public size_t discrete (RNG g); 2975 [CCode (instance_pos=-1)] 2976 public double pdf (size_t k); 2977 } 2978 2979 2980 /* 2981 * Statistics 2982 */ 2983 [CCode (lower_case_cprefix="gsl_stats_", cheader_filename="gsl/gsl_statistics.h")] 2984 namespace Stats 2985 { 2986 public static double mean ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2987 public static double variance ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2988 public static double variance_m ([CCode (array_length = false)] double[] data, size_t stride, size_t n, double mean); 2989 public static double sd ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2990 public static double sd_m ([CCode (array_length = false)] double[] data, size_t stride, size_t n, double mean); 2991 public static double tss ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2992 public static double tss_m ([CCode (array_length = false)] double[] data, size_t stride, size_t n, double mean); 2993 public static double variance_with_fixed_mean ([CCode (array_length = false)] double[] data, size_t stride, size_t n, double mean); 2994 public static double sd_with_fixed_mean ([CCode (array_length = false)] double[] data, size_t stride, size_t n, double mean); 2995 public static double absdev ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2996 public static double absdev_m ([CCode (array_length = false)] double[] data, size_t stride, size_t n, double mean); 2997 public static double skew ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 2998 public static double skew_m_sd ([CCode (array_length = false)] double[] data, size_t stride, size_t n, double mean, double sd); 2999 public static double kurtosis ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 3000 public static double kurtosis_m_sd ([CCode (array_length = false)] double[] data, size_t stride, size_t n, double mean, double sd); 3001 public static double lag1_autocorrelation ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 3002 public static double lag1_autocorrelation_m ([CCode (array_length = false)] double[] data, size_t stride, size_t n, double mean); 3003 public static double covariance ([CCode (array_length = false)] double[] data1, size_t stride1, [CCode (array_length = false)] double[] data2, size_t stride2, size_t n); 3004 public static double covariance_m ([CCode (array_length = false)] double[] data1, size_t stride1, [CCode (array_length = false)] double[] data2, size_t stride2, size_t n, double mean1, double mean2); 3005 public static double correlation ([CCode (array_length = false)] double[] data1, size_t stride1, [CCode (array_length = false)] double[] data2, size_t stride2, size_t n); 3006 3007 public static double wmean ([CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] data, size_t stride, size_t n); 3008 public static double wvariance ([CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] data, size_t stride, size_t n); 3009 public static double wvariance_m ([CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] data, size_t stride, size_t n, double wmean); 3010 public static double wsd ([CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] data, size_t stride, size_t n); 3011 public static double wsd_m ([CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] data, size_t stride, size_t n, double wmean); 3012 public static double wtss ([CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] data, size_t stride, size_t n); 3013 public static double wtss_m ([CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] data, size_t stride, size_t n, double mean); 3014 public static double wvariance_with_fixed_mean ([CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] data, size_t stride, size_t n, double wmean); 3015 public static double wsd_with_fixed_mean ([CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] data, size_t stride, size_t n, double wmean); 3016 public static double wabsdev ([CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] data, size_t stride, size_t n); 3017 public static double wabsdev_m ([CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] data, size_t stride, size_t n, double wmean); 3018 public static double wskew ([CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] data, size_t stride, size_t n); 3019 public static double wskew_m_sd ([CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] data, size_t stride, size_t n, double wmean, double wsd); 3020 public static double wkurtosis ([CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] data, size_t stride, size_t n); 3021 public static double wkurtosis_m_sd ([CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] data, size_t stride, size_t n, double wmean, double wsd); 3022 3023 public static double max ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 3024 public static double min ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 3025 public static void minmax (out double min, out double max, [CCode (array_length = false)] double[] data, size_t stride, size_t n); 3026 public static size_t max_index ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 3027 public static size_t min_index ([CCode (array_length = false)] double[] data, size_t stride, size_t n); 3028 public static void minmax_index (out size_t min, out size_t max, [CCode (array_length = false)] double[] data, size_t stride, size_t n); 3029 3030 public static double median_from_sorted_data ([CCode (array_length = false)] double[] sorted_data, size_t stride, size_t n); 3031 public static double quantile_from_sorted_data ([CCode (array_length = false)] double[] sorted_data, size_t stride, size_t n, double f); 3032 } 3033 3034 3035 /* 3036 * Histograms 3037 */ 3038 [Compact] 3039 [CCode (cname="gsl_histogram", cheader_filename="gsl/gsl_histogram.h")] 3040 public class Histogram 3041 { 3042 public size_t n; 3043 public double* range; 3044 public double* bin; 3045 3046 [CCode (cname="gsl_histogram_alloc")] 3047 public Histogram (size_t n); 3048 [CCode (cname="gsl_histogram_calloc")] 3049 public Histogram.with_zeros (size_t n); 3050 [CCode (cname="gsl_histogram_calloc_uniform")] 3051 public Histogram.uniform (size_t n, double xmin, double xmax); 3052 [CCode (cname="gsl_histogram_calloc_range")] 3053 public Histogram.with_range (size_t n, [CCode (array_length = false)] double[] range); 3054 3055 public int increment (double x); 3056 public int accumulate (double x, double weight); 3057 public int find (double x, out size_t i); 3058 public double @get (size_t i); 3059 public int get_range (size_t i, out double lower, out double upper); 3060 public double max (); 3061 public double min (); 3062 public size_t bins (); 3063 3064 public void reset (); 3065 3066 public int set_ranges (double[] range); 3067 public int set_ranges_uniform (double xmin, double xmax); 3068 3069 public int memcpy (Histogram source); 3070 public Histogram clone(); 3071 3072 public double max_val (); 3073 public size_t max_bin (); 3074 public double min_val (); 3075 public size_t min_bin (); 3076 3077 public int equal_bins_p (Histogram h2); 3078 public int add (Histogram h2); 3079 public int sub (Histogram h2); 3080 public int mul (Histogram h2); 3081 public int div (Histogram h2); 3082 public int scale (double scale); 3083 public int shift (double shift); 3084 3085 public double sigma (); 3086 public double mean (); 3087 public double sum (); 3088 3089 [CCode (instance_pos=-1)] 3090 public int fwrite (GLib.FileStream stream); 3091 [CCode (instance_pos=-1)] 3092 public int fread (GLib.FileStream stream); 3093 public static int fprintf (GLib.FileStream stream, Histogram h, string range_format, string bin_format); 3094 [CCode (instance_pos=-1)] 3095 public int fscanf (GLib.FileStream stream); 3096 } 3097 3098 [Compact] 3099 [CCode (cname="gsl_histogram_pdf", cheader_filename="gsl/gsl_histogram.h")] 3100 public class HistogramPDF 3101 { 3102 public size_t n; 3103 public double* range; 3104 public double* sum ; 3105 3106 [CCode (cname="gsl_histogram_pdf_alloc")] 3107 public HistogramPDF (size_t n); 3108 public int init (Histogram h); 3109 public double sample (double r); 3110 } 3111 3112 [Compact] 3113 [CCode (cname="gsl_histogram2d", cheader_filename="gsl/gsl_histogram2d.h")] 3114 public class Histogram2d 3115 { 3116 public size_t nx; 3117 public size_t ny; 3118 public double* xrange; 3119 public double* yrange; 3120 public double* bin; 3121 3122 [CCode (cname="gsl_histogram2d_alloc")] 3123 public Histogram2d (size_t nx, size_t ny); 3124 [CCode (cname="gsl_histogram2d_calloc")] 3125 public Histogram2d.with_zeros (size_t nx, size_t ny); 3126 [CCode (cname="gsl_histogram2d_calloc_uniform")] 3127 public Histogram2d.uniform (size_t nx, size_t ny, double xmin, double xmax, double ymin, double ymax); 3128 [CCode (cname="gsl_histogram2d_calloc_range")] 3129 public Histogram2d.range (size_t nx, size_t ny, out double xrange, out double yrange); 3130 3131 public int increment (double x, double y); 3132 public int accumulate (double x, double y, double weight); 3133 public int find (double x, double y, out size_t i, out size_t j); 3134 public double @get (size_t i, size_t j); 3135 public int get_xrange (size_t i, out double xlower, out double xupper); 3136 public int get_yrange (size_t j, out double ylower, out double yupper); 3137 3138 public double xmax (); 3139 public double xmin (); 3140 public double ymax (); 3141 public double ymin (); 3142 3143 public void reset (); 3144 3145 public int set_ranges_uniform (double xmin, double xmax, double ymin, double ymax); 3146 public int set_ranges (double[] xrange, double[] yrange); 3147 3148 public int memcpy (Histogram2d source); 3149 public Histogram2d clone (); 3150 3151 public double max_val(); 3152 public void max_bin (out size_t i, out size_t j); 3153 public double min_val(); 3154 public void min_bin (out size_t i, out size_t j); 3155 3156 public double xmean (); 3157 public double ymean (); 3158 public double xsigma (); 3159 public double ysigma (); 3160 public double cov (); 3161 3162 public double sum (); 3163 public int equal_bins_p (Histogram2d h2); 3164 public int add (Histogram2d h2); 3165 public int sub (Histogram2d h2); 3166 public int mul (Histogram2d h2); 3167 public int div (Histogram2d h2); 3168 public int scale (double scale); 3169 public int shift (double shift); 3170 3171 [CCode (instance_pos=-1)] 3172 public int fwrite (GLib.FileStream stream); 3173 [CCode (instance_pos=-1)] 3174 public int fread (GLib.FileStream stream); 3175 public static int fprintf (GLib.FileStream stream, Histogram2d h, string range_format, string bin_format); 3176 [CCode (instance_pos=-1)] 3177 public int fscanf (GLib.FileStream stream); 3178 } 3179 3180 [Compact] 3181 [CCode (cname="gsl_histogram2d_pdf", cheader_filename="gsl/gsl_histogram2d.h")] 3182 public class Histogram2dPDF 3183 { 3184 public size_t nx; 3185 public size_t ny; 3186 public double* xrange; 3187 public double* yrange; 3188 public double* sum; 3189 3190 [CCode (cname="gsl_histogram2d_pdf_alloc")] 3191 public Histogram2dPDF (size_t nx, size_t ny); 3192 public int init (Histogram2d h); 3193 public int sample (double r1, double r2, out double x, out double y); 3194 } 3195 3196 3197 /* 3198 * N-Tuples 3199 */ 3200 [CCode (has_target = false, has_typedef = false)] 3201 public delegate int NTupleSelectFunc (void* ntuple_data, void* params); 3202 [CCode (has_target = false, has_typedef = false)] 3203 public delegate double NTupleValueFunc (void* ntuple_data, void* params); 3204 3205 [SimpleType] 3206 [CCode (cname="gsl_ntuple_select_fn", cheader_filename="gsl/gsl_ntuple.h", has_type_id = false)] 3207 public struct NTupleSelectFn 3208 { 3209 public NTupleSelectFunc function; 3210 public void* params; 3211 } 3212 3213 [SimpleType] 3214 [CCode (cname="gsl_ntuple_value_fn", cheader_filename="gsl/gsl_ntuple.h", has_type_id = false)] 3215 public struct NTupleValueFn 3216 { 3217 public NTupleValueFunc function; 3218 public void* params; 3219 } 3220 3221 [Compact] 3222 [CCode (cname="gsl_ntuple", free_function="gsl_ntuple_close", cheader_filename="gsl/gsl_ntuple.h")] 3223 public class NTuple 3224 { 3225 public GLib.FileStream file; 3226 public void* ntuple_data; 3227 public size_t size; 3228 3229 public static NTuple open (string filename, void* ntuple_data, size_t size); 3230 public static NTuple create (string filename, void* ntuple_data, size_t size); 3231 public int write (); 3232 public int read (); 3233 public int bookdata (); 3234 3235 public static int project (Histogram h, NTuple ntuple, NTupleValueFn* value_func, NTupleSelectFn* select_func); 3236 } 3237 3238 3239 /* 3240 * Monte Carlo Integration 3241 */ 3242 [CCode (cprefix="GSL_VEGAS_MODE_", cheader_filename="gsl/gsl_monte_vegas.h", has_type_id = false)] 3243 public enum MonteVegasMode 3244 { 3245 IMPORTANCE, 3246 IMPORTANCE_ONLY, 3247 STRATIFIED 3248 } 3249 3250 [CCode (has_target = false, has_typedef = false)] 3251 public delegate double MonteFunc ([CCode (array_length = false)] double[] x_array, size_t dim, void* params); 3252 3253 [SimpleType] 3254 [CCode (cname="gsl_monte_function", cheader_filename="gsl/gsl_monte.h", has_type_id = false)] 3255 public struct MonteFunction 3256 { 3257 public MonteFunc f; 3258 public size_t dim; 3259 public void* params; 3260 } 3261 3262 [Compact] 3263 [CCode (cname="gsl_monte_plain_state", cprefix="gsl_monte_plain_", cheader_filename="gsl/gsl_monte_plain.h")] 3264 public class MontePlainState 3265 { 3266 public size_t dim; 3267 public double* x; 3268 3269 [CCode (cname="gsl_monte_plain_alloc")] 3270 public MontePlainState (size_t dim); 3271 public int init (); 3272 public static int integrate (MonteFunction* f, [CCode (array_length = false)] double[] xl, [CCode (array_length = false)] double[] xu, size_t dim, size_t calls, RNG r, MontePlainState state, out double result, out double abserr); 3273 } 3274 3275 [Compact] 3276 [CCode (cname="gsl_monte_miser_state", cprefix="gsl_monte_miser_", cheader_filename="gsl/gsl_monte_miser.h")] 3277 public class MonteMiserState 3278 { 3279 public size_t min_calls; 3280 public size_t min_calls_per_bisection; 3281 public double dither; 3282 public double estimate_frac; 3283 public double alpha; 3284 public size_t dim; 3285 public int estimate_style; 3286 public int depth; 3287 public int verbose; 3288 public double* x; 3289 public double* xmid; 3290 public double* sigma_l; 3291 public double* sigma_r; 3292 public double* fmax_l; 3293 public double* fmax_r; 3294 public double* fmin_l; 3295 public double* fmin_r; 3296 public double* fsum_l; 3297 public double* fsum_r; 3298 public double* fsum2_l; 3299 public double* fsum2_r; 3300 public size_t* hits_l; 3301 public size_t* hits_r; 3302 3303 [CCode (cname="gsl_monte_miser_alloc")] 3304 public MonteMiserState (size_t dim); 3305 public int init (); 3306 public static int integrate (MonteFunction* f, [CCode (array_length = false)] double[] xl, [CCode (array_length = false)] double[] xh, size_t dim, size_t calls, RNG r, MonteMiserState state, out double result, out double abserr); 3307 } 3308 3309 [Compact] 3310 [CCode (cname="gsl_monte_vegas_state", cprefix="gsl_monte_vegas_", cheader_filename="gsl/gsl_monte_vegas.h")] 3311 public class MonteVegasState 3312 { 3313 public size_t dim; 3314 public size_t bins_max; 3315 public uint bins; 3316 public uint boxes; 3317 public double* xi; 3318 public double* xin; 3319 public double* delx; 3320 public double* weight; 3321 public double vol; 3322 public double* x; 3323 public int* bin; 3324 public int* box; 3325 public double* d; 3326 public double alpha; 3327 public int mode; 3328 public int verbose; 3329 public uint iterations; 3330 public int stage; 3331 public double jac; 3332 public double wtd_int_sum; 3333 public double sum_wgts; 3334 public double chi_sum; 3335 public double chisq; 3336 public double result; 3337 public double sigma; 3338 public uint it_start; 3339 public uint it_num; 3340 public uint samples; 3341 public uint calls_per_box; 3342 public GLib.FileStream ostream; 3343 3344 [CCode (cname="gsl_monte_vegas_alloc")] 3345 public MonteVegasState (size_t dim); 3346 public int init (); 3347 public static int integrate (MonteFunction* f, [CCode (array_length = false)] double[] xl, [CCode (array_length = false)] double[] xu, size_t dim, size_t calls, RNG r, MonteVegasState state, out double result, out double abserr); 3348 } 3349 3350 3351 /* 3352 * Simulated Annealing 3353 */ 3354 [SimpleType] 3355 [CCode (cname="gsl_siman_params_t", cheader_filename="gsl/gsl_siman.h", has_type_id = false)] 3356 public struct SimanParams 3357 { 3358 public int n_tries; 3359 public int iters_fixed_T; 3360 public double step_size; 3361 public double k; 3362 public double t_initial; 3363 public double mu_t; 3364 public double t_min; 3365 } 3366 3367 [CCode (lower_case_cprefix="gsl_siman_", cheader_filename="gsl/gsl_siman.h", has_type_id = false)] 3368 namespace Siman 3369 { 3370 [CCode (cname = "gsl_siman_Efunc_t", has_target = false)] 3371 public delegate double Efunc_t (void *xp); 3372 [CCode (cname = "gsl_siman_step_t", has_target = false)] 3373 public delegate void step_t (RNG r, void *xp, double step_size); 3374 [CCode (cname = "gsl_siman_metric_t", has_target = false)] 3375 public delegate double metric_t (void *xp, void* yp); 3376 [CCode (cname = "gsl_siman_print_t", has_target = false)] 3377 public delegate void print_t (void* xp); 3378 [CCode (cname = "gsl_siman_copy_t", has_target = false)] 3379 public delegate void copy_t (void* source, void* dest); 3380 [CCode (cname = "gsl_siman_copy_construct_t", has_target = false)] 3381 public delegate void copy_construct_t (void* xp); 3382 [CCode (cname = "gsl_siman_destroy_t", has_target = false)] 3383 public delegate void destroy_t (void* xp); 3384 3385 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); 3386 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); 3387 } 3388 3389 3390 /* 3391 * Ordinary Differential Equations 3392 */ 3393 [CCode (cprefix="GSL_ODEIV_HADJ_", cheader_filename="gsl/gsl_odeiv.h", has_type_id = false)] 3394 public enum OdeivHadjustTypes 3395 { 3396 INC, 3397 NIL, 3398 DEC 3399 } 3400 3401 [CCode (has_target = false, has_typedef = false)] 3402 public delegate int OdeivFunction (double t, [CCode (array_length = false)] double[] y, [CCode (array_length = false)] double[] dydt, void* params); 3403 [CCode (has_target = false, has_typedef = false)] 3404 public delegate int OdeivJacobian (double t, [CCode (array_length = false)] double[] y, [CCode (array_length = false)] double[] dfdy, [CCode (array_length = false)] double[] dfdt, void* params); 3405 [CCode (has_target = false, has_typedef = false)] 3406 public delegate void* OdeivStepAlloc (size_t dim); 3407 [CCode (has_target = false, has_typedef = false)] 3408 public delegate int OdeivStepApply (void* state, size_t dim, double t, double h, [CCode (array_length = false)] double[] y, [CCode (array_length = false)] double[] yerr, [CCode (array_length = false)] double[] dydt_in, [CCode (array_length = false)] double[] dydt_out, OdeivSystem* dydt); 3409 [CCode (has_target = false, has_typedef = false)] 3410 public delegate int OdeivStepReset (void* state, size_t dim); 3411 [CCode (has_target = false, has_typedef = false)] 3412 public delegate uint OdeivStepOrder (void* state); 3413 [CCode (has_target = false, has_typedef = false)] 3414 public delegate void OdeivStepFree (void* state); 3415 [CCode (has_target = false, has_typedef = false)] 3416 public delegate void* OdeivControlAlloc (); 3417 [CCode (has_target = false, has_typedef = false)] 3418 public delegate int OdeivControlInit (void* state, double eps_abs, double eps_rel, double a_y, double a_dydt); 3419 [CCode (has_target = false, has_typedef = false)] 3420 public delegate int OdeivControlHadjust (void* state, size_t dim, uint ord, [CCode (array_length = false)] double[] y, [CCode (array_length = false)] double[] yerr, [CCode (array_length = false)] double[] yp, [CCode (array_length = false)] double[] h); 3421 [CCode (has_target = false, has_typedef = false)] 3422 public delegate void OdeivControlFree (void* state); 3423 3424 [SimpleType] 3425 [CCode (cname="gsl_odeiv_system", cheader_filename="gsl/gsl_odeiv.h", has_type_id = false)] 3426 public struct OdeivSystem 3427 { 3428 public OdeivFunction function; 3429 public OdeivJacobian jacobian; 3430 public size_t dimension; 3431 public void* params; 3432 } 3433 3434 [SimpleType] 3435 [CCode (cname="gsl_odeiv_step_type", cheader_filename="gsl/gsl_odeiv.h", has_type_id = false)] 3436 public struct OdeivStepType 3437 { 3438 public unowned string name; 3439 public int can_use_dydt_in; 3440 public int gives_exact_dydt_out; 3441 public OdeivStepAlloc alloc; 3442 public OdeivStepApply apply; 3443 public OdeivStepReset reset; 3444 public OdeivStepOrder order; 3445 public OdeivStepFree free; 3446 } 3447 3448 [CCode (lower_case_cprefix="gsl_odeiv_step_", cheader_filename="gsl/gsl_odeiv.h")] 3449 namespace OdeivStepTypes 3450 { 3451 public static OdeivStepType* rk2; 3452 public static OdeivStepType* rk4; 3453 public static OdeivStepType* rkf45; 3454 public static OdeivStepType* rkck; 3455 public static OdeivStepType* rk8pd; 3456 public static OdeivStepType* rk2imp; 3457 public static OdeivStepType* rk2simp; 3458 public static OdeivStepType* rk4imp; 3459 public static OdeivStepType* bsimp; 3460 public static OdeivStepType* gear1; 3461 public static OdeivStepType* gear2; 3462 } 3463 3464 [Compact] 3465 [CCode (cname="gsl_odeiv_step", cheader_filename="gsl/gsl_odeiv.h")] 3466 public class OdeivStep 3467 { 3468 public OdeivStepType* type; 3469 public size_t dimension; 3470 public void* state; 3471 3472 [CCode (cname="gsl_odeiv_step_alloc")] 3473 public OdeivStep (OdeivStepType* T, size_t dim); 3474 public int reset (); 3475 public string name (); 3476 public uint order (); 3477 3478 public int apply (double t, double h, [CCode (array_length = false)] double[] y, [CCode (array_length = false)] double[] yerr, [CCode (array_length = false)] double[] dydt_in, [CCode (array_length = false)] double[] dydt_out, OdeivSystem* dydt); 3479 } 3480 3481 [SimpleType] 3482 [CCode (cname="gsl_odeiv_control_type", cheader_filename="gsl/gsl_odeiv.h", has_type_id = false)] 3483 public struct OdeivControlType 3484 { 3485 public unowned string name; 3486 public OdeivControlAlloc alloc; 3487 public OdeivControlInit init; 3488 public OdeivControlHadjust hadjust; 3489 public OdeivControlFree free; 3490 } 3491 3492 [Compact] 3493 [CCode (cname="gsl_odeiv_control", cheader_filename="gsl/gsl_odeiv.h")] 3494 public class OdeivControl 3495 { 3496 public OdeivControlType* type; 3497 public void* state; 3498 3499 [CCode (cname="gsl_odeiv_control_alloc")] 3500 public OdeivControl (OdeivControlType* T); 3501 [CCode (cname="gsl_odeiv_control_standard_new")] 3502 public OdeivControl.standard (double eps_abs, double eps_rel, double a_y, double a_dydt); 3503 [CCode (cname="gsl_odeiv_control_y_new")] 3504 public OdeivControl.y (double eps_abs, double eps_rel); 3505 [CCode (cname="gsl_odeiv_control_yp_new")] 3506 public OdeivControl.yp (double eps_abs, double eps_rel); 3507 [CCode (cname="gsl_odeiv_control_scaled_new")] 3508 public OdeivControl.scaled (double eps_abs, double eps_rel, double a_y, double a_dydt, double[] scale_abs); 3509 3510 public int init (double eps_abs, double eps_rel, double a_y, double a_dydt); 3511 public int hadjust (OdeivStep s, out double y, out double yerr, out double dydt, out double h); 3512 public string name (); 3513 } 3514 3515 [Compact] 3516 [CCode (cname="gsl_odeiv_evolve", cheader_filename="gsl/gsl_odeiv.h")] 3517 public class OdeivEvolve 3518 { 3519 public size_t dimension; 3520 public double* y0; 3521 public double* yerr; 3522 public double* dydt_in; 3523 public double* dydt_out; 3524 public double last_step; 3525 public ulong count; 3526 public ulong failed_steps; 3527 3528 [CCode (cname="gsl_odeiv_evolve_alloc")] 3529 public OdeivEvolve (size_t dim); 3530 public int apply (OdeivControl con, OdeivStep step, OdeivSystem* dydt, [CCode (array_length = false)] double[] t, double t1, [CCode (array_length = false)] double[] h, [CCode (array_length = false)] double[] y); 3531 public int reset (); 3532 } 3533 3534 3535 /* 3536 * Interpolation 3537 */ 3538 [CCode (has_target = false, has_typedef = false)] 3539 public delegate void* InterpAlloc (size_t size); 3540 [CCode (has_target = false, has_typedef = false)] 3541 public delegate int InterpInit (void* t, [CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, size_t size); 3542 [CCode (has_target = false, has_typedef = false)] 3543 public delegate int InterpEval (void* t, [CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, size_t size, double x, InterpAccel* i, out double y); 3544 [CCode (has_target = false, has_typedef = false)] 3545 public delegate int InterpEvalDeriv (void* t, [CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, size_t size, double x, InterpAccel* i, out double y_p); 3546 [CCode (has_target = false, has_typedef = false)] 3547 public delegate int InterpEvalDeriv2 (void* t, [CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, size_t size, double x, InterpAccel* i, out double y_pp); 3548 [CCode (has_target = false, has_typedef = false)] 3549 public delegate int InterpEvalInteg (void* t, [CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, size_t size, InterpAccel* i, double a, double b, out double result); 3550 [CCode (has_target = false, has_typedef = false)] 3551 public delegate void InterpFree (void* t); 3552 3553 [Compact] 3554 [CCode (cname="gsl_interp_accel", cheader_filename="gsl/gsl_interp.h")] 3555 public class InterpAccel 3556 { 3557 public size_t cache; 3558 public size_t miss_count; 3559 public size_t hit_count; 3560 3561 [CCode (cname="gsl_interp_accel_alloc")] 3562 public InterpAccel (); 3563 public size_t find (double[] x_array, double x); 3564 public int reset (); 3565 } 3566 3567 [SimpleType] 3568 [CCode (cname="gsl_interp_type", cheader_filename="gsl/gsl_interp.h", has_type_id = false)] 3569 public struct InterpType 3570 { 3571 public unowned string name; 3572 public uint min_size; 3573 public InterpAlloc alloc; 3574 public InterpInit init; 3575 public InterpEval eval; 3576 public InterpEvalDeriv eval_deriv; 3577 public InterpEvalDeriv2 eval_deriv2; 3578 public InterpEvalInteg eval_integ; 3579 public InterpFree free; 3580 } 3581 3582 [CCode (lower_case_cprefix="gsl_interp_", cheader_filename="gsl/gsl_interp.h")] 3583 namespace InterpTypes 3584 { 3585 public static InterpType* linear; 3586 public static InterpType* polynomial; 3587 public static InterpType* cspline; 3588 public static InterpType* cspline_periodic; 3589 public static InterpType* akima; 3590 public static InterpType* akima_periodic; 3591 } 3592 3593 [Compact] 3594 [CCode (cname="gsl_interp", cheader_filename="gsl/gsl_interp.h")] 3595 public class Interp 3596 { 3597 InterpType* type; 3598 public double xmin; 3599 public double xmax; 3600 public size_t size; 3601 public void* state; 3602 3603 [CCode (cname="gsl_interp_alloc")] 3604 public Interp (InterpType* T, size_t n); 3605 public int init ([CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, size_t size); 3606 public string name (); 3607 public uint min_size (); 3608 public int eval_e ([CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, double x, InterpAccel a, out double y); 3609 public double eval ([CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, double x, InterpAccel a); 3610 public int eval_deriv_e ([CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, double x, InterpAccel a, out double d); 3611 public double eval_deriv ([CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, double x, InterpAccel a); 3612 public int eval_deriv2_e ([CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, double x, InterpAccel a, out double d2); 3613 public double eval_deriv2 ([CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, double x, InterpAccel a); 3614 public int eval_integ_e ([CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, double a, double b, InterpAccel acc, out double result); 3615 public double eval_integ ([CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, double a, double b, InterpAccel acc); 3616 public static size_t bsearch([CCode (array_length = false)] double[] x_array, double x, size_t index_lo, size_t index_hi); 3617 } 3618 3619 [Compact] 3620 [CCode (cname="gsl_spline", cheader_filename="gsl/gsl_spline.h")] 3621 public class Spline 3622 { 3623 public Interp interp; 3624 public double* x; 3625 public double* y; 3626 public size_t size; 3627 3628 [CCode (cname="gsl_spline_alloc")] 3629 public Spline (InterpType* T, size_t size); 3630 public int init ([CCode (array_length = false)] double[] xa, [CCode (array_length = false)] double[] ya, size_t size); 3631 public string name (); 3632 public uint min_size (); 3633 public int eval_e (double x, InterpAccel a, out double y); 3634 public double eval (double x, InterpAccel a); 3635 public int eval_deriv_e (double x, InterpAccel a, out double y); 3636 public double eval_deriv (double x, InterpAccel a); 3637 public int eval_deriv2_e (double x, InterpAccel a, out double y); 3638 public double eval_deriv2 (double x, InterpAccel a); 3639 public int eval_integ_e (double a, double b, InterpAccel acc, out double y); 3640 public double eval_integ (double a, double b, InterpAccel acc); 3641 } 3642 3643 /* 3644 * Numerical Differentiation 3645 */ 3646 [CCode (lower_case_cprefix="gsl_deriv_", cheader_filename="gsl/gsl_deriv.h")] 3647 namespace Deriv 3648 { 3649 public static int central (Function* f, double x, double h, out double result, out double abserr); 3650 public static int backward (Function* f, double x, double h, out double result, out double abserr); 3651 public static int forward (Function* f, double x, double h, out double result, out double abserr); 3652 } 3653 3654 3655 /* 3656 * Chebyshev Approximations 3657 */ 3658 [Compact] 3659 [CCode (cname="gsl_cheb_series", cprefix="gsl_cheb_", cheader_filename="gsl/gsl_chebyshev.h")] 3660 public class ChebSeries 3661 { 3662 public double* c; 3663 public size_t order; 3664 public double a; 3665 public double b; 3666 public size_t order_sp; 3667 public double *f; 3668 3669 [CCode (cname="gsl_cheb_alloc")] 3670 public ChebSeries (size_t order); 3671 public int init (Function* func, double a, double b); 3672 public double eval (double x); 3673 public int eval_err (double x, out double result, out double abserr); 3674 public double eval_n (size_t order, double x); 3675 public int eval_n_err (size_t order, double x, out double result, out double abserr); 3676 public double eval_mode (double x, Mode mode); 3677 public int eval_mode_e (double x, Mode mode, out double result, out double abserr); 3678 public int calc_deriv (ChebSeries cs); 3679 public int calc_integ (ChebSeries cs); 3680 } 3681 3682 3683 /* 3684 * Series Acceleration 3685 */ 3686 [Compact] 3687 [CCode (cname="gsl_sum_levin_u_workspace", free_function="gsl_sum_levin_u_free", cheader_filename="gsl/gsl_sum.h")] 3688 public class SumLevinUWorkspace 3689 { 3690 public size_t size; 3691 public size_t i; 3692 public size_t terms_used; 3693 public double sum_plain; 3694 public double* q_num; 3695 public double* q_den; 3696 public double* dq_num; 3697 public double* dq_den; 3698 public double* dsum; 3699 3700 [CCode (cname="gsl_sum_levin_u_alloc")] 3701 public SumLevinUWorkspace (size_t n); 3702 } 3703 3704 [CCode (lower_case_cprefix="gsl_sum_levin_u_", cheader_filename="gsl/gsl_sum.h")] 3705 namespace SumLevinU 3706 { 3707 public static int accel (double[] array, SumLevinUWorkspace w, out double sum_accel, out double abserr); 3708 public static int minmax (double[] array, size_t min_terms, size_t max_terms, SumLevinUWorkspace w, out double sum_accel, out double abserr); 3709 public static int step (double term, size_t n, size_t nmax, SumLevinUWorkspace w, out double sum_accel); 3710 } 3711 3712 [Compact] 3713 [CCode (cname="gsl_sum_levin_utrunc_workspace", free_function="gsl_sum_levin_utrunc_free", cheader_filename="gsl/gsl_sum.h")] 3714 public class SumLevinUtruncWorkspace 3715 { 3716 public size_t size; 3717 public size_t i; 3718 public size_t terms_used; 3719 public double sum_plain; 3720 public double* q_num; 3721 public double* q_den; 3722 public double* dsum; 3723 3724 [CCode (cname="gsl_sum_levin_utrunc_alloc")] 3725 public SumLevinUtruncWorkspace (size_t n); 3726 } 3727 3728 [CCode (lower_case_cprefix="gsl_sum_levin_utrunc_", cheader_filename="gsl/gsl_sum.h")] 3729 namespace SumLevinUtrunc 3730 { 3731 public static int accel (double[] array, SumLevinUtruncWorkspace w, out double sum_accel, out double abserr_trunc); 3732 public static int minmax (double[] array, size_t min_terms, size_t max_terms, SumLevinUtruncWorkspace w, out double sum_accel, out double abserr_trunc); 3733 public static int step (double term, size_t n, SumLevinUtruncWorkspace w, out double sum_accel); 3734 } 3735 3736 3737 /* 3738 * Wavelet Transforms 3739 */ 3740 [CCode (cname = "gsl_wavelet_direction", cprefix = "gsl_wavelet_", has_type_id = false)] 3741 public enum WaveletDirection 3742 { 3743 forward = 1, 3744 backward = -1 3745 } 3746 3747 [CCode (has_target = false, has_typedef = false)] 3748 public delegate int WaveletInit (double** h1, double** g1, double** h2, double** g2, size_t* nc, size_t* offset, size_t member); 3749 3750 [SimpleType] 3751 [CCode (cname="gsl_wavelet_type", cheader_filename="gsl/gsl_wavelet.h", has_type_id = false)] 3752 public struct WaveletType 3753 { 3754 public unowned string name; 3755 public WaveletInit init; 3756 } 3757 3758 [CCode (lower_case_cprefix="gsl_wavelet_", cheader_filename="gsl/gsl_wavelet.h")] 3759 namespace WaveletTypes 3760 { 3761 public static WaveletType* daubechies; 3762 public static WaveletType* daubechies_centered; 3763 public static WaveletType* haar; 3764 public static WaveletType* haar_centered; 3765 public static WaveletType* bspline; 3766 public static WaveletType* bspline_centered; 3767 } 3768 3769 [Compact] 3770 [CCode (cname="gsl_wavelet_workspace", cheader_filename="gsl/gsl_wavelet.h")] 3771 public class WaveletWorkspace 3772 { 3773 public double* scratch; 3774 public size_t n; 3775 3776 [CCode (cname="gsl_wavelet_workspace_alloc")] 3777 public WaveletWorkspace (size_t n); 3778 } 3779 3780 [Compact] 3781 [CCode (cname="gsl_wavelet", cheader_filename="gsl/gsl_wavelet.h,gsl/gsl_wavelet2d.h")] 3782 public class Wavelet 3783 { 3784 public WaveletType* type; 3785 public double* h1; 3786 public double* g1; 3787 public double* h2; 3788 public double* g2; 3789 public size_t nc; 3790 public size_t offset; 3791 3792 [CCode (cname="gsl_wavelet_alloc")] 3793 public Wavelet (WaveletType* T, size_t k); 3794 public string name (); 3795 public int transform ([CCode (array_length = false)] double[] data, size_t stride, size_t n, WaveletDirection dir, WaveletWorkspace work); 3796 public int transform_forward ([CCode (array_length = false)] double[] data, size_t stride, size_t n, WaveletWorkspace work); 3797 public int transform_inverse ([CCode (array_length = false)] double[] data, size_t stride, size_t n, WaveletWorkspace work); 3798 3799 [CCode (cname="gsl_wavelet2d_transform")] 3800 public int transform_2d ([CCode (array_length = false)] double[] data, size_t tda, size_t size1, size_t size2, WaveletDirection dir, WaveletWorkspace work); 3801 [CCode (cname="gsl_wavelet2d_transform_forward")] 3802 public int transform_forward_2d ([CCode (array_length = false)] double[] data, size_t tda, size_t size1, size_t size2, WaveletWorkspace work); 3803 [CCode (cname="gsl_wavelet2d_transform_inverse")] 3804 public int transform_inverse_2d ([CCode (array_length = false)] double[] data, size_t tda, size_t size1, size_t size2, WaveletWorkspace work); 3805 [CCode (cname="gsl_wavelet2d_nstransform")] 3806 public int nstransform ([CCode (array_length = false)] double[] data, size_t tda, size_t size1, size_t size2, WaveletDirection dir,WaveletWorkspace work); 3807 [CCode (cname="gsl_wavelet2d_nstransform_forward")] 3808 public int nstransform_forward ([CCode (array_length = false)] double[] data, size_t tda, size_t size1, size_t size2, WaveletWorkspace work); 3809 [CCode (cname="gsl_wavelet2d_nstransform_inverse")] 3810 public int nstransform_inverse ([CCode (array_length = false)] double[] data, size_t tda, size_t size1, size_t size2, WaveletWorkspace * work); 3811 [CCode (cname="gsl_wavelet2d_transform_matrix")] 3812 public int transform_matrix (Matrix a, WaveletDirection dir, WaveletWorkspace work); 3813 [CCode (cname="gsl_wavelet2d_transform_matrix_forward")] 3814 public int transform_matrix_forward (Matrix a, WaveletWorkspace work); 3815 [CCode (cname="gsl_wavelet2d_transform_matrix_inverse")] 3816 public int transform_matrix_inverse (Matrix a, WaveletWorkspace work); 3817 [CCode (cname="gsl_wavelet2d_nstransform_matrix")] 3818 public int nstransform_matrix (Matrix a, WaveletDirection dir, WaveletWorkspace work); 3819 [CCode (cname="gsl_wavelet2d_nstransform_matrix_forward")] 3820 public int nstransform_matrix_forward (Matrix a, WaveletWorkspace work); 3821 [CCode (cname="gsl_wavelet2d_nstransform_matrix_inverse")] 3822 public int nstransform_matrix_inverse (Matrix a, WaveletWorkspace work); 3823 } 3824 3825 3826 /* 3827 * Discrete Hankel Transforms 3828 */ 3829 [Compact] 3830 [CCode (cname="gsl_dht", cheader_filename="gsl/gsl_dht.h")] 3831 public class DHT 3832 { 3833 public size_t size; 3834 public double nu; 3835 public double xmax; 3836 public double kmax; 3837 public double* j; 3838 public double* Jjj; 3839 public double* J2; 3840 3841 [CCode (cname="gsl_dht_alloc")] 3842 public DHT (size_t size); 3843 [CCode (cname="gsl_dht_new")] 3844 public DHT.recalc (size_t size, double nu, double xmax); 3845 public int init (double nu, double xmax); 3846 public double x_sample (int n); 3847 public double k_sample (int n); 3848 public int apply ([CCode (array_length = false)] double[] f_in, [CCode (array_length = false)] double[] f_out); 3849 } 3850 3851 3852 /* 3853 * One dimensional Root-Finding 3854 */ 3855 [CCode (has_target = false, has_typedef = false)] 3856 public delegate int RootFsolverSet (void* state, Function* f, double* root, double x_lower, double x_upper); 3857 [CCode (has_target = false, has_typedef = false)] 3858 public delegate int RootFsolverIterate (void* state, Function* f, double* root, double* x_lower, double* x_upper); 3859 [CCode (has_target = false, has_typedef = false)] 3860 public delegate int RootFdfsolverSet (void* state, FunctionFdf* f, double* root); 3861 [CCode (has_target = false, has_typedef = false)] 3862 public delegate int RootFdfsolverIterate (void* state, FunctionFdf* d, double* root); 3863 3864 [SimpleType] 3865 [CCode (cname="gsl_root_fsolver_type", cheader_filename="gsl/gsl_roots.h", has_type_id = false)] 3866 public struct RootFsolverType 3867 { 3868 public unowned string name; 3869 public size_t size; 3870 public RootFsolverSet @set; 3871 public RootFsolverIterate iterate; 3872 } 3873 3874 [Compact] 3875 [CCode (cname="gsl_root_fsolver", cheader_filename="gsl/gsl_roots.h")] 3876 public class RootFsolver 3877 { 3878 public RootFsolverType* type; 3879 public Function* function; 3880 public double root; 3881 public double x_lower; 3882 public double x_upper; 3883 public void* state; 3884 3885 [CCode (cname="gsl_root_fsolver_alloc")] 3886 public RootFsolver (RootFsolverType* T); 3887 public int @set (Function* f, double x_lower, double x_upper); 3888 public int iterate (); 3889 public unowned string name (); 3890 } 3891 3892 [SimpleType] 3893 [CCode (cname="gsl_root_fdfsolver_type", cheader_filename="gsl/gsl_roots.h", has_type_id = false)] 3894 public struct RootFdfsolverType 3895 { 3896 public unowned string name; 3897 public size_t size; 3898 public RootFdfsolverSet @set; 3899 public RootFdfsolverIterate iterate; 3900 } 3901 3902 [Compact] 3903 [CCode (cname="gsl_root_fdfsolver", cheader_filename="gsl/gsl_roots.h")] 3904 public class RootFdfsolver 3905 { 3906 public RootFdfsolverType* type; 3907 public FunctionFdf* fdf; 3908 public double root; 3909 public void* state; 3910 3911 [CCode (cname="gsl_root_fdfsolver_alloc")] 3912 public RootFdfsolver (RootFdfsolverType* T); 3913 public int @set (FunctionFdf* fdf, double root); 3914 public int iterate (); 3915 public unowned string name (); 3916 } 3917 3918 [CCode (lower_case_cprefix="gsl_root_test_", cheader_filename="gsl/gsl_roots.h")] 3919 namespace RootTest 3920 { 3921 public static int interval (double x_lower, double x_upper, double epsabs, double epsrel); 3922 public static int residual (double f, double epsabs); 3923 public static int delta (double x1, double x0, double epsabs, double epsrel); 3924 } 3925 3926 [CCode (lower_case_cprefix="gsl_root_fsolver_", cheader_filename="gsl/gsl_roots.h")] 3927 namespace RootFsolverTypes 3928 { 3929 public static RootFsolverType* bisection; 3930 public static RootFsolverType* brent; 3931 public static RootFsolverType* falsepos; 3932 } 3933 3934 [CCode (lower_case_cprefix="gsl_root_fdfsolver_", cheader_filename="gsl/gsl_roots.h")] 3935 namespace RootFdfsolverTypes 3936 { 3937 public static RootFdfsolverType* newton; 3938 public static RootFdfsolverType* secant; 3939 public static RootFdfsolverType* steffenson; 3940 } 3941 3942 3943 /* 3944 * One dimensional Minimization 3945 */ 3946 [CCode (has_target = false, has_typedef = false)] 3947 public delegate int MinSet (void* state, Function* f, double xminimun, double f_minimum, double x_lower, double f_lower, double x_upper, double f_upper); 3948 [CCode (has_target = false, has_typedef = false)] 3949 public 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); 3950 [CCode (has_target = false, has_typedef = false)] 3951 public 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); 3952 3953 [SimpleType] 3954 [CCode (cname="gsl_min_fminimizer_type", cheader_filename="gsl/gsl_min.h", has_type_id = false)] 3955 public struct MinFminimizerType 3956 { 3957 public unowned string name; 3958 public size_t size; 3959 public MinSet @set; 3960 public MinIterate iterate; 3961 } 3962 3963 [Compact] 3964 [CCode (cname="gsl_min_fminimizer", cheader_filename="gsl/gsl_min.h")] 3965 public class MinFminimizer 3966 { 3967 public MinFminimizerType* type; 3968 public Function* function; 3969 public double x_minimum; 3970 public double x_lower; 3971 public double x_upper; 3972 public double f_minimum; 3973 public double f_lower; 3974 public double f_upper; 3975 public void* state; 3976 3977 [CCode (cname="gsl_min_fminimizer_alloc")] 3978 public MinFminimizer (MinFminimizerType* T) ; 3979 public int @set (Function* f, double x_minimum, double x_lower, double x_upper); 3980 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); 3981 public int iterate (); 3982 public unowned string name (); 3983 } 3984 3985 [CCode (lower_case_cprefix="gsl_min_test_", cheader_filename="gsl/gsl_min.h")] 3986 namespace MinTest 3987 { 3988 public static int interval (double x_lower, double x_upper, double epsabs, double epsrel); 3989 } 3990 3991 [CCode (lower_case_cprefix="gsl_min_fminimizer_", cheader_filename="gsl/gsl_min.h")] 3992 namespace MinFminimizerTypes 3993 { 3994 public static MinFminimizerType* goldensection; 3995 public static MinFminimizerType* brent; 3996 } 3997 3998 [CCode (cname="gsl_min_find_bracket", cheader_filename="gsl/gsl_min.h")] 3999 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); 4000 4001 4002 /* 4003 * Multidimensional Root-Finding 4004 */ 4005 [CCode (has_target = false, has_typedef = false)] 4006 public delegate int MultirootF (Vector x, void* params, Vector f); 4007 [CCode (has_target = false, has_typedef = false)] 4008 public delegate int MultirootFAlloc (void* state, size_t n); 4009 [CCode (has_target = false, has_typedef = false)] 4010 public delegate int MultirootFSet (void* state, MultirootFunction* function, Vector x, Vector f, Vector dx); 4011 [CCode (has_target = false, has_typedef = false)] 4012 public delegate int MultirootFIterate (void* state, MultirootFunction* function, Vector x, Vector f, Vector dx); 4013 [CCode (has_target = false, has_typedef = false)] 4014 public delegate void MultirootFFree (void* state); 4015 [CCode (has_target = false, has_typedef = false)] 4016 public delegate int MultirootDF (Vector x, void* params, Matrix df); 4017 [CCode (has_target = false, has_typedef = false)] 4018 public delegate int MultirootFDF (Vector x, void* params, Vector f, Matrix df); 4019 [CCode (has_target = false, has_typedef = false)] 4020 public delegate int MultirootFdfAlloc (void* state, size_t n); 4021 [CCode (has_target = false, has_typedef = false)] 4022 public delegate int MultirootFdfSet (void* state, MultirootFunctionFdf* fdf, Vector x, Vector f, Matrix J, Vector dx); 4023 [CCode (has_target = false, has_typedef = false)] 4024 public delegate int MultirootFdfIterate (void* state, MultirootFunctionFdf* fdf, Vector x, Vector f, Matrix J, Vector dx); 4025 [CCode (has_target = false, has_typedef = false)] 4026 public delegate int MultirootFdfFree (void* state); 4027 4028 [SimpleType] 4029 [CCode (cname="gsl_multiroot_function", cheader_filename="gsl/gsl_multiroots.h", has_type_id = false)] 4030 public struct MultirootFunction 4031 { 4032 public MultirootF f; 4033 public size_t n; 4034 public void* params; 4035 } 4036 4037 [CCode (cname="gsl_multiroot_fdjacobian", cheader_filename="gsl/gsl_multiroots.h")] 4038 public static int multiroot_fdjacobian (MultirootFunction* F, Vector x, Vector f, double epsrel, Matrix jacobian); 4039 4040 [SimpleType] 4041 [CCode (cname="gsl_multiroot_fsolver_type", cheader_filename="gsl/gsl_multiroots.h", has_type_id = false)] 4042 public struct MultirootFsolverType 4043 { 4044 public unowned string name; 4045 public size_t size; 4046 public MultirootFAlloc alloc; 4047 public MultirootFSet @set; 4048 public MultirootFIterate iterate; 4049 public MultirootFFree free; 4050 } 4051 4052 [Compact] 4053 [CCode (cname="gsl_multiroot_fsolver", cheader_filename="gsl/gsl_multiroots.h")] 4054 public class MultirootFsolver 4055 { 4056 public MultirootFsolverType* type; 4057 public MultirootFunction* function; 4058 public Vector x; 4059 public Vector f; 4060 public Vector dx; 4061 public void* state; 4062 4063 [CCode (cname="gsl_multiroot_fsolver_alloc")] 4064 public MultirootFsolver (MultirootFsolverType* T, size_t n); 4065 public int @set (MultirootFunction* f, Vector x); 4066 public int iterate (); 4067 public unowned string name (); 4068 public Vector root (); 4069 } 4070 4071 [SimpleType] 4072 [CCode (cname="gsl_multiroot_function_fdf", cheader_filename="gsl/gsl_multiroots.h", has_type_id = false)] 4073 public struct MultirootFunctionFdf 4074 { 4075 public MultirootF f; 4076 public MultirootDF df; 4077 public MultirootFDF fdf; 4078 public size_t n; 4079 public void* params; 4080 } 4081 4082 [SimpleType] 4083 [CCode (cname="gsl_multiroot_fdfsolver_type", cheader_filename="gsl/gsl_multiroots.h", has_type_id = false)] 4084 public struct MultirootFdfsolverType 4085 { 4086 public unowned string name; 4087 public size_t size; 4088 public MultirootFdfAlloc alloc; 4089 public MultirootFdfSet @set; 4090 public MultirootFdfIterate iterate; 4091 public MultirootFdfFree free; 4092 } 4093 4094 [Compact] 4095 [CCode (cname="gsl_multiroot_fdfsolver", cheader_filename="gsl/gsl_multiroots.h")] 4096 public class MultirootFdfsolver 4097 { 4098 public MultirootFdfsolverType* type; 4099 public MultirootFunctionFdf* fdf; 4100 public Vector x; 4101 public Vector f; 4102 public Matrix J; 4103 public Vector dx; 4104 public void* state; 4105 4106 [CCode (cname="gsl_multiroot_fdfsolver_alloc")] 4107 public MultirootFdfsolver (MultirootFdfsolverType* T, size_t n); 4108 public int @set (MultirootFunctionFdf* fdf, Vector x); 4109 public int iterate (); 4110 public unowned string name (); 4111 public Vector root (); 4112 } 4113 4114 [CCode (lower_case_cprefix="gsl_multiroot_test_", cheader_filename="gsl/gsl_multiroots.h")] 4115 namespace MultirootTest 4116 { 4117 public static int delta (Vector dx, Vector x, double epsabs, double epsrel); 4118 public static int residual (Vector f, double epsabs); 4119 } 4120 4121 [CCode (lower_case_cprefix="gsl_multiroot_fsolver_", cheader_filename="gsl/gsl_multiroots.h")] 4122 namespace MultirootFsolverTypes 4123 { 4124 public static MultirootFsolverType* dnewton; 4125 public static MultirootFsolverType* broyden; 4126 public static MultirootFsolverType* hybrid; 4127 public static MultirootFsolverType* hybrids; 4128 } 4129 4130 [CCode (lower_case_cprefix="gsl_multiroot_fdfsolver_", cheader_filename="gsl/gsl_multiroots.h")] 4131 namespace MultirootFdfsolverTypes 4132 { 4133 public static MultirootFdfsolverType* newton; 4134 public static MultirootFdfsolverType* gnewton; 4135 public static MultirootFdfsolverType* hybridj; 4136 public static MultirootFdfsolverType* hybridsj; 4137 } 4138 4139 4140 /* 4141 * Multidimensional Minimization 4142 */ 4143 [CCode (has_target = false, has_typedef = false)] 4144 public delegate double MultiminF (Vector x, void* params); 4145 [CCode (has_target = false, has_typedef = false)] 4146 public delegate void MultiminDf (Vector x, void* params, Vector df); 4147 [CCode (has_target = false, has_typedef = false)] 4148 public delegate void MultiminFdf (Vector x, void* params, double* f, Vector df); 4149 [CCode (has_target = false, has_typedef = false)] 4150 public delegate int MultiminFAlloc (void *state, size_t n); 4151 [CCode (has_target = false, has_typedef = false)] 4152 public delegate int MultiminFSet (void* state, MultiminFunction* f, Vector x, double* size); 4153 [CCode (has_target = false, has_typedef = false)] 4154 public delegate int MultiminFIterate (void* state, MultiminFunction* f, Vector x, double* size, double* fval); 4155 [CCode (has_target = false, has_typedef = false)] 4156 public delegate int MultiminFFree (void* state); 4157 4158 [SimpleType] 4159 [CCode (cname="gsl_multimin_function", cheader_filename="gsl/gsl_multimin.h", has_type_id = false)] 4160 public struct MultiminFunction 4161 { 4162 public MultiminF f; 4163 public size_t n; 4164 public void* params; 4165 } 4166 4167 [SimpleType] 4168 [CCode (cname="gsl_multimin_function_fdf", cheader_filename="gsl/gsl_multimin.h", has_type_id = false)] 4169 public struct MultiminFunctionFdf 4170 { 4171 public MultiminF f; 4172 public MultiminDf df; 4173 public MultiminFdf fdf; 4174 public size_t n; 4175 public void* params; 4176 } 4177 4178 [CCode (cname="gsl_multimin_diff", cheader_filename="gsl/gsl_multimin.h")] 4179 public static int multimin_diff (MultiminFunction* f, Vector x, Vector g); 4180 4181 [SimpleType] 4182 [CCode (cname="gsl_multimin_fminimizer_type", cheader_filename="gsl/gsl_multimin.h", has_type_id = false)] 4183 public struct MultiminFminimizerType 4184 { 4185 public unowned string name; 4186 public size_t size; 4187 public MultiminFAlloc alloc; 4188 public MultiminFSet @set; 4189 public MultiminFIterate iterate; 4190 public MultiminFFree free; 4191 } 4192 4193 [Compact] 4194 [CCode (cname="gsl_multimin_fminimizer", cheader_filename="gsl/gsl_multimin.h")] 4195 public class MultiminFminimizer 4196 { 4197 public MultiminFminimizerType* type; 4198 public MultiminFunction* f; 4199 public double fval; 4200 public Vector x; 4201 public double size; 4202 public void* state; 4203 4204 [CCode (cname="gsl_multimin_fminimizer_alloc")] 4205 public MultiminFminimizer (MultiminFminimizerType* T, size_t n); 4206 public int @set (MultiminFunction* f, Vector x, Vector step_size); 4207 public unowned string name (); 4208 public int iterate (); 4209 public double minimum (); 4210 } 4211 4212 [CCode (lower_case_cprefix="gsl_multimin_test_", cheader_filename="gsl/gsl_multimin.h")] 4213 namespace MultiminTest 4214 { 4215 public static int gradient(Vector g, double epsabs); 4216 public static int size (double size, double epsabs); 4217 } 4218 4219 [CCode (has_target = false, has_typedef = false)] 4220 public delegate int MultiminFdfAlloc (void *state, size_t n); 4221 [CCode (has_target = false, has_typedef = false)] 4222 public delegate int MultiminFdfSet (void* state, MultiminFunctionFdf* fdf, Vector x, double* f, Vector gradient, double step_size, double tol); 4223 [CCode (has_target = false, has_typedef = false)] 4224 public delegate int MultiminFdfIterate (void* state, MultiminFunctionFdf* fdf, Vector x, double* f, Vector gradient, Vector dx); 4225 [CCode (has_target = false, has_typedef = false)] 4226 public delegate int MultiminFdfRestart (void* state); 4227 [CCode (has_target = false, has_typedef = false)] 4228 public delegate int MultiminFdfFree (void* state); 4229 4230 [SimpleType] 4231 [CCode (cname="gsl_multimin_fdfminimizer_type", cheader_filename="gsl/gsl_multimin.h", has_type_id = false)] 4232 public struct MultiminFdfminimizerType 4233 { 4234 public unowned string name; 4235 public size_t size; 4236 public MultiminFdfAlloc alloc; 4237 public MultiminFdfSet @set; 4238 public MultiminFdfIterate iterate; 4239 public MultiminFdfRestart restart; 4240 public MultiminFdfFree free; 4241 } 4242 4243 [Compact] 4244 [CCode (cname="gsl_multimin_fdfminimizer", cheader_filename="gsl/gsl_multimin.h")] 4245 public class MultiminFdfminimizer 4246 { 4247 public MultiminFdfminimizerType* type; 4248 public MultiminFunctionFdf* fdf; 4249 public double f; 4250 public Vector x; 4251 public Vector gradient; 4252 public Vector dx; 4253 public void* state; 4254 4255 [CCode (cname="gsl_multimin_fdfminimizer_alloc")] 4256 public MultiminFdfminimizer (MultiminFdfminimizerType* T, size_t n); 4257 public int @set (MultiminFunctionFdf* fdf, Vector x, double step_size, double tol); 4258 public unowned string name (); 4259 public int iterate (); 4260 public int restart (); 4261 public double minimum (); 4262 } 4263 4264 [CCode (lower_case_cprefix="gsl_multimin_fdfminimizer_", cheader_filename="gsl/gsl_multimin.h")] 4265 namespace MultiminFdfminimizerTypes 4266 { 4267 public static MultiminFdfminimizerType* steepest_descent; 4268 public static MultiminFdfminimizerType* conjugate_pr; 4269 public static MultiminFdfminimizerType* conjugate_fr; 4270 public static MultiminFdfminimizerType* vector_bfgs; 4271 public static MultiminFdfminimizerType* vector_bfgs2; 4272 } 4273 4274 [CCode (lower_case_cprefix="gsl_multimin_fminimizer_", cheader_filename="gsl/gsl_multimin.h")] 4275 namespace MultiminFminimizerTypes 4276 { 4277 public static MultiminFminimizerType* nmsimplex; 4278 } 4279 4280 4281 /* 4282 * Least-Squares Fitting 4283 */ 4284 [CCode (lower_case_cprefix="gsl_fit_", cheader_filename="gsl/gsl_fit.h")] 4285 namespace Fit 4286 { 4287 public static int linear ([CCode (array_length = false)] double[] x, size_t xstride, [CCode (array_length = false)] 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); 4288 public static int wlinear ([CCode (array_length = false)] double[] x, size_t xstride, [CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] 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 chisq); 4289 public static int linear_est (double x, double c0, double c1, double cov00, double cov01, double cov11, out double y, out double y_err); 4290 public static int mul ([CCode (array_length = false)] double[] x, size_t xstride, [CCode (array_length = false)] double[] y, size_t ystride, size_t n, out double c1, out double cov11, out double sumsq); 4291 public static int wmul ([CCode (array_length = false)] double[] x, size_t xstride, [CCode (array_length = false)] double[] w, size_t wstride, [CCode (array_length = false)] double[] y, size_t ystride, size_t n, out double c1, out double cov11, out double sumsq); 4292 public static int mul_est (double x, double c1, double cov11, out double y, out double y_err); 4293 } 4294 4295 [Compact] 4296 [CCode (cname="gsl_multifit_linear_workspace", free_function="gsl_multifit_linear_free", cheader_filename="gsl/gsl_multifit.h")] 4297 public class MultifitLinearWorkspace 4298 { 4299 public size_t n; 4300 public size_t p; 4301 public Matrix A; 4302 public Matrix Q; 4303 public Matrix QSI; 4304 public Vector S; 4305 public Vector t; 4306 public Vector xt; 4307 public Vector D; 4308 4309 [CCode (cname="gsl_multifit_linear_alloc")] 4310 public MultifitLinearWorkspace (size_t n, size_t p); 4311 } 4312 4313 [CCode (lower_case_cprefix="gsl_multifit_", cheader_filename="gsl/gsl_multifit.h")] 4314 namespace Multifit 4315 { 4316 public static int linear (Matrix X, Vector y, Vector c, Matrix cov, out double chisq, MultifitLinearWorkspace work); 4317 public static int linear_svd (Matrix X, MultifitLinearWorkspace work); 4318 public static int wlinear (Matrix X, Vector w, Vector y, Vector c, Matrix cov, out double chisq, MultifitLinearWorkspace work); 4319 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); 4320 public static int linear_est (Vector x, Vector c, Matrix cov, out double y, out double y_err); 4321 public int linear_residuals (Matrix X, Vector y, Vector c, Vector r); 4322 } 4323 4324 4325 /* 4326 * Nonlinear Least-Squares Fitting 4327 */ 4328 [CCode (has_target = false, has_typedef = false)] 4329 public delegate int MultifitF (Vector x, void* params, Vector f); 4330 [CCode (has_target = false, has_typedef = false)] 4331 public delegate int MultifitFAlloc (void* state, size_t n, size_t p); 4332 [CCode (has_target = false, has_typedef = false)] 4333 public delegate int MultifitFSet (void* state, MultifitFunction* function, Vector x, Vector f, Vector dx); 4334 [CCode (has_target = false, has_typedef = false)] 4335 public delegate int MultifitFIterate (void* state, MultifitFunction* function, Vector x, Vector f, Vector dx); 4336 [CCode (has_target = false, has_typedef = false)] 4337 public delegate void MultifitFFree (void* state); 4338 [CCode (has_target = false, has_typedef = false)] 4339 public delegate int MultifitDf (Vector x, void* params, Matrix df); 4340 [CCode (has_target = false, has_typedef = false)] 4341 public delegate int MultifitFdf (Vector x, void* params, Vector f, Matrix df); 4342 [CCode (has_target = false, has_typedef = false)] 4343 public delegate int MultifitFdfAlloc (void* state, size_t n, size_t p); 4344 [CCode (has_target = false, has_typedef = false)] 4345 public delegate int MultifitFdfSet (void* state, MultifitFunctionFdf fdf, Vector x, Vector f, Matrix J, Vector dx); 4346 [CCode (has_target = false, has_typedef = false)] 4347 public delegate int MultifitFdfIterate (void* state, MultifitFunctionFdf fdf, Vector x, Vector f, Matrix J, Vector dx); 4348 [CCode (has_target = false, has_typedef = false)] 4349 public delegate void MultifitFdfFree (void* state); 4350 4351 [CCode (lower_case_cprefix="gsl_multifit_", cheader_filename="gsl/gsl_multifit_nlin.h")] 4352 namespace Multifit 4353 { 4354 public static int gradient (Matrix J, Vector f, Vector g); 4355 public static int covar (Matrix J, double epsrel, Matrix covar); 4356 } 4357 4358 [SimpleType] 4359 [CCode (cname="gsl_multifit_function", cheader_filename="gsl/gsl_multifit_nlin.h", has_type_id = false)] 4360 public struct MultifitFunction 4361 { 4362 public MultifitF f; 4363 public size_t n; 4364 public size_t p; 4365 public void* params; 4366 } 4367 4368 [SimpleType] 4369 [CCode (cname="gsl_multifit_fsolver_type", cheader_filename="gsl/gsl_multifit_nlin.h", has_type_id = false)] 4370 public struct MultifitFsolverType 4371 { 4372 public unowned string name; 4373 public size_t size; 4374 public MultifitFAlloc alloc; 4375 public MultifitFSet @set; 4376 public MultifitFIterate iterate; 4377 public MultifitFFree free; 4378 } 4379 4380 [Compact] 4381 [CCode (cname="gsl_multifit_fsolver", cheader_filename="gsl/gsl_multifit_nlin.h")] 4382 public class MultifitFsolver 4383 { 4384 public MultifitFsolverType* type; 4385 public MultifitFunction* function; 4386 public Vector x; 4387 public Vector f; 4388 public Vector dx; 4389 public void* state; 4390 4391 [CCode (cname="gsl_multifit_fsolver_alloc")] 4392 public MultifitFsolver (MultifitFsolverType* T, size_t n, size_t p); 4393 public int @set (MultifitFunction* f, Vector x); 4394 public int iterate (); 4395 public unowned string name (); 4396 public Vector position (); 4397 } 4398 4399 [SimpleType] 4400 [CCode (cname="gsl_multifit_function_fdf", cheader_filename="gsl/gsl_multifit_nlin.h", has_type_id = false)] 4401 public struct MultifitFunctionFdf 4402 { 4403 public MultifitF f; 4404 public MultifitDf df; 4405 public MultifitFdf fdf; 4406 public size_t n; 4407 public size_t p; 4408 public void* params; 4409 } 4410 4411 [SimpleType] 4412 [CCode (cname="gsl_multifit_fdfsolver_type", cheader_filename="gsl/gsl_multifit_nlin.h", has_type_id = false)] 4413 public struct MultifitFdfsolverType 4414 { 4415 public unowned string name; 4416 public size_t size; 4417 public MultifitFdfAlloc alloc; 4418 public MultifitFdfSet @set; 4419 public MultifitFdfIterate iterate; 4420 public MultifitFdfFree free; 4421 } 4422 4423 [Compact] 4424 [CCode (cname="gsl_multifit_fdfsolver", cheader_filename="gsl/gsl_multifit_nlin.h")] 4425 public class MultifitFdfsolver 4426 { 4427 public MultifitFdfsolverType* type; 4428 public MultifitFunctionFdf* fdf; 4429 public Vector x; 4430 public Vector f; 4431 public Vector dx; 4432 public Vector g; 4433 public Vector sqrt_wts; 4434 public size_t niter; 4435 public void* state; 4436 4437 [CCode (cname="gsl_multifit_fdfsolver_alloc")] 4438 public MultifitFdfsolver (MultifitFdfsolverType* T, size_t n, size_t p); 4439 public int @set (MultifitFunctionFdf* fdf, Vector x); 4440 public int iterate (); 4441 public unowned string name (); 4442 public Vector position (); 4443 } 4444 4445 [CCode (lower_case_cprefix="gsl_multifit_test_", cheader_filename="gsl/gsl_multifit_nlin.h")] 4446 namespace MultifitTest 4447 { 4448 public static int delta (Vector dx, Vector x, double epsabs, double epsrel); 4449 public static int gradient (Vector g, double epsabs); 4450 } 4451 4452 [CCode (lower_case_cprefix="gsl_multifit_fdfsolver_", cheader_filename="gsl/gsl_multifit_nlin.h")] 4453 namespace MultifitFdfsolverTypes 4454 { 4455 public static MultifitFdfsolverType* lmder; 4456 public static MultifitFdfsolverType* lmsder; 4457 } 4458 4459 4460 /* 4461 * Basis Splines 4462 */ 4463 [Compact] 4464 [CCode (cname="gsl_bspline_workspace", cprefix="gsl_bspline_", cheader_filename="gsl/gsl_bspline.h")] 4465 public class BsplineWorkspace 4466 { 4467 public size_t k; 4468 public size_t km1; 4469 public size_t l; 4470 public size_t nbreak; 4471 public size_t n; 4472 public Vector knots; 4473 public Vector deltal; 4474 public Vector deltar; 4475 public Vector B; 4476 4477 [CCode (cname="gsl_bspline_alloc")] 4478 public BsplineWorkspace (size_t k, size_t nbreak); 4479 public size_t ncoeffs (); 4480 public size_t order (); 4481 [CCode (instance_pos=-1)] 4482 public double breakpoint (size_t i); 4483 [CCode (instance_pos=-1)] 4484 public int knots_uniform (double a, double b); 4485 [CCode (instance_pos=-1)] 4486 public int eval (double x, Vector B); 4487 } 4488} 4489 4490