Knowledge

GNU Scientific Library

Source 📝

752: 78: 242:
Version 1.0 was released in 2001. In the following years, the library expanded only slowly; as the documentation stated, the maintainers were more interested in stability than in additional functionality. Major version 1 ended with release 1.16 of July 2013; this was the only public activity in the
721:
C++ wrappers for GSL are available. Not all of these are regularly maintained. They do offer access to matrix and vector classes without having to use GSL's interface to
246:
Vigorous development resumed with publication of version 2.0 in October 2015, which included user contributed patches. The latest version 2.8 was released in May 2024.
1204: 733:
classes. Finally, there is (limited, as of April 2020) support for allowing the user to create classes to represent a parameterised function as a
1612: 232: 1132: 622:
Since the GSL is written in C, it is straightforward to provide wrappers for other programming languages. Such wrappers currently exist for
1638: 740:
While not strictly wrappers, there are some C++ classes that allow C++ users to use the Gnu Scientific Library with wrapper features.
1456: 1282: 1673: 1648: 1275: 985: 228:. They carried out the overall design and wrote early modules; with that ready they recruited other scientists to contribute. 1330: 1010:
The hmatrix-gsl package, a purely functional interface to selected numerical computations, internally implemented using GSL
757: 939: 765: 1320: 1315: 1270: 595: 1643: 477: 236: 231:
The "overall development of the library and the design and implementation of the major modules" was carried out by
123: 1658: 1265: 1325: 605: 547: 217: 1653: 1232: 902: 676: 666: 1663: 1600: 651: 91: 1128: 887: 1668: 770: 691: 686: 646: 128: 69: 1298: 610: 584: 205: 146: 141: 1106:
rb-gsl: Ruby/GSL is a Ruby interface to the GNU Scientific Library, for numerical computing with Ruby
557: 831: 1446: 1260: 1198: 681: 517: 197: 116: 77: 1391: 562: 537: 507: 1559: 875: 578: 512: 492: 1021: 714:. Instead, pointers to static functions have to be used. Another common workaround is using a 1574: 1303: 1081: 497: 1526: 452: 1148: 8: 1617: 1461: 1191: 1093: 567: 542: 423: 189: 1549: 1381: 1376: 1308: 726: 671: 600: 997: 216:
The GSL project was initiated in 1996 by physicists Mark Galassi and James Theiler of
1569: 1476: 1371: 1225: 781: 443: 824: 1584: 1516: 573: 400: 220:. They aimed at writing a modern replacement for widely used but somewhat outdated 185: 135: 1009: 1554: 1544: 1421: 1136: 943: 906: 734: 729:
functions. Some also offer support for also creating workspaces that behave like
715: 255: 200:; wrappers are available for other programming languages. The GSL is part of the 1564: 1466: 482: 428: 936: 1632: 1606: 1386: 1255: 1201:, an R wrapper for the special functions and quasi random number generators. 974:
gslcpp: A Header-Only, Modern C++-Library Wrapping the GNU Scientific Library
730: 590: 552: 1579: 1401: 1396: 1350: 1218: 448: 27: 1118:
rust-gsl: A Rust binding for the GSL library (the GNU Scientific Library).
373:
The example program has to be linked to the GSL library upon compilation:
1431: 1361: 1241: 1185: 706:
classes, but not using pointers to member functions, because the type of
656: 487: 462: 457: 201: 40: 1491: 1485: 1436: 1045: 973: 522: 433: 35: 22: 1069: 1057: 1033: 1511: 1441: 1426: 527: 1178: 863: 157: 1521: 1501: 1481: 1406: 1356: 1105: 501: 467: 438: 1117: 998:
The hmatrix-special package, an interface to GSL special functions
958: 899: 1411: 641: 636: 532: 472: 221: 193: 921: 845: 97: 1506: 1496: 1471: 775: 722: 225: 1210: 1082:
RcppGSL: 'Rcpp' Integration for 'GNU GSL' Vectors and Matrices
1366: 1160: 703: 661: 631: 30:, James Theiler, Brian Gough, Gerard Jungman and many others 1416: 959:
GSLwrap: A C++ wrapper class for the GNU Scientific Library
626: 254:
The following example program calculates the value of the
1346: 986:
FGSL - A Fortran interface to the GNU Scientific Library
922:
ccgsl: a C++ interface for the GNU Scientific Library
747: 399:The output is shown below and should be correct to 1149:o2scl Object-oriented Scientific Computing Library 810:GPL-2.0-or-later from 1996-07-08 until 2007-07-02. 235:and Gerard Jungman. Other major contributors were 1630: 617: 1613:Free Software Foundation anti-Windows campaigns 991: 859: 857: 855: 418:The software library provides facilities for: 1226: 900:AMPL bindings for the GNU Scientific Library 239:, Reid Priedhorsky, M. Booth, and F. Rossi. 1094:gsl: wrapper for the Gnu Scientific Library 1070:Python interface for GNU Scientific Library 1003: 852: 16:Library for numerical analysis in C and C++ 1233: 1219: 954: 952: 76: 969: 967: 1207:with Mark Galassi on the history of GSL. 932: 930: 258:of the first kind and order zero for 5: 949: 917: 915: 1631: 964: 1214: 1142: 1046:GSLL, GNU Scientific Library for Lisp 927: 888:Using the Library. An Example Program 1331:GNAT Modified General Public License 1058:gsl-ocaml: OCaml bindings to the GSL 912: 758:Free and open-source software portal 1154: 766:List of numerical-analysis software 13: 1639:C (programming language) libraries 801:GPL-3.0-or-later since 2007-07-02. 211: 14: 1685: 1321:GNU Affero General Public License 1316:GNU Lesser General Public License 1170: 408:J0(5) = -1.775967713143382920e-01 750: 1240: 1122: 1111: 1099: 1087: 1075: 1063: 1051: 1039: 1027: 1015: 979: 846:"GNU - Free Software Directory" 596:Nonlinear least-squares fitting 548:Ordinary differential equations 1674:Software using the GPL license 1326:GNU Free Documentation License 893: 881: 869: 838: 804: 795: 697: 606:IEEE floating-point arithmetic 587:in one and multiple dimensions 581:in one and multiple dimensions 218:Los Alamos National Laboratory 188:for numerical computations in 1: 1649:Free software programmed in C 817: 618:Programming-language bindings 204:and is distributed under the 1601:GNU/Linux naming controversy 1129:Pointers to member functions 424:Basic mathematical functions 7: 1205:FLOSS FOR SCIENCE interview 771:List of numerical libraries 743: 518:Random number distributions 413: 272:<gsl/gsl_sf_bessel.h> 52:; 28 years ago 10: 1690: 1299:GNU General Public License 937:GSL-- C++ wrappers for GSL 708:pointer to member function 611:Discrete wavelet transform 249: 206:GNU General Public License 1593: 1537: 1339: 1291: 1248: 558:Numerical differentiation 335:"J0(%g) = %.18e 152: 134: 122: 112: 90: 86: 68: 64: 46: 34: 21: 1283:History of free software 1261:Free Software Foundation 1199:R (programming language) 788: 563:Chebyshev approximations 508:Random number generation 405: 375: 260: 196:. The GSL is written in 1644:Free computer libraries 1022:JavaCPP Presets for GSL 702:The GSL can be used in 538:Monte Carlo integration 493:Fast Fourier transforms 243:three years 2012–2014. 1659:Mathematical libraries 1034:Julia interface to GSL 513:Quasi-random sequences 178:GNU Scientific Library 591:Least-squares fitting 498:Numerical integration 1654:GNU Project software 890:. GSL documentation. 1664:Numerical libraries 1618:Defective by Design 1585:Richard M. Stallman 1186:GSL Design Document 876:GSL design document 712:pointer to function 568:Series acceleration 543:Simulated annealing 190:applied mathematics 1669:Numerical software 1550:Benjamin Mako Hill 1135:2004-10-13 at the 942:2015-01-29 at the 905:2021-10-28 at the 832:"GSL 2.8 released" 710:is different from 672:Perl Data Language 601:Physical constants 384:gsl-config--cflags 224:libraries such as 23:Original author(s) 1626: 1625: 1570:Georg C. F. Greve 1477:GNU Privacy Guard 1304:linking exception 782:Numerical Recipes 444:Special functions 174: 173: 129:Numerical library 1681: 1235: 1228: 1221: 1212: 1211: 1182: 1181: 1179:Official website 1164: 1158: 1152: 1146: 1140: 1126: 1120: 1115: 1109: 1103: 1097: 1091: 1085: 1079: 1073: 1067: 1061: 1055: 1049: 1043: 1037: 1031: 1025: 1019: 1013: 1007: 1001: 995: 989: 983: 977: 971: 962: 956: 947: 934: 925: 919: 910: 897: 891: 885: 879: 873: 867: 861: 850: 849: 842: 836: 835: 828: 811: 808: 802: 799: 760: 755: 754: 753: 574:Hankel transform 409: 401:double-precision 395: 392:gsl-config--libs 391: 387: 383: 379: 369: 366: 363: 360: 357: 354: 351: 348: 345: 342: 339: 336: 333: 330: 327: 324: 321: 318: 317:gsl_sf_bessel_J0 315: 312: 309: 306: 303: 300: 297: 294: 291: 288: 285: 282: 279: 276: 273: 270: 267: 264: 186:software library 170: 167: 165: 163: 161: 159: 147:GPL-2.0-or-later 142:GPL-3.0-or-later 108: 105: 103: 101: 99: 80: 60: 58: 53: 19: 18: 1689: 1688: 1684: 1683: 1682: 1680: 1679: 1678: 1629: 1628: 1627: 1622: 1589: 1555:Bradley M. Kuhn 1545:Alexandre Oliva 1533: 1335: 1287: 1244: 1239: 1177: 1176: 1173: 1168: 1167: 1159: 1155: 1147: 1143: 1137:Wayback Machine 1127: 1123: 1116: 1112: 1104: 1100: 1092: 1088: 1080: 1076: 1068: 1064: 1056: 1052: 1044: 1040: 1032: 1028: 1020: 1016: 1008: 1004: 996: 992: 984: 980: 972: 965: 957: 950: 944:Wayback Machine 935: 928: 920: 913: 907:Wayback Machine 898: 894: 886: 882: 874: 870: 862: 853: 844: 843: 839: 830: 829: 825: 820: 815: 814: 809: 805: 800: 796: 791: 756: 751: 749: 746: 700: 620: 615: 429:Complex numbers 416: 411: 410: 407: 397: 396: 393: 389: 385: 381: 377: 371: 370: 367: 364: 361: 358: 355: 352: 349: 346: 343: 340: 337: 334: 331: 328: 325: 322: 319: 316: 313: 310: 307: 304: 301: 298: 295: 292: 289: 286: 283: 280: 277: 274: 271: 268: 266:<stdio.h> 265: 262: 256:Bessel function 252: 214: 212:Project history 156: 144: 96: 82: 56: 54: 51: 47:Initial release 17: 12: 11: 5: 1687: 1677: 1676: 1671: 1666: 1661: 1656: 1651: 1646: 1641: 1624: 1623: 1621: 1620: 1615: 1610: 1603: 1597: 1595: 1591: 1590: 1588: 1587: 1582: 1577: 1572: 1567: 1565:Federico Heinz 1562: 1557: 1552: 1547: 1541: 1539: 1535: 1534: 1532: 1531: 1524: 1519: 1514: 1509: 1504: 1499: 1494: 1489: 1479: 1474: 1469: 1467:GNU Archimedes 1464: 1459: 1454: 1449: 1444: 1439: 1434: 1429: 1424: 1419: 1414: 1409: 1404: 1399: 1394: 1389: 1384: 1379: 1374: 1369: 1364: 1359: 1354: 1343: 1341: 1337: 1336: 1334: 1333: 1328: 1323: 1318: 1313: 1312: 1311: 1309:font exception 1306: 1295: 1293: 1289: 1288: 1286: 1285: 1280: 1279: 1278: 1273: 1268: 1258: 1252: 1250: 1246: 1245: 1238: 1237: 1230: 1223: 1215: 1209: 1208: 1202: 1188: 1183: 1172: 1171:External links 1169: 1166: 1165: 1153: 1141: 1121: 1110: 1098: 1086: 1074: 1062: 1050: 1038: 1026: 1014: 1002: 990: 978: 963: 948: 926: 911: 892: 880: 868: 851: 837: 822: 821: 819: 816: 813: 812: 803: 793: 792: 790: 787: 786: 785: 778: 773: 768: 762: 761: 745: 742: 699: 696: 695: 694: 689: 684: 679: 674: 669: 664: 659: 654: 649: 644: 639: 634: 629: 619: 616: 614: 613: 608: 603: 598: 593: 588: 582: 576: 570: 565: 560: 555: 550: 545: 540: 535: 530: 525: 520: 515: 510: 505: 495: 490: 485: 483:Linear algebra 480: 475: 470: 465: 460: 455: 446: 441: 436: 431: 426: 420: 415: 412: 406: 376: 261: 251: 248: 213: 210: 172: 171: 154: 150: 149: 138: 132: 131: 126: 120: 119: 114: 110: 109: 94: 88: 87: 84: 83: 74: 72: 70:Stable release 66: 65: 62: 61: 48: 44: 43: 38: 32: 31: 25: 15: 9: 6: 4: 3: 2: 1686: 1675: 1672: 1670: 1667: 1665: 1662: 1660: 1657: 1655: 1652: 1650: 1647: 1645: 1642: 1640: 1637: 1636: 1634: 1619: 1616: 1614: 1611: 1609: 1608: 1607:Revolution OS 1604: 1602: 1599: 1598: 1596: 1592: 1586: 1583: 1581: 1578: 1576: 1575:John Sullivan 1573: 1571: 1568: 1566: 1563: 1561: 1558: 1556: 1553: 1551: 1548: 1546: 1543: 1542: 1540: 1536: 1530: 1529: 1525: 1523: 1520: 1518: 1515: 1513: 1510: 1508: 1505: 1503: 1500: 1498: 1495: 1493: 1490: 1487: 1483: 1480: 1478: 1475: 1473: 1470: 1468: 1465: 1463: 1460: 1458: 1455: 1453: 1450: 1448: 1445: 1443: 1440: 1438: 1435: 1433: 1430: 1428: 1425: 1423: 1420: 1418: 1415: 1413: 1410: 1408: 1405: 1403: 1400: 1398: 1395: 1393: 1390: 1388: 1385: 1383: 1380: 1378: 1375: 1373: 1370: 1368: 1365: 1363: 1360: 1358: 1355: 1352: 1348: 1345: 1344: 1342: 1338: 1332: 1329: 1327: 1324: 1322: 1319: 1317: 1314: 1310: 1307: 1305: 1302: 1301: 1300: 1297: 1296: 1294: 1290: 1284: 1281: 1277: 1276:Latin America 1274: 1272: 1269: 1267: 1264: 1263: 1262: 1259: 1257: 1256:GNU Manifesto 1254: 1253: 1251: 1247: 1243: 1236: 1231: 1229: 1224: 1222: 1217: 1216: 1213: 1206: 1203: 1200: 1196: 1194: 1189: 1187: 1184: 1180: 1175: 1174: 1162: 1157: 1150: 1145: 1138: 1134: 1130: 1125: 1119: 1114: 1107: 1102: 1095: 1090: 1083: 1078: 1071: 1066: 1059: 1054: 1047: 1042: 1035: 1030: 1023: 1018: 1011: 1006: 999: 994: 987: 982: 975: 970: 968: 960: 955: 953: 945: 941: 938: 933: 931: 923: 918: 916: 908: 904: 901: 896: 889: 884: 877: 872: 865: 860: 858: 856: 847: 841: 833: 827: 823: 807: 798: 794: 784: 783: 779: 777: 774: 772: 769: 767: 764: 763: 759: 748: 741: 738: 736: 732: 731:Smart pointer 728: 724: 719: 717: 713: 709: 705: 693: 690: 688: 685: 683: 680: 678: 675: 673: 670: 668: 665: 663: 660: 658: 655: 653: 650: 648: 645: 643: 640: 638: 635: 633: 630: 628: 625: 624: 623: 612: 609: 607: 604: 602: 599: 597: 594: 592: 589: 586: 583: 580: 577: 575: 571: 569: 566: 564: 561: 559: 556: 554: 553:Interpolation 551: 549: 546: 544: 541: 539: 536: 534: 531: 529: 526: 524: 521: 519: 516: 514: 511: 509: 506: 503: 499: 496: 494: 491: 489: 486: 484: 481: 479: 476: 474: 471: 469: 466: 464: 461: 459: 456: 454: 450: 447: 445: 442: 440: 437: 435: 432: 430: 427: 425: 422: 421: 419: 404: 402: 374: 259: 257: 247: 244: 240: 238: 234: 229: 227: 223: 219: 209: 207: 203: 199: 195: 191: 187: 183: 179: 169: 155: 151: 148: 143: 139: 137: 133: 130: 127: 125: 121: 118: 115: 111: 107: 95: 93: 89: 85: 81:/ 25 May 2024 79: 73: 71: 67: 63: 50:May 1996 49: 45: 42: 39: 37: 33: 29: 26: 24: 20: 1605: 1594:Other topics 1580:Nagarjuna G. 1538:Contributors 1527: 1502:GNU LilyPond 1462:GNU Electric 1451: 1387:Build system 1192: 1156: 1144: 1124: 1113: 1101: 1089: 1077: 1065: 1053: 1041: 1029: 1017: 1005: 993: 981: 895: 883: 871: 864:GSL homepage 840: 826: 806: 797: 780: 739: 720: 711: 707: 701: 621: 585:Minimization 579:Root finding 488:Eigensystems 463:Combinations 458:Permutations 417: 398: 372: 253: 245: 241: 230: 215: 181: 177: 175: 36:Developer(s) 28:Mark Galassi 1432:GNU TeXmacs 1362:Linux-libre 1242:GNU Project 698:C++ support 657:Common Lisp 434:Polynomials 233:Brian Gough 202:GNU Project 41:GNU Project 1633:Categories 1492:GNU Health 1437:GNU Octave 818:References 528:Histograms 523:Statistics 500:(based on 403:accuracy: 237:Jim Davies 113:Written in 92:Repository 1560:Brian Fox 1512:GNU Chess 1442:GNU Taler 1427:GNU Emacs 1382:findutils 1377:coreutils 572:Discrete 468:Multisets 439:B-splines 388:example.c 164:/software 98:ftpmirror 75:2.8  1482:Gnuzilla 1397:binutils 1351:variants 1340:Software 1292:Licenses 1133:Archived 940:Archived 903:Archived 744:See also 533:N-tuples 502:QUADPACK 453:matrices 414:Features 269:#include 263:#include 1528:more... 1412:GNUstep 1249:History 1195:package 735:functor 716:functor 642:Haskell 637:Fortran 473:Sorting 449:Vectors 250:Example 222:Fortran 194:science 184:) is a 153:Website 136:License 57:1996-05 55: ( 1507:GNU Go 1497:GNUmed 1486:IceCat 1472:GNUnet 1266:Europe 776:Netlib 723:malloc 677:Python 667:Octave 359:return 341:" 329:printf 308:double 293:double 226:Netlib 145:1996: 140:2007: 1517:Gnash 1447:GNU R 1367:glibc 1271:India 789:Notes 662:OCaml 652:Julia 1522:Guix 1422:Jami 1417:GIMP 1407:GRUB 1372:Bash 1357:Hurd 1197:for 1190:The 727:free 725:and 692:Rust 687:Ruby 647:Java 627:AMPL 478:BLAS 451:and 284:void 278:main 192:and 180:(or 176:The 166:/gsl 162:.org 160:.gnu 124:Type 104:/gsl 102:.org 100:.gnu 1457:GMP 1452:GSL 1402:GDB 1392:GCC 1347:GNU 1193:gsl 1161:yat 704:C++ 632:C++ 390:$ ( 382:$ ( 380:gcc 378:$ 302:5.0 275:int 182:GSL 158:www 1635:: 1151:; 1131:. 966:^ 951:^ 929:^ 924:; 914:^ 854:^ 737:. 718:. 356:); 338:\n 326:); 208:. 1488:) 1484:( 1353:) 1349:( 1234:e 1227:t 1220:v 1163:. 1139:. 1108:. 1096:. 1084:. 1072:. 1060:. 1048:. 1036:. 1024:. 1012:. 1000:. 988:. 976:. 961:; 946:; 909:. 878:. 866:. 848:. 834:. 682:R 504:) 394:) 386:) 368:} 365:; 362:0 353:y 350:, 347:x 344:, 332:( 323:x 320:( 314:= 311:y 305:; 299:= 296:x 290:{ 287:) 281:( 198:C 168:/ 117:C 106:/ 59:)

Index

Original author(s)
Mark Galassi
Developer(s)
GNU Project
Stable release
Edit this on Wikidata
Repository
ftpmirror.gnu.org/gsl/
C
Type
Numerical library
License
GPL-3.0-or-later
GPL-2.0-or-later
www.gnu.org/software/gsl/
software library
applied mathematics
science
C
GNU Project
GNU General Public License
Los Alamos National Laboratory
Fortran
Netlib
Brian Gough
Jim Davies
Bessel function
double-precision
Basic mathematical functions
Complex numbers

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.