Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1510 connectés 

  FORUM HardWare.fr
  Programmation
  C

  FONCTION DE MATHS EN C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

FONCTION DE MATHS EN C

n°1007284
la_marseil​laise
Posté le 09-03-2005 à 20:56:36  profilanswer
 

Bonjour
 
J'ai un petit probleme en C.
Je veux utiliser les fonctions de la bibliotheque
math.h.
Je fait "#include <math.h>"
et j'ai bien verifier dans /usr/bin/include
que math.h existe bien.
 
J'ai une erreur unreconized sqrt.
 
Pourquoi????

mood
Publicité
Posté le 09-03-2005 à 20:56:36  profilanswer
 

n°1007291
Taz
bisounours-codeur
Posté le 09-03-2005 à 21:00:53  profilanswer
 

-lm

n°1007293
la_marseil​laise
Posté le 09-03-2005 à 21:02:02  profilanswer
 

comment ca -lm?
explique toi stp

n°1007296
robertmoua​c
Posté le 09-03-2005 à 21:02:58  profilanswer
 

Pas mieux que Taz... il fo mettre l'option -lm dans ta commande de compilation

n°1007302
la_marseil​laise
Posté le 09-03-2005 à 21:05:11  profilanswer
 

a quoi set cette option?
et d'ou viens une telle erreur?

n°1007345
Emmanuel D​elahaye
C is a sharp tool
Posté le 09-03-2005 à 21:16:18  profilanswer
 

la_marseillaise a écrit :

a quoi set cette option?


Avec gcc, à ajouter la bibliothèque mathématique

Citation :

et d'ou viens une telle erreur?


