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

Side by Side Diff: sdk/lib/core/int.dart

Issue 1209523002: Make modInv throw Exception on incompatible operands. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Merge to head, make tests run. Created 5 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 unified diff | Download patch
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 part of dart.core; 5 part of dart.core;
6 6
7 /** 7 /**
8 * An arbitrarily large integer. 8 * An arbitrarily large integer.
9 * 9 *
10 * **Note:** When compiling to JavaScript, integers are 10 * **Note:** When compiling to JavaScript, integers are
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 /** 81 /**
82 * Shift the bits of this integer to the left by [shiftAmount]. 82 * Shift the bits of this integer to the left by [shiftAmount].
83 * 83 *
84 * Shifting to the left makes the number larger, effectively multiplying 84 * Shifting to the left makes the number larger, effectively multiplying
85 * the number by `pow(2, shiftIndex)`. 85 * the number by `pow(2, shiftIndex)`.
86 * 86 *
87 * There is no limit on the size of the result. It may be relevant to 87 * There is no limit on the size of the result. It may be relevant to
88 * limit intermediate values by using the "and" operator with a suitable 88 * limit intermediate values by using the "and" operator with a suitable
89 * mask. 89 * mask.
90 * 90 *
91 * It is an error of [shiftAmount] is negative. 91 * It is an error if [shiftAmount] is negative.
92 */ 92 */
93 int operator <<(int shiftAmount); 93 int operator <<(int shiftAmount);
94 94
95 /** 95 /**
96 * Shift the bits of this integer to the right by [shiftAmount]. 96 * Shift the bits of this integer to the right by [shiftAmount].
97 * 97 *
98 * Shifting to the right makes the number smaller and drops the least 98 * Shifting to the right makes the number smaller and drops the least
99 * significant bits, effectively doing an integer division by 99 * significant bits, effectively doing an integer division by
100 *`pow(2, shiftIndex)`. 100 *`pow(2, shiftIndex)`.
101 * 101 *
102 * It is an error of [shiftAmount] is negative. 102 * It is an error if [shiftAmount] is negative.
103 */ 103 */
104 int operator >>(int shiftAmount); 104 int operator >>(int shiftAmount);
105 105
106 /** 106 /**
107 * Returns this integer to the power of [exponent] modulo [modulus]. 107 * Returns this integer to the power of [exponent] modulo [modulus].
108 * 108 *
109 * The [exponent] must be non-negative and [modulus] must be 109 * The [exponent] must be non-negative and [modulus] must be
110 * positive. 110 * positive.
111 */ 111 */
112 int modPow(int exponent, int modulus); 112 int modPow(int exponent, int modulus);
113 113
114 /** 114 /**
115 * Returns the modular multiplicative inverse of this integer 115 * Returns the modular multiplicative inverse of this integer
116 * modulo [modulus]. 116 * modulo [modulus].
117 * 117 *
118 * The [modulus] must be positive. 118 * The [modulus] must be positive.
119 * Throws if no modular inverse exists. 119 *
120 * It is an error if no modular inverse exists.
120 */ 121 */
121 int modInverse(int modulus); 122 int modInverse(int modulus);
122 123
123 /** 124 /**
124 * Returns the greatest common divisor of the absolute value of 125 * Returns the greatest common divisor of the absolute value of
125 * this integer and the absolute value of [other]. 126 * this integer and the absolute value of [other].
126 * 127 *
127 * Both this and [other] must be non-zero. 128 * Both this and [other] must be non-zero.
128 */ 129 */
129 int gcd(int other); 130 int gcd(int other);
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 * The returned string is parsable by [parse]. 260 * The returned string is parsable by [parse].
260 * For any `int` [:i:], it is guaranteed that 261 * For any `int` [:i:], it is guaranteed that
261 * [:i == int.parse(i.toString()):]. 262 * [:i == int.parse(i.toString()):].
262 */ 263 */
263 String toString(); 264 String toString();
264 265
265 /** 266 /**
266 * Converts [this] to a string representation in the given [radix]. 267 * Converts [this] to a string representation in the given [radix].
267 * 268 *
268 * In the string representation, lower-case letters are used for digits above 269 * In the string representation, lower-case letters are used for digits above
269 * '9'. 270 * '9', with 'a' being 10 an 'z' being 35.
270 * 271 *
271 * The [radix] argument must be an integer in the range 2 to 36. 272 * The [radix] argument must be an integer in the range 2 to 36.
272 */ 273 */
273 String toRadixString(int radix); 274 String toRadixString(int radix);
274 275
275 /** 276 /**
276 * Parse [source] as an integer literal and return its value. 277 * Parse [source] as a, possibly signed, integer literal and return its value.
277 *
278 * The [radix] must be in the range 2..36. The digits used are
279 * first the decimal digits 0..9, and then the letters 'a'..'z'.
280 * Accepts capital letters as well.
281 *
282 * If no [radix] is given then it defaults to 10, unless the string starts
283 * with "0x", "-0x" or "+0x", in which case the radix is set to 16 and the
284 * "0x" is ignored.
285 * 278 *
286 * The [source] must be a non-empty sequence of base-[radix] digits, 279 * The [source] must be a non-empty sequence of base-[radix] digits,
287 * optionally prefixed with a minus or plus sign ('-' or '+'). 280 * optionally prefixed with a minus or plus sign ('-' or '+').
288 * 281 *
289 * It must always be the case for an int [:n:] and radix [:r:] that 282 * The [radix] must be in the range 2..36. The digits used are
283 * first the decimal digits 0..9, and then the letters 'a'..'z' with
284 * values 10 through 35. Also accepts upper-case letters with the same
285 * values as the lower-case ones.
286 *
287 * If no [radix] is given then it defaults to 10. In this case, the [source]
288 * digits may also start with `0x`, in which case the number is interpreted
289 * as a hexadecimal literal, which effectively means that the `0x` is ignored
290 * and the radix is instead set to 16.
291 *
292 * For any int [:n:] and radix [:r:], it is guaranteed that
290 * [:n == int.parse(n.toRadixString(r), radix: r):]. 293 * [:n == int.parse(n.toRadixString(r), radix: r):].
291 * 294 *
292 * If the [source] is not a valid integer literal, optionally prefixed by a 295 * If the [source] is not a valid integer literal, optionally prefixed by a
293 * sign, the [onError] is called with the [source] as argument, and its return 296 * sign, the [onError] is called with the [source] as argument, and its return
294 * value is used instead. If no [onError] is provided, a [FormatException] 297 * value is used instead. If no [onError] is provided, a [FormatException]
295 * is thrown. 298 * is thrown.
296 * 299 *
297 * The [onError] handler can be chosen to return `null`. This is preferable 300 * The [onError] handler can be chosen to return `null`. This is preferable
298 * to to throwing and then immediately catching the [FormatException]. 301 * to to throwing and then immediately catching the [FormatException].
299 * Example: 302 * Example:
300 * 303 *
301 * var value = int.parse(text, onError: (source) => null); 304 * var value = int.parse(text, onError: (source) => null);
302 * if (value == null) ... handle the problem 305 * if (value == null) ... handle the problem
303 * 306 *
304 * The [onError] function is only invoked if [source] is a [String]. It is 307 * The [onError] function is only invoked if [source] is a [String]. It is
305 * not invoked if the [source] is, for example, `null`. 308 * not invoked if the [source] is, for example, `null`.
306 */ 309 */
307 external static int parse(String source, 310 external static int parse(String source,
308 { int radix, 311 { int radix,
309 int onError(String source) }); 312 int onError(String source) });
310 } 313 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698