Почему (max (sin (/ 5 3)) (sqr 12)) в схеме /Dr. Ракетка (Beginning Student Language) оценена как неточная?

Я читал, как разрабатывать программы, и в упражнении 2.1.1 я должен:

Узнайте, есть ли у DrScheme операции для возведения в квадрат числа; для вычисления синуса угла; и для определения максимум двух чисел. - сек 2.2, из 2.1.1

Мой код:

(sin (/ 5 3))
(sqr 12)
(max (sin (/ 5 3)) (sqr 12))

И результат, когда я запустил программу:

#i0.9954079577517649
144
#i144.0

Я запутался в последнем выражении, где это максимум #i0.9954079577517649 а также 144, Не должен ли быть ответ 144 или же 144.0 вместо #i144.0?

1 ответ

Решение

Схема даст вам неточное число, если любой из входов в max (или другие операции в этом отношении) неточны.

В документе по стандартам R5RS об этом говорится в разделе 6.2.5 Numerical operations при обсуждении min а также max:

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

Теперь, возможно, нужно сделать 144 намного больше, чем 0.9954079577517649 но это будет зависеть от уровня неточности в этом последнем числе. Если погрешность составляет порядка миллиарда процентов, она может быть намного больше, чем 144:-)

Раздел 6.2.2 Exactness этого стандарта также имеет это:

Номера схем являются либо точными, либо неточными. Число является точным, если оно было записано как точная константа или было получено из точных чисел с использованием только точных операций.

Число является неточным, если оно было записано как неточная константа, если оно было получено с использованием неточных ингредиентов, или если оно было получено с использованием неточных операций.

Таким образом, неточность является заразным свойством ряда.

0.99Это число является неточным, потому что синус и многие другие тригонометрические функции по своей сути являются неточными операциями. Результат max неточно, потому что он имеет неточные данные.

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