Le linker ne trouve pas la fonction. Normal, elle ne fat pas partie de la bibliothèque standard par défaut (pour éviter d'encombrer la mémoire sur les cibles de taille réduite, je suppose...)
 
http://mapage.noos.fr/emdel/notes.htm#bibliotheque


Message édité par Emmanuel Delahaye le 09-03-2005 à 21:18:06

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1007349
Taz
bisounours-codeur
Posté le 09-03-2005 à 21:16:59  profilanswer
 

man sqrt !

n°1007378
la_marseil​laise
Posté le 09-03-2005 à 21:32:42  profilanswer
 

Emmanuel D elahaye
 
la bibliotheque figure bien dans mon repertoire include
 
Taz
j'ai deja regarder le man
 

n°1007385
darkoli
Le Petit Dinosaure Bleu
Posté le 09-03-2005 à 21:38:51  profilanswer
 

la_marseillaise a écrit :

...
j'ai deja regarder le man

C'est le bon que tu as regardé ?
 
 
SQRT(3)                                            Manuel du programmeur Linux                                           SQRT(3)
 
NOM
       sqrt, sqrtf, sqrtl - Fonction racine carrée (square root).
 
SYNOPSIS
       #include <math.h>
 
       double sqrt (double x);
 
       float sqrt (float x);
 
       long double sqrt (long double x);
 
DESCRIPTION
       La fonction sqrt() renvoie la racine carrée non‐négative de x.  Elle échoue et positionne errno a EDOM, si x est négatif.
 
ERREURS
       EDOM   x est négatif.
 
NOTES
       Pour utiliser les fonctions de la bibliothèque mathématique, il ne faut pas oublier d’ajouter l’argument ‐lm sur la ligne de commande de cc(1) ou ld(1), lors de l’édition des liens.
 
CONFORME A
       SVID 3, POSIX, BSD 4.3, ISO 9899.  Les variantes float et long double sont des demandes C99.
 
VOIR AUSSI
       hypot(3)
 
TRADUCTION
       Christophe Blaess, 1996‐2003.


Message édité par darkoli le 09-03-2005 à 21:39:28

---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
n°1007389
la_marseil​laise
Posté le 09-03-2005 à 21:43:15  profilanswer
 

darkoli  
 
l'erreur unreconized est aussi pour pow
ma racine est bien positive

mood
Publicité
Posté le 09-03-2005 à 21:43:15  profilanswer
 

n°1007394
la_marseil​laise
Posté le 09-03-2005 à 21:49:33  profilanswer
 

-lm est obligatoire?
ca me parait lourd

n°1007395
Taz
bisounours-codeur
Posté le 09-03-2005 à 21:51:09  profilanswer
 

POW(3)                    Manuel du programmeur Linux                   POW(3)
 
NOM
       pow, powf, powl - Fonction puissance
 
SYNOPSIS
       #define _GNU_SOURCE
       #include <math.h>
 
       double pow (double x, double y);
 
       float powf (float x, float y);
 
       long double powl (long double x, long double y);
 
DESCRIPTION
       La fonction pow() renvoie la valeur de x élevé à la puissance y.
 
ERREURS
       EDOM   L’argument  x  est  négatif,  et y n’est pas entier. Le résultat
              serait un nombre complexe.
 
NOTES
       Pour utiliser les fonctions de la bibliothèque mathématique, il ne faut
       pas  oublier d’ajouter l’argument ‐lm sur la ligne de commande de cc(1)
       ou ld(1), lors de l’édition des liens.
 
CONFORMITÉ
       SVID 3, POSIX, BSD 4.3, ISO 9899 Les variantes  float  et  long  double
       sont des demandes C99.
 
VOIR AUSSI
       sqrt(3), cbrt(3)
 
TRADUCTION
       Christophe Blaess, 1996‐2003.
 
LDP                             30 juillet 2003                         POW(3)

n°1007397
Taz
bisounours-codeur
Posté le 09-03-2005 à 21:51:45  profilanswer
 

la_marseillaise a écrit :


ca me parait lourd


ah bon.

n°1007405
Sve@r
Posté le 09-03-2005 à 21:57:35  profilanswer
 

la_marseillaise a écrit :

-lm est obligatoire?


 
Lorsque tu appelles une fonction de la librairie "/usr/lib/libqqchose.a", tu dois indiquer au compilo que tu utilises cette librairie afin que le compilo sache où se trouve le code de la fonction
gcc machin.c /usr/lib/libqqchose.a -o machin
 
Raccourci, l'option "-lqqchose" est un raccourci vers "/usr/lib/libqqchose.a" donc tu peux remplacer la commande précédente par
gcc machin.c -lqqchose -o machin
 
Ici, tu utilises la librairie "libm.a" donc "-lm"
 

la_marseillaise a écrit :

ca me parait lourd


Ce qui serait vraiment lourd, comme l'a dit Emmanuel, c'est que toutes les librairies existantes soient automatiquement reliées lors de la compilation. Là, tu aurais une compilationqui dure 3 plombes.
 
Ici, au contraire, c'est toi le maître. Tu utilises les librairie "/usr:lib/libx.a" et "/usr/lib/liby.a" donc tu l'indiques au compilo
cc machin.c -lx -ly -o machin

n°1007407
la_marseil​laise
Posté le 09-03-2005 à 21:57:38  profilanswer
 

oui c'est tres lourd!
 
 
merci mais j'ai deja lu toute cette doc!!!!

n°1007411
la_marseil​laise
Posté le 09-03-2005 à 21:59:09  profilanswer
 

Sve@r
 
je n'utilise pas de .a que des .h
 
je n'ai pas trop compris
 
(je debute en C)

n°1007413
Taz
bisounours-codeur
Posté le 09-03-2005 à 22:03:15  profilanswer
 

la_marseillaise a écrit :

Sve@r
 
je n'utilise pas de .a que des .h
 
je n'ai pas trop compris
 
(je debute en C)


alors fais comme si t'avais compris, ça a peut d'importance pour le moment. retiens juste que pour certaines bibliothèques, il faut dire à gcc où elles sont.

n°1007414
Sve@r
Posté le 09-03-2005 à 22:03:56  profilanswer
 

la_marseillaise a écrit :

Sve@r
 
je n'utilise pas de .a que des .h
 
je n'ai pas trop compris
 
(je debute en C)


 
Pour résumer, le ".h" c'est le descriptif des fonctions que tu utilises.  
Ex: sqrt prend comme argument un double et renvoie un double.
C'est en effet plus facile d'inclure un fichier ".h" regroupant un descriptif de 80 fonctions que de réécrire tous les descriptifs. Car tu es obligé de déclarer dans ton source toutes les fonctions que tu vas utiliser avant de les utiliser.
 
Le ".a", c'est un gros fichier contenant le code exécutable des fonctions. Calculer une racine carrée ne se fait pas en 3 opérations. Il faut une boucle, etc. Ce code est déjà précompilé et inclus dans le ".a"
 
Quand tu compiles, tu indiques au compilo où se trouve le code des fonctions que tu vas utiliser.
 
On pourrait inclure le code dans le ".h" mais n'importe qui pourrait toucher le code donc on aurait de gros pb.


Message édité par Sve@r le 09-03-2005 à 22:04:33
n°1007418
la_marseil​laise
Posté le 09-03-2005 à 22:05:47  profilanswer
 

Sve@r
 
je te remercie beaucoup
 
j'ai tres bien compris
 
 
MERCI A TOUS!!!!!

n°1007487
Emmanuel D​elahaye
C is a sharp tool
Posté le 09-03-2005 à 22:48:25  profilanswer
 

la_marseillaise a écrit :

-lm est obligatoire?


Oui.

Citation :

ca me parait lourd


Peut importe, c'est comme ça, (et c'est pas lourd)
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1007494
Emmanuel D​elahaye
C is a sharp tool
Posté le 09-03-2005 à 22:55:28  profilanswer
 

