Apakah gmp malas kanonikalisasi dengan mpq_t?

Dengan alasan gmp, apakah saya memiliki kewajiban untuk mencatat panggilan saya ke canonicalize() (yang bisa berdampak mahal dari segi kinerja)? Apakah gmp mengetahui bahwa rasionalnya tidak diubah sejak panggilan terakhir ke canonicalize() dan hanya akan kembali jika saya mencoba kanonikalisasi?

Saya tidak dapat menemukan jawabannya di dokumentasi, dan mungkin seseorang sudah mencari sumbernya.


person rwst    schedule 25.11.2015    source sumber
comment
Itu tidak menjawab pertanyaannya, bukan? Masih belum jelas apakah dua panggilan berurutan ke canonicalize() menghasilkan penggunaan sumber daya yang sama.   -  person rwst    schedule 25.11.2015
comment
Sumber dapat dilihat di sini: gmplib.org/repo/gmp/file/tip /mpq/canonicalize.c . Tidak ada jalan pintas.   -  person Marc Glisse    schedule 26.11.2015


Jawaban (1)


Kemungkinan besar pecahan tersebut tidak akan kembali begitu saja, karena mpq_t tidak berisi informasi apa pun apakah pecahan sudah dalam bentuk kanonik atau belum. Setidaknya dokumentasi GMP tidak menyebutkannya pada 16.2 Rational Internals:

Variabel mpq_t merepresentasikan rasional menggunakan pembilang dan penyebut mpz_t (lihat Integer Internal).

Dalam praktiknya, kemungkinan besar akan memanggil mpz_gcd() (atau setara), untuk memeriksa apakah pembilang dan penyebutnya koprima atau tidak.

person Grzegorz Szpetkowski    schedule 25.11.2015