Делает ли gmp ленивую канонизацию с помощью mpq_t?

Обязан ли я вести бухгалтерский учет вызовов canonicalize() с рациональными принципами gmp (что может быть дорогостоящим с точки зрения производительности)? Знает ли gmp, что рациональное значение не изменилось с момента последнего вызова canonicalize() и просто вернется, если я попытаюсь канонизировать?

Я не могу найти ответ в документации, и, возможно, кто-то уже заглянул в источник для этого.


person rwst    schedule 25.11.2015    source источник
comment
Это не отвечает на вопрос, не так ли? До сих пор неясно, приводят ли два последовательных вызова canonicalize() к одинаковому использованию ресурсов.   -  person rwst    schedule 25.11.2015
comment
Источник виден здесь: gmplib.org/repo/gmp/file/tip /mpq/canonicalize.c . Нет ярлыка.   -  person Marc Glisse    schedule 26.11.2015


Ответы (1)


Скорее всего, он просто не вернется, поскольку mpq_t не содержит никакой информации о том, находится ли дробь уже в канонической форме или нет. По крайней мере, документация GMP не упоминает об этом в 16.2 Rational Internals:

mpq_t переменные представляют рациональные числа с использованием mpz_t числителя и знаменателя (см. Integer Internals).

На практике он, скорее всего, вызовет mpz_gcd() (или эквивалент), чтобы проверить, являются ли числитель и знаменатель взаимно простыми или нет.

person Grzegorz Szpetkowski    schedule 25.11.2015