Точные / неточные результаты, такие как 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 *
процедура.