%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
// Copyright 2021 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "src/bigint/div-helpers.h" #include "src/bigint/bigint-internal.h" namespace v8 { namespace bigint { namespace { void Copy(RWDigits Z, Digits X) { if (Z == X) return; int i = 0; for (; i < X.len(); i++) Z[i] = X[i]; for (; i < Z.len(); i++) Z[i] = 0; } } // namespace // Z := X << shift // Z and X may alias for an in-place shift. void LeftShift(RWDigits Z, Digits X, int shift) { DCHECK(shift >= 0); // NOLINT(readability/check) DCHECK(shift < kDigitBits); DCHECK(Z.len() >= X.len()); if (shift == 0) return Copy(Z, X); digit_t carry = 0; int i = 0; for (; i < X.len(); i++) { digit_t d = X[i]; Z[i] = (d << shift) | carry; carry = d >> (kDigitBits - shift); } if (i < Z.len()) { Z[i++] = carry; } else { DCHECK(carry == 0); // NOLINT(readability/check) } for (; i < Z.len(); i++) Z[i] = 0; } // Z := X >> shift // Z and X may alias for an in-place shift. void RightShift(RWDigits Z, Digits X, int shift) { DCHECK(shift >= 0); // NOLINT(readability/check) DCHECK(shift < kDigitBits); X.Normalize(); DCHECK(Z.len() >= X.len()); if (shift == 0) return Copy(Z, X); int i = 0; if (X.len() > 0) { digit_t carry = X[0] >> shift; int last = X.len() - 1; for (; i < last; i++) { digit_t d = X[i + 1]; Z[i] = (d << (kDigitBits - shift)) | carry; carry = d >> shift; } Z[i++] = carry; } for (; i < Z.len(); i++) Z[i] = 0; } } // namespace bigint } // namespace v8