Bonsoir à tous !
Voilà, je débute en C et je rencontre un problème avec un code. Lorsque je compile mon code, j'ai l'erreur: undefined reference to 'sin'. Je ne comprends pas, j'ai bien intégré la librairie math.h et j'ai bien le -lm dans mon makefile:

CFLAGS=-Wall -ansi -pedantic-errors
LDFLAGS=-lm
J'ai réussi à compiler mon code sur un autre ordinateur ( avec le même makefile), mais ça ne marche pas sur le mien, pourquoi ?

J'ai également une seconde question: voici mon programme:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include<stdio.h>
#include<math.h>
	/* prototypes des fonctions crées /*/
double inverse_f(double,double, double);
double position_reelle(double, double, double);
double ecart_pixel(double,double);
 
 
int main()
{
	double p1_reel,p2_reel,p3_reel,p4_reel,p5_reel,p6_reel,p7_reel,p8_reel,p9_reel,p10_reel,p11_reel,p12_reel,p13_reel,p14_reel,p15_reel,p16_reel;
 
	double p1_pixel,p2_pixel,p3_pixel,p4_pixel,p5_pixel,p6_pixel,p7_pixel,p8_pixel,p9_pixel,p10_pixel,p11_pixel,p12_pixel,p13_pixel,p14_pixel,p15_pixel,p16_pixel;
	double p1_mesure,p2_mesure,p3_mesure,p4_mesure,p5_mesure,p6_mesure,p7_mesure,p8_mesure,p9_mesure,p10_mesure,p11_mesure,p12_mesure,p13_mesure,p14_mesure,p15_mesure,p16_mesure;
	double Pi=3.14159265359;
	double phi0 = -Pi/3.96105; /* Valeur optimale 3.96105 */
	double phi1 = Pi/3.96105;
	double somme_ecart_pixel;
 
	/* position des traits de la mire (colonne) */
	p1_mesure = 3;
	p2_mesure = 23;
	p3_mesure = 41;
	p4_mesure = 58;
	p5_mesure = 74;
	p6_mesure = 90;
	p7_mesure = 105;
	p8_mesure = 120;
	p9_mesure = 135;
	p10_mesure = 150;
	p11_mesure = 165;
	p12_mesure = 180;
	p13_mesure = 196;
	p14_mesure = 213;
	p15_mesure = 231;
	p16_mesure = 251;
 
	/* position reelle ( je cherche la position d'un pixel dans l'espace reel )*/
	p1_reel = position_reelle(1,phi0,phi1); 
	p2_reel = position_reelle(2, phi0,phi1); 
	p3_reel = position_reelle(3, phi0, phi1); 
	p4_reel = position_reelle(4, phi0, phi1); 
	p5_reel = position_reelle(5, phi0, phi1); 
	p6_reel = position_reelle(6, phi0, phi1); 
	p7_reel = position_reelle(7, phi0, phi1); 
	p8_reel = position_reelle(8, phi0, phi1); 
	p9_reel = position_reelle(9,phi0,  phi1); 
	p10_reel = position_reelle(10, phi0, phi1); 
	p11_reel = position_reelle(11, phi0, phi1); 
	p12_reel = position_reelle(12, phi0, phi1); 
	p13_reel = position_reelle(13, phi0, phi1); 
	p14_reel = position_reelle(14, phi0, phi1); 
	p15_reel = position_reelle(15, phi0, phi1); 
	p16_reel = position_reelle(16, phi0, phi1); 
 
	/* position des pixels (il y a le +3 car le premier pic est sur la 3ème colonne de l'image)*/
	p1_pixel = 3+inverse_f(p1_reel,phi0,phi1);
	p2_pixel = 3+inverse_f(p2_reel,phi0,phi1);
	p3_pixel = 3+inverse_f(p3_reel,phi0,phi1);
	p4_pixel = 3+inverse_f(p4_reel,phi0,phi1);
	p5_pixel = 3+inverse_f(p5_reel,phi0,phi1);
	p6_pixel = 3+inverse_f(p6_reel,phi0,phi1);
	p7_pixel = 3+inverse_f(p7_reel,phi0,phi1);
	p8_pixel = 3+inverse_f(p8_reel,phi0,phi1);
	p9_pixel = 3+inverse_f(p9_reel,phi0,phi1);
	p10_pixel = 3+inverse_f(p10_reel,phi0,phi1);
	p11_pixel = 3+inverse_f(p11_reel,phi0,phi1);
	p12_pixel = 3+inverse_f(p12_reel,phi0,phi1);
	p13_pixel = 3+inverse_f(p13_reel,phi0,phi1);
	p14_pixel = 3+inverse_f(p14_reel,phi0,phi1);
	p15_pixel = 3+inverse_f(p15_reel,phi0,phi1);
	p16_pixel = 3+inverse_f(p16_reel,phi0,phi1);
 
	/* somme des ecarts des pixels au carré */
	somme_ecart_pixel = ecart_pixel(p1_pixel,p1_mesure)+ecart_pixel(p2_pixel,p2_mesure)+ecart_pixel(p3_pixel,p3_mesure)+ecart_pixel(p4_pixel,p4_mesure)+ecart_pixel(p5_pixel,p5_mesure)+ecart_pixel(p6_pixel,p6_mesure)+ecart_pixel(p7_pixel,p7_mesure)+ecart_pixel(p8_pixel,p8_mesure)+ecart_pixel(p9_pixel,p9_mesure)+ecart_pixel(p10_pixel,p10_mesure)+ecart_pixel(p11_pixel,p11_mesure)+ecart_pixel(p12_pixel,p12_mesure)+ecart_pixel(p13_pixel,p13_mesure)+ecart_pixel(p14_pixel,p14_mesure)+ecart_pixel(p15_pixel,p15_mesure)+ecart_pixel(p16_pixel,p16_mesure);
 
	printf("\tSomme_ecart_pixel = %f\n",somme_ecart_pixel);
 
return 0;
}
 
	/* fonction inverse */
double inverse_f(double x,double phi0, double phi1)  /*( x correspond à la position d'un pixel dans l'espace réel)*/
{
	double resultat = 0.0;
	resultat = ((asin(x)-phi0)/(phi1-phi0))*248;   /* fonction de passage de l'etat reel au pixel */
return resultat;
}
 
	/* fonction des positions reelles */
double position_reelle(double n, double phi0, double phi1)     /* n correspond à la position du pixel */
{
	double resultat;
	resultat = sin(phi0) + ((sin(phi1)-sin(phi0))/15)*(n-1);
return resultat;
}
 
	/* écart des pixels au carré */
double ecart_pixel(double p_estime,double p_mesure)
{
	double resultat;
	resultat = pow((p_estime-p_mesure),2);
return resultat;
}
Il fonctionne, mais je voudrais un autre moyen, plus court, avec des boucles for, mais je ne voit pas comment. Auriez vous une idée ? Merci d'avance