la_marseillaise a écrit :


je n'utilise pas de .a que des .h
 
je n'ai pas trop compris
 
(je debute en C)


J'avais pourtant posté un lien... Tu ne l'as pas lu, c'est dommage...
 
Rappel : Un .h est un fichier d'interface (la partie visible de la bibliothèque). Il ne contient pas le code d'ecécution. Celui-ci se trouve dans un .a (.lib etc. selon le système). Par défaut une partie de la bibliothèque standard est liée automatiquement. Si on a besoin d'autres fonctions standard (comme les fonctions qui utilisent les flottants), on signale au linker qu'il faut ajouter ce qui manque (-lm) c'est une façon simple et rapide de le demander.  
 
La méthode officielle (qu'il faut utiliser pour les bibliothèques non standards) est plutôt du genre

-llibxxx.a


 
Nota : ces détails (importants) sont liés à l'implémentation du langage (compilateur, environnement de développement, système) et non au langage C lui-même.
 
Tout est expliqué dans le manuel de ton compilateur...


Message édité par Emmanuel Delahaye le 09-03-2005 à 22:56:56

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1007655
Sve@r
Posté le 10-03-2005 à 08:08:50  profilanswer
 

Emmanuel Delahaye a écrit :

La méthode officielle (qu'il faut utiliser pour les bibliothèques non standards) est plutôt du genre

-llibxxx.a




 
C'est pas plutôt "libxxx.a" sans le "-l" ?

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  FONCTION DE MATHS EN C

 

Sujets relatifs
fonction avec passage par reference de variableaffichage d'un article en fonction de l'id
Question à propos de la fonction "preg_replace"Fonction select() sur l'entrée std
[RESOLU]PHP-LDAP fonction ldap-renameFonction js qui ne fonctionne plus soudainement
:??: Recherche fonction javascript de dédoublonnage tablo[i][j]Fonction "Se loguer" sur un site
fonction javascript pour récupérer une url et son nomQuestion sur fonction basique
Plus de sujets relatifs à : FONCTION DE MATHS EN C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR