2017-08-06 5 views
0

Ich habe einige Berechnungen in Racket laufen, die ich noch nie zuvor verwendet haben.in Racket

Wie kann ich es zwingen, etw in einzelnen oder die Hälfte zu berechnen (wenn es hat diese) Präzision schwimmt?

habe ich herausgefunden, wie es in großen Schwimmern berechnen zu machen:

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

Ich weiß, dass die Abkürzung für Schwimmer (double precision)fl ist. Ich kann jedoch die richtige Abkürzung für einzelne Schwimmer nicht herausfinden.

Antwort

1

Das 'bigfloat' Paket, auf das Sie sich beziehen, sind für beliebige Gleitkommazahlen. Es ist sehr unwahrscheinlich, dass Sie diese wollen, wie Sie betonen.

Es klingt wie Sie nach Standard IEEE 64-Bit-Gleitkommazahlen. Racket verwendet diese standardmäßig für alle ungenauen Arithmetik.

So zum Beispiel:

(/ 1 pi) 

produziert

0.3183098861837907 

Eine mögliche Tripper-upper ist, dass, wenn zwei rationalen Zahlen teilt, wird wieder das Ergebnis eine rationale Zahl sein. So zum Beispiel

(/ 12347728 298340194) 

produziert

6173864/149170097 

Sie ungenaue Arithmetik zwingen können entweder durch exact->inexact mit (immer funktioniert), oder indem sichergestellt wird, dass Ihre Literale mit Kommastellen enden (es sei denn, Sie verwenden die HTML-Sprachen).

So zum Beispiel:

(/ 12347728.0 298340194.0) 

produziert

0.04138808061511148 

Lassen Sie mich wissen, ob dies Ihre Frage nicht beantworten ....

+0

Ihnen für Ihre Antwort danken. Gibt es jedoch eine Möglichkeit, Schläger in 32-Bit- oder 16-Bit-Fließkommazahlen zu berechnen? – UserAnonymous

+0

Sie können 32-Bit-Fließkommazahlen mit 'real-> single-flonum' erzeugen oder sie direkt als z. 3.243f0 oder 3f-2. Ich glaube nicht, dass es eine Unterstützung für 16-Bit-Floats gibt. Sie wissen wahrscheinlich, worauf Sie hinauswollen, aber auf einer modernen Maschine gibt es nicht viele Situationen, in denen 32- oder 16-Bit-Floats eine gute Idee sind. Selbst in Audioanwendungen scheinen 64-Bit-Doppelgänger die Oberhand zu gewinnen. Hoffe das hilft! –

+0

@JohnClements Floating Points mit niedrigerer Genauigkeit kommen in maschinellen Lernanwendungen wieder zum Vorschein. https://arxiv.org/pdf/1412.7024.pdf, Ordinary maschinelles Lernen der Regel mit einfacher Genauigkeit (32 Bit) eher als das Doppelte, da GPUs mit einfacher Genauigkeit Berechnungen durchführt. –