cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A224923 a(n) = Sum_{i=0..n} Sum_{j=0..n} (i XOR j), where XOR is the binary logical exclusive-or operator.

Original entry on oeis.org

0, 2, 12, 24, 68, 114, 168, 224, 408, 594, 788, 984, 1212, 1442, 1680, 1920, 2672, 3426, 4188, 4952, 5748, 6546, 7352, 8160, 9096, 10034, 10980, 11928, 12908, 13890, 14880, 15872, 18912, 21954, 25004, 28056, 31140, 34226, 37320, 40416, 43640, 46866, 50100, 53336, 56604
Offset: 0

Views

Author

Alex Ratushnyak, Apr 19 2013

Keywords

Crossrefs

Programs

  • Mathematica
    Array[Sum[BitXor[i, j], {i, 0, #}, {j, 0, #}] &, 45, 0] (* Michael De Vlieger, Nov 03 2022 *)
  • Python
    for n in range(99):
        s = 0
        for i in range(n+1):
            for j in range(n+1):
                s += i ^ j
        print(s, end=",") # Alex Ratushnyak, Apr 19 2013
    
  • Python
    # O(log(n)) version, whereas program above is O(n^2)
    def countPots2Until(n):
        nbPots = {1:n>>1}
        lftMask = ~3
        rgtMask = 1
        digit = 2
        while True:
            lft = (n & lftMask) >> 1
            rgt = n & rgtMask
            nbDigs = lft
            if n & digit:
                nbDigs |= rgt
            if nbDigs == 0:
                return nbPots
            nbPots[digit] = nbDigs
            rgtMask |= digit
            digit <<= 1
            lftMask = lftMask ^ digit
    def sumXorSquare(n):
        """Returns sum(i^j for i, j <= n)"""
        n += 1
        nbPots = countPots2Until(n)
        return 2 * sum(pot * freq * (n - freq) for pot, freq in nbPots.items())
    print([sumXorSquare(n) for n in range(100)])  # Miguel Garcia Diaz, Nov 19 2014
    
  • Python
    # O(log(n)) version, same as previous, but simpler and about 3x faster.
    def xor_square(n: int) -> int:
        return sum((((n + 1 >> i) ** 2 >> 1 << i) +
                   ((n + 1) & ((1 << i) - 1)) * (n + 1 + (1 << i) >> i + 1 << 1)
                   << 2 * i) for i in range(n.bit_length()))
    print([xor_square(n) for n in range(100)]) # Gabriel F. Ushijima, Feb 24 2024