# The La Jolla Circulant Weighing Matrix Repository¶

This page is a jupyter notebook which allows users to access the data.

A circulant weighing matrix is an $$n \times n$$ matrix $$W$$ with entries from $$\{0, \pm 1 \}$$ where each row is a cyclic shift of the one before, and

$W W^T = kI_n.$

Tan gave tables with existence results for $$n \leq 200$$ and $$k \leq 100$$. Arasu, Gordon and Zhang settled 12 of 34 open cases.

This Jupyter notebook gives access to a database of known circulant weighing matrices and existence results for $$n \leq 1000$$ and $$k < 20^2$$. To run it, use the binder launch button above.

import pandas as pd

cwparams = pd.read_csv('cwmparams.csv', sep='	')


cwparams is a database of known existence results.

cwparams.head()

n s Status Reference
0 4 2 All Eades and Hain
1 5 2 No Eades and Hain
2 6 2 All Eades and Hain
4 8 2 All Eades and Hain
cwlist = pd.read_csv('cwmlist.csv', sep='	')


cwlist is a database of known circulant weighing matrices.

cwlist.head()

n s P N Reference
0 4 2 1,2,3 0 Eades and Hain
1 6 2 1,3,4 0 Eades and Hain
2 7 2 1,2,4 0 Eades and Hain
3 8 2 1,4,5 0 Eades and Hain
4 8 2 2,4,6 0 Eades and Hain
from cwm_code import *


cwm_code.py contains Python functions to access the database.

get_status(cwparams,28,3)

No CW(28,3^2)s exist
Reference: Ang, Arasu, Ma and Strassler


get_status() checks what is known about some parameters.

show(cwlist,28,4)

10 CW(28,16)s in database
P: {0,3,5,9,16,17,18,19,23,24},	N: {1,2,4,10,14,15}
P: {1,2,3,4,8,16,18,19,22,23},	N: {0,5,9,14,15,17}
P: {0,1,2,9,11,15,18,22,23,25},	N: {4,7,8,14,16,21}
P: {0,3,4,5,9,17,19,20,22,23},	N: {1,6,8,14,15,18}
P: {1,2,4,5,8,16,18,21,22,23},	N: {0,7,9,14,15,19}
P: {0,2,3,5,9,17,18,19,22,23},	N: {1,4,8,14,15,16}
P: {1,2,4,7,8,15,20,21,22,24},	N: {0,6,10,14,16,18}
P: {0,1,2,4,7,14,15,20,21,24},	N: {6,8,10,16,18,22}
P: {0,1,2,4,8,14,15,20,22,24},	N: {6,7,10,16,18,21}
P: {0,2,4,7,8,14,20,21,22,24},	N: {1,6,10,15,16,18}


show() displays all known CW’s for a set of parameters.

C = get_cw(cwlist,28,4,3)


get_cw(n,s,i) pulls the $$i$$th $$CW(n,s^2)$$ out of the database.

is_cw(C)

P = [0, 3, 4, 5, 9, 17, 19, 20, 22, 23],
N = [1, 6, 8, 14, 15, 18]

is a CW(28,4^2)

True


is_cw(C) verifies that $$C$$ is actually a circulant weighing matrix.

n_range = [50,100]
s_range = [4,6]
comment = 'Arasu'
status = ['Yes','All']
search_cwm(cwparams,n_range,s_range,comment,status)

56	4	Yes	Arasu et al., 2006
62	4	Yes	Arasu et al., 2006
70	4	Yes	Arasu et al., 2006
84	4	Yes	Arasu et al., 2006
93	4	All	Arasu et al., 2006
98	4	Yes	Arasu et al., 2006

66	5	All	Arasu and Torban	 1999
99	5	All	Arasu and Torban	 1999

91	6	Yes	Arasu and Seberry (1998)


search_cwm() reproduces the behavior of the original CWM website. It takes a range of $$n$$ and $$s$$, comment string and status list, and prints the parameters in the dataset matching the search.