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

Unified Diff: runtime/lib/double.dart

Issue 2005723004: Fraction class prototype and test (not to be committed). (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: work in progress Created 4 years, 5 months 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/double.cc ('k') | runtime/lib/fraction.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/lib/double.dart
diff --git a/runtime/lib/double.dart b/runtime/lib/double.dart
index ade4b9317bcd75c3c5150c78372a803f8630516d..fd13bc42f1f4fca008a5269f3e2b57c7b6deb50a 100644
--- a/runtime/lib/double.dart
+++ b/runtime/lib/double.dart
@@ -6,6 +6,12 @@ class _Double implements double {
factory _Double.fromInteger(int value)
native "Double_doubleFromInteger";
+ factory _Double.fromFraction(fraction value) {
+ return _DoubleFromFraction(value._numerator, value._denominator);
+ }
+ static _Double _DoubleFromFraction(int numerator, int denominator)
+ native "Double_doubleFromFraction";
+
Type get runtimeType => double;
// TODO: Make a stared static method for hashCode and _identityHashCode
@@ -57,6 +63,7 @@ class _Double implements double {
}
bool _equal(double other) native "Double_equal";
bool _equalToInteger(int other) native "Double_equalToInteger";
+ bool _equalToFraction(fraction other) => _equal(other.toDouble());
bool operator <(num other) {
return other > this;
}
@@ -91,6 +98,31 @@ class _Double implements double {
bool _greaterThanFromInteger(int other)
native "Double_greaterThanFromInteger";
+ double _addFromFraction(fraction other) {
+ return new _Double.fromFraction(other)._add(this);
+ }
+ double _subFromFraction(fraction other) {
+ return new _Double.fromFraction(other)._sub(this);
+ }
+ double _mulFromFraction(fraction other) {
+ return new _Double.fromFraction(other)._mul(this);
+ }
+ double _divFromFraction(fraction other) {
+ return new _Double.fromFraction(other)._div(this);
+ }
+ int _truncDivFromFraction(fraction other) {
+ return new _Double.fromFraction(other)._trunc_div(this);
+ }
+ double _moduloFromFraction(fraction other) {
+ return new _Double.fromFraction(other)._modulo(this);
+ }
+ double _remainderFromFraction(fraction other) {
+ return new _Double.fromFraction(other)._remainder(this);
+ }
+ bool _greaterThanFromFraction(fraction other) {
+ return new _Double.fromFraction(other)._greaterThan(this);
+ }
+
bool get isNegative native "Double_getIsNegative";
bool get isInfinite native "Double_getIsInfinite";
bool get isNaN native "Double_getIsNaN";
@@ -136,9 +168,21 @@ class _Double implements double {
}
int toInt() native "Double_toInt";
- num _toBigintOrDouble() { return this; }
+ num _toBigintIfInteger() { return this; }
+ num _toDoubleOrFraction() { return this; }
double toDouble() { return this; }
+ fraction toFraction() {
+ var fract = new List(2);
+ _DoubleToFraction(fract);
+ return new _Fraction(fract[0], fract[1]);
+ }
+ void _DoubleToFraction(List fract) native "Double_toFraction";
+
+ fraction toPercent() {
+ return new _Fraction((this*100).toInt(), 100);
+ }
+
static const int CACHE_SIZE_LOG2 = 3;
static const int CACHE_LENGTH = 1 << (CACHE_SIZE_LOG2 + 1);
static const int CACHE_MASK = CACHE_LENGTH - 1;
« no previous file with comments | « runtime/lib/double.cc ('k') | runtime/lib/fraction.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698