• Non ci sono risultati.

Librerie preconfezionate

N/A
N/A
Protected

Academic year: 2021

Condividi "Librerie preconfezionate"

Copied!
8
0
0

Testo completo

(1)

Librerie preconfezionate

• Sono routine gi` a scritte da altri, di solito ben collaudate

• Comprendono le definizioni delle funzioni e il codice eseguibile

• Per librerie di pubblico dominio ` e disponi- bile anche il sorgente

• Richiedono l’inclusione di math.h all’interno del file sorgente

• E necessario linkare con opportune librerie ` extra -lm -lblas

• Bisogna leggere molto attentamente la do-

cumentazione

(2)

Un esempio: le librerie gsl

• GNU Scientific Library (GNU’s Not Unix)

• Includono gsl.h o file analoghi

• Link sempre -lgsl e spesso -lgslcblas

(3)

Ma perch´ e allora ho seguito questo corso?

• Per guidare l’auto bisogna saper almeno cambiare una ruota

• Un programma che metta insieme cose sconosciute

` e facilmente sbagliato

• Un algoritmo standard non va bene per la

maggior parte delle applicazioni; i risultati

originali hanno bisogno di programmi ori-

ginali

(4)

Cosa si fa con le librerie gsl

• Valori di costanti matematiche M PI = π

• Calcolo di funzioni elementari e funzioni speciali

hypot(3, 4) gsl pow 4(2)

• Valutazione di polinomi

p(x) = c

0

+ c

1

x + · · · + c

n−1

x

n−1

gsl poly eval(c, n, x)

• Ordinamento di un vettore

gsl sort(v, k, n) v

0

, v

k

, v

2k

, . . .

(5)

Inclusione e linking

Oltre ai due file che vanno inclusi sempre, ogni categorie di routine riochiede l’inclusione di al- tri file, ad esempio

#include hgsl/gsl xxx.hi

xxx = math, poly, sort vector

Il linking viene fatto collegando libgsl e, quasi sempre, libgslcblas

gcc -lgsl -lgslcblas programma.c

BLAS = Basic Linear Algebra Subroutines ` e

una collezione di funzione che permette di fare

in modo ottimale alcune operazioni su vettori

e matrici, come il prodotto di un vettore per

uno scalare o la somma di due vettori

(6)

Strutture dati, argomenti delle funzioni e workspace

• Le routine scritte da altri utilizzano strut- ture dati proprie: il programmatore deve adattarsi

• Le funzioni utilizzano parametri di chia- mata propri e parametri di uscita per veri- ficare esattezza e precisione del risultato

• Alle funzioni serve anche uno spazio di la-

voro temporaneo per velocizzare il programma:

questo spazio deve essere allocato dall’utente

(7)

Esempio: integrazione con quadratura gaussiana

gsl integration qag( &F, a,b,epsabs,epsrel,limit,key, workspace, & result, & abserror )

• F ` e una struttura che contiene la funzione integranda

• a e b sono gli estremi di integrazione

• epsabs ` e l’errore assoluto richiesto, epsrel l’errore relativo richiesto

• key ` e collegato al numero di punti di inte-

grazione gaussiana (va da 1 a 6 con nu-

mero crescente)

(8)

• L’algoritmo consiste nel dividere l’intervallo iniziale in sotto intervalli, i cui estremi sono memorizzati nel workspace. il massimo nu- mero di intervalli ` e limit

• Workspace ` e una struttura di tipo

gsl integration workspace e ha proprie fun- zioni di allocazione e deallocazione

• F ` e una struttura gsl function che ha due

membri: il primo ` e la funzione integranda f,

il secondo un array di parametri da passare

alla funzione f oltre a quello da integrare

Riferimenti

Documenti correlati

In order t o characterize the critical behavior of the DSSki systems, we define the minimum interarrival time E,, for each earth station as that particular mean

• il computer legge dal file fisico una quantità di dati tale da riempire il buffer (oppure legge tutti i dati del file se questi sono in quantità inferiore alla lunghezza del

linkare con le librerie opportune: per molti funzioni sar` a necessario non solo -lgsl ma anche -lgslcblas (attenzione al linking: statico o dinamico?).. attenersi alla struttura

linkare con le librerie opportune: per molti funzioni sar` a necessario non solo -lgsl ma anche -lgslcblas (attenzione al linking: statico o dinamico?).. attenersi alla struttura

• E necesario includere le definizioni delle fun- ` zioni utilizzate, che stanno in file .h forniti assieme alle librerie.. • I file da includere possono essere uno o

• infine, una data routine o categoria di rou- tine pu` o usare strutture dati proprie e aree di memoria proprie, da usare come spazio di lavoro, che devono essere allocate

 Per leggere dati da un file presente sul disco, Per leggere dati da un file presente sul disco, occorre dapprima costruire un oggetto di tipo occorre dapprima costruire un

ARCHIVIO.C Il secondo programma deve gestire un archivio di persone che vengono memorizzate in un file INI diviso in due sezioni: nella prima sezione, “Struttura” , c’è un