Код JavaScript для объекта Math
Я занимаюсь разработкой переводчика, который конвертирует исходный код JavaScript в целевой язык. Я пытаюсь реализовать объект Math JavaScript на целевом языке.
Если есть реализация JavaScript объекта Math на JavaScript, я могу использовать переводчик для получения эквивалентного кода на целевом языке.
Я ищу что-то вроде этого:
var Math = {
pow: function(...) {...}
exp: function(...) {...}
/* other methods of Math */
}
Есть ли такая реализация, которая доступна? Это поможет мне избежать написания кода объекта Math вручную на целевом языке.
3 ответа
Реализация math.js в V8 может дать вам некоторые рекомендации, но, конечно, она изобилует местозаполнителями для вызовов собственных функций. Вы должны быть в состоянии заменить такие вещи, как %Math_floor(x)
с соответствующим вызовом функции стандартной библиотеки на целевом языке.
http://code.google.com/p/v8/source/browse/branches/bleeding_edge/src/math.js?spec=svn10758&r=10758
Это из официальной спецификации 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).
Объекты, которые вам нужны:
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