Реализует ли javascript математические функции с использованием своих собственных алгоритмов или передает их процессору / процессору? - PullRequest
1 голос
/ 20 ноября 2011

ActionScript3 заявляет следующее:

Примечание. Математические функции acos, asin, atan, atan2, cos, exp, log, pow, sin и sqrt могут приводить к немного различным значениям в зависимости оталгоритмы, используемые процессором или операционной системой.Среда выполнения флэш-памяти вызывает ЦП (или операционную систему, если ЦП не поддерживает вычисления с плавающей запятой) при выполнении вычислений для перечисленных функций, и результаты показывают небольшие различия в зависимости от используемого ЦП или операционной системы.

Мое веб-приложение работает с очень большими и маленькими числами, которые, как я подозреваю, могут различаться в зависимости от того, на какой машине он работает (особенно на мобильных устройствах, процессоры которых не так мощны, как настольные машины).У меня вопрос, является ли это поведение функцией языка?

То есть я предполагаю, что некоторые языки реализуют свои собственные алгоритмы для вышеуказанных функций, и поэтому могут быть более согласованными (за исключениемразличия в ошибках округления, вызванные выбором процессора / ЦП, которые существуют для всех языков).

Кто-нибудь знает, есть ли у Javascript свои собственные алгоритмы, или он передает их на процессор / процессор, как ActionScript?

1 Ответ

5 голосов
/ 20 ноября 2011

Выдержка из ECMAScript 5 стандарта , раздел 15.8.2

ПРИМЕЧАНИЕ Поведение функций acos, asin, atan, atan2, cos, exp, log, powЗдесь sin, sqrt и tan точно не указаны, за исключением того, что требуются конкретные результаты для определенных значений аргументов, представляющих интересующие нас граничные случаи.Для других значений аргументов эти функции предназначены для вычисления приближений к результатам знакомых математических функций, но допускается некоторая широта в выборе алгоритмов аппроксимации.Общее намерение состоит в том, чтобы разработчик мог использовать ту же математическую библиотеку для ECMAScript на данной аппаратной платформе, которая доступна программистам на этой платформе.

Хотя выбор алгоритмов оставлен на усмотрение реализации,рекомендуется (но не указано в этом стандарте), чтобы реализации использовали алгоритмы аппроксимации для арифметики IEEE 754, содержащейся в свободно распространяемой математической библиотеке fdlibm от Sun Microsystems (http://www.netlib.org/fdlibm)

) По сути, это означает, что каждая реализация (включая каждый браузер) может решить, как они хотят справиться с этими функциями. В соответствии с рекомендацией, я предполагаю, что подавляющее большинство использует fdlibm, хотя проверка будет оставлена ​​в качестве упражнения для читателя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...