Точные / неточные результаты, такие как sqrt и целочисленные корни

R6RS 3.4 Требования к реализации гласят

... Потенциально неточные операции, такие как sqrt, когда применяется к точным аргументам, должен по возможности давать точные ответы (например, квадратный корень из точных 4 должен быть точным 2).

(1) Означает ли это, что (* 0 2.2) должен производить 0.0 но никогда 0 в результате?

Однако это не обязательно....

(2) Означает ли это, что (/ 4 2) может также произвести 2.0 как результат?

(3) И есть ли реализации, которые обеспечивают целочисленные корни таким образом? Как я могу получить функциональность целочисленных квадратных корней в целом? (Вот индекс) (Пожалуйста, не рекурсивная / итеративная реализация)

1 ответ

R6RS имеет exact-integer-sqrt, Возвращает два значения: квадратный корень и остаток. Вы можете отказаться от второго значения, если хотите.

Реализации разрешено (но не обязательно) учитывать (* 0 x) (умножение чего-либо на точный ноль), чтобы быть точным нулем для любого х. Смотрите описание R6RS * процедура.

Другие вопросы по тегам