IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Fonction sqrt rapide


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 10
    Par défaut Fonction sqrt rapide
    Bonjour,

    Je cherche une fonction en C qui calcul la racine carrée d'un entier de 32bit en un entier de 16 bit. Mon problème c'est qu'il faut avoir une fonction trés rapide.

    Merci,

  2. #2
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Recherches sur wikipedia il y a un article très bien fourni sur le sujet (en anglais).
    Je ne peux moi même te le linker le proxy de mon entreprise me bloquant ce domaine.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2010
    Messages : 5
    Par défaut
    J'ai trouvé ce lien : http://forums.futura-sciences.com/ma...ne-carree.html

    Le gars veut un truc efficace ....

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Pourquoi ne pas utiliser du précalcul?
    Tu enregistre toutes tes valeurs dans un tableau (tab[x] = sqrt(x) ) et tu accède à la racine carrée en O(1), je ne connais pas plus rapide.

  5. #5
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Pourquoi ne pas utiliser du précalcul?
    Tu enregistre toutes tes valeurs dans un tableau (tab[x] = sqrt(x) ) et tu accède à la racine carrée en O(1), je ne connais pas plus rapide.
    Cela dépend de la plage de valeur qui l'intéresse mais en effet cela ne peut être que l'optimal pour une plage de petite taille et fixe.

  6. #6
    Membre averti
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 10
    Par défaut
    Bonjour,

    Merci pour vos réponce, mais un autre problème que j'ai c'est que la mémoire est limité et les valeurs varients entre 0 et 16769025 (0xFFF^2). j'ai trouvé quelques algorithmes. mais j'ai une autre question. Est ce qu'en ajoutant _inline_ peut accélérer le calcul?

  7. #7
    Membre expérimenté Avatar de Livegen
    Homme Profil pro
    Ingénieur logiciel embarqué Franco-allemand
    Inscrit en
    Avril 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur logiciel embarqué Franco-allemand
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 83
    Par défaut
    Inline permet d'éviter l'implémentation d'une fonction, le code de la fonctoin est alors directement implémenté dans le code.

    Cela est particulièrement utile si la fonction en question est appellé fréquement.

    Dans ton cas, cela dépend à quelle fréquence tu désires appeler ta fonction sqrt().

    source : http://fr.wikipedia.org/wiki/Optimis...ef_inline_du_C

    Meilleures salutations, Livegen.

  8. #8
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Citation Envoyé par serialC Voir le message
    la mémoire est limité et les valeurs varients entre 0 et 16769025 (0xFFF^2).
    Ce qui te fait 4095 entiers a sauver, pour avoir un acces en O(1). Est-ce trop ?

    Est ce qu'en ajoutant _inline_ peut accélérer le calcul?
    Ca depend du code que tu ecris, et donc du code qui est genere derriere.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  9. #9
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 82
    Par défaut
    Citation Envoyé par Livegen Voir le message
    Inline permet d'éviter l'implémentation d'une fonction, le code de la fonctoin est alors directement implémenté dans le code.

    Cela est particulièrement utile si la fonction en question est appellé fréquement.

    Dans ton cas, cela dépend à quelle fréquence tu désires appeler ta fonction sqrt().

    source : http://fr.wikipedia.org/wiki/Optimis...ef_inline_du_C

    Meilleures salutations, Livegen.
    C'est juste pour une petite question on m'a dit que la plus part des compilateurs le faisait de base pour les petites fonctions... Est-ce vrai?

    Ce que je vais dire après demande confirmation aussi :
    Attention à l'utilisation du mot clé inline il est à utiliser que si des fonctions qui restent assez petite.

    Bref au final tu as plein de mot clé pour l'optimisation.

    Mais pour la rapidité de sqrt va voir sur wiki du coté de John Carmack tu lis l'article sur lui et tu verras dans l’anecdote il y a une fonction sqrt plus rapide que l'original mais par contre pour la comprendre c'est pas le même délire. L'approximation est de l'ordre de 10-3 donc je sais pas si cela te convient...

    D’ailleurs si quelqu'un se sent de taille pour l'expliquer...?

  10. #10
    Membre expérimenté Avatar de Livegen
    Homme Profil pro
    Ingénieur logiciel embarqué Franco-allemand
    Inscrit en
    Avril 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Ingénieur logiciel embarqué Franco-allemand
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 83
    Par défaut
    Si l'optimisation est activé (-o1, -o2, -o3), sa ne me surprendrait pas. En revanche, si tu compiles avec l'option -o0 (aucune optimisation), il n'a aucune raison de le faire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/08/2009, 11h07
  2. Fonction SQRT non reconnu
    Par noakiss dans le forum VBA Access
    Réponses: 7
    Dernier message: 13/08/2008, 14h33
  3. Récupération de fonctions ( sqrt(), strstr() )
    Par bassattack dans le forum Bibliothèque standard
    Réponses: 12
    Dernier message: 21/03/2008, 15h30
  4. fonction recherche rapide
    Par amano38 dans le forum Access
    Réponses: 10
    Dernier message: 25/06/2007, 11h25
  5. [Débutant][Maths] La fonction sqrt
    Par ETI-trian dans le forum Général Java
    Réponses: 3
    Dernier message: 05/01/2006, 08h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo