2010-07-23 14 views
7

ऐसा लगता है कि जीएमपी टाइप MPF (चल बिन्दु) का केवल स्ट्रिंग क्रमबद्धता प्रदान करता है:जीएमपी एमपीएफ प्रकार को क्रमबद्ध करने के लिए कैसे?

mpf_get_str(), mpf_class::get_str()

MPZ (पूर्णांक) प्रकार कच्चे बाइट्स के लिए एक अतिरिक्त इंटरफ़ेस है: mpz_out_raw()

http://gmplib.org/manual/Function-Index.html

क्या मुझे कुछ याद आ रही है? क्या कोई अन्य पुस्तकालय के बारे में जानता है जो जीएमपी फ्लोट को क्रमबद्ध कर सकता है? क्या किसी को एक और bignum lib के बारे में पता है जो मजबूत serialization प्रदान करता है?

संपादित करें: http://www.mpfr.org/mpfr-current/mpfr.html#Function-Index

उत्तर

6

यह एक लंबे समय पहले था, लेकिन मैं this की तरह कुछ कर रही समापन:

int mpf_out_raw (FILE *f, mpf_t X) { 
    int expt; mpz_t Z; size_t nz; 
    expt = X->_mp_exp; 
    fwrite(&expt, sizeof(int), 1, f); 
    nz = X->_mp_size; 
    Z->_mp_alloc = nz; 
    Z->_mp_size = nz; 
    Z->_mp_d  = X->_mp_d; 
    return (mpz_out_raw(f, Z) + sizeof(int)); 
} 

void mpf_inp_raw (FILE *f, mpf_t X) { 
    int expt; mpz_t Z; size_t nz; 
    mpz_init (Z); 
    fread(&expt, sizeof(int), 1, f); 
    mpz_inp_raw (Z, f); 
    mpf_set_z (X, Z); 
    X->_mp_exp = expt; 
    mpz_clear (Z); 
} 
1

आप जीएमपी तैरता में इनपुट और बाइट्स के उत्पादन कर सकते हैं: मैं MPFR के mpfr_t serializing, साथ ही, जो इसी तरह केवल स्ट्रिंग उत्पादन की पेशकश करने लगता है के साथ खुशी होगी। manual page on I/O of Floats सूचियों निम्नलिखित कार्य:

size_t mpf_out_str (FILE *stream, int base, size_t n_digits, mpf_t op) 
size_t mpf_inp_str (mpf_t rop, FILE *stream, int base) 

पुस्तिका के बारे में भ्रामक बात यह है कि यह सूचीबद्ध करता है विभिन्न वर्गों में विभिन्न प्रकार के लिए मैं/हे दिनचर्या है।

संपादित करें: मैं पूरी तरह से गलत था! ये फ़ंक्शन स्ट्रिंग रूपांतरण कर रहे हैं, कच्चे बाइट्स को आउटपुट नहीं करते हैं।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^