Nach papers and source code for double-double arithmetic seit einiger Zeit kann ich immer noch nicht herausfinden, wie genau eine dd_real (definiert als struct dd_real { double x[2];...}
) Zahl in zwei verdoppelt wird. Angenommen, ich initialisiere es mit einer Zeichenfolge, dd_real pi = "3.14159265358979323846264338327950";
was wird pi.x[0]
und pi.xi[1]
sein? Ich muss es verstehen und dann eine hoffentlich kleine Python-Funktion schreiben, die das tut.Double-Double-Precision Fließkomma als Summe aus zwei Doppel
Der Grund, warum ich nicht nur in die QD-Bibliothek aufrufen möchte, ist, dass ich die korrekte Aufteilung in Python lieber neu implementieren möchte, damit ich meine 35-stelligen Präzisionskonstanten (als Strings angegeben) als double2
an CUDA sende Code, wo es von der GQD library als Doppel-Doppel Reals behandelt werden wird - die einzige Bibliothek, scheint es, mit erweiterten Präzisions-Cauclations in CUDA umzugehen. Das schließt mpmath leider auch auf Python-Seite aus.
Es wäre einfacher, wenn Sie ein Beispiel im binären oder hexadezimalen Beispiel nehmen würden. Selbst wenn jemand Ihre Frage buchstäblich beantwortet (indem er Ihnen die Werte von 'pi.x [0]' und 'pi.x [1]' sagt), werden Sie keinen Sinn für die Aufteilung in Bezug auf die ursprünglicher Dezimalwert –
Beachten Sie auch, dass "double double" in keiner Weise "willkürliche Präzision" ist. Es ist nur "mehr Präzision, dass IEEE 754 doppelte Präzision, unter Ausnutzung der verfügbaren Double Precision Hardware". –