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 :

Utilisation des opérateurs spécifiques aux types


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Utilisation des opérateurs spécifiques aux types
    Bonjour,
    Ce là fait un petit moment que je me pose une question. Après un grand nombre de recherche sur google mais je n'ai malheureusement rien trouvé, c'est pour quoi je poste sur le forum.
    LA question que je m'étais posé est ce qu'il est possible en C/C++ ou en assembleur de dire au compilateur d'utiliser les opérateurs +, -, /, * spécifique pour les types int, float, double ?
    J'ai un petit projet en tête et j’aurais besoin de coder des doubles sur un plus grand nombre de bits pour plus de précisons. J'ai pensé à créer une structure/classe double avec ces opérateurs mais le calcul peut être long et rien ne me garantie sur la précision à priori.
    L'idée ce serait de créer un super_double ( :-p ), de dire au compilo tien ici tu as un double spécial tu devra coder sur tant de bits vas utiliser tels ou tel opérateurs pour faire le calcul sur de registres avec un nombre de bit inférieur à celui du super_double. Je dois donc gérer les load et store dans les registre etc...
    Est-ce possible ?
    J'ai déjà essayer des librairies multiplication mais elles sont super lentes et j'ai besoin de performance dans mon code très calculatoire.
    Si vous connaissez des projets open sources ou liens qui traitent de ses sujets pouvez-vous les partager svp.

    Merci d'avance,

  2. #2
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Le projet open-source par excellence pour faire du multi-précision en C c'est GMP. Si tu essayes de faire mieux tu risques de finir avec un code non-portable, truffé de bugs et moins rapide. À mon avis les optimisations que tu peux faire sur ton code se trouvent à un autre niveau.

    LA question que je m'étais posé est ce qu'il est possible en C/C++ ou en assembleur de dire au compilateur d'utiliser les opérateurs +, -, /, * spécifique pour les types int, float, double ?
    Il suffit de caster les opérandes avant d'appeler les opérateurs, par exemple (int)10.0 / (int) 50.0.

  3. #3
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Il faut savoir que les type de données en C dépend de architecture cible et donc les calcul fait avec ces types sont directement traité par le processeur (donc assez rapide) , tu as le long double pour plus de précision , après tu peut utiliser une lib extern pour gérer de très grand nombre mais tu perdra en rapidité.

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Seo,
    Citation Envoyé par Trademark Voir le message
    Le projet open-source par excellence pour faire du multi-précision en C c'est GMP. Si tu essayes de faire mieux tu risques de finir avec un code non-portable, truffé de bugs et moins rapide. À mon avis les optimisations que tu peux faire sur ton code se trouvent à un autre niveau.
    +1

    GMP est très bien optimisée, pour pratiquement tous les processeurs (en tout cas, pour les Intel).
    Si les cons volaient, il ferait nuit à midi.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/12/2009, 14h34
  2. Utilisation des opérateurs 'shr' et 'and'
    Par cicinho dans le forum Langage
    Réponses: 26
    Dernier message: 18/09/2009, 18h28
  3. Réponses: 3
    Dernier message: 02/07/2007, 17h32
  4. [SQL] Utilisation des opérateurs SQL plutôt que PHP
    Par php_newbie dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/05/2006, 11h38

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