Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(658)

Unified Diff: runtime/lib/math_patch.dart

Issue 11316031: - Move MathNatives from dart:core to dart:math. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/lib/math.dart ('k') | runtime/lib/math_sources.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/lib/math_patch.dart
===================================================================
--- runtime/lib/math_patch.dart (revision 14972)
+++ runtime/lib/math_patch.dart (working copy)
@@ -3,19 +3,37 @@
// BSD-style license that can be found in the LICENSE file.
// A VM patch of the dart:math library.
-patch num pow(num x, num exponent) => MathNatives.pow(x, exponent);
-patch double atan2(num a, num b) => MathNatives.atan2(a, b);
-patch double sin(num x) => MathNatives.sin(x);
-patch double cos(num x) => MathNatives.cos(x);
-patch double tan(num x) => MathNatives.tan(x);
-patch double acos(num x) => MathNatives.acos(x);
-patch double asin(num x) => MathNatives.asin(x);
-patch double atan(num x) => MathNatives.atan(x);
-patch double sqrt(num x) => MathNatives.sqrt(x);
-patch double exp(num x) => MathNatives.exp(x);
-patch double log(num x) => MathNatives.log(x);
+patch num pow(num x, num exponent) {
+ if (exponent is int) {
+ return x.pow(exponent);
+ }
+ // Double.pow will call exponent.toDouble().
+ return x.toDouble().pow(exponent);
+}
+patch double atan2(num a, num b) => _atan2(a.toDouble(), b.toDouble());
+patch double sin(num value) => _sin(value.toDouble());
+patch double cos(num value) => _cos(value.toDouble());
+patch double tan(num value) => _tan(value.toDouble());
+patch double acos(num value) => _acos(value.toDouble());
+patch double asin(num value) => _asin(value.toDouble());
+patch double atan(num value) => _atan(value.toDouble());
+patch double sqrt(num value) => _sqrt(value.toDouble());
+patch double exp(num value) => _exp(value.toDouble());
+patch double log(num value) => _log(value.toDouble());
+double _atan2(double a, double b) native "Math_atan2";
+double _sin(double x) native "Math_sin";
+double _cos(double x) native "Math_cos";
+double _tan(double x) native "Math_tan";
+double _acos(double x) native "Math_acos";
+double _asin(double x) native "Math_asin";
+double _atan(double x) native "Math_atan";
+double _sqrt(double x) native "Math_sqrt";
+double _exp(double x) native "Math_exp";
+double _log(double x) native "Math_log";
+
+
// TODO(iposva): Handle patch methods within a patch class correctly.
patch class Random {
@@ -33,20 +51,24 @@
class _Random implements Random {
// Internal state of the random number generator.
- var _state_lo;
- var _state_hi;
+ var _state;
+ static const kSTATE_LO = 0;
+ static const kSTATE_HI = 1;
- _Random._internal(state)
- : _state_lo = (state & _MASK_32), _state_hi = (state >> 32);
+ _Random._internal(state) {
+ _state = new List(2);
+ _state[kSTATE_LO] = state & _MASK_32;
+ _state[kSTATE_HI] = state >> 32;
+ }
// The algorithm used here is Multiply with Carry (MWC) with a Base b = 2^32.
// http://en.wikipedia.org/wiki/Multiply-with-carry
// The constant A is selected from "Numerical Recipes 3rd Edition" p.348 B1.
int _nextInt32() {
- var state = ((_A * (_state_lo)) + _state_hi) & _MASK_64;
- _state_lo = state & _MASK_32;
- _state_hi = state >> 32;
- return _state_lo;
+ var state = ((_A * (_state[kSTATE_LO])) + _state[kSTATE_HI]) & _MASK_64;
+ _state[kSTATE_LO] = state & _MASK_32;
+ _state[kSTATE_HI] = state >> 32;
+ return _state[kSTATE_LO];
}
int nextInt(int max) {
« no previous file with comments | « runtime/lib/math.dart ('k') | runtime/lib/math_sources.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698