Articles of mathématiques

Calculer 64 bits élevés d’un produit 64×64 int en C

Je voudrais que ma fonction C calcule efficacement les 64 bits élevés du produit de deux ints signés 64 bits. Je sais comment faire cela en assemblage x86-64, avec imulq et en tirant le résultat de% rdx. Mais je ne sais pas comment écrire cela en C, encore moins persuader le compilateur de le faire […]

C – Comment implémenter la structure de données Set?

Existe-t-il un moyen délicat d’implémenter une structure de données définie (une collection de valeurs uniques) en C? Tous les éléments d’un ensemble seront du même type et la mémoire RAM est énorme. Comme je le sais, pour les entiers, cela peut être fait très rapidement avec des tableaux indexés par valeur. Mais j’aimerais avoir un […]

Comparaison de la vitesse de Haskell et de C pour le calcul des nombres premiers

J’ai initialement écrit cette méthode (force brute et inefficace) de calcul des nombres premiers dans le but de m’assurer qu’il n’y avait pas de différence de vitesse entre l’utilisation du “si-alors-autre” et celle des gardes en Haskell (et il n’y a pas de différence!). Mais ensuite j’ai décidé d’écrire un programme en C pour comparer […]

Fractions égyptiennes en C

Les anciens Égyptiens n’utilisaient que des fractions de la forme 1/n ; toute autre fraction devait donc être représentée par la sum de ces fractions unitaires et, de plus, toutes les fractions unitaires étaient différentes! Quelle est la bonne méthode pour transformer une fraction en une fraction égyptienne (moins les sums sont meilleures) en C […]

trouver efficacement des points iso-cost sur un réseau 3d avec un coût minimum de points

J’ai une grid 3D où à chaque point (x, y, z) de la grid est associée une valeur de coût . Le coût d’un point (x, y, z) n’est pas connu à l’avance . Pour connaître le coût, nous devons faire une requête complexe qui coûte vraiment cher. Une chose que nous soaps à propos […]

Optimisez-moi! (C, performance) – suivi de la question du bricolage

Grâce à quelques utilisateurs très utiles de stackOverflow chez Bit twiddling: quel bit est activé ? , J’ai construit ma fonction (posté à la fin de la question). Toutes les suggestions – même de petites suggestions – seraient appréciées. J’espère que cela améliorera mon code, mais au moins, cela devrait m’apprendre quelque chose. 🙂 Vue […]

En C, est-il garanti que 1/2 == 0?

Est-il garanti en C que 1/2 == 0 ? J’ai besoin de ça pour une implémentation de la recherche binary: /* * len is the array length * ary is an array of ptrs * f is a compare function * found is a ptr to the found element in the array * both i […]

Multiplication d’entiers signés et non signés

En calcul en virgule fixe, j’utilise beaucoup de signaux 16 bits et j’effectue une multiplication avec des résultats intermédiaires 32 bits. Par exemple: int16_t a = 16384; //-1.0q14 or 1.0*2^14 int16_t b = -24576; // -1.4q14 or 1.4*2^14 int16_t c; // result will be q14 c = (int16_t)(((int32_t)a * (int32_t)b)>>14); Disons que a est un […]

Editer le script pour la saisie utilisateur plutôt que la saisie interne

J’ai un script simple et cela fonctionne bien. Ma question est la suivante: comment puis-je afficher mes résultats dans une fraction simplifiée réduite? De plus, à ce stade, je définis moi-même les valeurs, existe-t-il un moyen de demander au script de demander à l’utilisateur de saisir le numérateur et le dénominateur des différentes fractions utilisées? […]

Coordonnées des points divisant le cercle en n moitiés égales dans Pebble

J’essaie de diviser le cercle en n parties égales à l’aide de lignes droites. L’idée est d’obtenir les coordonnées des points finaux sur la circonférence du cercle, puis de tracer la ligne. pour trouver des coodrinates j’utilise le code suivant: static void getPoints(int x0,int y0,int r) { double angle = 0; double angleToRadian = 0; […]