Код JavaScript для объекта Math - PullRequest
6 голосов
/ 26 марта 2012

Я занимаюсь разработкой переводчика, который преобразует исходный код JavaScript в целевой язык. Я пытаюсь реализовать объект Math JavaScript на целевом языке.

Если есть реализация JavaScript объекта Math на JavaScript, я могу использовать переводчик для получения эквивалентного кода на целевом языке.

Я ищу что-то вроде этого:

var Math = {
    pow: function(...) {...}
    exp: function(...) {...}
    /* other methods of Math */
}

Есть ли такая реализация, которая доступна? Это поможет мне избежать написания кода объекта Math вручную на целевом языке.

Ответы [ 3 ]

4 голосов
/ 26 марта 2012

Реализация math.js в V8 может дать вам некоторые рекомендации, но, конечно, она изобилует местозаполнителями для вызовов собственных функций. Вы должны были бы иметь возможность заменить такие вещи, как %Math_floor(x), на соответствующий вызов стандартной библиотеки на целевом языке.

http://code.google.com/p/v8/source/browse/branches/bleeding_edge/src/math.js?spec=svn10758&r=10758

3 голосов
/ 26 марта 2012

Это из официальной спецификации ecmascript-262 :

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

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

2 голосов
/ 30 сентября 2015

Объекты, которые вам нужны:

Math.exp(x) // Returns the value of Ex

Math.pow(x,y)   // Returns the value of x to the power of y

Помимо них, есть и другие, которые помогут вам в том, что вам понадобится Java.Это

Math.PI         // returns PI
Math.random();              // returns a random number
Math.max(0, 150, 30, 20, -8, -200);      // returns 150
Math.min(0, 150, 30, 20, -8, -200);      // returns -200
Math.round(4.7);            // returns 5
Math.round(4.4);            // returns 4
...