C/C++

Présentation des rudiments du langage C/C++.

On présente ci-dessous une brève introduction au langage C avec quelques exemples de codes, et une recension des librairies scientifiques utiles en modélisation numérique.

Un des attraits importants des langages compilés (tels C et C++) par rapport aux langages interprétés (tel Python) vient de leur vitesse d’exécution.

Voici un bref comparatif:

Vitesse d’exécution de quelques langages de programmation.

Le principal désavantage de ce type de langage est toutefois l’offre beaucoup moins importante de librairies scientifiques (pas de numpy ici) et la syntaxe parfois plus complexe que celle des langages plus “haut niveau”.

Le langage C possède par ailleurs plusieurs versions (C11, C17) et une extension orientée-objet – le C++.

Finalement, on peut interfacer du code C et du code Python via Cython.

Exemple introductif

Syntaxe et compilation d’un exemple minimal de type “hello world”.

Un code C de type “hello world” pourrait ressembler à:

#include <stdio.h>
int main() {
   // printf() displays the string inside quotation
   printf("Hello, World!");
   return 0;
}

En plaçant ce code dans le fichier hello.c, on peut compiler avec

gcc hello.c -o hello

ce qui produit l’exécutable hello.

Librairies scientifiques

Recersion des librairies de calcul scientifique en C/C++.

GNU Scientific Library (GSL)

La GSL est l’une des principales libraires de calcul scientifique en C. Bref aperçu des fonctionnalités:

  • Complex Numbers
  • Roots of Polynomials
  • Special Functions
  • Vectors and Matrices
  • Permutations
  • Sorting
  • BLAS Support
  • Linear Algebra
  • Eigensystems
  • Fast Fourier Transforms
  • Quadrature
  • Random Numbers
  • Quasi-Random Sequences
  • Random Distributions
  • Statistics
  • Histograms
  • N-Tuples
  • Monte Carlo Integration
  • Simulated Annealing
  • Differential Equations
  • Interpolation
  • Numerical Differentiation
  • Chebyshev Approximation
  • Series Acceleration
  • Discrete Hankel Transforms
  • Root-Finding
  • Minimization
  • Least-Squares Fitting
  • Physical Constants
  • IEEE Floating-Point
  • Discrete Wavelet Transforms
  • Basis splines
  • Running Statistics
  • Sparse Matrices and Linear Algebra
Last modified December 17, 2021: add figure env to images (9639e49)