public int hashCode() { int usedLen = getUsedLength(); int hash = 1; for (int i = 0; i < usedLen; i++) { long mi = m_ints[i]; hash *= 31; hash ^= (int)mi; hash *= 31; hash ^= (int)(mi >>> 32); } return hash; }
public int hashCode() { int usedLen = getUsedLength(); int hash = 1; for (int i = 0; i < usedLen; i++) { long mi = m_ints[i]; hash *= 31; hash ^= (int)mi; hash *= 31; hash ^= (int)(mi >>> 32); } return hash; }
public boolean equals(Object o) { if (!(o instanceof LongArray)) { return false; } LongArray other = (LongArray) o; int usedLen = getUsedLength(); if (other.getUsedLength() != usedLen) { return false; } for (int i = 0; i < usedLen; i++) { if (m_ints[i] != other.m_ints[i]) { return false; } } return true; }
public boolean equals(Object o) { if (!(o instanceof LongArray)) { return false; } LongArray other = (LongArray) o; int usedLen = getUsedLength(); if (other.getUsedLength() != usedLen) { return false; } for (int i = 0; i < usedLen; i++) { if (m_ints[i] != other.m_ints[i]) { return false; } } return true; }
public BigInteger toBigInteger() int usedLen = getUsedLength(); if (usedLen == 0)
public BigInteger toBigInteger() int usedLen = getUsedLength(); if (usedLen == 0)
public String toString() { int i = getUsedLength(); if (i == 0) { return "0"; } StringBuffer sb = new StringBuffer(Long.toBinaryString(m_ints[--i])); while (--i >= 0) { String s = Long.toBinaryString(m_ints[i]); // Add leading zeroes, except for highest significant word int len = s.length(); if (len < 64) { sb.append(ZEROES.substring(len)); } sb.append(s); } return sb.toString(); } }
public String toString() { int i = getUsedLength(); if (i == 0) { return "0"; } StringBuffer sb = new StringBuffer(Long.toBinaryString(m_ints[--i])); while (--i >= 0) { String s = Long.toBinaryString(m_ints[i]); // Add leading zeroes, except for highest significant word int len = s.length(); if (len < 64) { sb.append(ZEROES.substring(len)); } sb.append(s); } return sb.toString(); } }
public void addShiftedByWords(LongArray other, int words) { int otherUsedLen = other.getUsedLength(); if (otherUsedLen == 0) { return; } int minLen = otherUsedLen + words; if (minLen > m_ints.length) { m_ints = resizedInts(minLen); } add(m_ints, words, other.m_ints, 0, otherUsedLen); }
public void addShiftedByWords(LongArray other, int words) { int otherUsedLen = other.getUsedLength(); if (otherUsedLen == 0) { return; } int minLen = otherUsedLen + words; if (minLen > m_ints.length) { m_ints = resizedInts(minLen); } add(m_ints, words, other.m_ints, 0, otherUsedLen); }
public LongArray addOne() { if (m_ints.length == 0) { return new LongArray(new long[]{ 1L }); } int resultLen = Math.max(1, getUsedLength()); long[] ints = resizedInts(resultLen); ints[0] ^= 1L; return new LongArray(ints); }
public LongArray addOne() { if (m_ints.length == 0) { return new LongArray(new long[]{ 1L }); } int resultLen = Math.max(1, getUsedLength()); long[] ints = resizedInts(resultLen); ints[0] ^= 1L; return new LongArray(ints); }
public LongArray modSquareN(int n, int m, int[] ks) { int len = getUsedLength(); if (len == 0) { return this; } int mLen = (m + 63) >>> 6; long[] r = new long[mLen << 1]; System.arraycopy(m_ints, 0, r, 0, len); while (--n >= 0) { squareInPlace(r, len, m, ks); len = reduceInPlace(r, 0, r.length, m, ks); } return new LongArray(r, 0, len); }
public LongArray modSquareN(int n, int m, int[] ks) { int len = getUsedLength(); if (len == 0) { return this; } int mLen = (m + 63) >>> 6; long[] r = new long[mLen << 1]; System.arraycopy(m_ints, 0, r, 0, len); while (--n >= 0) { squareInPlace(r, len, m, ks); len = reduceInPlace(r, 0, r.length, m, ks); } return new LongArray(r, 0, len); }
public LongArray square(int m, int[] ks) { int len = getUsedLength(); if (len == 0) { return this; } int _2len = len << 1; long[] r = new long[_2len]; int pos = 0; while (pos < _2len) { long mi = m_ints[pos >>> 1]; r[pos++] = interleave2_32to64((int)mi); r[pos++] = interleave2_32to64((int)(mi >>> 32)); } return new LongArray(r, 0, r.length); }
public LongArray square(int m, int[] ks) { int len = getUsedLength(); if (len == 0) { return this; } int _2len = len << 1; long[] r = new long[_2len]; int pos = 0; while (pos < _2len) { long mi = m_ints[pos >>> 1]; r[pos++] = interleave2_32to64((int)mi); r[pos++] = interleave2_32to64((int)(mi >>> 32)); } return new LongArray(r, 0, r.length); }
public LongArray modSquare(int m, int[] ks) { int len = getUsedLength(); if (len == 0) { return this; } int _2len = len << 1; long[] r = new long[_2len]; int pos = 0; while (pos < _2len) { long mi = m_ints[pos >>> 1]; r[pos++] = interleave2_32to64((int)mi); r[pos++] = interleave2_32to64((int)(mi >>> 32)); } return new LongArray(r, 0, reduceInPlace(r, 0, r.length, m, ks)); }
public LongArray modSquare(int m, int[] ks) { int len = getUsedLength(); if (len == 0) { return this; } int _2len = len << 1; long[] r = new long[_2len]; int pos = 0; while (pos < _2len) { long mi = m_ints[pos >>> 1]; r[pos++] = interleave2_32to64((int)mi); r[pos++] = interleave2_32to64((int)(mi >>> 32)); } return new LongArray(r, 0, reduceInPlace(r, 0, r.length, m, ks)); }