2017-08-06 4 views
0

Je dois exécuter des calculs dans Racket que je n'ai jamais utilisé auparavant.Définir une variable de précision simple dans la raquette

Comment puis-je le forcer à calculer sth dans un seul ou demi (s'il en existe) des flotteurs de précision?

je me suis dit comment faire calculer dans les grands flotteurs:

(bf/ (bf 1) (bf 7)) 

Je sais qui est fl l'abréviation de flotteurs (double précision). Cependant, je ne peux pas trouver la bonne abréviation pour les flotteurs simples.

Répondre

1

Le paquet 'bigfloat' auquel vous faites référence est pour arbitraire nombres à virgule flottante de précision. Vous avez très peu de chances de vouloir cela, comme vous le dites.

Il semble que vous recherchiez des nombres à virgule flottante IEEE 64 bits standard. Racket les utilise par défaut, pour toutes les arithmétiques inexactes.

Ainsi, par exemple:

(/ 1 pi) 

produit

0.3183098861837907 

Un possible Tripper-supérieure est que lors de la division deux nombres rationnels, le résultat sera à nouveau un nombre rationnel. Ainsi, par exemple,

(/ 12347728 298340194) 

produit

6173864/149170097 

Vous pouvez forcer l'arithmétique en utilisant soit inexacte exact->inexact (fonctionne toujours), ou en veillant à ce que vos littéraux se terminent par des décimales (sauf si vous utilisez la langues htdp).

Ainsi, par exemple:

(/ 12347728.0 298340194.0) 

produit

0.04138808061511148 

Laissez-moi savoir si cela ne répond pas à votre question ....

+0

Merci pour votre réponse. Existe-t-il un moyen de forcer la raquette à calculer en nombres flottants 32 bits ou 16 bits? – UserAnonymous

+0

Vous pouvez générer des flottants 32 bits à l'aide de 'real-> single-flonum', ou les spécifier directement, par ex. 3.243f0 ou 3f-2. Je ne crois pas qu'il y ait de support dans la raquette pour les flotteurs de 16 bits. Vous savez probablement dans quoi vous vous embarquez, mais sur une machine moderne, il n'y a pas beaucoup de situations où les flotteurs de 32 ou 16 bits sont une bonne idée. Même dans les applications audio, les doubles 64 bits semblent prendre le dessus. J'espère que cela t'aides! –

+0

@JohnClements Les points flottants de faible précision commencent à réapparaître dans les applications d'apprentissage automatique. https://arxiv.org/pdf/1412.7024.pdf, Apprentissage automatique ordinaire typiquement simple (32 bits) plutôt que double car les GPU effectuent des calculs de précision simple. –