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

Side by Side Diff: vm/bigint_operations_test.cc

Issue 9481019: Changes to get rid of dependency on openssl in the dart VM. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years, 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « vm/bigint_operations.cc ('k') | vm/bigint_store.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "platform/assert.h" 5 #include "platform/assert.h"
6 #include "vm/bigint_operations.h" 6 #include "vm/bigint_operations.h"
7 #include "vm/object.h" 7 #include "vm/object.h"
8 #include "vm/object_store.h" 8 #include "vm/object_store.h"
9 #include "vm/unit_test.h" 9 #include "vm/unit_test.h"
10 10
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 big = BigintOperations::NewFromInt64(kValue64); 72 big = BigintOperations::NewFromInt64(kValue64);
73 big_test = BigintOperations::Multiply(big_test, big_test); 73 big_test = BigintOperations::Multiply(big_test, big_test);
74 EXPECT_EQ(0, BigintOperations::Compare(big, big_test)); 74 EXPECT_EQ(0, BigintOperations::Compare(big, big_test));
75 big = BigintOperations::NewFromInt64(-kValue64); 75 big = BigintOperations::NewFromInt64(-kValue64);
76 big_test = BigintOperations::Subtract( 76 big_test = BigintOperations::Subtract(
77 Bigint::Handle(BigintOperations::NewFromInt64(0)), big_test); 77 Bigint::Handle(BigintOperations::NewFromInt64(0)), big_test);
78 EXPECT_EQ(0, BigintOperations::Compare(big, big_test)); 78 EXPECT_EQ(0, BigintOperations::Compare(big, big_test));
79 79
80 const Bigint& one = Bigint::Handle(BigintOperations::NewFromInt64(1)); 80 const Bigint& one = Bigint::Handle(BigintOperations::NewFromInt64(1));
81 big = BigintOperations::NewFromInt64(kMinInt64); 81 big = BigintOperations::NewFromInt64(kMinInt64);
82 EXPECT(BigintOperations::FitsIntoInt64(big)); 82 EXPECT(BigintOperations::FitsIntoMint(big));
83 int64_t back = BigintOperations::ToInt64(big); 83 int64_t back = BigintOperations::ToMint(big);
84 EXPECT_EQ(kMinInt64, back); 84 EXPECT_EQ(kMinInt64, back);
85 85
86 big = BigintOperations::Subtract(big, one); 86 big = BigintOperations::Subtract(big, one);
87 EXPECT(!BigintOperations::FitsIntoInt64(big)); 87 EXPECT(!BigintOperations::FitsIntoMint(big));
88 88
89 big = BigintOperations::NewFromInt64(kMaxInt64); 89 big = BigintOperations::NewFromInt64(kMaxInt64);
90 EXPECT(BigintOperations::FitsIntoInt64(big)); 90 EXPECT(BigintOperations::FitsIntoMint(big));
91 back = BigintOperations::ToInt64(big); 91 back = BigintOperations::ToMint(big);
92 EXPECT_EQ(kMaxInt64, back); 92 EXPECT_EQ(kMaxInt64, back);
93 93
94 big = BigintOperations::Add(big, one); 94 big = BigintOperations::Add(big, one);
95 EXPECT(!BigintOperations::FitsIntoInt64(big)); 95 EXPECT(!BigintOperations::FitsIntoMint(big));
96 } 96 }
97 97
98 98
99 TEST_CASE(BigintUint64) { 99 TEST_CASE(BigintUint64) {
100 const Bigint& one = Bigint::Handle(BigintOperations::NewFromUint64(1)); 100 const Bigint& one = Bigint::Handle(BigintOperations::NewFromUint64(1));
101 EXPECT(BigintOperations::FitsIntoInt64(one)); 101 EXPECT(BigintOperations::FitsIntoMint(one));
102 EXPECT(BigintOperations::FitsIntoUint64(one)); 102 EXPECT(BigintOperations::FitsIntoUint64(one));
103 103
104 Bigint& big = Bigint::Handle(BigintOperations::NewFromUint64(kMaxUint64)); 104 Bigint& big = Bigint::Handle(BigintOperations::NewFromUint64(kMaxUint64));
105 EXPECT(!BigintOperations::FitsIntoInt64(big)); 105 EXPECT(!BigintOperations::FitsIntoMint(big));
106 EXPECT(BigintOperations::FitsIntoUint64(big)); 106 EXPECT(BigintOperations::FitsIntoUint64(big));
107 107
108 uint64_t back = BigintOperations::ToUint64(big); 108 uint64_t back = BigintOperations::ToUint64(big);
109 EXPECT_EQ(kMaxUint64, back); 109 EXPECT_EQ(kMaxUint64, back);
110 110
111 big = BigintOperations::Add(big, one); 111 big = BigintOperations::Add(big, one);
112 EXPECT(!BigintOperations::FitsIntoInt64(big)); 112 EXPECT(!BigintOperations::FitsIntoMint(big));
113 EXPECT(!BigintOperations::FitsIntoUint64(big)); 113 EXPECT(!BigintOperations::FitsIntoUint64(big));
114 114
115 big = BigintOperations::Subtract(big, one); 115 big = BigintOperations::Subtract(big, one);
116 EXPECT(!BigintOperations::FitsIntoInt64(big)); 116 EXPECT(!BigintOperations::FitsIntoMint(big));
117 EXPECT(BigintOperations::FitsIntoUint64(big)); 117 EXPECT(BigintOperations::FitsIntoUint64(big));
118 118
119 big = BigintOperations::ShiftRight(big, 1); 119 big = BigintOperations::ShiftRight(big, 1);
120 EXPECT(BigintOperations::FitsIntoInt64(big)); 120 EXPECT(BigintOperations::FitsIntoMint(big));
121 EXPECT(BigintOperations::FitsIntoUint64(big)); 121 EXPECT(BigintOperations::FitsIntoUint64(big));
122 } 122 }
123 123
124 124
125 TEST_CASE(BigintDouble) { 125 TEST_CASE(BigintDouble) {
126 Smi& smi = Smi::Handle(Smi::New(5)); 126 Smi& smi = Smi::Handle(Smi::New(5));
127 Bigint& bigint = Bigint::Handle(BigintOperations::NewFromSmi(smi)); 127 Bigint& bigint = Bigint::Handle(BigintOperations::NewFromSmi(smi));
128 Double& dbl = Double::Handle(BigintOperations::ToDouble(bigint)); 128 Double& dbl = Double::Handle(BigintOperations::ToDouble(bigint));
129 EXPECT_EQ(5.0, dbl.value()); 129 EXPECT_EQ(5.0, dbl.value());
130 130
(...skipping 10 matching lines...) Expand all
141 141
142 bigint = BigintOperations::NewFromCString("98765432109876"); 142 bigint = BigintOperations::NewFromCString("98765432109876");
143 dbl = BigintOperations::ToDouble(bigint); 143 dbl = BigintOperations::ToDouble(bigint);
144 EXPECT_EQ(9.8765432109876e+13, dbl.value()); 144 EXPECT_EQ(9.8765432109876e+13, dbl.value());
145 145
146 // Reduced precision. 146 // Reduced precision.
147 bigint = BigintOperations::NewFromCString( 147 bigint = BigintOperations::NewFromCString(
148 "9876543210987654321098765432109876543210"); 148 "9876543210987654321098765432109876543210");
149 dbl = BigintOperations::ToDouble(bigint); 149 dbl = BigintOperations::ToDouble(bigint);
150 // TODO(floitsch): Proper rounding if deemed necessary. 150 // TODO(floitsch): Proper rounding if deemed necessary.
151 EXPECT_EQ(9.8765432109876534e+39, dbl.value()); 151 EXPECT_EQ(9.8765432109876546e+39, dbl.value());
152 152
153 bigint = BigintOperations::NewFromCString( 153 bigint = BigintOperations::NewFromCString(
154 "12345678901234567890123456789012345678901234567890" 154 "12345678901234567890123456789012345678901234567890"
155 "12345678901234567890123456789012345678901234567890" 155 "12345678901234567890123456789012345678901234567890"
156 "12345678901234567890123456789012345678901234567890" 156 "12345678901234567890123456789012345678901234567890"
157 "12345678901234567890123456789012345678901234567890" 157 "12345678901234567890123456789012345678901234567890"
158 "12345678901234567890123456789012345678901234567890" 158 "12345678901234567890123456789012345678901234567890"
159 "12345678901234567890123456789012345678901234567890" 159 "12345678901234567890123456789012345678901234567890"
160 "12345678901234567890123456789012345678901234567890" 160 "12345678901234567890123456789012345678901234567890"
161 "12345678901234567890123456789012345678901234567890" 161 "12345678901234567890123456789012345678901234567890"
162 "12345678901234567890123456789012345678901234567890" 162 "12345678901234567890123456789012345678901234567890"
163 "12345678901234567890123456789012345678901234567890"); 163 "12345678901234567890123456789012345678901234567890");
164 dbl = BigintOperations::ToDouble(bigint); 164 dbl = BigintOperations::ToDouble(bigint);
165 EXPECT_EQ(1.0/zero, dbl.value()); 165 EXPECT_EQ(1.0/zero, dbl.value());
166 166
167 bigint = BigintOperations::NewFromCString("100000000000000000000000"); 167 bigint = BigintOperations::NewFromCString("100000000000000000000000");
168 dbl = BigintOperations::ToDouble(bigint); 168 dbl = BigintOperations::ToDouble(bigint);
169 EXPECT_EQ(1e+23, dbl.value()); 169 EXPECT_EQ(1e+23, dbl.value());
170 170
171 // TODO(floitsch): Proper rounding if deemed necessary.
172 #if 0
171 bigint = BigintOperations::NewFromCString("100000000000000000000001"); 173 bigint = BigintOperations::NewFromCString("100000000000000000000001");
172 dbl = BigintOperations::ToDouble(bigint); 174 dbl = BigintOperations::ToDouble(bigint);
173 // TODO(floitsch): Proper rounding if deemed necessary.
174 // EXPECT_EQ(1.0000000000000001e+23, dbl.value()); 175 // EXPECT_EQ(1.0000000000000001e+23, dbl.value());
175 EXPECT_EQ(9.9999999999999992e+22, dbl.value()); 176 EXPECT_EQ(9.9999999999999992e+22, dbl.value());
177 #endif
176 178
177 // Same but shifted 64 bits to the left. 179 // Same but shifted 64 bits to the left.
178 bigint = BigintOperations::NewFromCString( 180 bigint = BigintOperations::NewFromCString(
179 "1844674407370955161600000000000000000000000"); 181 "1844674407370955161600000000000000000000000");
180 dbl = BigintOperations::ToDouble(bigint); 182 dbl = BigintOperations::ToDouble(bigint);
181 EXPECT_EQ(1.844674407370955e+42, dbl.value()); 183 EXPECT_EQ(1.844674407370955e+42, dbl.value());
182 184
183 bigint = BigintOperations::NewFromCString( 185 bigint = BigintOperations::NewFromCString(
184 "1844674407370955161600000000000000000000001"); 186 "1844674407370955161600000000000000000000001");
185 dbl = BigintOperations::ToDouble(bigint); 187 dbl = BigintOperations::ToDouble(bigint);
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 const char* test = "-12345678901234567890"; 384 const char* test = "-12345678901234567890";
383 const char* out = "-0xAB54A98CEB1F0AD2"; 385 const char* out = "-0xAB54A98CEB1F0AD2";
384 const Bigint& bigint = Bigint::Handle( 386 const Bigint& bigint = Bigint::Handle(
385 BigintOperations::NewFromCString(test)); 387 BigintOperations::NewFromCString(test));
386 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator); 388 const char* str = BigintOperations::ToHexCString(bigint, &ZoneAllocator);
387 EXPECT_STREQ(out, str); 389 EXPECT_STREQ(out, str);
388 } 390 }
389 } 391 }
390 392
391 393
394 #if 0
395 // TODO(florian): Add a ToDecString method in bigint operations.
396 // Turn this test back on once it is implemented.
392 TEST_CASE(BigintDecStrings) { 397 TEST_CASE(BigintDecStrings) {
393 { 398 {
394 const Bigint& bigint = Bigint::Handle( 399 const Bigint& bigint = Bigint::Handle(
395 BigintOperations::NewFromCString("0x123")); 400 BigintOperations::NewFromCString("0x123"));
396 const char* str = BigintOperations::ToDecCString(bigint, &ZoneAllocator); 401 const char* str = BigintOperations::ToDecCString(bigint, &ZoneAllocator);
397 EXPECT_STREQ("291", str); 402 EXPECT_STREQ("291", str);
398 } 403 }
399 404
400 { 405 {
401 const Bigint& bigint = Bigint::Handle( 406 const Bigint& bigint = Bigint::Handle(
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 EXPECT_EQ(0x123, smi.Value()); 486 EXPECT_EQ(0x123, smi.Value());
482 } 487 }
483 488
484 { 489 {
485 const Bigint& bigint = Bigint::Handle( 490 const Bigint& bigint = Bigint::Handle(
486 BigintOperations::NewFromCString("0x000000123")); 491 BigintOperations::NewFromCString("0x000000123"));
487 const char* str = BigintOperations::ToDecCString(bigint, &ZoneAllocator); 492 const char* str = BigintOperations::ToDecCString(bigint, &ZoneAllocator);
488 EXPECT_STREQ("291", str); 493 EXPECT_STREQ("291", str);
489 } 494 }
490 } 495 }
496 #endif
491 497
492 498
493 static void TestBigintCompare(const char* a, const char* b, int compare) { 499 static void TestBigintCompare(const char* a, const char* b, int compare) {
494 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a)); 500 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a));
495 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b)); 501 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b));
496 int computed_compare = BigintOperations::Compare(bigint_a, bigint_b); 502 int computed_compare = BigintOperations::Compare(bigint_a, bigint_b);
497 int inverted_compare = BigintOperations::Compare(bigint_b, bigint_a); 503 int inverted_compare = BigintOperations::Compare(bigint_b, bigint_a);
498 if (compare == 0) { 504 if (compare == 0) {
499 EXPECT(computed_compare == 0); 505 EXPECT(computed_compare == 0);
500 EXPECT(inverted_compare == 0); 506 EXPECT(inverted_compare == 0);
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
901 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b)); 907 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b));
902 const Bigint& anded = 908 const Bigint& anded =
903 Bigint::Handle(BigintOperations::BitAnd(bigint_a, bigint_b)); 909 Bigint::Handle(BigintOperations::BitAnd(bigint_a, bigint_b));
904 const char* str_anded = BigintOperations::ToHexCString(anded, &ZoneAllocator); 910 const char* str_anded = BigintOperations::ToHexCString(anded, &ZoneAllocator);
905 EXPECT_STREQ(result, str_anded); 911 EXPECT_STREQ(result, str_anded);
906 const Bigint& anded2 = 912 const Bigint& anded2 =
907 Bigint::Handle(BigintOperations::BitAnd(bigint_b, bigint_a)); 913 Bigint::Handle(BigintOperations::BitAnd(bigint_b, bigint_a));
908 const char* str_anded2 = BigintOperations::ToHexCString(anded2, 914 const char* str_anded2 = BigintOperations::ToHexCString(anded2,
909 &ZoneAllocator); 915 &ZoneAllocator);
910 EXPECT_STREQ(result, str_anded2); 916 EXPECT_STREQ(result, str_anded2);
911 if (BigintOperations::FitsIntoSmi(bigint_a) && !bigint_a.IsNegative()) {
912 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint_a));
913 Smi& smi_anded = Smi::Handle();
914 smi_anded ^= BigintOperations::BitAndWithSmi(bigint_b, smi);
915 const Bigint& anded =
916 Bigint::Handle(BigintOperations::NewFromSmi(smi_anded));
917 const char* str_anded = BigintOperations::ToHexCString(anded,
918 &ZoneAllocator);
919 EXPECT_STREQ(result, str_anded);
920 }
921 if (BigintOperations::FitsIntoSmi(bigint_b) && !bigint_b.IsNegative()) {
922 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint_b));
923 Smi& smi_anded = Smi::Handle();
924 smi_anded ^= BigintOperations::BitAndWithSmi(bigint_a, smi);
925 const Bigint& anded =
926 Bigint::Handle(BigintOperations::NewFromSmi(smi_anded));
927 const char* str_anded = BigintOperations::ToHexCString(anded,
928 &ZoneAllocator);
929 EXPECT_STREQ(result, str_anded);
930 }
931 } 917 }
932 918
933 919
934 TEST_CASE(BigintBitAnd) { 920 TEST_CASE(BigintBitAnd) {
935 const char* zero = "0x0"; 921 const char* zero = "0x0";
936 const char* one = "0x1"; 922 const char* one = "0x1";
937 const char* minus_one = "-0x1"; 923 const char* minus_one = "-0x1";
938 924
939 TestBigintBitAnd(one, zero, zero); 925 TestBigintBitAnd(one, zero, zero);
940 TestBigintBitAnd(one, one, one); 926 TestBigintBitAnd(one, one, one);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1031 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b)); 1017 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b));
1032 const Bigint& anded = 1018 const Bigint& anded =
1033 Bigint::Handle(BigintOperations::BitOr(bigint_a, bigint_b)); 1019 Bigint::Handle(BigintOperations::BitOr(bigint_a, bigint_b));
1034 const char* str_anded = BigintOperations::ToHexCString(anded, &ZoneAllocator); 1020 const char* str_anded = BigintOperations::ToHexCString(anded, &ZoneAllocator);
1035 EXPECT_STREQ(result, str_anded); 1021 EXPECT_STREQ(result, str_anded);
1036 const Bigint& anded2 = 1022 const Bigint& anded2 =
1037 Bigint::Handle(BigintOperations::BitOr(bigint_b, bigint_a)); 1023 Bigint::Handle(BigintOperations::BitOr(bigint_b, bigint_a));
1038 const char* str_anded2 = BigintOperations::ToHexCString(anded2, 1024 const char* str_anded2 = BigintOperations::ToHexCString(anded2,
1039 &ZoneAllocator); 1025 &ZoneAllocator);
1040 EXPECT_STREQ(result, str_anded2); 1026 EXPECT_STREQ(result, str_anded2);
1041 if (BigintOperations::FitsIntoSmi(bigint_a) && bigint_a.IsNegative()) {
1042 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint_a));
1043 Smi& smi_ored = Smi::Handle();
1044 smi_ored ^= BigintOperations::BitOrWithSmi(bigint_b, smi);
1045 const Bigint& ored =
1046 Bigint::Handle(BigintOperations::NewFromSmi(smi_ored));
1047 const char* str_ored = BigintOperations::ToHexCString(ored, &ZoneAllocator);
1048 EXPECT_STREQ(result, str_ored);
1049 }
1050 if (BigintOperations::FitsIntoSmi(bigint_b) && bigint_b.IsNegative()) {
1051 const Smi& smi = Smi::Handle(BigintOperations::ToSmi(bigint_b));
1052 Smi& smi_ored = Smi::Handle();
1053 smi_ored ^= BigintOperations::BitOrWithSmi(bigint_a, smi);
1054 const Bigint& ored =
1055 Bigint::Handle(BigintOperations::NewFromSmi(smi_ored));
1056 const char* str_ored = BigintOperations::ToHexCString(ored, &ZoneAllocator);
1057 EXPECT_STREQ(result, str_ored);
1058 }
1059 } 1027 }
1060 1028
1061 1029
1062 TEST_CASE(BigintBitOr) { 1030 TEST_CASE(BigintBitOr) {
1063 const char* zero = "0x0"; 1031 const char* zero = "0x0";
1064 const char* one = "0x1"; 1032 const char* one = "0x1";
1065 const char* minus_one = "-0x1"; 1033 const char* minus_one = "-0x1";
1066 1034
1067 TestBigintBitOr(one, zero, one); 1035 TestBigintBitOr(one, zero, one);
1068 TestBigintBitOr(one, one, one); 1036 TestBigintBitOr(one, one, one);
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
1233 TestBigintBitNot("0x50000000", "-0x50000001"); 1201 TestBigintBitNot("0x50000000", "-0x50000001");
1234 TestBigintBitNot("0xFFFFFFF", "-0x10000000"); 1202 TestBigintBitNot("0xFFFFFFF", "-0x10000000");
1235 TestBigintBitNot("0xFFFFFFFF", "-0x100000000"); 1203 TestBigintBitNot("0xFFFFFFFF", "-0x100000000");
1236 TestBigintBitNot("0xFFFFFFFFFFFFFF", "-0x100000000000000"); 1204 TestBigintBitNot("0xFFFFFFFFFFFFFF", "-0x100000000000000");
1237 TestBigintBitNot("0xFFFFFFFFFFFFFFFF", "-0x10000000000000000"); 1205 TestBigintBitNot("0xFFFFFFFFFFFFFFFF", "-0x10000000000000000");
1238 TestBigintBitNot("0x1234567890ABCDEF012345678", 1206 TestBigintBitNot("0x1234567890ABCDEF012345678",
1239 "-0x1234567890ABCDEF012345679"); 1207 "-0x1234567890ABCDEF012345679");
1240 } 1208 }
1241 1209
1242 1210
1211 #if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64)
1243 static void TestBigintMultiplyDivide(const char* a, 1212 static void TestBigintMultiplyDivide(const char* a,
1244 const char* b, 1213 const char* b,
1245 const char* product) { 1214 const char* product) {
1246 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a)); 1215 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a));
1247 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b)); 1216 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b));
1248 const Bigint& computed_product = 1217 const Bigint& computed_product =
1249 Bigint::Handle(BigintOperations::Multiply(bigint_a, bigint_b)); 1218 Bigint::Handle(BigintOperations::Multiply(bigint_a, bigint_b));
1250 const char* str_product = BigintOperations::ToHexCString(computed_product, 1219 const char* str_product = BigintOperations::ToHexCString(computed_product,
1251 &ZoneAllocator); 1220 &ZoneAllocator);
1252 EXPECT_STREQ(product, str_product); 1221 EXPECT_STREQ(product, str_product);
(...skipping 771 matching lines...) Expand 10 before | Expand all | Expand 10 after
2024 "000000000000000000000000000000000000000000000000000000000000000000000000" 1993 "000000000000000000000000000000000000000000000000000000000000000000000000"
2025 "000000000000000000000000000000000000000000000000000000000000000000000000" 1994 "000000000000000000000000000000000000000000000000000000000000000000000000"
2026 "000000000000000000000000000000000000000000000000000000000000000000000000" 1995 "000000000000000000000000000000000000000000000000000000000000000000000000"
2027 "000000000000000000000000000000000000000000000000000000000000000000000000" 1996 "000000000000000000000000000000000000000000000000000000000000000000000000"
2028 "000000000000000000000000000000000000000000000000000000000000000000000000" 1997 "000000000000000000000000000000000000000000000000000000000000000000000000"
2029 "000000000000000000000000000000000000000000000000000000000000000000000000" 1998 "000000000000000000000000000000000000000000000000000000000000000000000000"
2030 "000000000000000000000000000000000000000000000000000000000000000000000000" 1999 "000000000000000000000000000000000000000000000000000000000000000000000000"
2031 "000000000000000000000000000000000000000000000000000000000000000000000000" 2000 "000000000000000000000000000000000000000000000000000000000000000000000000"
2032 "0000000000000000000000000000000000000000000000000000000001"); 2001 "0000000000000000000000000000000000000000000000000000000001");
2033 } 2002 }
2003 #endif
2034 2004
2035 2005
2036 static void TestBigintDivideRemainder(const char* a, 2006 static void TestBigintDivideRemainder(const char* a,
2037 const char* b, 2007 const char* b,
2038 const char* quotient, 2008 const char* quotient,
2039 const char* remainder) { 2009 const char* remainder) {
2040 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a)); 2010 const Bigint& bigint_a = Bigint::Handle(BigintOperations::NewFromCString(a));
2041 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b)); 2011 const Bigint& bigint_b = Bigint::Handle(BigintOperations::NewFromCString(b));
2042 const Bigint& computed_quotient = 2012 const Bigint& computed_quotient =
2043 Bigint::Handle(BigintOperations::Divide(bigint_a, bigint_b)); 2013 Bigint::Handle(BigintOperations::Divide(bigint_a, bigint_b));
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
2123 "123456789012345678901234567890123456789012345678901234567890123456789012" 2093 "123456789012345678901234567890123456789012345678901234567890123456789012"
2124 "345678901234567890123456789012345678901234567890123456789012345678901234" 2094 "345678901234567890123456789012345678901234567890123456789012345678901234"
2125 "567890123456789012345678901234567890123456789012345678901234567890123456" 2095 "567890123456789012345678901234567890123456789012345678901234567890123456"
2126 "789012345678901234567890123456789012345678901234567890123456789012345678" 2096 "789012345678901234567890123456789012345678901234567890123456789012345678"
2127 "90123456789012345678901234567890", 2097 "90123456789012345678901234567890",
2128 "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF01234567890ABCDEF" 2098 "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF01234567890ABCDEF"
2129 "01234567890ABCDEE"); 2099 "01234567890ABCDEE");
2130 } 2100 }
2131 2101
2132 } // namespace dart 2102 } // namespace dart
OLDNEW
« no previous file with comments | « vm/bigint_operations.cc ('k') | vm/bigint_store.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698