├── g6k ├── utils │ └── __init__.py ├── algorithms │ ├── __init__.py │ ├── ducas18.py │ ├── workout.py │ └── bkz.py ├── __init__.py ├── siever_params.pxd └── siever.pxd ├── article.pdf ├── requirements.txt ├── scripts ├── genexporters.sh ├── stats_exp.txt └── stats_list.txt ├── cuda ├── quality_run.sh ├── bench_run.sh ├── quality_dim.sh ├── quality_bsize.sh ├── quality_mh.sh ├── quality_distr.sh └── bench_sieving.sh ├── tests ├── test_full_sieve.py ├── test_svp_challenge.py └── test_bkz.py ├── pytest.ini ├── kernel ├── params.cpp ├── bdgl │ ├── hadamard.py │ └── permute.py ├── random.hpp ├── Makefile └── test_lsh.cpp ├── install-dependencies.sh ├── params.txt ├── Makefile ├── setup.py ├── runchal2.sh ├── svp_exact_find_norm.py ├── bootstrap.sh ├── README.rst ├── spherical_coding ├── launch_all.sh ├── sc_10_256.def ├── sc_7_256.def ├── sc_8_256.def ├── sc_9_256.def ├── sc_1_256.def ├── sc_2_256.def ├── sc_3_256.def ├── sc_4_256.def ├── sc_5_256.def ├── sc_6_256.def ├── sc_11_256.def ├── sc_12_256.def ├── sc_13_256.def ├── sc_14_256.def ├── sc_15_256.def ├── codes.py ├── sc_16_256.def ├── sc_17_256.def ├── sc_18_256.def ├── sc_19_256.def ├── sc_20_256.def ├── sc_21_256.def ├── sc_22_256.def ├── sc_23_256.def ├── sc_24_256.def ├── sc_25_256.def ├── sc_26_256.def ├── sc_27_256.def ├── sc_28_256.def ├── sc_29_256.def ├── sc_30_256.def ├── sc_31_256.def └── sc_32_256.def ├── full_sieve.py ├── quality.py └── svp_challenge.py /g6k/utils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /g6k/algorithms/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /article.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WvanWoerden/G6K-GPU-Tensor/HEAD/article.pdf -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | Cython 2 | cysignals 3 | flake8 4 | ipython 5 | numpy 6 | begins 7 | pytest 8 | requests 9 | scipy 10 | multiprocessing-logging 11 | -------------------------------------------------------------------------------- /scripts/genexporters.sh: -------------------------------------------------------------------------------- 1 | #/usr/bin/bash 2 | 3 | cat stats_list.txt | while read statname 4 | do 5 | sed s/REPLACEME/$statname/g stats_exp.txt 6 | done 7 | -------------------------------------------------------------------------------- /cuda/quality_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | for b in 2048 4096 8192 16384 32768 65536 3 | do 4 | for m in 1 2 5 | do 6 | ./bench_quality $b $m 7 | done 8 | done 9 | -------------------------------------------------------------------------------- /tests/test_full_sieve.py: -------------------------------------------------------------------------------- 1 | from full_sieve import full_sieve_kernel 2 | from g6k import SieverParams 3 | 4 | 5 | def test_full_sieve(): 6 | full_sieve_kernel(50, SieverParams(), 1) 7 | -------------------------------------------------------------------------------- /pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | addopts = -v --doctest-glob "*.pyx" --doctest-glob "*.rst" --doctest-modules 3 | testpaths = . tests g6k g6k/algorithms 4 | norecursedirs = legacy build spherical_coding scripts -------------------------------------------------------------------------------- /g6k/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from .siever_params import SieverParams # noqa 4 | from .siever import Siever # noqa 5 | 6 | # NOTE for compatibility with older pickles 7 | import siever # noqa 8 | siever.SieverParams = SieverParams # noqa 9 | -------------------------------------------------------------------------------- /cuda/bench_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | for m in 0 1 3 | do 4 | for b in 1024 2048 4096 8192 16384 32768 65536 5 | do 6 | CUDA_VISIBLE_DEVICES=0 numactl -N 0 -m 0 ./bench_sieving $b $m 7 | sleep 20 # to let GPU calm down 8 | done 9 | done 10 | -------------------------------------------------------------------------------- /scripts/stats_exp.txt: -------------------------------------------------------------------------------- 1 | @property 2 | def _stat_get_REPLACEME(self): 3 | return self._core.statistics.get_stats_REPLACEME() 4 | 5 | @property 6 | def _stat_c_REPLACEME(self): 7 | return self._core.statistics.collect_statistics_REPLACEME 8 | 9 | -------------------------------------------------------------------------------- /tests/test_svp_challenge.py: -------------------------------------------------------------------------------- 1 | from svp_challenge import asvp_kernel 2 | from g6k import SieverParams 3 | 4 | 5 | def test_svp_challenge(): 6 | asvp_kernel(50, SieverParams(load_matrix=None, 7 | challenge_seed=0, 8 | verbose=True), 1) 9 | -------------------------------------------------------------------------------- /g6k/siever_params.pxd: -------------------------------------------------------------------------------- 1 | from g6k.decl cimport SieverParams as SieverParams_c 2 | 3 | cdef class SieverParams(object): 4 | cdef SieverParams_c _core 5 | cpdef _set(self, str key, object value) 6 | cpdef object _get(self, str key) 7 | cdef int _read_only 8 | cdef tuple _cppattr 9 | cdef dict _pyattr 10 | -------------------------------------------------------------------------------- /g6k/siever.pxd: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | """ 4 | 5 | from g6k.decl cimport Siever as Siever_c 6 | from g6k.siever_params cimport SieverParams 7 | 8 | cdef class Siever(object): 9 | cdef Siever_c *_core 10 | cdef public object M 11 | cdef SieverParams _params 12 | cdef object initialized 13 | cdef object dual_hash_l 14 | -------------------------------------------------------------------------------- /cuda/quality_dim.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | bucket_size=16384 3 | mh=4 4 | repeats=64 5 | 6 | echo "n bucketer bsize mh repeats coll cost" 7 | for n in 80 96 112 128 144 8 | do 9 | ./bench_quality rand $bucket_size $mh $repeats $n 10 | ./bench_quality bgj1 $bucket_size $mh $repeats $n 11 | ./bench_quality bdgl $bucket_size $mh $repeats $n 1 12 | ./bench_quality bdgl $bucket_size $mh $repeats $n 2 13 | done 14 | -------------------------------------------------------------------------------- /cuda/quality_bsize.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | n=128 3 | mh=4 4 | repeats=64 5 | 6 | echo "n bucketer bsize mh repeats coll cost" 7 | for bucket_size in 1024 2048 4096 8192 16384 32768 8 | do 9 | ./bench_quality rand $bucket_size $mh $repeats $n 10 | ./bench_quality bgj1 $bucket_size $mh $repeats $n 11 | ./bench_quality bdgl $bucket_size $mh $repeats $n 1 12 | ./bench_quality bdgl $bucket_size $mh $repeats $n 2 13 | done 14 | -------------------------------------------------------------------------------- /cuda/quality_mh.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | n=128 3 | bucket_size=16384 4 | 5 | echo "n bucketer bsize mh repeats coll cost" 6 | for mh in 1 2 4 8 16 7 | do 8 | repeats=$((256 / mh)) 9 | 10 | 11 | ./bench_quality rand $bucket_size $mh $repeats $n 12 | ./bench_quality bgj1 $bucket_size $mh $repeats $n 13 | ./bench_quality bdgl $bucket_size $mh $repeats $n 1 14 | ./bench_quality bdgl $bucket_size $mh $repeats $n 2 15 | done 16 | -------------------------------------------------------------------------------- /cuda/quality_distr.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | n=128 3 | bucket_size=16384 4 | mh=4 5 | repeats=1 6 | 7 | echo "n bucketer bsize mh repeats coll cost" 8 | for n in 80 96 112 128 144 9 | do 10 | ./bench_quality rand $bucket_size $mh $repeats $n 1 1 11 | ./bench_quality bgj1 $bucket_size $mh $repeats $n 1 1 12 | ./bench_quality bdgl $bucket_size $mh $repeats $n 1 1 13 | ./bench_quality bdgl $bucket_size $mh $repeats $n 2 1 14 | done 15 | -------------------------------------------------------------------------------- /kernel/params.cpp: -------------------------------------------------------------------------------- 1 | #include "siever.h" 2 | 3 | bool Siever::set_params(const SieverParams ¶ms) 4 | { 5 | this->params = params; 6 | reserve(params.reserved_db_size); 7 | set_threads(params.threads); 8 | 9 | if(this->params.bgj1_transaction_bulk_size == 0) 10 | { 11 | this->params.bgj1_transaction_bulk_size = 10 + 2*this->params.threads; 12 | } 13 | return true; 14 | } 15 | 16 | SieverParams Siever::get_params() 17 | { 18 | return this->params; 19 | } 20 | -------------------------------------------------------------------------------- /install-dependencies.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Install FPLLL 4 | 5 | git clone https://github.com/fplll/fplll 6 | cd fplll || exit 7 | ./autogen.sh 8 | ./configure --prefix="$VIRTUAL_ENV" $CONFIGURE_FLAGS 9 | make clean 10 | make -j 4 11 | make install 12 | cd .. 13 | 14 | # Install FPyLLL 15 | git clone https://github.com/fplll/fpylll 16 | cd fpylll || exit 17 | pip install Cython 18 | pip install -r requirements.txt 19 | pip install -r suggestions.txt 20 | python setup.py clean 21 | python setup.py build_ext 22 | python setup.py install 23 | cd .. 24 | 25 | # Otherwise py.test may fail 26 | 27 | rm -rf ./fplll 28 | rm -rf ./fpylll 29 | -------------------------------------------------------------------------------- /params.txt: -------------------------------------------------------------------------------- 1 | rebuild.sh options: 2 | -y 3 | Disable precomputed and stored YR, Popcount, dual_hash (save significantly on memory and CPU cost) 4 | Always use 5 | -m D 6 | Sets max sieving dim to D. D % 8 == 0 7 | default: 128 8 | --gpuvecnum V 9 | Sets max bucketsize and returned results to V. V % 1024 == 0 10 | default: 65536 11 | 12 | Always: 13 | ./rebuild -f -y 14 | gpus (max gpus available) 15 | threads (max threads available, no hyperthreading) 16 | dh_bucket_ratio 0.5 (default) 17 | 18 | Low dimensions (everything default, except) 19 | dh_vecs 64 20 | dh_dim 20 21 | dh_min n-35 22 | dh_d4f 30 23 | 24 | High dimensions: 25 | ./rebuild -f -y -m ... 26 | VECNUM >=sqrt( max_db_size * 4 ), multiples of 1024 27 | max_nr_buckets >=sqrt( max_db_size * 4 ) 28 | trace False 29 | dh_min n-40 30 | dh_d4f 32 31 | dh_dim 20 32 | dh_vecs 48 33 | 34 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | SUBDIRS := kernel 2 | KERNELHEADERS := $(wildcard kernel/*.h kernel/*.hpp kernel/*.inl cuda/*.h cuda/*.hpp cuda/*.inl) 3 | KERNELSOURCES := $(wildcard kernel/*.cpp cuda/*.cpp cuda/*.cu) 4 | PYTHONSOURCES := $(wildcard g6k/*.pxd g6k/*.pyx) 5 | 6 | all: Makefile.local kernel/libG6K.so g6k/siever.so 7 | 8 | rebuild: 9 | ./rebuild.sh $(G6KREBUILDARGS) 10 | 11 | Makefile.local: 12 | ./rebuild.sh --onlyconf $(G6KREBUILDARGS) 13 | 14 | kernel/libG6K.so: Makefile.local $(KERNELHEADERS) $(KERNELSOURCES) 15 | $(MAKE) -C kernel libG6K.so 16 | 17 | g6k/siever.so: Makefile.local kernel/libG6K.so $(KERNELHEADERS) $(PYTHONSOURCES) 18 | -rm g6k/*.cpp g6k/*.so 19 | python setup.py clean 20 | python setup.py build_ext --inplace 21 | 22 | clean: Makefile.local 23 | for dir in "${SUBDIRS}"; do make -C "$${dir}" clean; done 24 | -rm -rf build 25 | -rm -f g6k/*.cpp g6k/*.so 26 | 27 | .PHONY: all $(SUBDIRS) clean 28 | -------------------------------------------------------------------------------- /scripts/stats_list.txt: -------------------------------------------------------------------------------- 1 | reds_total 2 | 2reds_total 3 | 3reds 4 | 2reds_inner 5 | 2reds_outer 6 | xorpopcnt_total 7 | xorpopcnt_inner 8 | xorpopcnt_outer 9 | xorpopcnt_pass_total 10 | xorpopcnt_pass_inner 11 | xorpopcnt_pass_outer 12 | fullscprods_total 13 | fullscprods_inner 14 | fullscprods_outer 15 | filter_pass 16 | redsuccess_total 17 | 2redsuccess_total 18 | 2redsuccess_inner 19 | 2redsuccess_outer 20 | 3redsuccess 21 | dataraces_total 22 | dataraces_2inner 23 | dataraces_2outer 24 | dataraces_3 25 | dataraces_replaced_was_saturated 26 | dataraces_sorting_blocked_cdb 27 | dataraces_sorting_blocked_db 28 | dataraces_get_p_blocked 29 | dataraces_out_of_queue 30 | dataraces_insertions 31 | collisions_total 32 | collisions_2inner 33 | collisions_2outer 34 | collisions_3 35 | collisions_nobucket 36 | otflifts_total 37 | otflifts_2inner 38 | otflifts_2outer 39 | otflifts_3 40 | replacements_total 41 | replacements_list 42 | replacements_queue 43 | replacements_large 44 | replacements_small 45 | replacementfailures_total 46 | replacementfailures_queue 47 | replacementfailures_list 48 | replacementfailures_prune 49 | sorting_total 50 | sorting_sieve 51 | buckets 52 | memory_buckets 53 | memory_transactions 54 | memory_snapshots 55 | -------------------------------------------------------------------------------- /kernel/bdgl/hadamard.py: -------------------------------------------------------------------------------- 1 | from numpy import array, zeros 2 | from numpy.linalg import inv 3 | 4 | def _mm256_hadd_epi16(a, b): 5 | dst = zeros(16, dtype=long) 6 | dst[0::8] = a[0::8] + a[1::8] 7 | dst[1::8] = a[2::8] + a[3::8] 8 | dst[2::8] = a[4::8] + a[5::8] 9 | dst[3::8] = a[6::8] + a[7::8] 10 | dst[4::8] = b[0::8] + b[1::8] 11 | dst[5::8] = b[2::8] + b[3::8] 12 | dst[6::8] = b[4::8] + b[5::8] 13 | dst[7::8] = b[6::8] + b[7::8] 14 | return dst 15 | 16 | 17 | s1 = array(8*[1, -1], dtype=long) 18 | s4 = array(8*[1]+8*[-1], dtype=long) 19 | 20 | def hadamard16(x): 21 | # a = _mm256_hadd_epi16(a, a) 22 | # return _mm256_hadd_epi16(a, a) 23 | a = 1*x 24 | a[:8],a[8:] = x[8:],x[:8] 25 | x = x*s4 26 | a += x 27 | 28 | b = a*s1 29 | a = _mm256_hadd_epi16(a, b) 30 | b = a*s1 31 | a = _mm256_hadd_epi16(a, b) 32 | b = a*s1 33 | a = _mm256_hadd_epi16(a, b) 34 | return a 35 | 36 | 37 | def hadamard32(x): 38 | r = zeros(32, dtype=int) 39 | a = hadamard16(x[:16]) 40 | b = hadamard16(x[16:]) 41 | r[:16]= a + b 42 | r[16:]= a - b 43 | 44 | return r 45 | 46 | 47 | def hadamard32_mat(): 48 | M = zeros((32, 32),dtype=int) 49 | for i in range(32): 50 | v = zeros(32, dtype=int) 51 | v[i] = 1 52 | M[i] = hadamard32(v) 53 | return M 54 | 55 | -------------------------------------------------------------------------------- /kernel/random.hpp: -------------------------------------------------------------------------------- 1 | #ifndef SIEVER_RANDOM_HPP 2 | #define SIEVER_RANDOM_HPP 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | namespace rng { 9 | 10 | class threadsafe_rng { 11 | public: 12 | typedef typename std::mt19937_64 base_rng_t; 13 | typedef typename base_rng_t::result_type result_type; 14 | 15 | threadsafe_rng(result_type seed = 0) 16 | : _rng(seed) 17 | { 18 | if (seed != 0) 19 | return; 20 | std::random_device rd; 21 | _rng.seed(rd()); 22 | } 23 | 24 | static constexpr result_type min() { return base_rng_t::min(); } 25 | static constexpr result_type max() { return base_rng_t::max(); } 26 | 27 | void seed(result_type seed = 0) 28 | { 29 | if (seed == 0) 30 | { 31 | std::random_device rd; 32 | seed = rd(); 33 | } 34 | _rng.seed(seed); 35 | } 36 | 37 | result_type operator()() 38 | { 39 | std::lock_guard lockguard(_mut); 40 | return _rng(); 41 | } 42 | 43 | result_type rng() 44 | { 45 | std::lock_guard lockguard(_mut); 46 | return _rng(); 47 | } 48 | 49 | result_type rng_nolock() 50 | { 51 | return _rng(); 52 | } 53 | 54 | private: 55 | std::mutex _mut; 56 | base_rng_t _rng; 57 | }; 58 | 59 | } // namespace rng 60 | 61 | #endif // SIEVER_RANDOM_HPP 62 | -------------------------------------------------------------------------------- /cuda/bench_sieving.sh: -------------------------------------------------------------------------------- 1 | DEFINES="-Xcompiler -DMAX_SIEVING_DIM=160 -Xcompiler -DGPUVECNUM=131072 -Xcompiler -DHAVE_CUDA -I../parallel-hashmap" #-Xcompiler -DDEBUG_BENCHMARK" 2 | 3 | if [ -z "$1" ] 4 | then 5 | /usr/local/cuda/bin/nvcc -ccbin g++ -Xcompiler -fPIC -Xcompiler -Ofast -Xcompiler -march=native -Xcompiler -pthread -Xcompiler -Wall -Xcompiler -Wextra $DEFINES -std=c++11 -O3 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_75,code=compute_75 -lineinfo -I/usr/local/cuda/include -c ../cuda/GPUStreamGeneral.cu -o GPUStreamGeneral.o 6 | fi 7 | 8 | /usr/local/cuda/bin/nvcc -ccbin g++ -Xcompiler -fPIC -Xcompiler -Ofast -Xcompiler -march=native -Xcompiler -pthread -Xcompiler -Wall -Xcompiler -Wextra $DEFINES -std=c++11 -O3 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_75,code=compute_75 -lineinfo -I/usr/local/cuda/include -lcublas -lcurand --resource-usage bench_sieving.cpp -o bench_sieving GPUStreamGeneral.o 9 | 10 | /usr/local/cuda/bin/nvcc -ccbin g++ -Xcompiler -fPIC -Xcompiler -Ofast -Xcompiler -march=native -Xcompiler -pthread -Xcompiler -Wall -Xcompiler -Wextra $DEFINES -std=c++11 -O3 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_75,code=compute_75 -lineinfo -I/usr/local/cuda/include -lcublas -lcurand --resource-usage bench_quality.cpp -o bench_quality GPUStreamGeneral.o 11 | -------------------------------------------------------------------------------- /tests/test_bkz.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from fpylll import IntegerMatrix 4 | from g6k.algorithms.bkz import pump_n_jump_bkz_tour as bkz 5 | from g6k.siever import Siever 6 | from g6k.utils.stats import dummy_tracer 7 | 8 | dimensions = (40, 50, 60) 9 | 10 | 11 | def make_integer_matrix(d, int_type="mpz"): 12 | A = IntegerMatrix(d, d, int_type=int_type) 13 | A.randomize("qary", k=d//2, bits=10) 14 | return A 15 | 16 | 17 | def test_bkz(): 18 | for d in dimensions: 19 | # Primal 20 | A = make_integer_matrix(d) 21 | g6k = Siever(A) 22 | bkz(g6k, dummy_tracer, 20) 23 | bkz(g6k, dummy_tracer, 20) 24 | bkz(g6k, dummy_tracer, 20) 25 | 26 | # Dual 27 | A = make_integer_matrix(d) 28 | g6k = Siever(A) 29 | with g6k.temp_params(dual_mode=True): 30 | bkz(g6k, dummy_tracer, 20) 31 | bkz(g6k, dummy_tracer, 20) 32 | bkz(g6k, dummy_tracer, 20) 33 | 34 | # Primal then Dual 35 | A = make_integer_matrix(d) 36 | g6k = Siever(A) 37 | bkz(g6k, dummy_tracer, 20) 38 | bkz(g6k, dummy_tracer, 20) 39 | bkz(g6k, dummy_tracer, 20) 40 | with g6k.temp_params(dual_mode=True): 41 | bkz(g6k, dummy_tracer, 20) 42 | bkz(g6k, dummy_tracer, 20) 43 | bkz(g6k, dummy_tracer, 20) 44 | -------------------------------------------------------------------------------- /g6k/algorithms/ducas18.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | A reimplementation of SubSieve+ from [Ducas18] 4 | """ 5 | 6 | 7 | def ducas18(g6k, tracer, goal): 8 | """ 9 | :param g6k: The g6k object to work with 10 | :param tracer: A tracer for g6k 11 | :param goal: Targer length for the shortest vector 12 | """ 13 | m = g6k.M.d 14 | d = m/4 + 1 15 | 16 | with tracer.context(("ducas18", "kappa:%d beta:%d f:%d" % (0, m, 0))): 17 | 18 | with g6k.temp_params(otf_lift=False, saturation_ratio=.5, sample_by_sums=False): 19 | while g6k.M.get_r(0, 0) > goal: 20 | d -= 1 21 | with tracer.context(("SubSieve+", "kappa:%d beta:%d f:%d" % (0, m, d))): 22 | # Subsieve+ from [Ducas 18] 23 | g6k.lll(0, m) 24 | g6k.initialize_local(d, (m+d) / 2) 25 | g6k.shrink_db(0) 26 | 27 | while g6k.r < m: 28 | with tracer.context(("progressieve-step", "l:%d r:%d n:%d" % (g6k.l, g6k.r, g6k.n))): 29 | g6k.extend_right(1) 30 | g6k(alg="gauss", tracer=tracer) 31 | 32 | g6k.extend_left(d) 33 | 34 | while g6k.l < m/2: 35 | with tracer.context(("insertion-step", "l:%d r:%d n:%d" % (g6k.l, g6k.r, g6k.n))): 36 | inserted = g6k.insert_best_lift(lambda i, nle, ole, aux: i == g6k.l) 37 | if inserted is None: 38 | g6k.shrink_left(1) 39 | 40 | return d 41 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | from distutils.core import setup 5 | from distutils.extension import Extension 6 | from Cython.Build import cythonize 7 | 8 | import numpy 9 | import subprocess 10 | import os 11 | import numpy # noqa 12 | 13 | # compile kernel/libG6K.so if not done already 14 | subprocess.check_call("make -C kernel",shell=True) 15 | 16 | # read actual values of all build variables from kernel/Makefile 17 | makefile_defs = subprocess.check_output("make -C kernel printvariables | grep '='", shell=True).splitlines() 18 | 19 | def read_from_makefile(field): 20 | global makefile_defs 21 | data = [line for line in makefile_defs if line.startswith(field)][0] 22 | data = "=" .join(data.split("=")[1:]) 23 | data = data.strip() 24 | data = [arg for arg in data.split(" ") if arg.strip()] 25 | return data 26 | 27 | extra_compile_args = read_from_makefile("CXXFLAGS") 28 | extra_link_args = read_from_makefile("LDFLAGS") + read_from_makefile("LIBADD") 29 | 30 | kwds = { 31 | "language": "c++", 32 | "extra_compile_args": extra_compile_args, 33 | "extra_link_args": extra_link_args, 34 | "libraries": ["gmp", "pthread", "G6K"], 35 | "include_dirs": [numpy.get_include(), "parallel-hashmap"] 36 | } 37 | 38 | extensions = [ 39 | Extension("g6k.siever", ["g6k/siever.pyx"], **kwds), 40 | Extension("g6k.siever_params", ["g6k/siever_params.pyx"], **kwds) 41 | ] 42 | 43 | setup( 44 | name="G6K", 45 | version="0.0.1", 46 | ext_modules=cythonize(extensions, compiler_directives={'binding': True, 47 | 'embedsignature': True, 48 | 'language_level': 2}), 49 | packages=[], 50 | ) 51 | -------------------------------------------------------------------------------- /kernel/Makefile: -------------------------------------------------------------------------------- 1 | ifeq (,$(wildcard ../Makefile.local)) 2 | $(shell cd ..; ./rebuild.sh --onlyconf >/dev/null; cd kernel) 3 | endif 4 | include ../Makefile.local 5 | 6 | CXXFLAGS += -fPIC -Ofast -march=native -ftree-vectorize -funroll-loops -std=c++11 -pthread -Wall -Wextra $(EXTRAFLAGS) -I../parallel-hashmap 7 | LDFLAGS += -shared -pthread -L$(realpath .) -Wl,-rpath=$(realpath .) 8 | LIBADD += -lpthread 9 | 10 | DEST = libG6K.so 11 | OBJ = sieving.o control.o bgj1_sieve.o gpu_sieve.o triple_sieve.o params.o cpuperf.o triple_sieve_mt.o 12 | 13 | # CUDA configuration 14 | ifeq ($(HAVE_CUDA),1) 15 | ifeq ($(CUDA_CXX),) 16 | CUDA_CXX=$(CXX) 17 | endif 18 | SMS ?= 75 19 | CUDACXXFLAGS = -fPIC -Ofast -march=native -pthread -Wall -Wextra $(EXTRAFLAGS) 20 | NVCC_FLAGS += -ccbin $(CUDA_CXX) $(addprefix -Xcompiler ,$(CUDACXXFLAGS)) 21 | NVCC_FLAGS += -std=c++11 -O3 22 | OBJ += ../cuda/GPUStreamGeneral.o 23 | CXXFLAGS += $(CUDA_FLAGS) 24 | LIBADD += $(CUDA_LIBS) 25 | endif 26 | 27 | ifeq ($(HAVE_CUDA),1) 28 | # Build GENCODE FLAGS from SMS 29 | GENCODE_FLAGS = 30 | $(foreach sm,$(SMS),$(eval GENCODE_FLAGS += -gencode arch=compute_$(sm),code=sm_$(sm))) 31 | HIGHEST_SM = $(lastword $(sort $(SMS))) 32 | ifneq ($(HIGHEST_SM),) 33 | GENCODE_FLAGS += -gencode arch=compute_$(HIGHEST_SM),code=compute_$(HIGHEST_SM) 34 | endif 35 | NVCC_FLAGS += $(GENCODE_FLAGS) 36 | endif 37 | 38 | 39 | KERNELHEADERS = $(wildcard *.h *.hpp *.inl ../cuda/*.h ../cuda/*.hpp ../cuda/*.inl) 40 | 41 | all: $(DEST) 42 | 43 | $(DEST): $(OBJ) $(KERNELHEADERS) ../Makefile.local 44 | $(CXX) $(LDFLAGS) $(OBJ) -o $@ $(LIBADD) 45 | 46 | %.o: %.cpp $(KERNELHEADERS) ../Makefile.local 47 | $(CXX) $(CXXFLAGS) -c $< -o $@ 48 | 49 | # CUDA build rule 50 | %.o: %.cu $(KERNELHEADERS) ../Makefile.local 51 | $(NVCC) $(NVCC_FLAGS) $(CUDA_FLAGS) -c $< -o $@ 52 | 53 | clean: 54 | -rm $(OBJ) *.o *.so ../*.so 55 | 56 | # for python setup.py to obtain final values of variables 57 | printvariables: 58 | $(foreach v,$(.VARIABLES),$(info $(v) = $($(v)))) 59 | -------------------------------------------------------------------------------- /runchal2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | gpus=4 4 | threads=40 5 | run=1 6 | # run=seed 7 | 8 | tag=rampup8_dh32_highprecd 9 | 10 | dim=140 11 | 12 | loadmatrix="" 13 | #loadmatrix="--load_matrix --workout/start_n " 14 | 15 | for ((; dim<=180; dim+=2)); do 16 | 17 | ######### AUTOMATIC CONFIGURATION 18 | 19 | fileprefix=svpchallenge_runs/svpchal_${dim}_${tag} 20 | mkdir svpchallenge_runs 2>/dev/null 21 | 22 | dhmin=106 #$(($dim-36)) 23 | oversieve=4 # how far to sieve extra, but without increasing db size 24 | 25 | dfreemin=`echo "$dim/l($dim) - $oversieve" | bc -l | cut -d'.' -f1` 26 | dhdff=$dfreemin 27 | 28 | dblimit=`echo "2.77 * e(l(4/3)*(($dim - $dfreemin - $oversieve)/2))" | bc -l | cut -d'.' -f1` 29 | 30 | vecnum=`echo "sqrt( ${dblimit} * 2 ) * 2" | bc -l | cut -d'.' -f1` 31 | if [ $vecnum -ge 65536 ]; then 32 | vecnum=$(( (vecnum+1023)/1024 )) 33 | vecnum=$(( vecnum*1024 )) 34 | else 35 | vecnum=65536 36 | fi 37 | 38 | maxsievedim=$(($dim - $dfreemin)) 39 | if [ $maxsievedim -gt 128 ]; then 40 | maxsievedim=$(( ((maxsievedim+15)/16)*16 )) 41 | else 42 | maxsievedim=128 43 | fi 44 | 45 | 46 | ######### REBUILD G6K for this run 47 | echo "./rebuild.sh -f -y -j 10 -m $maxsievedim --gpuvecnum $vecnum" 48 | 49 | ./rebuild.sh -f -y -j 10 -m $maxsievedim --gpuvecnum $vecnum 50 | 51 | 52 | ######### EXECUTE G6K svp challenge run 53 | 54 | dhargs="--dh_min $dhmin --dh_vecs 32 --dh_dim 24 --dh_d4f $dhdff" 55 | # dhargs="--dh_vecs 0" 56 | 57 | woargs="--workout/dim4free_min ${dfreemin} --workout/dim4free_dec 2 --pump/down_sieve True --pump/prefer_left_insert 1.2 --verbose --db_size_factor 2.77 --saturation_ratio .375 --db_limit ${dblimit} --multi_bucket 2" 58 | 59 | opts="${dim} --seed ${run} --gpus ${gpus} --threads ${threads} ${dhargs} ${woargs} --max_nr_buckets 0 --trace False ${loadmatrix}" 60 | loadmatrix="" # reset loadmatrix after use 61 | 62 | 63 | echo "Running: svp_challenge.py $opts" | tee ${fileprefix}.cout${run}.log 64 | cat .last_build >> ${fileprefix}.cout${run}.log 65 | python ./svp_challenge.py ${opts} --workout/save_prefix ${fileprefix}.mat${run} 2> ${fileprefix}.cerr${run}.log | tee -a ${fileprefix}.cout${run}.log 66 | echo "Finished" 67 | 68 | sleep 10 69 | exit 70 | done 71 | -------------------------------------------------------------------------------- /svp_exact_find_norm.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import copy 5 | 6 | from fpylll.util import gaussian_heuristic 7 | 8 | from g6k.algorithms.workout import workout 9 | from g6k.siever import Siever 10 | from g6k.utils.cli import parse_args, run_all, pop_prefixed_params 11 | from g6k.utils.stats import SieveTreeTracer 12 | from g6k.utils.util import load_svpchallenge_and_randomize, save_svpchallenge_norm 13 | 14 | 15 | def svp_kernel_trial(arg0, params=None, seed=None, goal_r0=None): 16 | # Pool.map only supports a single parameter 17 | if params is None and seed is None: 18 | n, params, seed = arg0 19 | else: 20 | n = arg0 21 | 22 | params = copy.copy(params) 23 | dim4free_dec = params.pop("workout/dim4free_dec") 24 | pump_params = pop_prefixed_params("pump", params) 25 | challenge_seed = params.pop("challenge_seed") 26 | 27 | A, _ = load_svpchallenge_and_randomize(n, s=challenge_seed, seed=seed) 28 | g6k = Siever(A, params, seed=seed) 29 | tracer = SieveTreeTracer(g6k, root_label=("svp-challenge", n), start_clocks=True) 30 | 31 | gh = gaussian_heuristic([g6k.M.get_r(i, i) for i in range(n)]) 32 | ds = range(0, n - 40, dim4free_dec)[::-1] + 10*[0] 33 | 34 | if goal_r0 is None: 35 | goal_r0 = 1.1 * gh 36 | 37 | for d in ds: 38 | workout(g6k, tracer, 0, n, dim4free_dec=dim4free_dec, goal_r0=goal_r0*1.001, pump_params=pump_params) 39 | 40 | tracer.exit() 41 | return int(g6k.M.get_r(0, 0)), gh 42 | 43 | 44 | def svp_kernel(arg0, params=None, seed=None): 45 | if params is None and seed is None: 46 | n, params, seed = arg0 47 | else: 48 | n = arg0 49 | 50 | challenge_seed = params["challenge_seed"] 51 | 52 | goal_r0 = None 53 | matches = 0 54 | trials = 0 55 | while matches < 5: 56 | trials += 1 57 | found_r0, gh = svp_kernel_trial(arg0, goal_r0=goal_r0) 58 | if found_r0 == goal_r0: 59 | matches += 1 60 | else: 61 | matches = 0 62 | goal_r0 = found_r0 63 | print "\t", (n, challenge_seed), "Trial %3d, found norm %10d = %.4f*gh, consec matches %d/5" % ( 64 | trials, goal_r0, goal_r0/gh, matches) 65 | 66 | save_svpchallenge_norm(n, goal_r0, s=challenge_seed) 67 | 68 | 69 | def svp(): 70 | """ 71 | Run a progressive until 1.05-approx-SVP on matrices with dimensions in 72 | ``range(lower_bound, upper_bound, step_size)``. 73 | """ 74 | description = svp.__doc__ 75 | 76 | args, all_params = parse_args(description, 77 | workout__dim4free_dec=2, 78 | challenge_seed=0) 79 | 80 | run_all(svp_kernel, all_params.values(), 81 | lower_bound=args.lower_bound, 82 | upper_bound=args.upper_bound, 83 | step_size=args.step_size, 84 | trials=args.trials, 85 | workers=args.workers, 86 | seed=args.seed) 87 | 88 | 89 | if __name__ == '__main__': 90 | svp() 91 | -------------------------------------------------------------------------------- /kernel/bdgl/permute.py: -------------------------------------------------------------------------------- 1 | from numpy import array, zeros 2 | from hadamard import hadamard32_mat 3 | from numpy.random import randint 4 | import sys 5 | 6 | N = int(sys.argv[1]) 7 | 8 | mixmask0 = [ 9 | 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 10 | 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF] 11 | 12 | mixmask0 = array(mixmask0)[::-1]%2 13 | 14 | permutation1 = [ 15 | 0x0F, 0x0E, 0x07, 0x06, 0x01, 0x00, 0x09, 0x08, 16 | 0x0B, 0x0A, 0x0D, 0x0C, 0x05, 0x04, 0x03, 0x02, 17 | 0x07, 0x06, 0x0F, 0x0E, 0x05, 0x04, 0x03, 0x02, 18 | 0x0B, 0x0A, 0x09, 0x08, 0x0D, 0x0C, 0x01, 0x00] 19 | 20 | permutation1 = array(permutation1)[0::2][::-1]/2 21 | permutation1[8:]+=8 22 | 23 | sign_shuffle = [ 24 | 0xFFFF, 0xFFFF, 0xFFFF, 0x0001, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 25 | 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0xFFFF, 0xFFFF] 26 | 27 | sign_shuffle = 2 - ((array(sign_shuffle[::-1])) % 4) 28 | 29 | H32 = hadamard32_mat() 30 | 31 | def m256_permute_epi16_2f(v, mixmask): 32 | v0 = zeros(16, dtype=long) 33 | v1 = zeros(16, dtype=long) 34 | v2 = zeros(16, dtype=long) 35 | tmp = zeros(16, dtype=long) 36 | v0[:] = 1*v[:16] 37 | v1[:] = 1*v[16:32] 38 | v2[:N-32] = v[32-N:] 39 | 40 | v1[0:4], v1[4:8], v1[8:12], v1[12:16] = (1*v1[12:16], 1*v1[0:4], 1*v1[4:8], 1*v1[8:12]) 41 | v0 = array([1*v0[permutation1[i]] for i in range(16)]) 42 | 43 | for i in range(16): 44 | if mixmask[i]: 45 | v0[i], v1[i] = 1*v1[i], 1*v0[i] 46 | 47 | v0 *= sign_shuffle 48 | 49 | for i in range(N-32): 50 | v1[i], v2[i] = 1*v2[i], 1*v1[i] 51 | 52 | v[:16] = v0[:] 53 | v[16:32] = v1[:] 54 | v[32-N:] = v2[:N-32] 55 | return v 56 | 57 | 58 | def extract_vec(v): 59 | V = zeros((N, 32), dtype=long) 60 | for i in range(32): 61 | V[abs(v[i]) - 1] = H32[i] * (1 if v[i] > 0 else -1) 62 | return V.transpose() 63 | 64 | 65 | def score(V, D): 66 | s = 0 67 | for W in D: 68 | A = V.dot(W.transpose()) 69 | A = abs(A*A*A) 70 | s += sum(sum(A)) 71 | return s 72 | 73 | 74 | def generate_mixsequence(seqlen, trials, filename=None): 75 | if filename is not None: 76 | filee = open(filename,"w") 77 | else: 78 | filee = None 79 | 80 | v = array(range(N))+1 81 | v0 = 1*v 82 | 83 | D = [] 84 | scores = [] 85 | D.append(extract_vec(v)) 86 | total_score = 0 87 | 88 | for it in range(seqlen): 89 | best = None 90 | for trial in range(trials): 91 | mixmask = randint(2, size=32) 92 | w = m256_permute_epi16_2f(v, mixmask) 93 | s = - score(extract_vec(w), D) 94 | # print s, 95 | best = max(best, (s, 1*w, mixmask)) 96 | 97 | (s, w, mixmask) = best 98 | total_score -= s 99 | 100 | scores.append(total_score) 101 | v = 1*w 102 | D.append(extract_vec(v)) 103 | if filename is not None: 104 | for x in mixmask: 105 | print >>filee, x, 106 | print >>filee, "" 107 | 108 | return scores 109 | 110 | generate_mixsequence(256, 16, "mix_sequence_%d.dat"%N) 111 | 112 | 113 | # M = [] 114 | # for trials in [1,2,4,8,16,32,64,128,256]: 115 | # print "%4d :"%trials, 116 | # L = generate_mixsequence(100, trials) 117 | # for x in L[::5]: 118 | # print "%.4e "%x, 119 | # print 120 | 121 | # print array(M) 122 | -------------------------------------------------------------------------------- /bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | PYTHON=python2 # lducas/g6k/gpu_no_yr requires python2 4 | 5 | jobs="-j 4 " 6 | if [ "$1" = "-j" ]; then 7 | jobs="-j $2 " 8 | fi 9 | 10 | # Create Virtual Environment 11 | 12 | if [ "$PYTHON" = "" ]; then 13 | PYTHON=python 14 | export PYTHON 15 | fi 16 | PIP="$PYTHON -m pip" 17 | PYVER=$($PYTHON --version | cut -d' ' -f2) 18 | echo "Usage:" 19 | echo " ./bootstrap.sh [ -j <#jobs> ] (uses system's python)" 20 | echo " PYTHON=python2 ./bootstrap.sh (uses python2)" 21 | echo " PYTHON=python3 ./bootstrap.sh (uses python3)" 22 | echo " " 23 | echo "Using python version: $PYVER" 24 | echo "Using $jobs" 25 | sleep 1 26 | 27 | 28 | rm -rf g6k-env 29 | $PYTHON -m virtualenv g6k-env 30 | cat <>g6k-env/bin/activate 31 | ### LD_LIBRARY_HACK 32 | _OLD_LD_LIBRARY_PATH="\$LD_LIBRARY_PATH" 33 | LD_LIBRARY_PATH="\$VIRTUAL_ENV/lib:\$LD_LIBRARY_PATH" 34 | export LD_LIBRARY_PATH 35 | ### END_LD_LIBRARY_HACK 36 | 37 | ### PKG_CONFIG_HACK 38 | _OLD_PKG_CONFIG_PATH="\$PKG_CONFIG_PATH" 39 | PKG_CONFIG_PATH="\$VIRTUAL_ENV/lib/pkgconfig:\$PKG_CONFIG_PATH" 40 | export PKG_CONFIG_PATH 41 | ### END_PKG_CONFIG_HACK 42 | 43 | ### PYTHON_ENV 44 | PYTHON="$PYTHON" 45 | export PYTHON 46 | unalias python 2>/dev/null 47 | unalias pip 2>/dev/null 48 | alias python="$PYTHON" 49 | alias pip="$PYTHON -m pip" 50 | 51 | ### prevent numpy from using multiple threads 52 | export MKL_NUM_THREADS=1 53 | export NUMEXPR_NUM_THREADS=1 54 | export OMP_NUM_THREADS=1 55 | export OPENBLAS_NUM_THREADS=1 56 | EOF 57 | 58 | if [ ! -d g6k-env ]; then 59 | echo "Failed to create virtual environment in 'g6k-env' !" 60 | echo "Is '$PYTHON -m virtualenv' working?" 61 | echo "Try '$PYTHON -m pip install virtualenv' otherwise." 62 | exit 1 63 | fi 64 | 65 | ln -s g6k-env/bin/activate ./ 66 | source g6k-env/bin/activate 67 | 68 | $PIP install -U pip 69 | $PIP install Cython 70 | $PIP install cysignals 71 | 72 | cat <>g6k-env/bin/activate 73 | CFLAGS="\$CFLAGS -O3 -march=native -Wp,-U_FORTIFY_SOURCE" 74 | CXXFLAGS="\$CXXFLAGS -O3 -march=native -Wp,-U_FORTIFY_SOURCE" 75 | export CFLAGS 76 | export CXXFLAGS 77 | EOF 78 | 79 | deactivate 80 | source g6k-env/bin/activate 81 | 82 | 83 | # Install FPLLL 84 | 85 | git clone https://github.com/fplll/fplll g6k-fplll 86 | cd g6k-fplll || exit 1 87 | ./autogen.sh 88 | ./configure --prefix="$VIRTUAL_ENV" $CONFIGURE_FLAGS 89 | make clean 90 | make $jobs 91 | make install || exit 1 92 | cd .. 93 | 94 | # Install FPyLLL 95 | git clone https://github.com/fplll/fpylll g6k-fpylll 96 | cd g6k-fpylll || exit 1 97 | $PIP install Cython 98 | $PIP install -r requirements.txt 99 | $PIP install -r suggestions.txt 100 | $PYTHON setup.py clean 101 | $PYTHON setup.py build_ext $jobs || $PYTHON setup.py build_ext 102 | $PYTHON setup.py install || exit 1 103 | cd .. 104 | 105 | # Install parallel-hashmap 106 | [ -d parallel-hashmap ] || git clone https://github.com/cr-marcstevens/parallel-hashmap 107 | 108 | 109 | $PIP install -r requirements.txt 110 | $PYTHON setup.py clean 111 | $PYTHON setup.py build_ext $jobs --inplace || $PYTHON setup.py build_ext --inplace 112 | 113 | echo " " 114 | echo "Don't forget to activate environment each time:" 115 | echo " source ./activate" 116 | echo "This will also add the following aliases:" 117 | grep "^alias" activate 118 | 119 | -------------------------------------------------------------------------------- /g6k/algorithms/workout.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | 4 | """ 5 | import sys 6 | from pump import pump 7 | from fpylll.util import gaussian_heuristic 8 | import time 9 | 10 | 11 | def workout(g6k, tracer, kappa, blocksize, dim4free_min=0, # Main parameters 12 | dim4free_dec=2, start_n=50, goal_r0=0., # Loop control 13 | verbose=False, save_prefix=None, pump_params=None # Misc 14 | ): 15 | """ 16 | :param g6k: The g6k object to work with 17 | :param tracer: A tracer for g6k 18 | :param kappa: beginning of the block 19 | :param blocksize: dimension of the block 20 | :param dim4free_min: Minimal number of dimension for free ``dimension for free'' [Ducas, 21 | Eurcrypt 2018] (may stop before reaching that if goal_r0) 22 | :param dim4free_dec: By how much do we decreaseee dim4free at each iteration 23 | :param start_n: Dimension of the first pump 24 | :param goal_r0: an extra hook to always insert at position kappa if this goal length can be met 25 | by a lift. Quit when this is reached. 26 | :param verbose: Print workout steps (with timing and quality) information on the standard 27 | output. Enforce verbosity of pump as well. 28 | :param save_prefix: If not None, save intermediate basis at a file-name with this prefix. 29 | Allows to resume computation. 30 | :param pump_params: Parameters to forward to the pump. 31 | 32 | """ 33 | if pump_params is None: 34 | pump_params = {} 35 | 36 | f_start = max(blocksize - start_n, 0, dim4free_min) 37 | fs = range(dim4free_min, f_start+1, dim4free_dec)[::-1] 38 | 39 | if goal_r0: 40 | fs += 9999*[dim4free_min] 41 | 42 | gh = gaussian_heuristic([g6k.M.get_r(i, i) for i in range(kappa, kappa+blocksize)]) 43 | runtimestart = time.time() 44 | 45 | if "verbose" not in pump_params: 46 | pump_params["verbose"] = verbose 47 | 48 | flast = 100 49 | with tracer.context(("workout", "kappa:%d beta:%d f:%d" % (kappa, blocksize, dim4free_min))): 50 | for f in fs: 51 | timestart = time.time() 52 | 53 | sys.stdout.flush() 54 | flast = min( flast, pump(g6k, tracer, kappa, blocksize, f, goal_r0=goal_r0, **pump_params)) 55 | 56 | if verbose: 57 | gh2 = gaussian_heuristic([g6k.M.get_r(i, i) for i in range(kappa+f, kappa+blocksize)]) 58 | quality = (gh * (blocksize - f)) / (gh2 * blocksize) 59 | print("T:%10.5fs, TT:%10.5fs, q:%10.5f r0/gh:%10.5f" % 60 | (time.time() - timestart, 61 | time.time() - runtimestart, quality, g6k.M.get_r(kappa, kappa) / gh)) 62 | #print >> sys.stderr, quality 63 | #print >> sys.stderr, g6k.M.B 64 | 65 | if g6k.M.get_r(kappa, kappa) < goal_r0: 66 | if save_prefix is not None: 67 | fn = open("%s_%d_%d.sol" % (save_prefix.rstrip(), g6k.M.d - f, g6k.M.d), "w") 68 | fn.write(str(g6k.M.B)) 69 | fn.close() 70 | break 71 | 72 | if save_prefix is not None: 73 | fn = open("%s_%d_%d.mat" % (save_prefix.rstrip(), g6k.M.d - f, g6k.M.d), "w") 74 | fn.write(str(g6k.M.B)) 75 | fn.close() 76 | 77 | return flast 78 | -------------------------------------------------------------------------------- /kernel/test_lsh.cpp: -------------------------------------------------------------------------------- 1 | // AVX2 BDGL-like bucketer 2 | // Used by the cpu-only BDGL sieve, and the outdated gpu BDGL sieve. 3 | // An independent, newer and documented version of this code 4 | // can be found at https://github.com/lducas/AVX2-BDGL-bucketer 5 | 6 | #include 7 | #include 8 | #include "math.h" 9 | #include "fht_lsh.h" 10 | 11 | int N = 49; 12 | 13 | void sample_spherical(int N, float *tab) 14 | { 15 | float norm = 0; 16 | float corner_case = (rand()) / static_cast (RAND_MAX); 17 | if (corner_case < 0.001) 18 | { 19 | for (int i = 0; i < N; ++i) tab[i] = 0; 20 | size_t j = (static_cast (rand())) % N; 21 | tab[j] = 1; 22 | return; 23 | } 24 | 25 | for (int i = 0; i < N; ++i) 26 | { 27 | tab[i] = (static_cast (rand()) / static_cast (RAND_MAX) - .5); 28 | tab[i] += (static_cast (rand()) / static_cast (RAND_MAX) - .5); 29 | tab[i] += (static_cast (rand()) / static_cast (RAND_MAX) - .5); 30 | tab[i] += (static_cast (rand()) / static_cast (RAND_MAX) - .5); 31 | tab[i] += (static_cast (rand()) / static_cast (RAND_MAX) - .5); 32 | tab[i] += (static_cast (rand()) / static_cast (RAND_MAX) - .5); 33 | norm += tab[i]*tab[i]; 34 | } 35 | norm = 1/sqrt(norm); 36 | 37 | for (int i = 0; i < N; ++i) 38 | { 39 | tab[i] *= -norm; 40 | } 41 | } 42 | 43 | float ip(int N, float *tab, float *tab0) 44 | { 45 | double res = 0; 46 | for (int i = 0; i < N; ++i) 47 | { 48 | res += tab[i]*tab0[i]; 49 | } 50 | return res; 51 | } 52 | 53 | int main() { 54 | 55 | for (int N = 64; N < 128; N+=1) 56 | { 57 | 58 | for (int M = 1; M < 20; M+=15) 59 | { 60 | printf("\n\n"); 61 | for (int X = 2; X < 4; X++) 62 | { 63 | 64 | int64_t samples = (1 << 15); 65 | int64_t buckets = M * pow(2, .2015 *N); 66 | int64_t references = (1 << 14); 67 | 68 | ProductLSH lsh(N, X, buckets, M, 1); 69 | std::vector > ref(references, std::vector(N)); 70 | int32_t h[M]; 71 | std::vector > buck(buckets); 72 | 73 | float v[N] = {0}; 74 | 75 | double ip_pass = 0, ip_all = 0; 76 | int pass = 0; 77 | 78 | for (int i = 0; i < references; ++i) 79 | { 80 | sample_spherical(N, ref[i].data()); 81 | 82 | 83 | lsh.hash(ref[i].data(), h); 84 | 85 | for (int j = 0; j < M; ++j) 86 | { 87 | assert(h[j] >= 0); 88 | assert(h[j] < buckets); 89 | 90 | buck[h[j]].push_back(i); 91 | 92 | } 93 | } 94 | 95 | for (int r = 0; r < samples; ++r) 96 | { 97 | sample_spherical(N, v); 98 | lsh.hash(v, h); 99 | 100 | float ipp = ip(N, v, ref[0].data()); 101 | ip_all += ipp*ipp; 102 | 103 | for (int j = 0; j < M; ++j) 104 | { 105 | for (int k : buck[h[j]]) 106 | { 107 | float ipp = ip(N, v, ref[k].data()); 108 | ip_pass += ipp*ipp; 109 | pass ++; 110 | } 111 | } 112 | } 113 | 114 | printf("\n dim %2d buckets %6d blocks %d multi %d \n", N,(int) buckets, X, M); 115 | printf("collisions ratio : %6d / %e = %f *expected \n", pass, (1.*references)*samples, (1.*buckets*pass) / (references*samples * M * M)); 116 | printf("std-ip : collision %.4f all %.4f \n", sqrt(ip_pass/pass) ,sqrt(ip_all/(samples))); 117 | } 118 | } 119 | } 120 | return 0; 121 | } 122 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | > :warning: **Update:** It is recommended to use the `python3_lwe `__ branch which has support for python 3. 2 | 3 | ****************************** 4 | G6K - GPU Tensor 5 | ****************************** 6 | 7 | G6K is an open-source C++ and Python (2) library that implements several Sieve algorithms to be used in more advanced lattice reduction tasks. It follows the stateful machine framework from: 8 | 9 | Martin R. Albrecht and Léo Ducas and Gottfried Herold and Elena Kirshanova and Eamonn W. Postlethwaite and Marc Stevens, 10 | The General Sieve Kernel and New Records in Lattice Reduction. 11 | 12 | The main source is available in `fplll/g6k `__ 13 | 14 | This fork expands the G6K implementation with GPU, and in particular Tensor Core, accelerated sieves, and is accompanied by the work: 15 | 16 | Léo Ducas, Marc Stevens, Wessel van Woerden, 17 | Advanced Lattice Sieving on GPUs, with Tensor Cores, 18 | Eurocrypt 2021 (`eprint `__). 19 | 20 | Note the this fork has been expanded from a `pretty old commit `__. 21 | 22 | The CPU-only version of the BDGL-like sieve has been integrated into the `main g6k repository `__, with further improvements, and we aim for long term maintenance. 23 | The GPU implementation has been made public in this repository, but with a lower commitment to quality, documentation and maintenance. Nevertheless feel free to create issues in this repository. 24 | 25 | Building the library 26 | ==================== 27 | 28 | The code has only been tested on the NVIDIA Turing generation, and might not work on more recent GPUs. 29 | 30 | You will need the current master of FPyLLL and a recent version of the CUDA Toolkit. See ``bootstrap.sh`` for creating all dependencies from scratch except for the CUDA Toolkit: 31 | 32 | .. code-block:: bash 33 | 34 | ./bootstrap.sh # once only: creates local python env, builds fplll, fpylll and G6K 35 | source g6k-env/bin/activate # for every new shell: activates local python env 36 | ./rebuild.sh -f -y # whenever you want to rebuild G6K 37 | 38 | Otherwise, you will need fplll and fpylll already installed and build the G6K Cython extension **in place** like so: 39 | 40 | .. code-block:: bash 41 | 42 | pip install Cython 43 | pip install -r requirements.txt 44 | ./rebuild.sh -f -y 45 | 46 | Remove ``-f`` option to compile faster (fewer optimisations). 47 | The ``-y`` option significantly reduces the memory footprint, but disables the standard cpu-only sieves. See ``rebuild.sh`` for more options. 48 | 49 | 50 | Code examples 51 | ============= 52 | 53 | You can run a single svp-challenge instance on a multiple cores and multiple GPUs, for example: 54 | 55 | .. code-block:: bash 56 | 57 | ./svp_challenge.py 100 --threads 4 --gpus 1 --verbose 58 | 59 | Will run a svp-challenge using 4 CPU threads and a single GPU. 60 | 61 | For more details on the parameters used for the `SVP records `__ see Section 7.2 of the `paper `__ or ``runchal2.sh``. 62 | 63 | BDGL-sieve 64 | ---------- 65 | 66 | The BDGL-like GPU sieve can be enabled by running 67 | 68 | .. code-block:: bash 69 | 70 | ./svp_challenge.py 100 --threads 4 --gpus 1 --gpu_bucketer bdgl --verbose 71 | 72 | Acknowledgements 73 | ================ 74 | 75 | This project was supported through the European Union PROMETHEUS project (Horizon 2020 Research and Innovation Program, grant 780701), ERC-StGARTICULATE project (no. 947821), and the RCADG-ALGSTRONGCRYPTO project (no. 740972). 76 | -------------------------------------------------------------------------------- /spherical_coding/launch_all.sh: -------------------------------------------------------------------------------- 1 | python codes.py 1 256 & python codes.py 2 256 & python codes.py 3 256 & python codes.py 4 256 & python codes.py 5 256 2 | python codes.py 5 256 & python codes.py 6 256 & python codes.py 7 256 & python codes.py 8 256 & python codes.py 9 256 3 | python codes.py 15 256 & python codes.py 16 256 & python codes.py 17 256 & python codes.py 18 256 & python codes.py 19 256 4 | python codes.py 20 256 & python codes.py 21 256 & python codes.py 22 256 & python codes.py 23 256 & python codes.py 24 256 5 | python codes.py 25 256 & python codes.py 26 256 & python codes.py 27 256 & python codes.py 28 256 & python codes.py 29 256 6 | python codes.py 30 256 & python codes.py 31 256 & python codes.py 32 256 & python codes.py 33 256 & python codes.py 34 256 7 | python codes.py 35 256 & python codes.py 36 256 & python codes.py 37 256 & python codes.py 38 256 & python codes.py 39 256 8 | python codes.py 40 256 & python codes.py 41 256 & python codes.py 42 256 & python codes.py 43 256 & python codes.py 44 256 9 | python codes.py 45 256 & python codes.py 46 256 & python codes.py 47 256 & python codes.py 48 256 & python codes.py 49 256 10 | python codes.py 50 256 & python codes.py 51 256 & python codes.py 52 256 & python codes.py 53 256 & python codes.py 54 256 11 | python codes.py 55 256 & python codes.py 56 256 & python codes.py 57 256 & python codes.py 58 256 & python codes.py 59 256 12 | python codes.py 60 256 & python codes.py 61 256 & python codes.py 62 256 & python codes.py 63 256 & python codes.py 64 256 & 13 | python codes.py 65 256 & python codes.py 66 256 & python codes.py 67 256 & python codes.py 68 256 & python codes.py 69 256 14 | python codes.py 70 256 & python codes.py 71 256 & python codes.py 72 256 & python codes.py 73 256 & python codes.py 74 256 15 | python codes.py 75 256 & python codes.py 76 256 & python codes.py 77 256 & python codes.py 78 256 & python codes.py 79 256 16 | python codes.py 80 256 & python codes.py 81 256 & python codes.py 82 256 & python codes.py 83 256 & python codes.py 84 256 17 | python codes.py 85 256 & python codes.py 86 256 & python codes.py 87 256 & python codes.py 88 256 & python codes.py 89 256 18 | python codes.py 90 256 & python codes.py 91 256 & python codes.py 92 256 & python codes.py 93 256 & python codes.py 94 256 19 | python codes.py 95 256 & python codes.py 96 256 & python codes.py 97 256 & python codes.py 98 256 & python codes.py 99 256 20 | python codes.py 100 256 & python codes.py 101 256 & python codes.py 102 256 & python codes.py 103 256 & python codes.py 104 256 21 | python codes.py 105 256 & python codes.py 106 256 & python codes.py 107 256 & python codes.py 108 256 & python codes.py 109 256 22 | python codes.py 110 256 & python codes.py 111 256 & python codes.py 112 256 & python codes.py 113 256 & python codes.py 114 256 23 | python codes.py 115 256 & python codes.py 116 256 & python codes.py 117 256 & python codes.py 118 256 & python codes.py 119 256 24 | python codes.py 120 256 & python codes.py 121 256 & python codes.py 122 256 & python codes.py 123 256 & python codes.py 124 256 25 | python codes.py 125 256 & python codes.py 126 256 & python codes.py 127 256 & pytsh hon codes.py 128 256 & python codes.py 129 256 26 | python codes.py 130 256 & python codes.py 131 256 & python codes.py 132 256 & python codes.py 133 256 & python codes.py 134 256 27 | python codes.py 135 256 & python codes.py 136 256 & python codes.py 137 256 & python codes.py 138 256 & python codes.py 139 256 28 | python codes.py 140 256 & python codes.py 141 256 & python codes.py 142 256 & python codes.py 143 256 & python codes.py 144 256 29 | python codes.py 145 256 & python codes.py 146 256 & python codes.py 147 256 & python codes.py 148 256 & python codes.py 149 256 30 | python codes.py 150 256 & python codes.py 151 256 & python codes.py 152 256 & python codes.py 153 256 & python codes.py 154 256 31 | python codes.py 155 256 & python codes.py 156 256 & python codes.py 157 256 & python codes.py 158 256 & python codes.py 159 256 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /full_sieve.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | """ 4 | Full Sieve Command Line Client 5 | """ 6 | 7 | import logging 8 | import pickle as pickler 9 | from collections import OrderedDict 10 | 11 | 12 | from g6k.algorithms.workout import workout 13 | from g6k.siever import Siever 14 | from g6k.utils.cli import parse_args, run_all, pop_prefixed_params 15 | from g6k.utils.stats import SieveTreeTracer 16 | from g6k.utils.util import load_svpchallenge_and_randomize, load_matrix_file, db_stats 17 | from fpylll import BKZ as BKZ_FPYLLL 18 | from fpylll.tools.bkz_stats import dummy_tracer 19 | 20 | 21 | def full_sieve_kernel(arg0, params=None, seed=None): 22 | # Pool.map only supports a single parameter 23 | if params is None and seed is None: 24 | n, params, seed = arg0 25 | else: 26 | n = arg0 27 | 28 | pump_params = pop_prefixed_params("pump", params) 29 | workout_params = pop_prefixed_params("workout", params) 30 | verbose = params.pop("verbose") 31 | load_matrix = params.pop("load_matrix") 32 | pre_bkz = params.pop("pre_bkz") 33 | trace = params.pop("trace") 34 | 35 | reserved_n = n 36 | params = params.new(reserved_n=reserved_n, otf_lift=False) 37 | 38 | if load_matrix is None: 39 | A, bkz = load_svpchallenge_and_randomize(n, s=0, seed=seed) 40 | if verbose: 41 | print("Loaded challenge dim %d" % n) 42 | if pre_bkz is not None: 43 | par = BKZ_FPYLLL.Param(pre_bkz, strategies=BKZ_FPYLLL.DEFAULT_STRATEGY, max_loops=1) 44 | bkz(par) 45 | 46 | else: 47 | A, _ = load_matrix_file(load_matrix, doLLL=False, high_prec=False) 48 | if verbose: 49 | print("Loaded file '%s'" % load_matrix) 50 | 51 | 52 | g6k = Siever(A, params, seed=seed) 53 | if trace: 54 | tracer = SieveTreeTracer(g6k, root_label=("full-sieve", n), start_clocks=True) 55 | else: 56 | tracer = dummy_tracer 57 | 58 | # Actually runs a workout with very large decrements, so that the basis is kind-of reduced 59 | # for the final full-sieve 60 | workout(g6k, tracer, 0, n, dim4free_min=0, dim4free_dec=15, pump_params=pump_params, verbose=verbose, **workout_params) 61 | 62 | g6k.output_bench() 63 | 64 | tracer.exit() 65 | 66 | if hasattr(tracer, "trace"): 67 | return tracer.trace 68 | else: 69 | return None 70 | 71 | def full_sieve(): 72 | """ 73 | Run a a full sieve (with some partial sieve as precomputation). 74 | """ 75 | description = full_sieve.__doc__ 76 | 77 | args, all_params = parse_args(description, trace=True) 78 | 79 | stats = run_all(full_sieve_kernel, all_params.values(), 80 | lower_bound=args.lower_bound, 81 | upper_bound=args.upper_bound, 82 | step_size=args.step_size, 83 | trials=args.trials, 84 | workers=args.workers, 85 | seed=args.seed) 86 | 87 | inverse_all_params = OrderedDict([(v, k) for (k, v) in all_params.iteritems()]) 88 | 89 | for (n, params) in stats: 90 | stat = stats[(n, params)] 91 | if stat[0] is None: 92 | logging.info("Trace disabled") 93 | continue 94 | cputime = sum([float(node["cputime"]) for node in stat])/len(stat) 95 | walltime = sum([float(node["walltime"]) for node in stat])/len(stat) 96 | avr_db, max_db = db_stats(stat) 97 | fmt = "%48s :: m: %1d, n: %2d, cputime :%7.4fs, walltime :%7.4fs, avr_max |db|: 2^%2.2f, max_max db |db|: 2^%2.2f" # noqa 98 | logging.info(fmt %(inverse_all_params[params], params.threads, n, cputime, walltime, avr_db, max_db)) 99 | 100 | if args.pickle: 101 | pickler.dump(stats, open("full-sieve-%d-%d-%d-%d.sobj" % 102 | (args.lower_bound, args.upper_bound, args.step_size, args.trials), "wb")) 103 | 104 | 105 | if __name__ == '__main__': 106 | full_sieve() 107 | -------------------------------------------------------------------------------- /quality.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | """ 4 | SVP Challenge Solver Command Line Client 5 | """ 6 | 7 | import copy 8 | import logging 9 | import pickle as pickler 10 | import sys 11 | from collections import OrderedDict 12 | 13 | from fpylll.util import gaussian_heuristic 14 | 15 | from g6k.algorithms.workout import workout 16 | from g6k.siever import Siever 17 | from g6k.utils.cli import parse_args, run_all, pop_prefixed_params 18 | from g6k.utils.stats import SieveTreeTracer 19 | from g6k.utils.util import load_svpchallenge_and_randomize, load_matrix_file, db_stats 20 | 21 | 22 | def asvp_kernel(arg0, params=None, seed=None): 23 | logger = logging.getLogger('asvp') 24 | 25 | # Pool.map only supports a single parameter 26 | if params is None and seed is None: 27 | n, params, seed = arg0 28 | else: 29 | n = arg0 30 | 31 | params = copy.copy(params) 32 | 33 | load_matrix = params.pop("load_matrix") 34 | pump_params = pop_prefixed_params("pump", params) 35 | workout_params = pop_prefixed_params("workout", params) 36 | verbose = params.pop("verbose") 37 | if verbose: 38 | workout_params["verbose"] = True 39 | challenge_seed = params.pop("challenge_seed") 40 | 41 | if load_matrix is None: 42 | A, _ = load_svpchallenge_and_randomize(n, s=challenge_seed, seed=seed) 43 | if verbose: 44 | print("Loaded challenge dim %d" % n) 45 | else: 46 | A, _ = load_matrix_file(load_matrix) 47 | if verbose: 48 | print("Loaded file '%s'" % load_matrix) 49 | 50 | g6k = Siever(A, params, seed=seed) 51 | tracer = SieveTreeTracer(g6k, root_label=("svp-challenge", n), start_clocks=True) 52 | 53 | gh = gaussian_heuristic([g6k.M.get_r(i, i) for i in range(n)]) 54 | 55 | flast = workout(g6k, tracer, 0, n, pump_params=pump_params, **workout_params) 56 | 57 | tracer.exit() 58 | stat = tracer.trace 59 | 60 | f = workout_params["dim4free_min"] 61 | gh2 = gaussian_heuristic([g6k.M.get_r(i, i) for i in range(f, n)]) 62 | quality = (gh * (n - f)) / (gh2 * n) 63 | 64 | stat.data["quality"] = quality 65 | 66 | print >> sys.stderr, g6k.M.B 67 | 68 | return tracer.trace 69 | 70 | 71 | def asvp(): 72 | """ 73 | Run a Workout until 1.05-approx-SVP on matrices with dimensions in ``range(lower_bound, upper_bound, step_size)``. 74 | """ 75 | description = asvp.__doc__ 76 | 77 | args, all_params = parse_args(description, 78 | load_matrix=None, 79 | verbose=True, 80 | challenge_seed=0, 81 | workout__dim4free_min=30, 82 | workout__dim4free_dec=2) 83 | 84 | stats = run_all(asvp_kernel, all_params.values(), 85 | lower_bound=args.lower_bound, 86 | upper_bound=args.upper_bound, 87 | step_size=args.step_size, 88 | trials=args.trials, 89 | workers=args.workers, 90 | seed=args.seed) 91 | 92 | inverse_all_params = OrderedDict([(v, k) for (k, v) in all_params.iteritems()]) 93 | 94 | for (n, params) in stats: 95 | stat = stats[(n, params)] 96 | cputime = sum([float(node["cputime"]) for node in stat])/len(stat) 97 | walltime = sum([float(node["walltime"]) for node in stat])/len(stat) 98 | quality = sum([float(node["quality"]) for node in stat])/len(stat) 99 | avr_db, max_db = db_stats(stat) 100 | fmt = "%48s :: m: %1d, n: %2d, cputime :%7.4fs, walltime :%7.4fs, quality : %2.4f" # noqa 101 | logging.info(fmt % (inverse_all_params[params], params.threads, n, cputime, walltime, quality)) 102 | 103 | if args.pickle: 104 | pickler.dump(stats, open("hkz-asvp-%d-%d-%d-%d.sobj" % 105 | (args.lower_bound, args.upper_bound, args.step_size, args.trials), "wb")) 106 | 107 | 108 | if __name__ == '__main__': 109 | asvp() 110 | -------------------------------------------------------------------------------- /spherical_coding/sc_10_256.def: -------------------------------------------------------------------------------- 1 | 1 4 5 3 8 9 2 | 2 4 7 3 8 9 3 | 2 3 8 5 6 9 4 | 5 8 9 0 3 6 5 | 2 4 5 0 1 8 6 | 3 4 8 2 6 9 7 | 5 8 9 1 3 6 8 | 2 5 8 0 1 7 9 | 2 7 8 3 4 9 10 | 0 1 3 2 5 6 11 | 1 6 9 2 3 5 12 | 3 4 7 0 5 8 13 | 4 5 6 0 2 3 14 | 1 7 9 0 2 5 15 | 0 6 7 4 5 9 16 | 5 8 9 1 2 6 17 | 3 4 5 0 2 6 18 | 5 7 9 0 4 8 19 | 1 5 6 4 8 9 20 | 1 5 9 2 3 8 21 | 3 7 8 0 4 9 22 | 2 4 9 0 3 6 23 | 2 4 8 6 7 9 24 | 0 2 5 1 4 7 25 | 0 2 8 1 3 6 26 | 0 4 7 5 8 9 27 | 2 6 7 1 4 8 28 | 4 7 8 3 5 6 29 | 1 5 6 2 3 9 30 | 1 5 8 4 7 9 31 | 0 1 6 2 5 7 32 | 1 2 8 4 5 7 33 | 1 7 9 0 3 4 34 | 0 4 9 1 2 8 35 | 2 7 8 0 1 9 36 | 1 3 8 0 2 5 37 | 2 4 5 0 7 9 38 | 5 6 8 0 2 4 39 | 2 5 9 4 6 8 40 | 6 7 9 0 4 5 41 | 2 3 4 5 6 7 42 | 0 2 4 3 7 9 43 | 4 6 7 0 1 9 44 | 0 3 4 1 2 5 45 | 3 7 9 2 4 8 46 | 2 3 6 1 5 7 47 | 0 7 9 4 5 8 48 | 5 7 8 0 6 9 49 | 1 2 3 0 4 7 50 | 1 5 7 3 4 9 51 | 0 3 5 6 7 8 52 | 4 7 9 2 3 6 53 | 1 2 9 0 4 6 54 | 0 8 9 3 5 7 55 | 2 3 9 0 1 4 56 | 6 7 8 3 5 9 57 | 4 8 9 2 3 5 58 | 2 3 6 0 5 9 59 | 3 6 7 1 5 8 60 | 1 2 7 5 8 9 61 | 2 6 9 0 4 8 62 | 2 3 6 0 1 8 63 | 0 6 8 2 5 7 64 | 0 2 6 3 4 8 65 | 0 3 8 1 6 7 66 | 3 7 9 2 5 6 67 | 2 5 6 0 1 8 68 | 2 4 6 3 7 8 69 | 5 6 9 1 7 8 70 | 3 6 7 4 8 9 71 | 0 1 8 4 6 7 72 | 1 8 9 2 3 5 73 | 5 6 8 1 7 9 74 | 0 3 5 1 6 9 75 | 0 2 6 1 4 8 76 | 3 7 9 1 4 6 77 | 0 5 7 1 2 4 78 | 0 6 8 4 7 9 79 | 0 5 6 2 7 8 80 | 1 2 4 3 5 8 81 | 1 3 6 0 2 5 82 | 1 6 7 3 5 9 83 | 0 1 8 2 3 6 84 | 5 6 9 0 4 7 85 | 1 4 5 3 6 7 86 | 6 8 9 0 2 5 87 | 0 2 4 1 7 9 88 | 4 7 8 1 3 6 89 | 2 3 8 0 1 7 90 | 4 5 6 0 2 8 91 | 0 3 4 2 5 9 92 | 0 3 4 1 2 7 93 | 3 4 9 0 5 8 94 | 1 2 9 0 5 6 95 | 1 3 9 4 5 7 96 | 2 3 9 1 5 7 97 | 0 1 2 3 5 8 98 | 0 3 5 1 2 8 99 | 2 3 4 6 8 9 100 | 3 8 9 0 1 5 101 | 2 4 5 0 1 7 102 | 3 5 9 1 4 7 103 | 5 7 8 0 2 4 104 | 0 6 8 1 2 4 105 | 1 2 9 0 6 8 106 | 0 2 6 3 7 9 107 | 2 5 8 0 1 4 108 | 2 8 9 0 4 5 109 | 6 7 9 1 3 8 110 | 5 6 7 1 3 4 111 | 1 3 7 2 4 9 112 | 0 1 8 2 6 7 113 | 2 3 5 0 4 9 114 | 6 7 8 1 3 9 115 | 1 2 8 0 7 9 116 | 0 5 7 2 6 8 117 | 5 6 9 0 3 8 118 | 0 6 9 4 5 7 119 | 4 5 6 1 2 7 120 | 0 3 4 6 8 9 121 | 3 4 5 1 2 7 122 | 2 7 8 0 1 6 123 | 4 6 9 0 1 2 124 | 1 6 7 0 2 5 125 | 2 7 9 4 6 8 126 | 1 3 8 5 6 7 127 | 0 3 9 1 6 8 128 | 1 5 6 0 2 8 129 | 1 5 8 3 4 7 130 | 1 5 7 3 6 9 131 | 0 1 7 3 4 9 132 | 6 7 9 3 4 8 133 | 2 6 7 1 3 9 134 | 2 3 5 4 6 8 135 | 1 7 9 5 6 8 136 | 0 2 9 4 6 7 137 | 0 6 9 1 3 7 138 | 2 3 5 4 6 7 139 | 4 7 8 0 2 9 140 | 3 7 8 0 1 4 141 | 2 6 8 1 3 4 142 | 3 5 8 2 4 6 143 | 2 4 5 1 3 9 144 | 2 3 4 0 6 7 145 | 0 4 5 1 3 6 146 | 6 8 9 2 3 4 147 | 1 2 4 0 3 5 148 | 2 7 9 1 4 6 149 | 2 3 7 6 8 9 150 | 1 4 8 0 7 9 151 | 2 4 8 0 3 6 152 | 7 8 9 1 5 6 153 | 0 1 5 4 7 9 154 | 6 8 9 0 5 7 155 | 2 3 4 0 1 8 156 | 2 7 9 0 6 8 157 | 1 3 4 0 8 9 158 | 4 7 8 1 3 5 159 | 4 8 9 0 2 3 160 | 0 1 8 2 5 6 161 | 0 1 5 6 8 9 162 | 3 5 6 0 2 9 163 | 4 7 8 0 1 6 164 | 1 4 7 0 6 9 165 | 3 7 9 2 4 6 166 | 2 7 8 0 3 6 167 | 2 3 9 0 5 8 168 | 4 6 9 1 3 7 169 | 0 2 7 3 4 8 170 | 1 4 8 0 2 7 171 | 4 6 9 0 3 5 172 | 1 5 7 0 8 9 173 | 1 4 9 0 2 8 174 | 3 5 9 1 2 6 175 | 1 3 6 4 7 8 176 | 0 3 4 7 8 9 177 | 3 5 8 0 4 9 178 | 0 2 6 5 7 9 179 | 0 2 8 4 5 9 180 | 2 3 4 0 5 9 181 | 1 4 6 0 7 9 182 | 1 2 5 6 7 8 183 | 1 3 4 2 6 8 184 | 0 3 8 2 4 5 185 | 5 6 9 0 3 7 186 | 1 5 6 0 2 8 187 | 0 1 9 5 7 8 188 | 2 8 9 3 6 7 189 | 0 1 3 4 5 8 190 | 2 4 9 3 5 6 191 | 2 4 7 0 3 8 192 | 3 7 8 0 1 5 193 | 2 4 6 3 7 8 194 | 0 2 4 1 3 8 195 | 0 6 9 2 3 5 196 | 6 8 9 0 2 7 197 | 1 5 7 4 6 9 198 | 1 3 7 0 2 5 199 | 1 3 9 0 2 7 200 | 0 3 6 2 5 9 201 | 4 5 7 1 2 9 202 | 3 6 7 4 5 9 203 | 6 7 8 3 5 9 204 | 1 5 6 3 4 7 205 | 1 2 8 5 6 7 206 | 3 4 9 1 5 8 207 | 3 4 5 0 2 6 208 | 1 2 9 4 5 6 209 | 1 4 7 3 5 8 210 | 4 8 9 1 3 7 211 | 1 5 7 2 3 4 212 | 1 2 9 0 3 5 213 | 3 6 8 0 1 9 214 | 4 6 7 2 3 8 215 | 0 3 5 2 4 7 216 | 1 4 6 0 7 9 217 | 1 2 3 0 4 7 218 | 3 6 8 0 5 7 219 | 0 2 8 1 3 6 220 | 2 4 6 0 5 7 221 | 0 4 7 1 5 9 222 | 3 4 6 5 7 9 223 | 4 5 6 1 2 9 224 | 1 3 5 0 7 8 225 | 5 6 8 1 2 7 226 | 2 3 9 0 1 8 227 | 2 7 8 3 4 9 228 | 3 7 9 0 4 5 229 | 1 2 6 4 5 7 230 | 4 6 7 0 1 9 231 | 3 4 8 0 5 9 232 | 4 5 9 3 6 7 233 | 1 5 7 0 6 9 234 | 0 7 8 1 3 6 235 | 1 6 8 0 4 9 236 | 1 2 5 3 6 9 237 | 1 4 9 0 7 8 238 | 0 4 9 1 5 7 239 | 2 5 6 0 3 4 240 | 3 6 7 1 8 9 241 | 0 4 9 2 3 5 242 | 4 5 7 1 2 8 243 | 1 2 6 3 5 8 244 | 4 7 8 1 5 6 245 | 0 2 4 5 8 9 246 | 3 7 9 1 4 8 247 | 2 6 9 0 1 8 248 | 0 2 3 1 4 6 249 | 0 2 4 5 8 9 250 | 5 8 9 0 1 3 251 | 6 7 8 1 4 5 252 | 1 5 9 3 6 7 253 | 1 7 8 0 6 9 254 | 0 7 9 3 4 8 255 | 1 4 5 2 6 8 256 | 2 6 8 4 7 9 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_7_256.def: -------------------------------------------------------------------------------- 1 | 0 3 6 1 4 5 2 | 1 5 6 2 3 4 3 | 0 1 3 2 4 6 4 | 1 4 5 0 2 6 5 | 3 5 6 1 2 4 6 | 0 1 5 2 3 4 7 | 1 2 5 0 3 4 8 | 0 4 5 1 2 6 9 | 0 3 4 1 2 5 10 | 0 5 6 2 3 4 11 | 1 3 5 0 4 6 12 | 0 2 3 1 4 5 13 | 0 3 6 2 4 5 14 | 1 3 6 0 2 5 15 | 0 2 3 1 4 6 16 | 0 1 3 4 5 6 17 | 0 3 5 1 2 6 18 | 1 4 6 2 3 5 19 | 1 2 5 0 3 4 20 | 0 1 3 2 5 6 21 | 0 1 5 2 3 6 22 | 1 4 6 0 3 5 23 | 0 2 5 1 3 4 24 | 0 4 6 1 2 5 25 | 0 1 4 2 3 6 26 | 0 3 4 1 2 5 27 | 1 4 5 0 2 6 28 | 0 1 4 3 5 6 29 | 0 4 6 1 2 5 30 | 1 3 5 2 4 6 31 | 0 4 5 1 3 6 32 | 0 3 6 1 2 5 33 | 0 3 6 1 2 5 34 | 1 3 6 0 2 4 35 | 1 2 5 3 4 6 36 | 1 3 4 2 5 6 37 | 0 1 4 2 5 6 38 | 0 2 6 3 4 5 39 | 2 3 4 1 5 6 40 | 0 2 3 4 5 6 41 | 2 5 6 0 3 4 42 | 1 3 5 0 4 6 43 | 0 1 2 3 4 5 44 | 0 3 5 1 2 6 45 | 2 5 6 0 1 3 46 | 0 2 3 1 5 6 47 | 1 4 5 2 3 6 48 | 0 3 4 1 2 5 49 | 0 3 4 1 2 5 50 | 3 4 5 0 2 6 51 | 1 4 6 2 3 5 52 | 3 4 6 1 2 5 53 | 2 3 4 1 5 6 54 | 0 2 4 3 5 6 55 | 2 3 5 0 1 4 56 | 0 2 6 1 3 4 57 | 4 5 6 0 1 2 58 | 0 3 4 2 5 6 59 | 3 4 5 0 2 6 60 | 0 1 6 2 4 5 61 | 1 2 5 0 3 6 62 | 1 2 6 3 4 5 63 | 1 2 5 0 4 6 64 | 0 4 5 1 3 6 65 | 2 4 5 0 1 6 66 | 2 4 5 0 1 3 67 | 2 3 4 0 1 5 68 | 2 3 5 0 4 6 69 | 1 4 5 0 2 6 70 | 4 5 6 0 1 3 71 | 2 3 6 1 4 5 72 | 2 3 5 0 4 6 73 | 2 3 6 0 1 5 74 | 2 3 6 0 1 4 75 | 1 3 4 0 2 5 76 | 0 2 5 1 3 6 77 | 3 4 6 0 1 5 78 | 2 3 5 0 1 6 79 | 2 3 5 0 4 6 80 | 0 2 5 1 3 4 81 | 0 3 5 2 4 6 82 | 3 4 5 0 2 6 83 | 1 3 5 0 4 6 84 | 1 3 5 2 4 6 85 | 2 4 5 0 3 6 86 | 0 2 6 1 4 5 87 | 0 1 6 2 3 4 88 | 4 5 6 0 1 2 89 | 2 4 5 0 1 3 90 | 0 2 3 1 4 6 91 | 0 1 4 2 3 6 92 | 1 2 4 0 3 6 93 | 3 4 6 0 1 5 94 | 1 2 4 3 5 6 95 | 1 3 4 0 2 6 96 | 4 5 6 0 1 3 97 | 2 4 6 1 3 5 98 | 0 4 5 1 3 6 99 | 0 3 4 1 5 6 100 | 1 5 6 0 3 4 101 | 2 3 6 0 1 5 102 | 1 2 3 4 5 6 103 | 0 4 5 1 2 6 104 | 1 2 6 0 4 5 105 | 0 1 5 3 4 6 106 | 0 4 5 1 3 6 107 | 1 5 6 0 2 3 108 | 0 2 4 3 5 6 109 | 0 2 6 3 4 5 110 | 0 1 4 2 3 6 111 | 0 3 6 1 2 4 112 | 0 1 6 2 3 5 113 | 0 3 5 1 2 6 114 | 0 3 6 1 2 5 115 | 0 1 2 3 5 6 116 | 1 2 4 3 5 6 117 | 2 3 5 0 4 6 118 | 1 3 4 0 2 5 119 | 2 4 5 1 3 6 120 | 0 1 5 2 3 4 121 | 0 1 4 2 3 6 122 | 1 2 6 0 4 5 123 | 0 4 6 1 2 3 124 | 1 4 6 0 3 5 125 | 1 5 6 2 3 4 126 | 0 4 5 1 3 6 127 | 1 4 5 0 2 6 128 | 0 1 3 4 5 6 129 | 1 2 6 0 3 4 130 | 2 3 4 0 5 6 131 | 1 2 4 0 5 6 132 | 1 5 6 0 2 3 133 | 1 2 5 3 4 6 134 | 0 1 4 3 5 6 135 | 1 2 6 0 4 5 136 | 0 4 5 1 3 6 137 | 3 4 5 0 2 6 138 | 0 1 6 2 3 5 139 | 0 5 6 1 2 3 140 | 2 3 5 1 4 6 141 | 1 3 6 2 4 5 142 | 0 3 5 1 4 6 143 | 1 4 6 0 2 3 144 | 0 1 5 2 4 6 145 | 0 1 4 2 5 6 146 | 0 2 3 1 4 5 147 | 2 5 6 0 3 4 148 | 0 1 2 3 5 6 149 | 0 2 5 3 4 6 150 | 3 4 6 0 2 5 151 | 0 1 5 2 3 6 152 | 1 3 4 0 2 6 153 | 3 5 6 0 1 4 154 | 0 2 4 3 5 6 155 | 2 5 6 0 1 4 156 | 0 2 4 1 3 6 157 | 3 5 6 0 1 4 158 | 0 3 4 1 2 6 159 | 2 3 4 1 5 6 160 | 0 4 6 1 2 3 161 | 1 2 6 0 4 5 162 | 2 4 5 0 1 6 163 | 1 4 6 2 3 5 164 | 0 2 3 1 4 6 165 | 3 5 6 0 2 4 166 | 2 4 6 0 1 5 167 | 1 3 5 0 4 6 168 | 0 2 3 4 5 6 169 | 1 2 6 3 4 5 170 | 2 4 5 1 3 6 171 | 1 3 4 0 2 6 172 | 2 3 4 1 5 6 173 | 0 5 6 1 2 4 174 | 1 3 6 0 4 5 175 | 1 4 6 0 2 3 176 | 0 2 4 3 5 6 177 | 0 1 2 3 4 6 178 | 1 3 6 0 2 4 179 | 0 3 5 1 4 6 180 | 1 3 4 0 2 5 181 | 4 5 6 0 1 3 182 | 4 5 6 0 1 3 183 | 1 2 4 0 5 6 184 | 0 1 6 2 3 5 185 | 2 4 5 0 1 6 186 | 0 5 6 2 3 4 187 | 0 1 6 2 4 5 188 | 0 2 4 1 3 6 189 | 2 3 4 1 5 6 190 | 0 3 5 1 4 6 191 | 0 2 3 1 4 5 192 | 0 1 2 3 4 5 193 | 1 4 5 0 2 6 194 | 0 2 5 1 3 6 195 | 0 1 2 3 5 6 196 | 0 1 4 2 3 5 197 | 3 4 6 1 2 5 198 | 1 3 5 2 4 6 199 | 0 5 6 1 2 4 200 | 0 4 6 1 2 3 201 | 1 2 3 0 5 6 202 | 0 3 4 1 2 5 203 | 2 3 6 0 1 5 204 | 0 4 6 2 3 5 205 | 1 2 4 0 5 6 206 | 0 4 5 1 2 3 207 | 0 1 2 3 4 6 208 | 0 1 6 2 3 4 209 | 1 3 4 0 2 6 210 | 1 3 4 0 2 5 211 | 0 5 6 2 3 4 212 | 0 5 6 2 3 4 213 | 0 3 5 1 2 6 214 | 2 4 6 1 3 5 215 | 0 1 3 2 4 5 216 | 0 4 5 1 2 3 217 | 0 5 6 1 3 4 218 | 0 2 3 4 5 6 219 | 0 3 6 1 2 4 220 | 0 2 4 1 3 5 221 | 3 5 6 1 2 4 222 | 1 3 6 0 2 4 223 | 3 4 5 1 2 6 224 | 2 3 5 0 1 4 225 | 0 1 2 3 4 5 226 | 1 4 5 0 2 3 227 | 0 3 5 2 4 6 228 | 0 1 3 4 5 6 229 | 1 3 5 0 4 6 230 | 1 5 6 0 2 3 231 | 3 4 5 0 1 2 232 | 0 1 2 3 5 6 233 | 2 4 6 0 1 5 234 | 0 1 3 4 5 6 235 | 0 3 6 1 4 5 236 | 0 5 6 1 2 3 237 | 3 5 6 1 2 4 238 | 2 4 6 1 3 5 239 | 0 4 5 1 2 6 240 | 1 3 5 2 4 6 241 | 2 4 6 0 1 5 242 | 1 2 6 0 3 5 243 | 0 5 6 1 2 4 244 | 0 5 6 1 2 4 245 | 1 4 6 0 2 3 246 | 2 4 5 0 1 3 247 | 3 4 6 0 2 5 248 | 0 5 6 1 2 3 249 | 0 2 5 3 4 6 250 | 0 1 3 2 5 6 251 | 3 4 5 0 1 2 252 | 2 4 5 0 1 3 253 | 0 2 6 1 3 4 254 | 4 5 6 0 1 3 255 | 0 3 4 2 5 6 256 | 0 1 5 2 3 6 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_8_256.def: -------------------------------------------------------------------------------- 1 | 0 5 7 1 3 4 2 | 1 5 6 2 3 4 3 | 0 5 7 1 3 6 4 | 0 2 6 3 4 7 5 | 2 5 6 1 3 7 6 | 3 5 6 1 4 7 7 | 4 6 7 1 2 3 8 | 0 6 7 2 4 5 9 | 0 4 6 1 5 7 10 | 0 3 4 1 5 7 11 | 4 5 7 1 2 6 12 | 5 6 7 0 1 4 13 | 0 1 4 5 6 7 14 | 4 5 7 0 1 2 15 | 2 5 6 0 1 3 16 | 0 1 4 3 6 7 17 | 0 1 4 2 3 5 18 | 3 4 7 2 5 6 19 | 0 2 7 1 3 6 20 | 1 2 7 0 4 6 21 | 0 4 6 3 5 7 22 | 2 3 4 1 5 6 23 | 2 3 4 0 1 7 24 | 1 3 4 0 2 5 25 | 2 3 4 1 5 7 26 | 0 3 4 1 5 7 27 | 0 4 5 2 3 6 28 | 2 3 6 0 5 7 29 | 3 4 6 0 5 7 30 | 0 2 3 1 4 6 31 | 3 4 5 2 6 7 32 | 0 2 7 3 4 6 33 | 1 4 7 0 5 6 34 | 2 4 5 1 6 7 35 | 2 3 7 0 5 6 36 | 1 5 7 2 3 6 37 | 4 6 7 0 3 5 38 | 1 2 5 3 4 6 39 | 1 4 7 3 5 6 40 | 0 3 4 1 5 7 41 | 1 3 5 2 4 7 42 | 1 5 6 0 3 4 43 | 0 3 6 1 5 7 44 | 4 6 7 1 2 5 45 | 1 2 5 3 4 6 46 | 0 2 4 1 3 5 47 | 2 5 7 0 1 6 48 | 1 3 5 0 2 4 49 | 1 5 6 0 2 7 50 | 1 2 3 0 5 6 51 | 0 3 4 1 2 6 52 | 0 2 5 1 3 4 53 | 2 3 6 0 1 5 54 | 0 3 7 1 2 4 55 | 1 4 7 0 2 3 56 | 0 6 7 1 2 3 57 | 1 5 6 2 3 7 58 | 3 5 7 0 1 2 59 | 0 1 5 2 4 6 60 | 1 6 7 3 4 5 61 | 1 3 5 2 6 7 62 | 3 5 7 2 4 6 63 | 1 3 4 0 2 5 64 | 2 3 4 0 1 6 65 | 1 2 4 3 5 6 66 | 0 1 7 2 3 6 67 | 2 6 7 1 3 5 68 | 0 2 3 1 4 7 69 | 0 2 3 1 4 6 70 | 1 2 7 4 5 6 71 | 0 4 5 3 6 7 72 | 1 2 7 3 5 6 73 | 0 4 6 2 5 7 74 | 1 2 3 5 6 7 75 | 0 1 4 2 3 6 76 | 3 6 7 1 2 4 77 | 1 6 7 0 2 4 78 | 2 4 7 0 3 5 79 | 0 4 5 1 2 6 80 | 0 1 3 4 6 7 81 | 1 3 6 0 5 7 82 | 1 4 7 0 2 5 83 | 2 3 4 0 6 7 84 | 3 4 5 0 2 7 85 | 0 1 3 4 5 6 86 | 1 2 5 0 4 6 87 | 2 4 6 3 5 7 88 | 1 5 6 0 2 7 89 | 1 5 7 2 4 6 90 | 3 4 6 1 2 5 91 | 2 5 6 0 1 4 92 | 0 3 7 2 4 6 93 | 0 6 7 2 3 4 94 | 0 3 6 1 2 5 95 | 0 1 2 3 5 6 96 | 1 2 3 0 4 7 97 | 4 5 7 2 3 6 98 | 2 5 7 0 4 6 99 | 0 3 7 1 4 5 100 | 1 5 6 2 3 4 101 | 4 5 6 1 3 7 102 | 0 2 7 3 4 6 103 | 2 5 7 0 3 4 104 | 0 2 7 1 4 5 105 | 0 1 6 3 4 7 106 | 4 6 7 1 2 5 107 | 0 6 7 1 2 5 108 | 0 4 7 2 5 6 109 | 0 3 5 4 6 7 110 | 0 1 3 2 5 6 111 | 3 6 7 1 4 5 112 | 1 3 6 2 5 7 113 | 3 4 5 0 1 2 114 | 0 2 5 1 4 7 115 | 0 5 7 1 2 3 116 | 0 3 6 1 2 7 117 | 0 2 6 1 5 7 118 | 0 3 7 1 2 4 119 | 2 4 7 1 3 5 120 | 0 1 7 2 4 6 121 | 3 4 5 0 1 2 122 | 1 4 7 3 5 6 123 | 2 4 6 1 3 5 124 | 5 6 7 0 1 2 125 | 0 3 6 1 2 4 126 | 2 3 7 0 5 6 127 | 1 3 4 0 2 7 128 | 2 3 4 1 5 6 129 | 1 4 7 0 3 6 130 | 3 5 6 0 1 4 131 | 1 3 7 0 5 6 132 | 1 2 3 0 4 6 133 | 0 1 3 4 6 7 134 | 5 6 7 0 1 3 135 | 3 4 6 2 5 7 136 | 0 3 5 1 2 4 137 | 0 1 3 5 6 7 138 | 0 1 6 2 4 5 139 | 1 3 6 0 2 5 140 | 1 4 6 0 5 7 141 | 2 4 5 3 6 7 142 | 1 4 7 0 2 6 143 | 1 2 4 0 3 7 144 | 0 4 5 1 3 7 145 | 3 5 7 0 1 4 146 | 0 1 6 2 4 7 147 | 4 6 7 1 2 5 148 | 1 2 6 0 3 7 149 | 2 3 5 4 6 7 150 | 0 3 4 2 5 7 151 | 1 3 7 2 4 5 152 | 2 4 7 0 5 6 153 | 0 5 6 3 4 7 154 | 0 1 4 2 6 7 155 | 1 5 6 2 4 7 156 | 0 4 6 2 3 5 157 | 1 5 6 2 4 7 158 | 3 6 7 1 2 5 159 | 1 3 4 0 2 5 160 | 1 3 5 0 4 7 161 | 3 6 7 1 4 5 162 | 2 3 7 0 4 5 163 | 2 4 6 0 5 7 164 | 2 3 7 0 4 5 165 | 1 2 6 3 5 7 166 | 2 6 7 0 4 5 167 | 2 3 4 1 6 7 168 | 2 5 6 0 1 7 169 | 3 4 5 0 6 7 170 | 2 3 5 0 4 7 171 | 0 1 7 2 4 5 172 | 0 2 6 1 3 7 173 | 0 2 4 1 3 6 174 | 1 4 7 2 3 5 175 | 0 1 2 4 5 6 176 | 1 2 4 0 3 7 177 | 4 5 7 0 2 3 178 | 0 4 6 2 5 7 179 | 3 6 7 1 4 5 180 | 4 5 7 0 1 6 181 | 4 6 7 0 3 5 182 | 0 1 2 3 6 7 183 | 1 3 6 0 4 7 184 | 0 4 5 2 3 6 185 | 0 2 7 3 4 5 186 | 0 2 5 1 3 7 187 | 1 4 6 2 3 7 188 | 1 6 7 3 4 5 189 | 3 6 7 0 1 4 190 | 1 4 6 2 5 7 191 | 2 3 7 0 1 5 192 | 4 6 7 0 2 3 193 | 1 2 6 0 3 5 194 | 3 4 7 0 1 2 195 | 1 2 3 0 4 6 196 | 0 4 5 1 2 6 197 | 4 5 7 0 1 2 198 | 0 6 7 3 4 5 199 | 0 4 6 1 5 7 200 | 0 1 6 3 4 5 201 | 1 4 5 0 2 7 202 | 0 2 6 1 3 7 203 | 4 5 6 0 1 7 204 | 0 4 7 1 5 6 205 | 3 5 6 0 2 7 206 | 2 3 7 1 4 6 207 | 0 1 2 3 4 7 208 | 0 3 6 1 4 5 209 | 2 4 7 1 3 6 210 | 2 3 6 0 1 5 211 | 0 1 4 2 3 5 212 | 5 6 7 0 1 3 213 | 0 1 3 5 6 7 214 | 0 3 7 2 5 6 215 | 3 4 5 0 2 7 216 | 1 2 7 0 5 6 217 | 0 5 7 1 2 6 218 | 0 1 6 2 4 7 219 | 2 3 4 0 1 6 220 | 0 3 7 2 4 5 221 | 1 3 7 2 4 6 222 | 1 3 6 0 4 5 223 | 1 3 5 2 6 7 224 | 1 4 6 0 2 5 225 | 0 5 7 1 2 6 226 | 0 3 5 1 2 6 227 | 2 4 5 1 3 6 228 | 1 4 7 0 2 3 229 | 1 5 7 0 3 4 230 | 0 1 7 2 4 5 231 | 0 3 4 5 6 7 232 | 0 3 7 2 4 6 233 | 0 3 5 2 4 6 234 | 1 2 3 0 4 5 235 | 5 6 7 0 2 3 236 | 2 5 6 0 4 7 237 | 0 4 5 1 3 6 238 | 2 3 4 1 6 7 239 | 2 6 7 0 3 4 240 | 5 6 7 2 3 4 241 | 3 4 5 0 1 2 242 | 4 6 7 0 2 3 243 | 3 4 5 0 1 6 244 | 0 2 6 1 5 7 245 | 1 2 7 0 3 5 246 | 0 1 4 5 6 7 247 | 2 6 7 0 3 5 248 | 3 6 7 1 4 5 249 | 3 5 6 0 1 2 250 | 0 5 6 3 4 7 251 | 3 4 7 0 1 6 252 | 2 5 6 1 3 7 253 | 0 2 7 1 4 5 254 | 1 3 5 0 4 7 255 | 1 4 7 0 2 6 256 | 0 3 6 2 4 5 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_9_256.def: -------------------------------------------------------------------------------- 1 | 0 1 6 3 5 8 2 | 4 5 7 3 6 8 3 | 2 4 7 1 3 5 4 | 0 1 6 4 7 8 5 | 3 6 8 0 1 4 6 | 0 3 4 2 5 7 7 | 0 6 7 2 5 8 8 | 2 3 4 1 7 8 9 | 2 4 6 1 3 7 10 | 1 2 3 0 7 8 11 | 0 3 8 1 4 7 12 | 1 7 8 0 3 5 13 | 1 6 7 0 5 8 14 | 2 4 5 3 6 7 15 | 1 4 8 0 3 6 16 | 4 6 7 0 1 3 17 | 1 3 6 2 5 8 18 | 1 3 7 0 5 6 19 | 3 5 8 0 1 7 20 | 4 5 6 1 3 7 21 | 0 3 7 2 4 6 22 | 1 3 4 5 6 7 23 | 3 4 6 0 2 5 24 | 2 5 6 1 3 7 25 | 0 2 3 1 4 5 26 | 2 7 8 1 3 6 27 | 3 5 8 0 2 7 28 | 3 5 6 2 7 8 29 | 1 4 8 3 5 6 30 | 0 3 4 1 6 8 31 | 1 2 7 3 4 8 32 | 0 1 2 4 6 7 33 | 1 5 7 3 6 8 34 | 2 4 8 0 1 7 35 | 0 4 8 2 3 5 36 | 1 7 8 2 3 4 37 | 3 4 5 2 6 8 38 | 0 3 7 1 4 8 39 | 0 5 8 1 2 7 40 | 3 7 8 1 4 6 41 | 0 6 8 1 2 4 42 | 1 3 7 2 4 5 43 | 2 5 7 0 1 4 44 | 1 2 8 4 5 6 45 | 1 5 8 0 6 7 46 | 0 2 4 3 5 7 47 | 0 6 8 1 4 7 48 | 2 5 6 4 7 8 49 | 1 4 7 0 2 3 50 | 1 5 6 4 7 8 51 | 1 4 8 2 5 6 52 | 4 6 7 3 5 8 53 | 3 4 8 0 5 6 54 | 1 3 6 0 2 8 55 | 1 5 6 0 3 8 56 | 3 5 8 0 1 2 57 | 2 6 8 1 3 7 58 | 0 4 8 1 5 7 59 | 2 3 5 0 4 7 60 | 2 6 7 0 3 4 61 | 0 2 4 1 5 6 62 | 2 4 6 0 3 7 63 | 0 6 8 1 2 3 64 | 1 2 4 3 6 8 65 | 2 4 5 1 6 8 66 | 0 3 7 1 5 8 67 | 4 7 8 0 1 3 68 | 0 6 7 1 2 5 69 | 0 1 8 2 3 7 70 | 0 2 4 5 6 7 71 | 2 3 8 0 4 6 72 | 4 5 7 0 1 2 73 | 0 2 3 4 6 8 74 | 3 6 8 1 5 7 75 | 0 1 4 2 5 8 76 | 0 3 5 4 6 7 77 | 0 1 4 5 6 8 78 | 0 2 7 1 3 6 79 | 1 4 7 0 2 8 80 | 1 2 8 0 4 5 81 | 1 3 5 2 4 7 82 | 0 1 3 2 4 5 83 | 2 3 7 1 5 8 84 | 0 1 6 3 7 8 85 | 2 4 7 0 3 5 86 | 3 6 8 0 4 7 87 | 1 2 5 0 3 4 88 | 2 4 7 0 5 6 89 | 0 1 8 3 4 6 90 | 1 6 7 2 3 4 91 | 2 4 6 5 7 8 92 | 0 2 5 1 4 7 93 | 1 2 3 0 6 8 94 | 1 5 7 3 4 8 95 | 4 5 8 2 3 6 96 | 2 7 8 1 4 6 97 | 1 2 5 0 3 8 98 | 0 6 8 1 2 4 99 | 0 5 6 2 3 4 100 | 2 6 7 3 4 8 101 | 0 1 3 4 5 6 102 | 0 4 8 3 5 6 103 | 2 4 5 1 3 7 104 | 1 5 7 0 3 8 105 | 3 4 5 1 7 8 106 | 1 5 6 2 4 7 107 | 6 7 8 0 1 3 108 | 1 3 8 0 6 7 109 | 0 2 3 1 4 8 110 | 0 5 8 4 6 7 111 | 2 4 5 1 3 6 112 | 5 7 8 0 3 6 113 | 3 4 6 0 5 8 114 | 1 5 7 2 4 8 115 | 1 3 6 2 7 8 116 | 1 4 5 0 6 8 117 | 4 5 6 0 2 7 118 | 3 5 8 1 2 6 119 | 1 2 7 3 5 6 120 | 2 4 5 1 7 8 121 | 4 5 7 2 6 8 122 | 2 4 5 6 7 8 123 | 0 1 6 2 3 7 124 | 1 3 6 0 2 7 125 | 3 4 5 0 2 7 126 | 0 5 6 1 2 8 127 | 1 2 3 0 5 8 128 | 1 5 8 2 3 7 129 | 0 2 3 5 6 8 130 | 5 6 8 1 4 7 131 | 1 2 4 5 7 8 132 | 0 3 5 4 6 8 133 | 4 5 7 0 1 6 134 | 2 5 6 1 3 7 135 | 2 6 7 4 5 8 136 | 0 4 7 2 6 8 137 | 3 4 5 0 1 6 138 | 1 2 3 5 6 7 139 | 0 1 2 3 5 7 140 | 1 2 5 3 7 8 141 | 2 5 7 0 1 6 142 | 0 4 7 2 5 8 143 | 0 5 7 3 4 8 144 | 0 3 8 1 6 7 145 | 2 3 5 0 4 6 146 | 0 5 8 2 6 7 147 | 3 4 6 0 1 2 148 | 3 4 5 0 1 8 149 | 0 2 4 1 3 8 150 | 4 6 8 3 5 7 151 | 3 4 5 1 6 7 152 | 1 3 7 2 4 6 153 | 3 4 5 1 2 8 154 | 3 6 7 0 4 5 155 | 0 6 7 3 5 8 156 | 4 6 7 1 2 5 157 | 5 7 8 1 2 4 158 | 3 4 8 1 5 6 159 | 0 4 8 3 5 7 160 | 1 6 8 0 2 5 161 | 2 5 6 0 1 8 162 | 0 5 7 4 6 8 163 | 0 2 6 3 7 8 164 | 1 5 7 0 4 8 165 | 6 7 8 0 2 3 166 | 0 1 2 3 4 6 167 | 3 4 6 0 2 8 168 | 0 4 8 2 3 6 169 | 0 5 7 2 3 6 170 | 1 2 8 3 4 7 171 | 0 7 8 1 2 3 172 | 2 4 6 0 5 7 173 | 5 6 7 0 3 4 174 | 0 6 8 1 4 7 175 | 3 5 6 0 2 8 176 | 3 5 7 0 6 8 177 | 1 4 6 3 7 8 178 | 2 7 8 1 4 5 179 | 0 4 5 2 6 7 180 | 1 2 7 0 6 8 181 | 1 3 4 2 6 8 182 | 1 2 4 0 5 8 183 | 1 4 6 0 2 5 184 | 1 3 7 4 5 6 185 | 4 6 8 0 1 3 186 | 2 3 6 0 4 7 187 | 0 4 7 2 5 8 188 | 3 6 7 2 4 5 189 | 2 5 6 3 4 8 190 | 0 1 8 5 6 7 191 | 0 4 6 3 7 8 192 | 1 3 8 0 2 4 193 | 3 4 5 1 6 8 194 | 2 6 7 0 1 5 195 | 1 3 5 4 7 8 196 | 2 7 8 3 4 5 197 | 0 1 3 4 5 7 198 | 2 3 8 0 5 6 199 | 2 7 8 0 4 5 200 | 4 5 6 0 2 3 201 | 0 3 6 1 4 5 202 | 1 6 8 2 3 5 203 | 0 1 5 2 3 7 204 | 1 2 8 4 5 7 205 | 0 7 8 2 3 6 206 | 4 5 7 0 2 8 207 | 2 5 6 0 4 7 208 | 0 3 7 2 6 8 209 | 2 4 5 3 6 7 210 | 0 3 6 1 2 5 211 | 2 4 6 1 5 8 212 | 5 6 7 1 3 8 213 | 0 3 4 1 2 8 214 | 0 5 8 3 6 7 215 | 3 4 6 0 5 8 216 | 2 3 8 0 4 5 217 | 5 6 8 1 2 4 218 | 1 3 6 2 5 7 219 | 2 6 7 1 4 8 220 | 2 4 8 0 5 7 221 | 5 7 8 0 1 3 222 | 0 2 5 4 7 8 223 | 4 5 8 2 6 7 224 | 2 7 8 0 3 4 225 | 1 2 6 3 5 7 226 | 2 3 6 0 1 8 227 | 1 3 5 0 4 7 228 | 0 2 3 1 6 8 229 | 2 6 7 4 5 8 230 | 1 6 8 0 2 7 231 | 3 4 7 1 2 6 232 | 1 2 4 0 6 7 233 | 0 4 7 2 3 5 234 | 0 6 7 1 2 3 235 | 1 2 8 4 5 6 236 | 2 4 6 0 1 5 237 | 0 2 8 1 3 6 238 | 3 6 7 1 4 8 239 | 1 4 5 0 2 7 240 | 4 7 8 2 5 6 241 | 1 5 7 4 6 8 242 | 5 7 8 0 3 4 243 | 1 4 8 0 2 7 244 | 3 7 8 0 1 4 245 | 0 5 7 4 6 8 246 | 0 3 6 1 2 8 247 | 1 5 7 0 2 3 248 | 4 7 8 0 3 6 249 | 2 3 8 1 5 6 250 | 0 5 7 1 6 8 251 | 0 2 6 1 7 8 252 | 3 5 8 0 1 6 253 | 0 6 8 1 2 4 254 | 0 5 6 3 4 7 255 | 3 4 8 0 5 7 256 | 1 5 8 0 2 4 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_1_256.def: -------------------------------------------------------------------------------- 1 | 0 0 0 0 0 0 2 | 0 0 0 0 0 0 3 | 0 0 0 0 0 0 4 | 0 0 0 0 0 0 5 | 0 0 0 0 0 0 6 | 0 0 0 0 0 0 7 | 0 0 0 0 0 0 8 | 0 0 0 0 0 0 9 | 0 0 0 0 0 0 10 | 0 0 0 0 0 0 11 | 0 0 0 0 0 0 12 | 0 0 0 0 0 0 13 | 0 0 0 0 0 0 14 | 0 0 0 0 0 0 15 | 0 0 0 0 0 0 16 | 0 0 0 0 0 0 17 | 0 0 0 0 0 0 18 | 0 0 0 0 0 0 19 | 0 0 0 0 0 0 20 | 0 0 0 0 0 0 21 | 0 0 0 0 0 0 22 | 0 0 0 0 0 0 23 | 0 0 0 0 0 0 24 | 0 0 0 0 0 0 25 | 0 0 0 0 0 0 26 | 0 0 0 0 0 0 27 | 0 0 0 0 0 0 28 | 0 0 0 0 0 0 29 | 0 0 0 0 0 0 30 | 0 0 0 0 0 0 31 | 0 0 0 0 0 0 32 | 0 0 0 0 0 0 33 | 0 0 0 0 0 0 34 | 0 0 0 0 0 0 35 | 0 0 0 0 0 0 36 | 0 0 0 0 0 0 37 | 0 0 0 0 0 0 38 | 0 0 0 0 0 0 39 | 0 0 0 0 0 0 40 | 0 0 0 0 0 0 41 | 0 0 0 0 0 0 42 | 0 0 0 0 0 0 43 | 0 0 0 0 0 0 44 | 0 0 0 0 0 0 45 | 0 0 0 0 0 0 46 | 0 0 0 0 0 0 47 | 0 0 0 0 0 0 48 | 0 0 0 0 0 0 49 | 0 0 0 0 0 0 50 | 0 0 0 0 0 0 51 | 0 0 0 0 0 0 52 | 0 0 0 0 0 0 53 | 0 0 0 0 0 0 54 | 0 0 0 0 0 0 55 | 0 0 0 0 0 0 56 | 0 0 0 0 0 0 57 | 0 0 0 0 0 0 58 | 0 0 0 0 0 0 59 | 0 0 0 0 0 0 60 | 0 0 0 0 0 0 61 | 0 0 0 0 0 0 62 | 0 0 0 0 0 0 63 | 0 0 0 0 0 0 64 | 0 0 0 0 0 0 65 | 0 0 0 0 0 0 66 | 0 0 0 0 0 0 67 | 0 0 0 0 0 0 68 | 0 0 0 0 0 0 69 | 0 0 0 0 0 0 70 | 0 0 0 0 0 0 71 | 0 0 0 0 0 0 72 | 0 0 0 0 0 0 73 | 0 0 0 0 0 0 74 | 0 0 0 0 0 0 75 | 0 0 0 0 0 0 76 | 0 0 0 0 0 0 77 | 0 0 0 0 0 0 78 | 0 0 0 0 0 0 79 | 0 0 0 0 0 0 80 | 0 0 0 0 0 0 81 | 0 0 0 0 0 0 82 | 0 0 0 0 0 0 83 | 0 0 0 0 0 0 84 | 0 0 0 0 0 0 85 | 0 0 0 0 0 0 86 | 0 0 0 0 0 0 87 | 0 0 0 0 0 0 88 | 0 0 0 0 0 0 89 | 0 0 0 0 0 0 90 | 0 0 0 0 0 0 91 | 0 0 0 0 0 0 92 | 0 0 0 0 0 0 93 | 0 0 0 0 0 0 94 | 0 0 0 0 0 0 95 | 0 0 0 0 0 0 96 | 0 0 0 0 0 0 97 | 0 0 0 0 0 0 98 | 0 0 0 0 0 0 99 | 0 0 0 0 0 0 100 | 0 0 0 0 0 0 101 | 0 0 0 0 0 0 102 | 0 0 0 0 0 0 103 | 0 0 0 0 0 0 104 | 0 0 0 0 0 0 105 | 0 0 0 0 0 0 106 | 0 0 0 0 0 0 107 | 0 0 0 0 0 0 108 | 0 0 0 0 0 0 109 | 0 0 0 0 0 0 110 | 0 0 0 0 0 0 111 | 0 0 0 0 0 0 112 | 0 0 0 0 0 0 113 | 0 0 0 0 0 0 114 | 0 0 0 0 0 0 115 | 0 0 0 0 0 0 116 | 0 0 0 0 0 0 117 | 0 0 0 0 0 0 118 | 0 0 0 0 0 0 119 | 0 0 0 0 0 0 120 | 0 0 0 0 0 0 121 | 0 0 0 0 0 0 122 | 0 0 0 0 0 0 123 | 0 0 0 0 0 0 124 | 0 0 0 0 0 0 125 | 0 0 0 0 0 0 126 | 0 0 0 0 0 0 127 | 0 0 0 0 0 0 128 | 0 0 0 0 0 0 129 | 0 0 0 0 0 0 130 | 0 0 0 0 0 0 131 | 0 0 0 0 0 0 132 | 0 0 0 0 0 0 133 | 0 0 0 0 0 0 134 | 0 0 0 0 0 0 135 | 0 0 0 0 0 0 136 | 0 0 0 0 0 0 137 | 0 0 0 0 0 0 138 | 0 0 0 0 0 0 139 | 0 0 0 0 0 0 140 | 0 0 0 0 0 0 141 | 0 0 0 0 0 0 142 | 0 0 0 0 0 0 143 | 0 0 0 0 0 0 144 | 0 0 0 0 0 0 145 | 0 0 0 0 0 0 146 | 0 0 0 0 0 0 147 | 0 0 0 0 0 0 148 | 0 0 0 0 0 0 149 | 0 0 0 0 0 0 150 | 0 0 0 0 0 0 151 | 0 0 0 0 0 0 152 | 0 0 0 0 0 0 153 | 0 0 0 0 0 0 154 | 0 0 0 0 0 0 155 | 0 0 0 0 0 0 156 | 0 0 0 0 0 0 157 | 0 0 0 0 0 0 158 | 0 0 0 0 0 0 159 | 0 0 0 0 0 0 160 | 0 0 0 0 0 0 161 | 0 0 0 0 0 0 162 | 0 0 0 0 0 0 163 | 0 0 0 0 0 0 164 | 0 0 0 0 0 0 165 | 0 0 0 0 0 0 166 | 0 0 0 0 0 0 167 | 0 0 0 0 0 0 168 | 0 0 0 0 0 0 169 | 0 0 0 0 0 0 170 | 0 0 0 0 0 0 171 | 0 0 0 0 0 0 172 | 0 0 0 0 0 0 173 | 0 0 0 0 0 0 174 | 0 0 0 0 0 0 175 | 0 0 0 0 0 0 176 | 0 0 0 0 0 0 177 | 0 0 0 0 0 0 178 | 0 0 0 0 0 0 179 | 0 0 0 0 0 0 180 | 0 0 0 0 0 0 181 | 0 0 0 0 0 0 182 | 0 0 0 0 0 0 183 | 0 0 0 0 0 0 184 | 0 0 0 0 0 0 185 | 0 0 0 0 0 0 186 | 0 0 0 0 0 0 187 | 0 0 0 0 0 0 188 | 0 0 0 0 0 0 189 | 0 0 0 0 0 0 190 | 0 0 0 0 0 0 191 | 0 0 0 0 0 0 192 | 0 0 0 0 0 0 193 | 0 0 0 0 0 0 194 | 0 0 0 0 0 0 195 | 0 0 0 0 0 0 196 | 0 0 0 0 0 0 197 | 0 0 0 0 0 0 198 | 0 0 0 0 0 0 199 | 0 0 0 0 0 0 200 | 0 0 0 0 0 0 201 | 0 0 0 0 0 0 202 | 0 0 0 0 0 0 203 | 0 0 0 0 0 0 204 | 0 0 0 0 0 0 205 | 0 0 0 0 0 0 206 | 0 0 0 0 0 0 207 | 0 0 0 0 0 0 208 | 0 0 0 0 0 0 209 | 0 0 0 0 0 0 210 | 0 0 0 0 0 0 211 | 0 0 0 0 0 0 212 | 0 0 0 0 0 0 213 | 0 0 0 0 0 0 214 | 0 0 0 0 0 0 215 | 0 0 0 0 0 0 216 | 0 0 0 0 0 0 217 | 0 0 0 0 0 0 218 | 0 0 0 0 0 0 219 | 0 0 0 0 0 0 220 | 0 0 0 0 0 0 221 | 0 0 0 0 0 0 222 | 0 0 0 0 0 0 223 | 0 0 0 0 0 0 224 | 0 0 0 0 0 0 225 | 0 0 0 0 0 0 226 | 0 0 0 0 0 0 227 | 0 0 0 0 0 0 228 | 0 0 0 0 0 0 229 | 0 0 0 0 0 0 230 | 0 0 0 0 0 0 231 | 0 0 0 0 0 0 232 | 0 0 0 0 0 0 233 | 0 0 0 0 0 0 234 | 0 0 0 0 0 0 235 | 0 0 0 0 0 0 236 | 0 0 0 0 0 0 237 | 0 0 0 0 0 0 238 | 0 0 0 0 0 0 239 | 0 0 0 0 0 0 240 | 0 0 0 0 0 0 241 | 0 0 0 0 0 0 242 | 0 0 0 0 0 0 243 | 0 0 0 0 0 0 244 | 0 0 0 0 0 0 245 | 0 0 0 0 0 0 246 | 0 0 0 0 0 0 247 | 0 0 0 0 0 0 248 | 0 0 0 0 0 0 249 | 0 0 0 0 0 0 250 | 0 0 0 0 0 0 251 | 0 0 0 0 0 0 252 | 0 0 0 0 0 0 253 | 0 0 0 0 0 0 254 | 0 0 0 0 0 0 255 | 0 0 0 0 0 0 256 | 0 0 0 0 0 0 257 | 0 0 0 0 0 0 -------------------------------------------------------------------------------- /spherical_coding/sc_2_256.def: -------------------------------------------------------------------------------- 1 | 0 0 0 0 0 0 2 | 0 0 0 0 0 0 3 | 0 0 0 0 0 0 4 | 0 0 0 0 0 0 5 | 0 0 0 0 0 0 6 | 0 0 0 0 0 0 7 | 0 0 0 0 0 0 8 | 0 0 0 0 0 0 9 | 0 0 0 0 0 0 10 | 0 0 0 0 0 0 11 | 0 0 0 0 0 0 12 | 0 0 0 0 0 0 13 | 0 0 0 0 0 0 14 | 0 0 0 0 0 0 15 | 0 0 0 0 0 0 16 | 0 0 0 0 0 0 17 | 0 0 0 0 0 0 18 | 0 0 0 0 0 0 19 | 0 0 0 0 0 0 20 | 0 0 0 0 0 0 21 | 0 0 0 0 0 0 22 | 0 0 0 0 0 0 23 | 0 0 0 0 0 0 24 | 0 0 0 0 0 0 25 | 0 0 0 0 0 0 26 | 0 0 0 0 0 0 27 | 0 0 0 0 0 0 28 | 0 0 0 0 0 0 29 | 0 0 0 0 0 0 30 | 0 0 0 0 0 0 31 | 0 0 0 0 0 0 32 | 0 0 0 0 0 0 33 | 0 0 0 0 0 0 34 | 0 0 0 0 0 0 35 | 0 0 0 0 0 0 36 | 0 0 0 0 0 0 37 | 0 0 0 0 0 0 38 | 0 0 0 0 0 0 39 | 0 0 0 0 0 0 40 | 0 0 0 0 0 0 41 | 0 0 0 0 0 0 42 | 0 0 0 0 0 0 43 | 0 0 0 0 0 0 44 | 0 0 0 0 0 0 45 | 0 0 0 0 0 0 46 | 0 0 0 0 0 0 47 | 0 0 0 0 0 0 48 | 0 0 0 0 0 0 49 | 0 0 0 0 0 0 50 | 0 0 0 0 0 0 51 | 0 0 0 0 0 0 52 | 0 0 0 0 0 0 53 | 0 0 0 0 0 0 54 | 0 0 0 0 0 0 55 | 0 0 0 0 0 0 56 | 0 0 0 0 0 0 57 | 0 0 0 0 0 0 58 | 0 0 0 0 0 0 59 | 0 0 0 0 0 0 60 | 0 0 0 0 0 0 61 | 0 0 0 0 0 0 62 | 0 0 0 0 0 0 63 | 0 0 0 0 0 0 64 | 0 0 0 0 0 0 65 | 0 0 0 0 0 0 66 | 0 0 0 0 0 0 67 | 0 0 0 0 0 0 68 | 0 0 0 0 0 0 69 | 0 0 0 0 0 0 70 | 0 0 0 0 0 0 71 | 0 0 0 0 0 0 72 | 0 0 0 0 0 0 73 | 0 0 0 0 0 0 74 | 0 0 0 0 0 0 75 | 0 0 0 0 0 0 76 | 0 0 0 0 0 0 77 | 0 0 0 0 0 0 78 | 0 0 0 0 0 0 79 | 0 0 0 0 0 0 80 | 0 0 0 0 0 0 81 | 0 0 0 0 0 0 82 | 0 0 0 0 0 0 83 | 0 0 0 0 0 0 84 | 0 0 0 0 0 0 85 | 0 0 0 0 0 0 86 | 0 0 0 0 0 0 87 | 0 0 0 0 0 0 88 | 0 0 0 0 0 0 89 | 0 0 0 0 0 0 90 | 0 0 0 0 0 0 91 | 0 0 0 0 0 0 92 | 0 0 0 0 0 0 93 | 0 0 0 0 0 0 94 | 0 0 0 0 0 0 95 | 0 0 0 0 0 0 96 | 0 0 0 0 0 0 97 | 0 0 0 0 0 0 98 | 0 0 0 0 0 0 99 | 0 0 0 0 0 0 100 | 0 0 0 0 0 0 101 | 0 0 0 0 0 0 102 | 0 0 0 0 0 0 103 | 0 0 0 0 0 0 104 | 0 0 0 0 0 0 105 | 0 0 0 0 0 0 106 | 0 0 0 0 0 0 107 | 0 0 0 0 0 0 108 | 0 0 0 0 0 0 109 | 0 0 0 0 0 0 110 | 0 0 0 0 0 0 111 | 0 0 0 0 0 0 112 | 0 0 0 0 0 0 113 | 0 0 0 0 0 0 114 | 0 0 0 0 0 0 115 | 0 0 0 0 0 0 116 | 0 0 0 0 0 0 117 | 0 0 0 0 0 0 118 | 0 0 0 0 0 0 119 | 0 0 0 0 0 0 120 | 0 0 0 0 0 0 121 | 0 0 0 0 0 0 122 | 0 0 0 0 0 0 123 | 0 0 0 0 0 0 124 | 0 0 0 0 0 0 125 | 0 0 0 0 0 0 126 | 0 0 0 0 0 0 127 | 0 0 0 0 0 0 128 | 0 0 0 0 0 0 129 | 0 0 0 0 0 0 130 | 0 0 0 0 0 0 131 | 0 0 0 0 0 0 132 | 0 0 0 0 0 0 133 | 0 0 0 0 0 0 134 | 0 0 0 0 0 0 135 | 0 0 0 0 0 0 136 | 0 0 0 0 0 0 137 | 0 0 0 0 0 0 138 | 0 0 0 0 0 0 139 | 0 0 0 0 0 0 140 | 0 0 0 0 0 0 141 | 0 0 0 0 0 0 142 | 0 0 0 0 0 0 143 | 0 0 0 0 0 0 144 | 0 0 0 0 0 0 145 | 0 0 0 0 0 0 146 | 0 0 0 0 0 0 147 | 0 0 0 0 0 0 148 | 0 0 0 0 0 0 149 | 0 0 0 0 0 0 150 | 0 0 0 0 0 0 151 | 0 0 0 0 0 0 152 | 0 0 0 0 0 0 153 | 0 0 0 0 0 0 154 | 0 0 0 0 0 0 155 | 0 0 0 0 0 0 156 | 0 0 0 0 0 0 157 | 0 0 0 0 0 0 158 | 0 0 0 0 0 0 159 | 0 0 0 0 0 0 160 | 0 0 0 0 0 0 161 | 0 0 0 0 0 0 162 | 0 0 0 0 0 0 163 | 0 0 0 0 0 0 164 | 0 0 0 0 0 0 165 | 0 0 0 0 0 0 166 | 0 0 0 0 0 0 167 | 0 0 0 0 0 0 168 | 0 0 0 0 0 0 169 | 0 0 0 0 0 0 170 | 0 0 0 0 0 0 171 | 0 0 0 0 0 0 172 | 0 0 0 0 0 0 173 | 0 0 0 0 0 0 174 | 0 0 0 0 0 0 175 | 0 0 0 0 0 0 176 | 0 0 0 0 0 0 177 | 0 0 0 0 0 0 178 | 0 0 0 0 0 0 179 | 0 0 0 0 0 0 180 | 0 0 0 0 0 0 181 | 0 0 0 0 0 0 182 | 0 0 0 0 0 0 183 | 0 0 0 0 0 0 184 | 0 0 0 0 0 0 185 | 0 0 0 0 0 0 186 | 0 0 0 0 0 0 187 | 0 0 0 0 0 0 188 | 0 0 0 0 0 0 189 | 0 0 0 0 0 0 190 | 0 0 0 0 0 0 191 | 0 0 0 0 0 0 192 | 0 0 0 0 0 0 193 | 0 0 0 0 0 0 194 | 0 0 0 0 0 0 195 | 0 0 0 0 0 0 196 | 0 0 0 0 0 0 197 | 0 0 0 0 0 0 198 | 0 0 0 0 0 0 199 | 0 0 0 0 0 0 200 | 0 0 0 0 0 0 201 | 0 0 0 0 0 0 202 | 0 0 0 0 0 0 203 | 0 0 0 0 0 0 204 | 0 0 0 0 0 0 205 | 0 0 0 0 0 0 206 | 0 0 0 0 0 0 207 | 0 0 0 0 0 0 208 | 0 0 0 0 0 0 209 | 0 0 0 0 0 0 210 | 0 0 0 0 0 0 211 | 0 0 0 0 0 0 212 | 0 0 0 0 0 0 213 | 0 0 0 0 0 0 214 | 0 0 0 0 0 0 215 | 0 0 0 0 0 0 216 | 0 0 0 0 0 0 217 | 0 0 0 0 0 0 218 | 0 0 0 0 0 0 219 | 0 0 0 0 0 0 220 | 0 0 0 0 0 0 221 | 0 0 0 0 0 0 222 | 0 0 0 0 0 0 223 | 0 0 0 0 0 0 224 | 0 0 0 0 0 0 225 | 0 0 0 0 0 0 226 | 0 0 0 0 0 0 227 | 0 0 0 0 0 0 228 | 0 0 0 0 0 0 229 | 0 0 0 0 0 0 230 | 0 0 0 0 0 0 231 | 0 0 0 0 0 0 232 | 0 0 0 0 0 0 233 | 0 0 0 0 0 0 234 | 0 0 0 0 0 0 235 | 0 0 0 0 0 0 236 | 0 0 0 0 0 0 237 | 0 0 0 0 0 0 238 | 0 0 0 0 0 0 239 | 0 0 0 0 0 0 240 | 0 0 0 0 0 0 241 | 0 0 0 0 0 0 242 | 0 0 0 0 0 0 243 | 0 0 0 0 0 0 244 | 0 0 0 0 0 0 245 | 0 0 0 0 0 0 246 | 0 0 0 0 0 0 247 | 0 0 0 0 0 0 248 | 0 0 0 0 0 0 249 | 0 0 0 0 0 0 250 | 0 0 0 0 0 0 251 | 0 0 0 0 0 0 252 | 0 0 0 0 0 0 253 | 0 0 0 0 0 0 254 | 0 0 0 0 0 0 255 | 0 0 0 0 0 0 256 | 0 0 0 0 0 0 257 | 0 0 0 0 0 0 -------------------------------------------------------------------------------- /spherical_coding/sc_3_256.def: -------------------------------------------------------------------------------- 1 | 0 0 0 0 0 0 2 | 0 0 0 0 0 0 3 | 0 0 0 0 0 0 4 | 0 0 0 0 0 0 5 | 0 0 0 0 0 0 6 | 0 0 0 0 0 0 7 | 0 0 0 0 0 0 8 | 0 0 0 0 0 0 9 | 0 0 0 0 0 0 10 | 0 0 0 0 0 0 11 | 0 0 0 0 0 0 12 | 0 0 0 0 0 0 13 | 0 0 0 0 0 0 14 | 0 0 0 0 0 0 15 | 0 0 0 0 0 0 16 | 0 0 0 0 0 0 17 | 0 0 0 0 0 0 18 | 0 0 0 0 0 0 19 | 0 0 0 0 0 0 20 | 0 0 0 0 0 0 21 | 0 0 0 0 0 0 22 | 0 0 0 0 0 0 23 | 0 0 0 0 0 0 24 | 0 0 0 0 0 0 25 | 0 0 0 0 0 0 26 | 0 0 0 0 0 0 27 | 0 0 0 0 0 0 28 | 0 0 0 0 0 0 29 | 0 0 0 0 0 0 30 | 0 0 0 0 0 0 31 | 0 0 0 0 0 0 32 | 0 0 0 0 0 0 33 | 0 0 0 0 0 0 34 | 0 0 0 0 0 0 35 | 0 0 0 0 0 0 36 | 0 0 0 0 0 0 37 | 0 0 0 0 0 0 38 | 0 0 0 0 0 0 39 | 0 0 0 0 0 0 40 | 0 0 0 0 0 0 41 | 0 0 0 0 0 0 42 | 0 0 0 0 0 0 43 | 0 0 0 0 0 0 44 | 0 0 0 0 0 0 45 | 0 0 0 0 0 0 46 | 0 0 0 0 0 0 47 | 0 0 0 0 0 0 48 | 0 0 0 0 0 0 49 | 0 0 0 0 0 0 50 | 0 0 0 0 0 0 51 | 0 0 0 0 0 0 52 | 0 0 0 0 0 0 53 | 0 0 0 0 0 0 54 | 0 0 0 0 0 0 55 | 0 0 0 0 0 0 56 | 0 0 0 0 0 0 57 | 0 0 0 0 0 0 58 | 0 0 0 0 0 0 59 | 0 0 0 0 0 0 60 | 0 0 0 0 0 0 61 | 0 0 0 0 0 0 62 | 0 0 0 0 0 0 63 | 0 0 0 0 0 0 64 | 0 0 0 0 0 0 65 | 0 0 0 0 0 0 66 | 0 0 0 0 0 0 67 | 0 0 0 0 0 0 68 | 0 0 0 0 0 0 69 | 0 0 0 0 0 0 70 | 0 0 0 0 0 0 71 | 0 0 0 0 0 0 72 | 0 0 0 0 0 0 73 | 0 0 0 0 0 0 74 | 0 0 0 0 0 0 75 | 0 0 0 0 0 0 76 | 0 0 0 0 0 0 77 | 0 0 0 0 0 0 78 | 0 0 0 0 0 0 79 | 0 0 0 0 0 0 80 | 0 0 0 0 0 0 81 | 0 0 0 0 0 0 82 | 0 0 0 0 0 0 83 | 0 0 0 0 0 0 84 | 0 0 0 0 0 0 85 | 0 0 0 0 0 0 86 | 0 0 0 0 0 0 87 | 0 0 0 0 0 0 88 | 0 0 0 0 0 0 89 | 0 0 0 0 0 0 90 | 0 0 0 0 0 0 91 | 0 0 0 0 0 0 92 | 0 0 0 0 0 0 93 | 0 0 0 0 0 0 94 | 0 0 0 0 0 0 95 | 0 0 0 0 0 0 96 | 0 0 0 0 0 0 97 | 0 0 0 0 0 0 98 | 0 0 0 0 0 0 99 | 0 0 0 0 0 0 100 | 0 0 0 0 0 0 101 | 0 0 0 0 0 0 102 | 0 0 0 0 0 0 103 | 0 0 0 0 0 0 104 | 0 0 0 0 0 0 105 | 0 0 0 0 0 0 106 | 0 0 0 0 0 0 107 | 0 0 0 0 0 0 108 | 0 0 0 0 0 0 109 | 0 0 0 0 0 0 110 | 0 0 0 0 0 0 111 | 0 0 0 0 0 0 112 | 0 0 0 0 0 0 113 | 0 0 0 0 0 0 114 | 0 0 0 0 0 0 115 | 0 0 0 0 0 0 116 | 0 0 0 0 0 0 117 | 0 0 0 0 0 0 118 | 0 0 0 0 0 0 119 | 0 0 0 0 0 0 120 | 0 0 0 0 0 0 121 | 0 0 0 0 0 0 122 | 0 0 0 0 0 0 123 | 0 0 0 0 0 0 124 | 0 0 0 0 0 0 125 | 0 0 0 0 0 0 126 | 0 0 0 0 0 0 127 | 0 0 0 0 0 0 128 | 0 0 0 0 0 0 129 | 0 0 0 0 0 0 130 | 0 0 0 0 0 0 131 | 0 0 0 0 0 0 132 | 0 0 0 0 0 0 133 | 0 0 0 0 0 0 134 | 0 0 0 0 0 0 135 | 0 0 0 0 0 0 136 | 0 0 0 0 0 0 137 | 0 0 0 0 0 0 138 | 0 0 0 0 0 0 139 | 0 0 0 0 0 0 140 | 0 0 0 0 0 0 141 | 0 0 0 0 0 0 142 | 0 0 0 0 0 0 143 | 0 0 0 0 0 0 144 | 0 0 0 0 0 0 145 | 0 0 0 0 0 0 146 | 0 0 0 0 0 0 147 | 0 0 0 0 0 0 148 | 0 0 0 0 0 0 149 | 0 0 0 0 0 0 150 | 0 0 0 0 0 0 151 | 0 0 0 0 0 0 152 | 0 0 0 0 0 0 153 | 0 0 0 0 0 0 154 | 0 0 0 0 0 0 155 | 0 0 0 0 0 0 156 | 0 0 0 0 0 0 157 | 0 0 0 0 0 0 158 | 0 0 0 0 0 0 159 | 0 0 0 0 0 0 160 | 0 0 0 0 0 0 161 | 0 0 0 0 0 0 162 | 0 0 0 0 0 0 163 | 0 0 0 0 0 0 164 | 0 0 0 0 0 0 165 | 0 0 0 0 0 0 166 | 0 0 0 0 0 0 167 | 0 0 0 0 0 0 168 | 0 0 0 0 0 0 169 | 0 0 0 0 0 0 170 | 0 0 0 0 0 0 171 | 0 0 0 0 0 0 172 | 0 0 0 0 0 0 173 | 0 0 0 0 0 0 174 | 0 0 0 0 0 0 175 | 0 0 0 0 0 0 176 | 0 0 0 0 0 0 177 | 0 0 0 0 0 0 178 | 0 0 0 0 0 0 179 | 0 0 0 0 0 0 180 | 0 0 0 0 0 0 181 | 0 0 0 0 0 0 182 | 0 0 0 0 0 0 183 | 0 0 0 0 0 0 184 | 0 0 0 0 0 0 185 | 0 0 0 0 0 0 186 | 0 0 0 0 0 0 187 | 0 0 0 0 0 0 188 | 0 0 0 0 0 0 189 | 0 0 0 0 0 0 190 | 0 0 0 0 0 0 191 | 0 0 0 0 0 0 192 | 0 0 0 0 0 0 193 | 0 0 0 0 0 0 194 | 0 0 0 0 0 0 195 | 0 0 0 0 0 0 196 | 0 0 0 0 0 0 197 | 0 0 0 0 0 0 198 | 0 0 0 0 0 0 199 | 0 0 0 0 0 0 200 | 0 0 0 0 0 0 201 | 0 0 0 0 0 0 202 | 0 0 0 0 0 0 203 | 0 0 0 0 0 0 204 | 0 0 0 0 0 0 205 | 0 0 0 0 0 0 206 | 0 0 0 0 0 0 207 | 0 0 0 0 0 0 208 | 0 0 0 0 0 0 209 | 0 0 0 0 0 0 210 | 0 0 0 0 0 0 211 | 0 0 0 0 0 0 212 | 0 0 0 0 0 0 213 | 0 0 0 0 0 0 214 | 0 0 0 0 0 0 215 | 0 0 0 0 0 0 216 | 0 0 0 0 0 0 217 | 0 0 0 0 0 0 218 | 0 0 0 0 0 0 219 | 0 0 0 0 0 0 220 | 0 0 0 0 0 0 221 | 0 0 0 0 0 0 222 | 0 0 0 0 0 0 223 | 0 0 0 0 0 0 224 | 0 0 0 0 0 0 225 | 0 0 0 0 0 0 226 | 0 0 0 0 0 0 227 | 0 0 0 0 0 0 228 | 0 0 0 0 0 0 229 | 0 0 0 0 0 0 230 | 0 0 0 0 0 0 231 | 0 0 0 0 0 0 232 | 0 0 0 0 0 0 233 | 0 0 0 0 0 0 234 | 0 0 0 0 0 0 235 | 0 0 0 0 0 0 236 | 0 0 0 0 0 0 237 | 0 0 0 0 0 0 238 | 0 0 0 0 0 0 239 | 0 0 0 0 0 0 240 | 0 0 0 0 0 0 241 | 0 0 0 0 0 0 242 | 0 0 0 0 0 0 243 | 0 0 0 0 0 0 244 | 0 0 0 0 0 0 245 | 0 0 0 0 0 0 246 | 0 0 0 0 0 0 247 | 0 0 0 0 0 0 248 | 0 0 0 0 0 0 249 | 0 0 0 0 0 0 250 | 0 0 0 0 0 0 251 | 0 0 0 0 0 0 252 | 0 0 0 0 0 0 253 | 0 0 0 0 0 0 254 | 0 0 0 0 0 0 255 | 0 0 0 0 0 0 256 | 0 0 0 0 0 0 257 | 0 0 0 0 0 0 -------------------------------------------------------------------------------- /spherical_coding/sc_4_256.def: -------------------------------------------------------------------------------- 1 | 0 0 0 0 0 0 2 | 0 0 0 0 0 0 3 | 0 0 0 0 0 0 4 | 0 0 0 0 0 0 5 | 0 0 0 0 0 0 6 | 0 0 0 0 0 0 7 | 0 0 0 0 0 0 8 | 0 0 0 0 0 0 9 | 0 0 0 0 0 0 10 | 0 0 0 0 0 0 11 | 0 0 0 0 0 0 12 | 0 0 0 0 0 0 13 | 0 0 0 0 0 0 14 | 0 0 0 0 0 0 15 | 0 0 0 0 0 0 16 | 0 0 0 0 0 0 17 | 0 0 0 0 0 0 18 | 0 0 0 0 0 0 19 | 0 0 0 0 0 0 20 | 0 0 0 0 0 0 21 | 0 0 0 0 0 0 22 | 0 0 0 0 0 0 23 | 0 0 0 0 0 0 24 | 0 0 0 0 0 0 25 | 0 0 0 0 0 0 26 | 0 0 0 0 0 0 27 | 0 0 0 0 0 0 28 | 0 0 0 0 0 0 29 | 0 0 0 0 0 0 30 | 0 0 0 0 0 0 31 | 0 0 0 0 0 0 32 | 0 0 0 0 0 0 33 | 0 0 0 0 0 0 34 | 0 0 0 0 0 0 35 | 0 0 0 0 0 0 36 | 0 0 0 0 0 0 37 | 0 0 0 0 0 0 38 | 0 0 0 0 0 0 39 | 0 0 0 0 0 0 40 | 0 0 0 0 0 0 41 | 0 0 0 0 0 0 42 | 0 0 0 0 0 0 43 | 0 0 0 0 0 0 44 | 0 0 0 0 0 0 45 | 0 0 0 0 0 0 46 | 0 0 0 0 0 0 47 | 0 0 0 0 0 0 48 | 0 0 0 0 0 0 49 | 0 0 0 0 0 0 50 | 0 0 0 0 0 0 51 | 0 0 0 0 0 0 52 | 0 0 0 0 0 0 53 | 0 0 0 0 0 0 54 | 0 0 0 0 0 0 55 | 0 0 0 0 0 0 56 | 0 0 0 0 0 0 57 | 0 0 0 0 0 0 58 | 0 0 0 0 0 0 59 | 0 0 0 0 0 0 60 | 0 0 0 0 0 0 61 | 0 0 0 0 0 0 62 | 0 0 0 0 0 0 63 | 0 0 0 0 0 0 64 | 0 0 0 0 0 0 65 | 0 0 0 0 0 0 66 | 0 0 0 0 0 0 67 | 0 0 0 0 0 0 68 | 0 0 0 0 0 0 69 | 0 0 0 0 0 0 70 | 0 0 0 0 0 0 71 | 0 0 0 0 0 0 72 | 0 0 0 0 0 0 73 | 0 0 0 0 0 0 74 | 0 0 0 0 0 0 75 | 0 0 0 0 0 0 76 | 0 0 0 0 0 0 77 | 0 0 0 0 0 0 78 | 0 0 0 0 0 0 79 | 0 0 0 0 0 0 80 | 0 0 0 0 0 0 81 | 0 0 0 0 0 0 82 | 0 0 0 0 0 0 83 | 0 0 0 0 0 0 84 | 0 0 0 0 0 0 85 | 0 0 0 0 0 0 86 | 0 0 0 0 0 0 87 | 0 0 0 0 0 0 88 | 0 0 0 0 0 0 89 | 0 0 0 0 0 0 90 | 0 0 0 0 0 0 91 | 0 0 0 0 0 0 92 | 0 0 0 0 0 0 93 | 0 0 0 0 0 0 94 | 0 0 0 0 0 0 95 | 0 0 0 0 0 0 96 | 0 0 0 0 0 0 97 | 0 0 0 0 0 0 98 | 0 0 0 0 0 0 99 | 0 0 0 0 0 0 100 | 0 0 0 0 0 0 101 | 0 0 0 0 0 0 102 | 0 0 0 0 0 0 103 | 0 0 0 0 0 0 104 | 0 0 0 0 0 0 105 | 0 0 0 0 0 0 106 | 0 0 0 0 0 0 107 | 0 0 0 0 0 0 108 | 0 0 0 0 0 0 109 | 0 0 0 0 0 0 110 | 0 0 0 0 0 0 111 | 0 0 0 0 0 0 112 | 0 0 0 0 0 0 113 | 0 0 0 0 0 0 114 | 0 0 0 0 0 0 115 | 0 0 0 0 0 0 116 | 0 0 0 0 0 0 117 | 0 0 0 0 0 0 118 | 0 0 0 0 0 0 119 | 0 0 0 0 0 0 120 | 0 0 0 0 0 0 121 | 0 0 0 0 0 0 122 | 0 0 0 0 0 0 123 | 0 0 0 0 0 0 124 | 0 0 0 0 0 0 125 | 0 0 0 0 0 0 126 | 0 0 0 0 0 0 127 | 0 0 0 0 0 0 128 | 0 0 0 0 0 0 129 | 0 0 0 0 0 0 130 | 0 0 0 0 0 0 131 | 0 0 0 0 0 0 132 | 0 0 0 0 0 0 133 | 0 0 0 0 0 0 134 | 0 0 0 0 0 0 135 | 0 0 0 0 0 0 136 | 0 0 0 0 0 0 137 | 0 0 0 0 0 0 138 | 0 0 0 0 0 0 139 | 0 0 0 0 0 0 140 | 0 0 0 0 0 0 141 | 0 0 0 0 0 0 142 | 0 0 0 0 0 0 143 | 0 0 0 0 0 0 144 | 0 0 0 0 0 0 145 | 0 0 0 0 0 0 146 | 0 0 0 0 0 0 147 | 0 0 0 0 0 0 148 | 0 0 0 0 0 0 149 | 0 0 0 0 0 0 150 | 0 0 0 0 0 0 151 | 0 0 0 0 0 0 152 | 0 0 0 0 0 0 153 | 0 0 0 0 0 0 154 | 0 0 0 0 0 0 155 | 0 0 0 0 0 0 156 | 0 0 0 0 0 0 157 | 0 0 0 0 0 0 158 | 0 0 0 0 0 0 159 | 0 0 0 0 0 0 160 | 0 0 0 0 0 0 161 | 0 0 0 0 0 0 162 | 0 0 0 0 0 0 163 | 0 0 0 0 0 0 164 | 0 0 0 0 0 0 165 | 0 0 0 0 0 0 166 | 0 0 0 0 0 0 167 | 0 0 0 0 0 0 168 | 0 0 0 0 0 0 169 | 0 0 0 0 0 0 170 | 0 0 0 0 0 0 171 | 0 0 0 0 0 0 172 | 0 0 0 0 0 0 173 | 0 0 0 0 0 0 174 | 0 0 0 0 0 0 175 | 0 0 0 0 0 0 176 | 0 0 0 0 0 0 177 | 0 0 0 0 0 0 178 | 0 0 0 0 0 0 179 | 0 0 0 0 0 0 180 | 0 0 0 0 0 0 181 | 0 0 0 0 0 0 182 | 0 0 0 0 0 0 183 | 0 0 0 0 0 0 184 | 0 0 0 0 0 0 185 | 0 0 0 0 0 0 186 | 0 0 0 0 0 0 187 | 0 0 0 0 0 0 188 | 0 0 0 0 0 0 189 | 0 0 0 0 0 0 190 | 0 0 0 0 0 0 191 | 0 0 0 0 0 0 192 | 0 0 0 0 0 0 193 | 0 0 0 0 0 0 194 | 0 0 0 0 0 0 195 | 0 0 0 0 0 0 196 | 0 0 0 0 0 0 197 | 0 0 0 0 0 0 198 | 0 0 0 0 0 0 199 | 0 0 0 0 0 0 200 | 0 0 0 0 0 0 201 | 0 0 0 0 0 0 202 | 0 0 0 0 0 0 203 | 0 0 0 0 0 0 204 | 0 0 0 0 0 0 205 | 0 0 0 0 0 0 206 | 0 0 0 0 0 0 207 | 0 0 0 0 0 0 208 | 0 0 0 0 0 0 209 | 0 0 0 0 0 0 210 | 0 0 0 0 0 0 211 | 0 0 0 0 0 0 212 | 0 0 0 0 0 0 213 | 0 0 0 0 0 0 214 | 0 0 0 0 0 0 215 | 0 0 0 0 0 0 216 | 0 0 0 0 0 0 217 | 0 0 0 0 0 0 218 | 0 0 0 0 0 0 219 | 0 0 0 0 0 0 220 | 0 0 0 0 0 0 221 | 0 0 0 0 0 0 222 | 0 0 0 0 0 0 223 | 0 0 0 0 0 0 224 | 0 0 0 0 0 0 225 | 0 0 0 0 0 0 226 | 0 0 0 0 0 0 227 | 0 0 0 0 0 0 228 | 0 0 0 0 0 0 229 | 0 0 0 0 0 0 230 | 0 0 0 0 0 0 231 | 0 0 0 0 0 0 232 | 0 0 0 0 0 0 233 | 0 0 0 0 0 0 234 | 0 0 0 0 0 0 235 | 0 0 0 0 0 0 236 | 0 0 0 0 0 0 237 | 0 0 0 0 0 0 238 | 0 0 0 0 0 0 239 | 0 0 0 0 0 0 240 | 0 0 0 0 0 0 241 | 0 0 0 0 0 0 242 | 0 0 0 0 0 0 243 | 0 0 0 0 0 0 244 | 0 0 0 0 0 0 245 | 0 0 0 0 0 0 246 | 0 0 0 0 0 0 247 | 0 0 0 0 0 0 248 | 0 0 0 0 0 0 249 | 0 0 0 0 0 0 250 | 0 0 0 0 0 0 251 | 0 0 0 0 0 0 252 | 0 0 0 0 0 0 253 | 0 0 0 0 0 0 254 | 0 0 0 0 0 0 255 | 0 0 0 0 0 0 256 | 0 0 0 0 0 0 257 | 0 0 0 0 0 0 -------------------------------------------------------------------------------- /spherical_coding/sc_5_256.def: -------------------------------------------------------------------------------- 1 | 0 0 0 0 0 0 2 | 0 0 0 0 0 0 3 | 0 0 0 0 0 0 4 | 0 0 0 0 0 0 5 | 0 0 0 0 0 0 6 | 0 0 0 0 0 0 7 | 0 0 0 0 0 0 8 | 0 0 0 0 0 0 9 | 0 0 0 0 0 0 10 | 0 0 0 0 0 0 11 | 0 0 0 0 0 0 12 | 0 0 0 0 0 0 13 | 0 0 0 0 0 0 14 | 0 0 0 0 0 0 15 | 0 0 0 0 0 0 16 | 0 0 0 0 0 0 17 | 0 0 0 0 0 0 18 | 0 0 0 0 0 0 19 | 0 0 0 0 0 0 20 | 0 0 0 0 0 0 21 | 0 0 0 0 0 0 22 | 0 0 0 0 0 0 23 | 0 0 0 0 0 0 24 | 0 0 0 0 0 0 25 | 0 0 0 0 0 0 26 | 0 0 0 0 0 0 27 | 0 0 0 0 0 0 28 | 0 0 0 0 0 0 29 | 0 0 0 0 0 0 30 | 0 0 0 0 0 0 31 | 0 0 0 0 0 0 32 | 0 0 0 0 0 0 33 | 0 0 0 0 0 0 34 | 0 0 0 0 0 0 35 | 0 0 0 0 0 0 36 | 0 0 0 0 0 0 37 | 0 0 0 0 0 0 38 | 0 0 0 0 0 0 39 | 0 0 0 0 0 0 40 | 0 0 0 0 0 0 41 | 0 0 0 0 0 0 42 | 0 0 0 0 0 0 43 | 0 0 0 0 0 0 44 | 0 0 0 0 0 0 45 | 0 0 0 0 0 0 46 | 0 0 0 0 0 0 47 | 0 0 0 0 0 0 48 | 0 0 0 0 0 0 49 | 0 0 0 0 0 0 50 | 0 0 0 0 0 0 51 | 0 0 0 0 0 0 52 | 0 0 0 0 0 0 53 | 0 0 0 0 0 0 54 | 0 0 0 0 0 0 55 | 0 0 0 0 0 0 56 | 0 0 0 0 0 0 57 | 0 0 0 0 0 0 58 | 0 0 0 0 0 0 59 | 0 0 0 0 0 0 60 | 0 0 0 0 0 0 61 | 0 0 0 0 0 0 62 | 0 0 0 0 0 0 63 | 0 0 0 0 0 0 64 | 0 0 0 0 0 0 65 | 0 0 0 0 0 0 66 | 0 0 0 0 0 0 67 | 0 0 0 0 0 0 68 | 0 0 0 0 0 0 69 | 0 0 0 0 0 0 70 | 0 0 0 0 0 0 71 | 0 0 0 0 0 0 72 | 0 0 0 0 0 0 73 | 0 0 0 0 0 0 74 | 0 0 0 0 0 0 75 | 0 0 0 0 0 0 76 | 0 0 0 0 0 0 77 | 0 0 0 0 0 0 78 | 0 0 0 0 0 0 79 | 0 0 0 0 0 0 80 | 0 0 0 0 0 0 81 | 0 0 0 0 0 0 82 | 0 0 0 0 0 0 83 | 0 0 0 0 0 0 84 | 0 0 0 0 0 0 85 | 0 0 0 0 0 0 86 | 0 0 0 0 0 0 87 | 0 0 0 0 0 0 88 | 0 0 0 0 0 0 89 | 0 0 0 0 0 0 90 | 0 0 0 0 0 0 91 | 0 0 0 0 0 0 92 | 0 0 0 0 0 0 93 | 0 0 0 0 0 0 94 | 0 0 0 0 0 0 95 | 0 0 0 0 0 0 96 | 0 0 0 0 0 0 97 | 0 0 0 0 0 0 98 | 0 0 0 0 0 0 99 | 0 0 0 0 0 0 100 | 0 0 0 0 0 0 101 | 0 0 0 0 0 0 102 | 0 0 0 0 0 0 103 | 0 0 0 0 0 0 104 | 0 0 0 0 0 0 105 | 0 0 0 0 0 0 106 | 0 0 0 0 0 0 107 | 0 0 0 0 0 0 108 | 0 0 0 0 0 0 109 | 0 0 0 0 0 0 110 | 0 0 0 0 0 0 111 | 0 0 0 0 0 0 112 | 0 0 0 0 0 0 113 | 0 0 0 0 0 0 114 | 0 0 0 0 0 0 115 | 0 0 0 0 0 0 116 | 0 0 0 0 0 0 117 | 0 0 0 0 0 0 118 | 0 0 0 0 0 0 119 | 0 0 0 0 0 0 120 | 0 0 0 0 0 0 121 | 0 0 0 0 0 0 122 | 0 0 0 0 0 0 123 | 0 0 0 0 0 0 124 | 0 0 0 0 0 0 125 | 0 0 0 0 0 0 126 | 0 0 0 0 0 0 127 | 0 0 0 0 0 0 128 | 0 0 0 0 0 0 129 | 0 0 0 0 0 0 130 | 0 0 0 0 0 0 131 | 0 0 0 0 0 0 132 | 0 0 0 0 0 0 133 | 0 0 0 0 0 0 134 | 0 0 0 0 0 0 135 | 0 0 0 0 0 0 136 | 0 0 0 0 0 0 137 | 0 0 0 0 0 0 138 | 0 0 0 0 0 0 139 | 0 0 0 0 0 0 140 | 0 0 0 0 0 0 141 | 0 0 0 0 0 0 142 | 0 0 0 0 0 0 143 | 0 0 0 0 0 0 144 | 0 0 0 0 0 0 145 | 0 0 0 0 0 0 146 | 0 0 0 0 0 0 147 | 0 0 0 0 0 0 148 | 0 0 0 0 0 0 149 | 0 0 0 0 0 0 150 | 0 0 0 0 0 0 151 | 0 0 0 0 0 0 152 | 0 0 0 0 0 0 153 | 0 0 0 0 0 0 154 | 0 0 0 0 0 0 155 | 0 0 0 0 0 0 156 | 0 0 0 0 0 0 157 | 0 0 0 0 0 0 158 | 0 0 0 0 0 0 159 | 0 0 0 0 0 0 160 | 0 0 0 0 0 0 161 | 0 0 0 0 0 0 162 | 0 0 0 0 0 0 163 | 0 0 0 0 0 0 164 | 0 0 0 0 0 0 165 | 0 0 0 0 0 0 166 | 0 0 0 0 0 0 167 | 0 0 0 0 0 0 168 | 0 0 0 0 0 0 169 | 0 0 0 0 0 0 170 | 0 0 0 0 0 0 171 | 0 0 0 0 0 0 172 | 0 0 0 0 0 0 173 | 0 0 0 0 0 0 174 | 0 0 0 0 0 0 175 | 0 0 0 0 0 0 176 | 0 0 0 0 0 0 177 | 0 0 0 0 0 0 178 | 0 0 0 0 0 0 179 | 0 0 0 0 0 0 180 | 0 0 0 0 0 0 181 | 0 0 0 0 0 0 182 | 0 0 0 0 0 0 183 | 0 0 0 0 0 0 184 | 0 0 0 0 0 0 185 | 0 0 0 0 0 0 186 | 0 0 0 0 0 0 187 | 0 0 0 0 0 0 188 | 0 0 0 0 0 0 189 | 0 0 0 0 0 0 190 | 0 0 0 0 0 0 191 | 0 0 0 0 0 0 192 | 0 0 0 0 0 0 193 | 0 0 0 0 0 0 194 | 0 0 0 0 0 0 195 | 0 0 0 0 0 0 196 | 0 0 0 0 0 0 197 | 0 0 0 0 0 0 198 | 0 0 0 0 0 0 199 | 0 0 0 0 0 0 200 | 0 0 0 0 0 0 201 | 0 0 0 0 0 0 202 | 0 0 0 0 0 0 203 | 0 0 0 0 0 0 204 | 0 0 0 0 0 0 205 | 0 0 0 0 0 0 206 | 0 0 0 0 0 0 207 | 0 0 0 0 0 0 208 | 0 0 0 0 0 0 209 | 0 0 0 0 0 0 210 | 0 0 0 0 0 0 211 | 0 0 0 0 0 0 212 | 0 0 0 0 0 0 213 | 0 0 0 0 0 0 214 | 0 0 0 0 0 0 215 | 0 0 0 0 0 0 216 | 0 0 0 0 0 0 217 | 0 0 0 0 0 0 218 | 0 0 0 0 0 0 219 | 0 0 0 0 0 0 220 | 0 0 0 0 0 0 221 | 0 0 0 0 0 0 222 | 0 0 0 0 0 0 223 | 0 0 0 0 0 0 224 | 0 0 0 0 0 0 225 | 0 0 0 0 0 0 226 | 0 0 0 0 0 0 227 | 0 0 0 0 0 0 228 | 0 0 0 0 0 0 229 | 0 0 0 0 0 0 230 | 0 0 0 0 0 0 231 | 0 0 0 0 0 0 232 | 0 0 0 0 0 0 233 | 0 0 0 0 0 0 234 | 0 0 0 0 0 0 235 | 0 0 0 0 0 0 236 | 0 0 0 0 0 0 237 | 0 0 0 0 0 0 238 | 0 0 0 0 0 0 239 | 0 0 0 0 0 0 240 | 0 0 0 0 0 0 241 | 0 0 0 0 0 0 242 | 0 0 0 0 0 0 243 | 0 0 0 0 0 0 244 | 0 0 0 0 0 0 245 | 0 0 0 0 0 0 246 | 0 0 0 0 0 0 247 | 0 0 0 0 0 0 248 | 0 0 0 0 0 0 249 | 0 0 0 0 0 0 250 | 0 0 0 0 0 0 251 | 0 0 0 0 0 0 252 | 0 0 0 0 0 0 253 | 0 0 0 0 0 0 254 | 0 0 0 0 0 0 255 | 0 0 0 0 0 0 256 | 0 0 0 0 0 0 257 | 0 0 0 0 0 0 -------------------------------------------------------------------------------- /spherical_coding/sc_6_256.def: -------------------------------------------------------------------------------- 1 | 0 0 0 0 0 0 2 | 0 0 0 0 0 0 3 | 0 0 0 0 0 0 4 | 0 0 0 0 0 0 5 | 0 0 0 0 0 0 6 | 0 0 0 0 0 0 7 | 0 0 0 0 0 0 8 | 0 0 0 0 0 0 9 | 0 0 0 0 0 0 10 | 0 0 0 0 0 0 11 | 0 0 0 0 0 0 12 | 0 0 0 0 0 0 13 | 0 0 0 0 0 0 14 | 0 0 0 0 0 0 15 | 0 0 0 0 0 0 16 | 0 0 0 0 0 0 17 | 0 0 0 0 0 0 18 | 0 0 0 0 0 0 19 | 0 0 0 0 0 0 20 | 0 0 0 0 0 0 21 | 0 0 0 0 0 0 22 | 0 0 0 0 0 0 23 | 0 0 0 0 0 0 24 | 0 0 0 0 0 0 25 | 0 0 0 0 0 0 26 | 0 0 0 0 0 0 27 | 0 0 0 0 0 0 28 | 0 0 0 0 0 0 29 | 0 0 0 0 0 0 30 | 0 0 0 0 0 0 31 | 0 0 0 0 0 0 32 | 0 0 0 0 0 0 33 | 0 0 0 0 0 0 34 | 0 0 0 0 0 0 35 | 0 0 0 0 0 0 36 | 0 0 0 0 0 0 37 | 0 0 0 0 0 0 38 | 0 0 0 0 0 0 39 | 0 0 0 0 0 0 40 | 0 0 0 0 0 0 41 | 0 0 0 0 0 0 42 | 0 0 0 0 0 0 43 | 0 0 0 0 0 0 44 | 0 0 0 0 0 0 45 | 0 0 0 0 0 0 46 | 0 0 0 0 0 0 47 | 0 0 0 0 0 0 48 | 0 0 0 0 0 0 49 | 0 0 0 0 0 0 50 | 0 0 0 0 0 0 51 | 0 0 0 0 0 0 52 | 0 0 0 0 0 0 53 | 0 0 0 0 0 0 54 | 0 0 0 0 0 0 55 | 0 0 0 0 0 0 56 | 0 0 0 0 0 0 57 | 0 0 0 0 0 0 58 | 0 0 0 0 0 0 59 | 0 0 0 0 0 0 60 | 0 0 0 0 0 0 61 | 0 0 0 0 0 0 62 | 0 0 0 0 0 0 63 | 0 0 0 0 0 0 64 | 0 0 0 0 0 0 65 | 0 0 0 0 0 0 66 | 0 0 0 0 0 0 67 | 0 0 0 0 0 0 68 | 0 0 0 0 0 0 69 | 0 0 0 0 0 0 70 | 0 0 0 0 0 0 71 | 0 0 0 0 0 0 72 | 0 0 0 0 0 0 73 | 0 0 0 0 0 0 74 | 0 0 0 0 0 0 75 | 0 0 0 0 0 0 76 | 0 0 0 0 0 0 77 | 0 0 0 0 0 0 78 | 0 0 0 0 0 0 79 | 0 0 0 0 0 0 80 | 0 0 0 0 0 0 81 | 0 0 0 0 0 0 82 | 0 0 0 0 0 0 83 | 0 0 0 0 0 0 84 | 0 0 0 0 0 0 85 | 0 0 0 0 0 0 86 | 0 0 0 0 0 0 87 | 0 0 0 0 0 0 88 | 0 0 0 0 0 0 89 | 0 0 0 0 0 0 90 | 0 0 0 0 0 0 91 | 0 0 0 0 0 0 92 | 0 0 0 0 0 0 93 | 0 0 0 0 0 0 94 | 0 0 0 0 0 0 95 | 0 0 0 0 0 0 96 | 0 0 0 0 0 0 97 | 0 0 0 0 0 0 98 | 0 0 0 0 0 0 99 | 0 0 0 0 0 0 100 | 0 0 0 0 0 0 101 | 0 0 0 0 0 0 102 | 0 0 0 0 0 0 103 | 0 0 0 0 0 0 104 | 0 0 0 0 0 0 105 | 0 0 0 0 0 0 106 | 0 0 0 0 0 0 107 | 0 0 0 0 0 0 108 | 0 0 0 0 0 0 109 | 0 0 0 0 0 0 110 | 0 0 0 0 0 0 111 | 0 0 0 0 0 0 112 | 0 0 0 0 0 0 113 | 0 0 0 0 0 0 114 | 0 0 0 0 0 0 115 | 0 0 0 0 0 0 116 | 0 0 0 0 0 0 117 | 0 0 0 0 0 0 118 | 0 0 0 0 0 0 119 | 0 0 0 0 0 0 120 | 0 0 0 0 0 0 121 | 0 0 0 0 0 0 122 | 0 0 0 0 0 0 123 | 0 0 0 0 0 0 124 | 0 0 0 0 0 0 125 | 0 0 0 0 0 0 126 | 0 0 0 0 0 0 127 | 0 0 0 0 0 0 128 | 0 0 0 0 0 0 129 | 0 0 0 0 0 0 130 | 0 0 0 0 0 0 131 | 0 0 0 0 0 0 132 | 0 0 0 0 0 0 133 | 0 0 0 0 0 0 134 | 0 0 0 0 0 0 135 | 0 0 0 0 0 0 136 | 0 0 0 0 0 0 137 | 0 0 0 0 0 0 138 | 0 0 0 0 0 0 139 | 0 0 0 0 0 0 140 | 0 0 0 0 0 0 141 | 0 0 0 0 0 0 142 | 0 0 0 0 0 0 143 | 0 0 0 0 0 0 144 | 0 0 0 0 0 0 145 | 0 0 0 0 0 0 146 | 0 0 0 0 0 0 147 | 0 0 0 0 0 0 148 | 0 0 0 0 0 0 149 | 0 0 0 0 0 0 150 | 0 0 0 0 0 0 151 | 0 0 0 0 0 0 152 | 0 0 0 0 0 0 153 | 0 0 0 0 0 0 154 | 0 0 0 0 0 0 155 | 0 0 0 0 0 0 156 | 0 0 0 0 0 0 157 | 0 0 0 0 0 0 158 | 0 0 0 0 0 0 159 | 0 0 0 0 0 0 160 | 0 0 0 0 0 0 161 | 0 0 0 0 0 0 162 | 0 0 0 0 0 0 163 | 0 0 0 0 0 0 164 | 0 0 0 0 0 0 165 | 0 0 0 0 0 0 166 | 0 0 0 0 0 0 167 | 0 0 0 0 0 0 168 | 0 0 0 0 0 0 169 | 0 0 0 0 0 0 170 | 0 0 0 0 0 0 171 | 0 0 0 0 0 0 172 | 0 0 0 0 0 0 173 | 0 0 0 0 0 0 174 | 0 0 0 0 0 0 175 | 0 0 0 0 0 0 176 | 0 0 0 0 0 0 177 | 0 0 0 0 0 0 178 | 0 0 0 0 0 0 179 | 0 0 0 0 0 0 180 | 0 0 0 0 0 0 181 | 0 0 0 0 0 0 182 | 0 0 0 0 0 0 183 | 0 0 0 0 0 0 184 | 0 0 0 0 0 0 185 | 0 0 0 0 0 0 186 | 0 0 0 0 0 0 187 | 0 0 0 0 0 0 188 | 0 0 0 0 0 0 189 | 0 0 0 0 0 0 190 | 0 0 0 0 0 0 191 | 0 0 0 0 0 0 192 | 0 0 0 0 0 0 193 | 0 0 0 0 0 0 194 | 0 0 0 0 0 0 195 | 0 0 0 0 0 0 196 | 0 0 0 0 0 0 197 | 0 0 0 0 0 0 198 | 0 0 0 0 0 0 199 | 0 0 0 0 0 0 200 | 0 0 0 0 0 0 201 | 0 0 0 0 0 0 202 | 0 0 0 0 0 0 203 | 0 0 0 0 0 0 204 | 0 0 0 0 0 0 205 | 0 0 0 0 0 0 206 | 0 0 0 0 0 0 207 | 0 0 0 0 0 0 208 | 0 0 0 0 0 0 209 | 0 0 0 0 0 0 210 | 0 0 0 0 0 0 211 | 0 0 0 0 0 0 212 | 0 0 0 0 0 0 213 | 0 0 0 0 0 0 214 | 0 0 0 0 0 0 215 | 0 0 0 0 0 0 216 | 0 0 0 0 0 0 217 | 0 0 0 0 0 0 218 | 0 0 0 0 0 0 219 | 0 0 0 0 0 0 220 | 0 0 0 0 0 0 221 | 0 0 0 0 0 0 222 | 0 0 0 0 0 0 223 | 0 0 0 0 0 0 224 | 0 0 0 0 0 0 225 | 0 0 0 0 0 0 226 | 0 0 0 0 0 0 227 | 0 0 0 0 0 0 228 | 0 0 0 0 0 0 229 | 0 0 0 0 0 0 230 | 0 0 0 0 0 0 231 | 0 0 0 0 0 0 232 | 0 0 0 0 0 0 233 | 0 0 0 0 0 0 234 | 0 0 0 0 0 0 235 | 0 0 0 0 0 0 236 | 0 0 0 0 0 0 237 | 0 0 0 0 0 0 238 | 0 0 0 0 0 0 239 | 0 0 0 0 0 0 240 | 0 0 0 0 0 0 241 | 0 0 0 0 0 0 242 | 0 0 0 0 0 0 243 | 0 0 0 0 0 0 244 | 0 0 0 0 0 0 245 | 0 0 0 0 0 0 246 | 0 0 0 0 0 0 247 | 0 0 0 0 0 0 248 | 0 0 0 0 0 0 249 | 0 0 0 0 0 0 250 | 0 0 0 0 0 0 251 | 0 0 0 0 0 0 252 | 0 0 0 0 0 0 253 | 0 0 0 0 0 0 254 | 0 0 0 0 0 0 255 | 0 0 0 0 0 0 256 | 0 0 0 0 0 0 257 | 0 0 0 0 0 0 -------------------------------------------------------------------------------- /spherical_coding/sc_11_256.def: -------------------------------------------------------------------------------- 1 | 0 8 9 1 5 6 2 | 2 5 7 1 3 10 3 | 2 4 9 0 6 8 4 | 0 5 9 1 2 10 5 | 4 5 6 7 9 10 6 | 0 4 6 3 5 8 7 | 1 6 9 4 7 8 8 | 0 1 3 2 5 10 9 | 0 7 8 2 5 10 10 | 2 4 8 3 6 9 11 | 3 7 9 0 5 6 12 | 0 5 8 2 7 10 13 | 3 6 9 2 5 10 14 | 0 6 8 3 4 5 15 | 1 3 6 0 8 10 16 | 3 5 10 7 8 9 17 | 2 4 8 0 3 9 18 | 0 1 10 2 6 9 19 | 2 5 10 0 1 4 20 | 3 5 8 2 4 10 21 | 1 2 8 0 6 7 22 | 1 2 7 0 3 6 23 | 1 5 6 0 2 9 24 | 5 6 7 0 4 8 25 | 2 3 5 0 1 8 26 | 6 8 10 0 1 4 27 | 1 7 9 0 2 10 28 | 1 6 9 2 7 8 29 | 1 2 5 3 6 10 30 | 4 7 10 3 6 8 31 | 1 4 6 3 7 8 32 | 2 7 8 1 5 10 33 | 7 8 10 2 4 5 34 | 1 4 5 0 2 6 35 | 2 6 10 1 4 5 36 | 0 3 7 6 8 9 37 | 0 6 7 4 8 10 38 | 3 6 8 1 4 9 39 | 0 5 7 2 3 4 40 | 4 7 10 3 6 8 41 | 0 3 8 1 6 7 42 | 3 7 8 0 2 4 43 | 2 3 10 1 6 7 44 | 0 4 10 1 2 9 45 | 2 3 6 0 4 7 46 | 3 4 9 1 7 10 47 | 5 7 9 0 8 10 48 | 3 5 6 2 8 10 49 | 0 9 10 1 7 8 50 | 1 7 9 2 4 6 51 | 0 1 5 2 3 6 52 | 2 3 5 4 7 10 53 | 3 4 9 5 6 7 54 | 0 2 9 1 4 8 55 | 6 8 9 0 1 10 56 | 0 2 7 3 5 8 57 | 3 7 10 0 4 5 58 | 0 3 10 5 7 9 59 | 0 2 5 4 8 9 60 | 0 1 3 5 7 8 61 | 1 2 9 0 3 10 62 | 0 1 10 2 5 8 63 | 1 7 9 0 3 4 64 | 0 2 7 1 5 6 65 | 0 3 7 1 6 8 66 | 0 1 7 2 8 9 67 | 3 6 9 2 5 10 68 | 1 3 6 0 5 10 69 | 3 8 9 1 2 7 70 | 3 7 10 1 8 9 71 | 5 9 10 1 3 4 72 | 0 5 10 6 7 9 73 | 1 7 9 0 6 10 74 | 0 5 9 3 4 8 75 | 0 1 2 4 7 10 76 | 4 8 10 3 6 7 77 | 1 7 9 0 4 8 78 | 4 9 10 1 5 7 79 | 6 8 10 1 5 9 80 | 1 3 5 0 4 7 81 | 1 9 10 2 4 7 82 | 0 2 4 6 7 8 83 | 2 6 7 0 9 10 84 | 0 3 6 2 9 10 85 | 0 4 10 3 5 6 86 | 3 4 5 0 8 9 87 | 2 3 5 7 8 9 88 | 5 6 7 1 3 8 89 | 3 4 5 2 6 10 90 | 8 9 10 0 1 4 91 | 1 2 9 0 4 10 92 | 3 5 6 4 7 9 93 | 6 7 10 0 2 9 94 | 2 4 10 3 6 7 95 | 1 9 10 0 2 8 96 | 4 5 10 0 2 9 97 | 0 5 9 1 3 8 98 | 1 4 8 3 9 10 99 | 1 3 9 2 6 8 100 | 2 4 8 1 5 10 101 | 0 5 8 3 4 9 102 | 0 4 6 1 9 10 103 | 1 4 8 7 9 10 104 | 1 5 7 2 3 6 105 | 2 6 10 4 7 9 106 | 2 7 8 0 1 5 107 | 8 9 10 2 4 7 108 | 2 8 9 3 5 10 109 | 0 5 8 1 6 10 110 | 3 9 10 2 7 8 111 | 2 9 10 0 4 8 112 | 2 7 8 0 4 9 113 | 5 7 9 3 4 10 114 | 3 4 9 2 8 10 115 | 5 7 10 1 4 9 116 | 5 8 9 1 4 6 117 | 5 9 10 3 4 6 118 | 1 4 10 0 2 3 119 | 4 7 8 0 2 3 120 | 1 3 4 2 6 10 121 | 4 5 9 6 7 8 122 | 4 6 10 0 5 8 123 | 4 9 10 1 2 3 124 | 1 2 6 3 4 5 125 | 0 4 8 1 3 7 126 | 3 6 8 0 9 10 127 | 4 7 8 0 1 10 128 | 1 3 9 2 5 6 129 | 5 7 9 3 4 10 130 | 2 4 9 0 6 10 131 | 0 7 9 1 4 5 132 | 2 4 9 1 6 7 133 | 0 2 3 1 6 9 134 | 5 6 10 1 4 8 135 | 1 2 3 5 6 10 136 | 2 4 10 0 3 7 137 | 1 3 5 4 7 9 138 | 0 1 9 2 3 6 139 | 0 5 8 4 7 9 140 | 3 4 7 5 8 9 141 | 1 6 8 3 7 10 142 | 0 1 6 3 4 5 143 | 0 1 6 3 5 8 144 | 0 1 6 3 5 10 145 | 1 7 8 2 3 6 146 | 0 4 8 2 5 6 147 | 0 8 9 1 3 10 148 | 4 5 9 2 7 10 149 | 1 8 10 4 5 7 150 | 0 3 8 1 2 6 151 | 2 3 10 0 7 8 152 | 0 3 5 1 7 9 153 | 2 7 9 5 8 10 154 | 2 5 9 0 1 7 155 | 5 9 10 0 1 6 156 | 1 4 8 0 2 3 157 | 3 4 6 2 8 10 158 | 1 2 5 0 8 10 159 | 3 8 10 2 5 9 160 | 1 4 6 5 9 10 161 | 3 8 9 0 2 7 162 | 1 3 8 0 6 7 163 | 0 3 6 4 5 10 164 | 5 7 10 4 8 9 165 | 0 6 7 1 3 8 166 | 1 2 10 4 5 8 167 | 1 2 3 6 9 10 168 | 5 7 8 0 2 10 169 | 1 3 7 4 5 9 170 | 2 4 8 0 1 5 171 | 3 6 7 1 2 10 172 | 4 5 7 0 8 9 173 | 4 6 9 1 5 8 174 | 4 6 9 1 7 8 175 | 1 2 9 3 5 6 176 | 4 8 10 2 5 7 177 | 6 8 9 3 4 10 178 | 4 5 8 6 9 10 179 | 0 1 10 5 7 9 180 | 1 2 5 7 8 10 181 | 3 4 6 0 5 10 182 | 3 9 10 0 2 8 183 | 0 4 6 1 3 7 184 | 0 2 6 1 3 8 185 | 0 5 9 2 7 8 186 | 0 5 7 1 3 4 187 | 1 2 3 4 5 7 188 | 3 5 10 0 1 6 189 | 3 6 9 0 1 7 190 | 0 6 7 2 3 10 191 | 5 8 9 2 3 7 192 | 2 6 10 4 5 7 193 | 1 2 7 3 9 10 194 | 1 4 6 3 7 9 195 | 7 8 10 0 2 9 196 | 0 2 7 1 6 10 197 | 3 5 6 2 8 9 198 | 0 3 7 1 4 10 199 | 6 7 9 3 5 8 200 | 5 6 8 2 3 9 201 | 3 7 10 2 5 6 202 | 1 4 6 7 8 10 203 | 2 6 10 1 3 9 204 | 2 4 6 7 8 10 205 | 0 6 9 1 2 5 206 | 0 4 7 2 6 8 207 | 4 7 10 2 6 9 208 | 0 3 6 1 2 9 209 | 0 4 10 2 5 6 210 | 4 6 10 2 3 8 211 | 1 3 9 4 5 6 212 | 1 7 10 0 2 9 213 | 2 4 9 7 8 10 214 | 5 7 8 6 9 10 215 | 2 4 6 3 5 8 216 | 1 6 8 0 5 9 217 | 3 4 9 1 6 7 218 | 4 9 10 1 2 5 219 | 0 5 10 3 4 8 220 | 2 4 10 0 7 9 221 | 4 5 6 0 1 10 222 | 0 3 7 2 8 10 223 | 6 8 9 0 2 7 224 | 1 5 10 3 4 9 225 | 6 7 9 3 5 10 226 | 6 8 9 2 3 7 227 | 1 2 5 6 8 9 228 | 1 4 5 6 7 9 229 | 5 8 9 4 7 10 230 | 0 2 8 6 9 10 231 | 3 7 10 0 5 8 232 | 0 3 7 4 6 10 233 | 0 1 5 4 7 8 234 | 0 1 4 8 9 10 235 | 0 3 5 4 6 8 236 | 0 1 3 6 7 10 237 | 2 4 7 5 8 9 238 | 4 5 9 0 3 6 239 | 0 2 8 5 7 10 240 | 0 3 6 2 4 8 241 | 0 1 2 4 5 7 242 | 1 6 10 3 4 7 243 | 2 5 6 0 1 8 244 | 0 1 5 2 3 7 245 | 1 3 9 5 6 8 246 | 1 2 10 4 5 6 247 | 5 8 9 1 4 7 248 | 5 6 8 0 2 9 249 | 4 5 7 3 6 8 250 | 1 8 10 4 5 7 251 | 0 2 3 1 4 6 252 | 2 7 8 5 6 9 253 | 1 2 9 4 6 10 254 | 0 1 8 3 4 7 255 | 1 9 10 2 3 4 256 | 0 4 6 3 7 9 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_12_256.def: -------------------------------------------------------------------------------- 1 | 2 4 11 0 3 8 2 | 3 6 9 2 5 10 3 | 1 5 8 4 7 11 4 | 1 2 4 6 8 10 5 | 1 6 11 0 3 4 6 | 4 9 10 0 5 7 7 | 0 1 11 2 3 4 8 | 0 2 7 1 4 8 9 | 2 7 10 3 8 9 10 | 0 9 11 1 2 7 11 | 2 9 11 1 5 6 12 | 1 2 9 6 8 11 13 | 1 5 10 3 4 8 14 | 5 7 8 1 4 11 15 | 3 4 6 0 2 10 16 | 0 1 7 2 3 5 17 | 1 6 10 0 5 9 18 | 1 3 8 2 4 9 19 | 2 5 11 4 7 9 20 | 4 6 10 0 2 5 21 | 1 2 4 3 7 9 22 | 0 3 5 1 4 8 23 | 4 6 9 7 8 10 24 | 6 8 9 1 2 11 25 | 6 8 11 4 5 7 26 | 0 4 10 3 5 8 27 | 0 4 10 3 5 7 28 | 1 10 11 4 8 9 29 | 5 6 10 4 7 8 30 | 5 6 8 0 3 9 31 | 5 6 7 0 1 4 32 | 2 4 8 1 7 11 33 | 1 9 11 2 3 5 34 | 0 2 9 4 5 6 35 | 4 5 11 6 9 10 36 | 5 6 10 4 7 9 37 | 5 9 11 0 2 4 38 | 0 4 10 1 2 3 39 | 1 2 6 0 4 11 40 | 1 2 6 4 10 11 41 | 1 2 9 4 5 7 42 | 1 5 6 4 7 10 43 | 8 9 10 1 5 7 44 | 2 7 10 6 9 11 45 | 2 6 10 1 7 8 46 | 0 5 9 2 3 6 47 | 1 3 9 0 4 6 48 | 0 2 9 4 7 8 49 | 2 3 10 0 7 11 50 | 0 8 11 2 5 7 51 | 4 7 9 1 3 5 52 | 2 4 6 1 3 9 53 | 1 7 10 3 6 11 54 | 4 10 11 5 6 9 55 | 0 2 6 1 5 11 56 | 2 3 11 7 8 10 57 | 6 7 8 0 4 11 58 | 0 8 10 5 6 11 59 | 3 5 11 6 9 10 60 | 3 5 7 0 2 4 61 | 8 9 11 3 6 10 62 | 6 7 9 1 5 8 63 | 0 9 10 1 5 8 64 | 6 8 11 3 5 7 65 | 3 8 10 5 6 9 66 | 2 8 11 0 4 5 67 | 4 6 8 0 1 7 68 | 0 7 8 4 10 11 69 | 5 6 10 1 7 9 70 | 0 5 6 3 4 10 71 | 4 5 9 0 7 11 72 | 6 7 11 0 1 4 73 | 0 6 10 1 3 8 74 | 0 7 11 2 3 5 75 | 0 1 8 4 9 10 76 | 0 2 3 4 5 11 77 | 4 5 11 0 1 6 78 | 8 9 10 0 6 7 79 | 1 7 10 0 8 11 80 | 3 6 11 0 1 2 81 | 0 2 5 1 4 6 82 | 3 9 11 4 5 8 83 | 1 9 10 3 6 7 84 | 1 4 5 2 8 10 85 | 0 4 6 1 2 3 86 | 0 1 2 3 5 9 87 | 7 8 10 2 3 11 88 | 2 8 9 6 10 11 89 | 3 5 11 1 7 9 90 | 3 10 11 6 7 8 91 | 0 1 3 2 5 11 92 | 5 8 9 1 2 4 93 | 1 6 9 2 4 5 94 | 1 3 8 0 2 5 95 | 6 10 11 0 3 7 96 | 1 6 11 3 4 9 97 | 3 6 9 2 7 8 98 | 3 7 11 2 4 9 99 | 4 5 11 0 1 6 100 | 0 2 3 1 6 9 101 | 5 10 11 3 4 9 102 | 0 2 8 4 6 10 103 | 3 7 10 2 5 9 104 | 1 3 4 9 10 11 105 | 0 2 11 1 4 5 106 | 5 9 10 0 2 3 107 | 0 8 10 4 5 9 108 | 2 8 10 0 3 11 109 | 5 6 9 0 1 10 110 | 6 7 11 2 4 5 111 | 1 3 8 2 7 9 112 | 0 8 11 3 4 7 113 | 1 5 11 2 7 8 114 | 3 6 10 0 7 8 115 | 1 2 6 7 8 11 116 | 3 4 5 0 9 11 117 | 0 1 11 2 6 9 118 | 1 7 11 3 5 6 119 | 3 8 11 1 5 9 120 | 0 6 10 8 9 11 121 | 7 9 11 2 4 10 122 | 1 3 10 4 9 11 123 | 0 3 7 1 9 10 124 | 5 9 10 2 4 11 125 | 0 5 10 1 3 9 126 | 2 8 9 3 4 11 127 | 4 6 8 1 2 7 128 | 1 6 11 3 8 10 129 | 0 4 7 2 5 10 130 | 4 6 11 1 5 10 131 | 2 3 4 0 7 8 132 | 0 1 8 9 10 11 133 | 3 5 7 1 6 8 134 | 4 7 11 1 3 10 135 | 3 4 8 2 9 10 136 | 3 7 10 1 4 5 137 | 0 3 9 5 7 10 138 | 8 10 11 0 1 4 139 | 1 2 4 0 5 11 140 | 1 6 7 2 8 10 141 | 1 7 11 3 4 8 142 | 0 3 4 2 5 7 143 | 0 4 6 2 3 11 144 | 1 3 9 5 10 11 145 | 3 5 9 1 2 11 146 | 1 3 6 0 5 8 147 | 3 4 10 0 2 8 148 | 0 5 9 2 7 11 149 | 5 6 9 0 1 10 150 | 4 6 11 2 7 8 151 | 1 7 8 5 6 9 152 | 2 3 8 0 5 9 153 | 1 4 6 3 9 10 154 | 3 4 5 6 9 11 155 | 2 6 10 0 1 8 156 | 0 3 5 8 10 11 157 | 1 2 8 0 3 11 158 | 4 7 10 0 3 9 159 | 0 8 10 2 3 11 160 | 8 9 10 6 7 11 161 | 0 7 8 3 6 9 162 | 2 3 8 9 10 11 163 | 6 9 10 3 8 11 164 | 1 6 8 5 10 11 165 | 0 1 5 7 9 10 166 | 1 4 7 0 8 11 167 | 3 6 8 2 7 9 168 | 0 6 10 4 5 8 169 | 4 5 7 1 9 11 170 | 1 3 11 4 5 8 171 | 0 6 8 3 7 10 172 | 0 5 10 3 4 8 173 | 1 8 10 2 7 9 174 | 0 3 7 8 9 10 175 | 2 4 9 0 3 10 176 | 0 4 6 2 5 9 177 | 2 5 6 3 9 10 178 | 6 8 9 2 3 11 179 | 5 7 10 2 4 6 180 | 6 7 11 0 4 10 181 | 6 7 9 4 10 11 182 | 0 5 11 1 4 6 183 | 0 2 3 5 10 11 184 | 0 2 5 3 9 11 185 | 5 7 8 2 4 6 186 | 5 7 10 1 2 9 187 | 2 4 5 3 7 11 188 | 3 6 10 4 5 11 189 | 3 8 9 1 6 11 190 | 1 4 7 2 5 11 191 | 3 6 7 1 4 9 192 | 2 7 10 8 9 11 193 | 1 3 7 2 8 9 194 | 3 5 9 7 8 11 195 | 5 9 11 0 4 6 196 | 2 7 9 0 5 8 197 | 1 7 8 0 3 4 198 | 0 4 9 2 5 6 199 | 1 2 9 0 7 10 200 | 2 6 7 0 4 5 201 | 3 9 10 4 6 8 202 | 0 1 11 3 8 10 203 | 3 8 10 1 6 7 204 | 5 7 8 0 6 10 205 | 3 6 8 1 7 9 206 | 0 2 6 1 4 7 207 | 0 7 9 1 3 4 208 | 2 9 11 6 7 8 209 | 0 2 10 6 8 11 210 | 0 4 5 3 6 10 211 | 4 5 7 2 6 8 212 | 4 6 7 9 10 11 213 | 4 8 11 0 6 9 214 | 0 2 4 1 10 11 215 | 0 2 11 4 6 7 216 | 2 4 11 1 7 10 217 | 6 8 9 1 3 11 218 | 0 1 3 2 4 11 219 | 4 8 11 0 3 9 220 | 2 3 11 4 9 10 221 | 8 9 10 2 3 6 222 | 2 7 10 0 1 3 223 | 6 7 9 1 4 10 224 | 0 4 11 5 6 8 225 | 6 7 11 0 5 10 226 | 3 7 9 0 1 6 227 | 0 5 8 7 9 10 228 | 2 8 9 3 5 6 229 | 2 6 8 0 4 7 230 | 1 8 9 2 5 7 231 | 1 5 11 6 7 8 232 | 3 4 10 1 2 5 233 | 2 8 11 4 7 9 234 | 7 8 9 1 2 10 235 | 1 3 10 2 4 7 236 | 2 3 9 0 5 6 237 | 4 8 10 2 5 7 238 | 1 2 10 0 3 9 239 | 3 6 8 1 4 11 240 | 2 7 8 0 5 9 241 | 5 8 9 2 3 7 242 | 1 5 6 7 10 11 243 | 1 5 11 0 2 10 244 | 1 8 10 0 3 6 245 | 1 5 8 0 6 11 246 | 7 10 11 0 1 9 247 | 5 6 10 2 8 11 248 | 2 4 7 1 5 10 249 | 0 6 10 1 7 9 250 | 0 6 10 3 8 11 251 | 1 3 9 0 6 7 252 | 5 8 11 3 7 10 253 | 0 3 8 1 6 7 254 | 8 10 11 5 7 9 255 | 7 8 9 3 5 10 256 | 5 7 10 2 6 11 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_13_256.def: -------------------------------------------------------------------------------- 1 | 1 8 11 6 7 10 2 | 0 1 3 2 6 11 3 | 3 5 9 1 2 4 4 | 4 8 12 1 2 10 5 | 7 10 11 3 4 8 6 | 2 5 12 6 8 10 7 | 0 8 12 5 7 9 8 | 3 4 9 5 8 12 9 | 5 10 12 1 4 11 10 | 2 9 10 0 11 12 11 | 2 3 11 6 9 10 12 | 2 7 9 0 4 12 13 | 1 3 4 2 6 7 14 | 8 11 12 0 5 6 15 | 3 5 12 0 4 9 16 | 0 4 10 2 3 8 17 | 1 4 10 6 8 9 18 | 9 10 11 2 5 8 19 | 0 4 5 1 7 9 20 | 3 8 10 6 7 11 21 | 2 10 11 1 7 9 22 | 1 6 7 3 4 9 23 | 2 7 9 0 8 10 24 | 3 8 11 2 5 7 25 | 0 4 10 5 6 8 26 | 6 7 11 0 1 10 27 | 0 10 11 2 9 12 28 | 6 7 8 2 4 5 29 | 0 3 12 2 10 11 30 | 0 1 4 8 9 12 31 | 0 4 8 7 10 12 32 | 4 5 11 3 6 12 33 | 2 4 7 3 8 10 34 | 2 9 11 0 6 10 35 | 1 11 12 7 8 9 36 | 3 5 9 0 1 11 37 | 0 1 9 5 6 8 38 | 0 5 7 1 3 6 39 | 3 5 11 1 2 6 40 | 4 8 11 1 2 9 41 | 3 6 8 1 2 4 42 | 3 8 10 0 4 5 43 | 4 5 12 2 7 9 44 | 4 8 12 6 9 11 45 | 5 10 12 3 7 11 46 | 0 2 11 3 7 10 47 | 2 3 4 5 6 8 48 | 1 5 11 8 9 10 49 | 3 5 10 0 8 12 50 | 6 11 12 0 1 9 51 | 3 4 7 2 5 10 52 | 5 6 9 8 11 12 53 | 0 6 8 7 9 11 54 | 1 5 7 6 8 10 55 | 7 11 12 2 5 9 56 | 3 6 9 5 10 12 57 | 0 1 7 4 8 9 58 | 0 7 9 2 4 10 59 | 1 2 7 0 8 12 60 | 1 3 5 4 7 8 61 | 3 5 7 2 6 9 62 | 3 4 9 0 5 8 63 | 4 7 8 3 6 9 64 | 1 5 12 2 3 10 65 | 0 7 12 3 4 8 66 | 1 4 12 2 9 10 67 | 1 9 11 2 3 12 68 | 3 4 9 2 5 7 69 | 2 4 5 7 9 11 70 | 7 8 10 2 4 12 71 | 2 6 10 1 5 7 72 | 3 8 12 1 6 11 73 | 1 2 6 0 7 11 74 | 1 10 11 6 7 9 75 | 3 5 11 1 6 7 76 | 4 5 8 10 11 12 77 | 4 9 12 1 8 10 78 | 2 3 7 6 9 10 79 | 0 2 7 3 4 6 80 | 4 5 9 1 2 11 81 | 3 5 7 0 2 11 82 | 7 9 10 2 6 12 83 | 2 10 11 0 4 9 84 | 0 8 12 4 6 11 85 | 5 10 12 0 2 9 86 | 3 11 12 0 1 9 87 | 0 6 7 4 8 10 88 | 2 3 5 6 7 11 89 | 3 6 9 4 7 8 90 | 8 11 12 0 1 10 91 | 1 3 5 6 11 12 92 | 4 8 9 0 1 3 93 | 4 10 12 3 5 8 94 | 0 1 9 4 10 12 95 | 1 8 10 0 3 6 96 | 1 5 9 2 3 12 97 | 1 5 10 8 11 12 98 | 0 4 9 5 7 12 99 | 1 3 12 0 4 7 100 | 0 4 5 1 8 10 101 | 8 9 10 3 5 11 102 | 1 6 7 0 4 12 103 | 5 8 11 2 7 10 104 | 1 9 12 5 6 10 105 | 2 5 6 0 7 10 106 | 0 1 7 5 10 11 107 | 5 10 12 2 8 11 108 | 0 5 6 1 7 12 109 | 2 7 12 1 3 6 110 | 0 10 12 4 8 11 111 | 3 5 7 1 2 8 112 | 0 3 12 6 8 11 113 | 2 8 10 1 6 12 114 | 1 4 12 3 8 9 115 | 0 5 12 2 6 7 116 | 0 9 12 2 4 8 117 | 2 5 7 0 6 11 118 | 2 6 8 1 5 11 119 | 0 8 9 3 10 12 120 | 1 5 9 3 11 12 121 | 0 7 12 2 8 11 122 | 1 4 8 0 3 9 123 | 2 4 10 0 3 11 124 | 3 7 10 0 1 6 125 | 8 9 12 1 3 5 126 | 1 3 4 5 10 12 127 | 4 8 11 7 10 12 128 | 2 9 12 0 6 11 129 | 4 9 10 1 7 12 130 | 2 7 11 1 4 6 131 | 0 2 8 4 7 12 132 | 0 2 10 3 4 6 133 | 3 4 5 2 9 12 134 | 0 3 7 4 5 8 135 | 0 4 8 1 10 11 136 | 1 4 12 5 8 11 137 | 1 2 4 6 8 11 138 | 2 3 10 4 5 6 139 | 4 9 10 0 7 8 140 | 5 8 9 2 4 10 141 | 2 3 8 4 10 11 142 | 1 2 3 5 10 11 143 | 1 6 7 0 8 10 144 | 1 6 10 0 2 9 145 | 0 2 7 4 8 9 146 | 2 9 11 4 6 8 147 | 2 6 11 1 8 10 148 | 8 10 12 0 1 4 149 | 1 3 10 4 9 12 150 | 0 2 8 1 4 7 151 | 1 4 12 2 6 10 152 | 0 6 8 4 11 12 153 | 5 7 9 2 6 8 154 | 2 4 6 1 5 11 155 | 9 11 12 1 2 3 156 | 0 3 10 1 2 12 157 | 5 6 10 3 8 11 158 | 0 3 11 5 8 12 159 | 1 10 11 3 7 12 160 | 7 8 10 2 3 6 161 | 7 8 10 5 11 12 162 | 2 3 5 6 9 12 163 | 5 10 11 0 1 8 164 | 5 9 12 0 4 7 165 | 4 6 7 1 3 8 166 | 3 8 12 7 9 11 167 | 3 7 10 1 9 12 168 | 3 9 12 5 6 7 169 | 2 6 12 3 4 10 170 | 1 2 8 0 4 9 171 | 5 6 12 3 4 10 172 | 3 6 8 4 5 12 173 | 3 10 12 1 8 9 174 | 0 2 10 1 3 11 175 | 6 7 10 1 8 9 176 | 1 10 12 3 5 6 177 | 0 3 6 1 5 10 178 | 0 9 10 2 3 7 179 | 3 4 7 0 11 12 180 | 2 5 12 3 7 11 181 | 1 8 12 4 7 11 182 | 5 9 11 3 4 6 183 | 0 7 8 4 9 10 184 | 0 10 11 1 3 6 185 | 0 7 11 1 9 10 186 | 1 4 12 0 5 11 187 | 0 9 10 1 4 6 188 | 2 3 9 0 6 10 189 | 0 4 12 6 10 11 190 | 2 10 11 1 5 6 191 | 3 6 9 5 7 8 192 | 0 1 6 7 9 11 193 | 0 6 11 1 3 10 194 | 1 6 11 2 5 7 195 | 1 6 10 2 3 5 196 | 3 10 12 0 4 5 197 | 1 6 8 0 2 4 198 | 9 11 12 4 6 8 199 | 1 2 5 6 7 12 200 | 4 7 8 3 5 9 201 | 2 5 10 1 9 11 202 | 0 8 12 5 6 11 203 | 5 7 9 3 6 12 204 | 1 3 5 2 4 9 205 | 0 1 3 5 6 12 206 | 8 9 10 2 5 6 207 | 2 6 9 7 8 10 208 | 3 6 10 2 5 11 209 | 1 2 10 8 9 11 210 | 1 10 11 3 4 5 211 | 6 9 12 0 4 10 212 | 1 11 12 2 3 7 213 | 4 5 7 0 1 9 214 | 3 7 12 0 5 6 215 | 2 8 11 0 6 10 216 | 5 8 11 2 7 9 217 | 3 5 7 2 6 11 218 | 4 7 8 2 6 10 219 | 1 2 6 4 5 9 220 | 0 9 12 2 4 11 221 | 2 5 6 9 11 12 222 | 5 6 12 0 7 11 223 | 3 4 7 1 5 12 224 | 0 2 3 4 6 7 225 | 3 5 11 4 7 9 226 | 1 7 11 6 10 12 227 | 1 4 12 0 3 9 228 | 0 1 2 4 9 10 229 | 0 4 10 5 7 9 230 | 0 3 7 1 9 11 231 | 7 9 12 2 4 11 232 | 3 6 9 0 2 8 233 | 2 4 5 1 7 8 234 | 8 9 10 6 11 12 235 | 0 6 9 2 7 11 236 | 3 10 11 0 2 6 237 | 9 11 12 5 6 7 238 | 1 10 11 4 7 12 239 | 0 3 12 7 8 11 240 | 1 3 5 2 10 12 241 | 0 3 8 4 9 10 242 | 5 8 9 4 6 12 243 | 2 8 9 0 7 12 244 | 0 2 9 7 8 11 245 | 3 4 12 0 5 10 246 | 5 9 12 0 4 11 247 | 6 7 12 0 4 5 248 | 2 7 12 1 5 11 249 | 1 7 8 0 11 12 250 | 0 2 12 4 6 9 251 | 3 6 10 2 8 9 252 | 1 9 12 0 6 7 253 | 3 6 11 1 7 8 254 | 5 9 11 1 7 8 255 | 2 3 11 5 7 8 256 | 4 6 8 0 3 11 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_14_256.def: -------------------------------------------------------------------------------- 1 | 1 3 6 8 10 13 2 | 1 2 9 4 6 11 3 | 0 4 13 1 3 6 4 | 0 8 11 3 9 13 5 | 0 2 7 3 10 11 6 | 2 4 5 8 12 13 7 | 7 11 13 3 10 12 8 | 2 7 13 8 10 11 9 | 9 11 12 1 6 7 10 | 4 5 12 8 11 13 11 | 0 9 12 1 10 11 12 | 4 9 12 0 2 10 13 | 0 6 13 1 4 12 14 | 8 11 12 3 5 10 15 | 2 5 13 1 3 10 16 | 0 3 8 2 6 12 17 | 2 3 4 1 8 10 18 | 0 5 11 1 8 9 19 | 1 2 7 5 8 11 20 | 5 8 11 0 1 4 21 | 1 3 13 0 8 10 22 | 0 3 8 2 5 10 23 | 1 11 13 7 10 12 24 | 5 9 12 0 3 4 25 | 5 9 12 1 6 7 26 | 1 4 11 5 8 13 27 | 2 6 10 3 5 11 28 | 0 7 9 4 12 13 29 | 0 2 3 7 8 10 30 | 0 5 12 4 7 9 31 | 5 7 9 1 2 6 32 | 4 7 13 1 2 8 33 | 3 4 8 0 7 9 34 | 0 3 12 6 7 13 35 | 0 11 13 4 8 10 36 | 1 3 5 7 8 13 37 | 3 6 10 0 2 4 38 | 0 1 11 3 10 13 39 | 6 8 10 7 11 12 40 | 5 10 11 2 3 13 41 | 2 7 10 1 5 9 42 | 0 6 12 1 10 13 43 | 0 4 6 1 7 8 44 | 1 4 8 3 11 13 45 | 4 8 13 2 3 11 46 | 0 4 13 2 3 6 47 | 1 4 11 6 9 13 48 | 3 8 10 1 4 9 49 | 1 2 9 3 7 12 50 | 0 4 8 1 6 10 51 | 2 10 11 3 6 13 52 | 4 10 11 3 9 12 53 | 7 8 10 11 12 13 54 | 8 10 13 3 6 9 55 | 0 5 7 1 4 11 56 | 1 4 6 5 7 9 57 | 5 6 13 4 10 11 58 | 3 4 10 7 8 9 59 | 4 7 10 5 9 11 60 | 4 5 7 6 8 9 61 | 3 8 11 0 2 9 62 | 0 11 12 1 2 3 63 | 2 3 8 4 6 9 64 | 4 7 13 6 11 12 65 | 5 6 8 9 12 13 66 | 4 6 7 1 10 13 67 | 0 3 13 1 8 11 68 | 5 9 11 1 8 13 69 | 3 6 10 1 2 8 70 | 4 10 13 0 1 7 71 | 1 2 6 3 10 13 72 | 1 5 12 0 2 8 73 | 2 6 13 0 7 11 74 | 2 3 7 4 5 10 75 | 0 9 11 7 10 13 76 | 3 4 10 6 8 12 77 | 0 5 13 1 6 9 78 | 0 3 12 5 7 11 79 | 2 8 9 3 5 13 80 | 1 7 8 0 4 6 81 | 1 7 12 2 4 5 82 | 2 3 7 4 9 11 83 | 4 8 11 1 6 10 84 | 4 5 12 3 7 13 85 | 9 10 11 0 2 13 86 | 7 11 12 3 6 8 87 | 2 8 11 5 6 9 88 | 0 11 12 3 4 13 89 | 7 8 10 4 6 9 90 | 6 7 12 3 4 5 91 | 6 7 9 3 4 8 92 | 0 4 10 1 6 11 93 | 1 3 10 5 6 8 94 | 0 6 8 1 4 12 95 | 0 6 9 3 4 13 96 | 4 7 12 3 5 6 97 | 6 7 9 1 2 10 98 | 4 5 6 10 11 12 99 | 2 4 11 0 5 7 100 | 1 7 13 2 9 10 101 | 1 5 9 2 10 11 102 | 6 7 13 0 4 10 103 | 2 6 10 1 5 8 104 | 3 6 7 0 12 13 105 | 4 9 11 5 6 12 106 | 1 10 13 0 4 6 107 | 2 3 12 5 7 8 108 | 3 8 12 0 2 13 109 | 1 9 10 3 11 12 110 | 3 12 13 0 2 6 111 | 2 7 10 3 6 8 112 | 1 3 4 2 9 12 113 | 1 2 11 0 8 12 114 | 1 2 7 0 4 6 115 | 1 8 12 3 10 11 116 | 0 2 6 8 9 12 117 | 2 9 11 5 10 13 118 | 0 1 6 3 4 9 119 | 0 8 10 4 11 12 120 | 2 5 13 4 7 9 121 | 2 4 7 6 8 12 122 | 1 7 13 0 2 8 123 | 0 1 5 2 4 12 124 | 0 9 10 4 8 12 125 | 5 11 12 3 7 13 126 | 9 10 12 4 5 13 127 | 1 4 8 7 9 13 128 | 1 8 9 5 6 12 129 | 2 5 11 1 8 9 130 | 0 12 13 2 5 11 131 | 0 6 7 5 11 13 132 | 3 5 10 0 8 9 133 | 0 7 11 2 5 12 134 | 4 8 13 0 2 11 135 | 1 6 12 3 9 11 136 | 0 1 4 2 11 13 137 | 0 6 12 2 3 9 138 | 6 11 13 1 5 8 139 | 3 7 12 10 11 13 140 | 4 12 13 0 3 5 141 | 4 6 9 5 7 12 142 | 6 7 12 1 2 5 143 | 2 5 6 9 10 11 144 | 5 7 9 1 11 12 145 | 4 7 11 6 9 13 146 | 2 6 10 0 3 13 147 | 0 5 12 6 10 11 148 | 6 10 12 5 7 9 149 | 2 9 13 4 5 12 150 | 0 1 9 2 5 12 151 | 3 7 12 5 6 11 152 | 1 6 13 2 3 12 153 | 0 7 10 1 9 13 154 | 0 6 8 5 11 12 155 | 3 11 13 0 8 9 156 | 1 3 9 6 10 13 157 | 0 6 12 2 5 10 158 | 6 7 11 9 10 13 159 | 2 4 7 8 9 11 160 | 3 9 12 0 1 13 161 | 2 5 6 1 12 13 162 | 1 9 10 6 8 11 163 | 1 3 4 11 12 13 164 | 7 8 13 5 6 12 165 | 1 9 12 0 8 10 166 | 6 7 12 0 4 5 167 | 2 10 12 5 6 9 168 | 0 2 13 3 6 9 169 | 6 11 13 0 4 10 170 | 3 4 8 5 10 13 171 | 0 12 13 2 9 11 172 | 2 5 7 6 10 12 173 | 1 5 11 4 7 9 174 | 2 3 10 1 4 7 175 | 0 1 3 4 7 8 176 | 1 5 8 0 3 13 177 | 2 8 12 1 4 5 178 | 2 8 10 1 7 13 179 | 2 8 12 5 10 11 180 | 4 7 9 0 12 13 181 | 1 8 9 7 11 12 182 | 2 9 13 6 7 10 183 | 0 4 13 5 9 12 184 | 0 3 4 2 10 11 185 | 2 4 7 6 8 10 186 | 1 5 12 2 8 13 187 | 0 4 9 3 10 13 188 | 4 9 10 2 3 12 189 | 1 6 12 0 3 4 190 | 5 7 8 0 9 10 191 | 1 2 6 5 7 10 192 | 1 4 9 3 7 12 193 | 3 7 11 6 10 13 194 | 5 9 13 1 2 3 195 | 1 8 11 9 12 13 196 | 0 1 11 2 5 12 197 | 1 2 7 0 9 10 198 | 2 11 13 5 7 10 199 | 4 5 8 0 3 9 200 | 2 5 8 7 10 12 201 | 1 11 13 0 8 12 202 | 4 8 13 2 7 11 203 | 1 3 5 2 10 11 204 | 6 9 10 2 8 11 205 | 3 7 9 0 5 13 206 | 10 11 13 0 3 8 207 | 3 10 11 2 4 9 208 | 7 8 10 0 1 2 209 | 3 10 11 5 7 8 210 | 7 10 12 2 4 6 211 | 0 1 11 2 3 5 212 | 0 9 10 4 6 7 213 | 0 1 11 2 4 9 214 | 2 10 12 0 3 11 215 | 1 3 5 2 8 11 216 | 3 7 11 1 5 12 217 | 4 6 11 1 8 10 218 | 2 5 13 1 10 12 219 | 2 3 9 5 7 11 220 | 0 1 12 5 6 7 221 | 5 8 12 3 6 11 222 | 4 5 8 7 9 10 223 | 0 1 12 7 8 9 224 | 0 7 9 2 6 8 225 | 3 8 12 6 9 13 226 | 4 6 12 3 5 9 227 | 2 9 12 4 6 10 228 | 3 4 12 0 1 5 229 | 2 4 12 6 8 11 230 | 0 3 12 1 9 10 231 | 1 5 10 8 9 11 232 | 1 4 12 3 5 9 233 | 5 10 12 3 6 11 234 | 4 9 10 0 5 7 235 | 0 6 13 2 5 8 236 | 8 10 13 7 9 11 237 | 3 6 8 5 9 13 238 | 0 7 10 5 12 13 239 | 4 6 9 0 1 13 240 | 3 5 8 4 7 13 241 | 1 5 7 8 9 13 242 | 3 5 9 0 2 7 243 | 0 7 10 4 8 13 244 | 0 3 13 6 7 12 245 | 3 8 9 4 6 7 246 | 1 11 13 3 6 10 247 | 5 9 11 1 2 7 248 | 2 4 10 1 3 13 249 | 9 11 12 4 5 6 250 | 3 7 8 0 9 10 251 | 4 6 8 0 1 2 252 | 6 11 13 0 3 4 253 | 8 11 13 2 5 10 254 | 4 11 12 2 7 8 255 | 2 6 12 7 8 11 256 | 8 9 13 0 5 11 257 | -------------------------------------------------------------------------------- /g6k/algorithms/bkz.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | BKZ Tours. 4 | """ 5 | import sys 6 | from pump import pump 7 | from workout import workout 8 | 9 | 10 | def dim4free_wrapper(dim4free_fun, blocksize): 11 | """ 12 | Deals with correct dim4free choices for edge cases when non default 13 | function is chosen. 14 | 15 | :param dim4free_fun: the function for choosing the amount of dim4free 16 | :param blocksize: the BKZ blocksize 17 | 18 | """ 19 | if blocksize < 40: 20 | return 0 21 | dim4free = dim4free_fun(blocksize) 22 | return int(min((blocksize - 40)/2, dim4free)) 23 | 24 | 25 | def default_dim4free_fun(blocksize): 26 | """ 27 | Return expected number of dimensions for free, from exact-SVP experiments. 28 | 29 | :param blocksize: the BKZ blocksize 30 | 31 | """ 32 | return int(11.5 + 0.075*blocksize) 33 | 34 | 35 | def naive_bkz_tour(g6k, tracer, blocksize, dim4free_fun=default_dim4free_fun, 36 | extra_dim4free=0, workout_params=None, pump_params=None): 37 | """ 38 | Run a naive BKZ-tour: call ``workout`` as an SVP oracle consecutively on 39 | each block. 40 | 41 | :param g6k: The g6k object to work with 42 | :param tracer: A tracer for g6k 43 | :param blocksize: dimension of the blocks 44 | :param dim4free_fun: number of dimension for free as a function of beta (function, or string e.g. `lambda x: 11.5+0.075*x`) 45 | :param extra_dim4free: increase the number of dims 4 free (blocksize is increased, but not sieve dimension) 46 | :param workout_params: parameters to pass to the workout 47 | :param pump_params: parameters to pass to the pump 48 | 49 | """ 50 | if workout_params is None: 51 | workout_params = {} 52 | 53 | if "dim4free_min" in workout_params: 54 | raise ValueError("In naive_bkz, you should choose dim4free via dim4free_fun.") 55 | 56 | d = g6k.full_n 57 | 58 | if isinstance(dim4free_fun, basestring): 59 | dim4free_fun = eval(dim4free_fun) 60 | 61 | dim4free = dim4free_wrapper(dim4free_fun, blocksize) + extra_dim4free 62 | blocksize += extra_dim4free 63 | 64 | for kappa in range(d-3): 65 | beta = min(blocksize, d - kappa) 66 | lost_dim = blocksize - beta 67 | f = max(dim4free - lost_dim, 0) 68 | 69 | workout(g6k, tracer, kappa, beta, f, pump_params=pump_params, **workout_params) 70 | g6k.lll(0, d) 71 | 72 | 73 | def pump_n_jump_bkz_tour(g6k, tracer, blocksize, jump=1, 74 | dim4free_fun=default_dim4free_fun, extra_dim4free=0, 75 | pump_params=None, goal_r0=0., verbose=False): 76 | """ 77 | Run a PumpNjump BKZ-tour: call Pump consecutively on every (jth) block. 78 | 79 | :param g6k: The g6k object to work with 80 | :param tracer: A tracer for g6k 81 | :param blocksize: dimension of the blocks 82 | :param jump: only call the pump every j blocks 83 | :param dim4free_fun: number of dimension for free as a function of beta (function, or string 84 | e.g. `lambda x: 11.5+0.075*x`) 85 | :param extra_dim4free: increase the number of dims 4 free (blocksize is increased, but not sieve 86 | dimension) 87 | :param pump_params: parameters to pass to the pump 88 | """ 89 | if pump_params is None: 90 | pump_params = {"down_sieve": False} 91 | 92 | if "dim4free" in pump_params: 93 | raise ValueError("In pump_n_jump_bkz, you should choose dim4free via dim4free_fun.") 94 | 95 | d = g6k.full_n 96 | g6k.shrink_db(0) 97 | g6k.lll(0,d) 98 | g6k.update_gso(0,d) 99 | 100 | if isinstance(dim4free_fun, basestring): 101 | dim4free_fun = eval(dim4free_fun) 102 | 103 | dim4free = dim4free_wrapper(dim4free_fun, blocksize) + extra_dim4free 104 | blocksize += extra_dim4free 105 | 106 | indices = [(0, blocksize - dim4free + i, i) for i in range(0, dim4free, jump)] 107 | indices += [(i, blocksize, dim4free) for i in range(0, d - blocksize, jump)] 108 | indices += [(d - blocksize + i, blocksize - i, dim4free - i) for i in range(0, dim4free, jump)] 109 | 110 | pump_params["down_stop"] = dim4free+3 111 | 112 | for (kappa, beta, f) in indices: 113 | if verbose: 114 | print "\r k:%d, b:%d, f:%d " % (kappa, beta, f), 115 | sys.stdout.flush() 116 | 117 | pump(g6k, tracer, kappa, beta, f, **pump_params) 118 | g6k.lll(0, d) 119 | if g6k.M.get_r(0, 0) <= goal_r0: 120 | return 121 | 122 | if verbose: 123 | print "\r k:%d, b:%d, f:%d " % (d-(blocksize-dim4free), blocksize-dim4free, 0), 124 | sys.stdout.flush() 125 | 126 | pump_params["down_stop"] = blocksize - dim4free 127 | pump(g6k, tracer, d-(blocksize-dim4free), blocksize-dim4free, 0, **pump_params) 128 | if verbose: 129 | print 130 | -------------------------------------------------------------------------------- /spherical_coding/sc_15_256.def: -------------------------------------------------------------------------------- 1 | 12 13 14 4 7 8 2 | 5 9 10 0 4 12 3 | 1 3 8 6 9 10 4 | 6 7 11 0 8 13 5 | 4 6 12 3 7 14 6 | 0 1 13 4 11 14 7 | 6 12 13 7 10 14 8 | 1 4 13 0 2 6 9 | 0 2 13 5 8 12 10 | 7 9 13 1 5 11 11 | 1 5 7 4 6 8 12 | 4 6 8 0 11 14 13 | 0 6 9 2 12 14 14 | 6 9 12 0 3 11 15 | 1 3 11 2 5 10 16 | 7 11 14 5 6 8 17 | 1 2 4 0 6 8 18 | 0 2 5 1 6 7 19 | 4 12 14 8 9 11 20 | 2 5 6 9 13 14 21 | 3 10 12 0 4 6 22 | 5 6 9 0 4 12 23 | 9 13 14 0 3 6 24 | 1 4 5 3 6 14 25 | 3 4 5 1 2 12 26 | 1 3 9 6 7 10 27 | 4 10 13 1 8 12 28 | 2 9 11 7 10 12 29 | 0 1 12 8 10 13 30 | 2 4 11 1 3 7 31 | 7 12 13 0 4 14 32 | 1 9 11 7 12 14 33 | 3 8 13 4 7 14 34 | 7 9 13 1 6 12 35 | 0 3 14 1 6 13 36 | 0 8 9 1 3 12 37 | 3 9 11 5 6 10 38 | 0 5 11 2 3 6 39 | 8 10 11 4 7 9 40 | 5 7 14 8 10 13 41 | 6 10 12 0 2 5 42 | 3 6 7 0 1 5 43 | 0 4 7 2 8 9 44 | 3 10 14 7 9 12 45 | 0 9 13 1 5 11 46 | 4 10 13 3 5 6 47 | 4 8 12 0 2 9 48 | 1 7 13 5 9 11 49 | 4 6 8 3 13 14 50 | 10 11 12 1 6 8 51 | 5 9 14 1 2 12 52 | 0 2 3 1 7 9 53 | 3 7 11 1 2 10 54 | 5 12 14 1 7 11 55 | 2 5 8 1 6 14 56 | 0 1 13 5 11 14 57 | 0 9 12 1 3 13 58 | 3 13 14 0 6 7 59 | 4 5 9 0 2 6 60 | 2 4 8 0 1 10 61 | 6 11 14 2 7 13 62 | 4 5 9 7 8 13 63 | 0 5 7 9 12 14 64 | 5 10 12 0 4 7 65 | 5 7 12 3 4 10 66 | 2 4 5 1 10 11 67 | 7 11 13 0 8 9 68 | 0 5 10 8 11 13 69 | 4 6 11 1 5 7 70 | 3 12 14 2 5 9 71 | 0 5 13 7 8 11 72 | 1 9 11 4 12 14 73 | 1 3 6 0 8 9 74 | 2 3 14 4 12 13 75 | 0 2 9 8 10 11 76 | 1 2 5 6 8 10 77 | 7 10 14 6 11 13 78 | 2 4 7 5 13 14 79 | 4 12 14 1 6 7 80 | 3 7 8 9 11 13 81 | 3 6 12 1 5 7 82 | 3 11 12 1 6 14 83 | 2 5 6 8 10 13 84 | 2 10 13 7 8 12 85 | 0 6 11 5 7 12 86 | 2 12 13 0 3 7 87 | 1 5 13 2 8 11 88 | 1 2 10 3 6 13 89 | 3 9 11 1 8 10 90 | 2 8 12 5 11 13 91 | 1 11 12 5 13 14 92 | 5 10 13 0 3 8 93 | 2 12 14 4 7 9 94 | 0 4 8 2 3 10 95 | 3 5 9 1 2 7 96 | 4 11 13 3 7 10 97 | 2 9 13 5 8 14 98 | 0 4 14 3 5 8 99 | 1 2 14 7 9 12 100 | 2 5 9 0 8 10 101 | 5 8 13 2 3 11 102 | 4 6 12 3 5 9 103 | 3 4 12 1 2 6 104 | 6 9 14 4 8 11 105 | 1 9 14 6 11 13 106 | 1 2 6 9 10 12 107 | 7 10 12 3 4 8 108 | 2 4 12 7 8 10 109 | 2 5 11 7 9 12 110 | 1 2 6 0 4 10 111 | 0 10 12 2 5 8 112 | 8 9 10 11 12 13 113 | 4 6 13 0 3 10 114 | 1 10 13 2 8 12 115 | 5 9 11 0 2 7 116 | 4 9 14 2 3 10 117 | 3 8 11 1 9 12 118 | 0 4 5 2 9 14 119 | 1 3 13 5 8 12 120 | 5 7 13 4 10 12 121 | 2 9 14 0 1 8 122 | 3 6 13 1 2 8 123 | 0 6 14 8 9 10 124 | 1 11 14 2 6 7 125 | 0 7 11 5 10 13 126 | 0 2 6 7 11 12 127 | 0 1 13 5 7 10 128 | 1 3 12 2 5 11 129 | 4 6 8 1 9 11 130 | 8 10 11 2 3 9 131 | 9 12 14 7 11 13 132 | 2 4 13 0 6 14 133 | 5 8 9 3 4 10 134 | 7 9 12 4 5 8 135 | 4 8 14 7 11 12 136 | 2 4 14 11 12 13 137 | 1 3 6 7 13 14 138 | 4 9 14 0 10 12 139 | 4 7 8 0 6 10 140 | 1 6 11 2 8 9 141 | 2 6 14 0 3 9 142 | 3 6 13 5 10 12 143 | 3 7 9 1 11 13 144 | 7 8 13 11 12 14 145 | 2 7 11 1 9 10 146 | 1 9 11 2 3 14 147 | 3 12 13 4 10 11 148 | 1 10 13 9 11 12 149 | 0 2 8 3 4 7 150 | 1 9 12 0 6 10 151 | 5 6 9 1 2 10 152 | 6 9 12 1 13 14 153 | 8 9 12 3 5 6 154 | 5 11 14 4 9 12 155 | 0 5 11 1 7 9 156 | 5 6 12 0 2 10 157 | 3 4 10 7 8 9 158 | 0 1 12 2 9 11 159 | 0 2 8 4 7 9 160 | 4 5 6 0 10 13 161 | 0 6 9 2 3 12 162 | 1 12 13 3 11 14 163 | 3 4 8 0 1 14 164 | 11 13 14 4 6 10 165 | 0 3 4 2 6 10 166 | 1 6 14 3 5 10 167 | 6 7 11 5 10 14 168 | 0 5 13 7 10 11 169 | 0 2 4 1 6 14 170 | 3 9 13 5 7 10 171 | 1 3 4 8 12 13 172 | 0 5 13 1 7 9 173 | 1 4 7 9 10 14 174 | 0 6 14 1 5 12 175 | 0 6 7 4 10 14 176 | 2 11 12 3 6 9 177 | 6 10 13 1 5 9 178 | 0 1 2 7 10 14 179 | 3 5 10 0 4 13 180 | 1 5 14 0 2 9 181 | 5 8 10 2 4 13 182 | 7 11 14 2 6 10 183 | 8 9 13 0 5 12 184 | 0 4 5 1 8 9 185 | 4 8 11 5 9 13 186 | 2 7 10 4 5 6 187 | 0 3 12 4 8 13 188 | 2 12 14 5 8 10 189 | 1 10 11 3 5 6 190 | 0 7 14 3 4 12 191 | 0 1 8 6 12 13 192 | 1 6 10 5 7 14 193 | 1 4 6 0 2 9 194 | 0 11 12 2 7 8 195 | 4 9 14 2 12 13 196 | 1 3 9 8 13 14 197 | 6 7 10 1 3 8 198 | 6 7 11 10 13 14 199 | 2 5 10 0 9 14 200 | 2 9 12 3 10 14 201 | 1 8 11 0 7 13 202 | 3 6 7 1 5 11 203 | 5 6 8 4 9 10 204 | 0 7 11 1 3 6 205 | 0 7 14 3 11 13 206 | 9 11 14 5 7 10 207 | 2 4 8 0 3 12 208 | 2 8 12 0 6 7 209 | 0 11 13 2 3 7 210 | 0 8 13 3 6 10 211 | 3 12 13 2 4 14 212 | 1 5 14 8 11 13 213 | 0 1 8 4 6 13 214 | 1 11 14 0 4 10 215 | 1 3 4 2 13 14 216 | 2 4 8 3 5 13 217 | 1 6 14 10 11 13 218 | 3 5 13 1 10 14 219 | 3 9 11 5 7 8 220 | 3 4 10 6 8 9 221 | 0 1 14 2 3 11 222 | 8 12 14 4 9 10 223 | 4 6 11 8 12 14 224 | 3 9 12 7 13 14 225 | 0 5 9 2 12 14 226 | 8 9 11 5 7 12 227 | 8 11 14 4 9 10 228 | 3 7 8 1 4 5 229 | 8 10 14 2 3 5 230 | 0 1 5 6 10 14 231 | 6 10 11 0 3 12 232 | 1 3 4 7 8 12 233 | 2 6 14 4 7 13 234 | 2 7 11 4 8 12 235 | 2 5 7 3 8 14 236 | 7 8 14 2 10 11 237 | 5 6 11 0 2 3 238 | 4 5 12 7 13 14 239 | 3 8 13 0 11 12 240 | 0 6 12 3 4 7 241 | 1 8 13 10 11 12 242 | 6 10 12 4 11 14 243 | 8 10 11 2 12 13 244 | 6 9 14 0 10 11 245 | 9 10 11 3 4 14 246 | 4 7 11 2 3 8 247 | 6 8 14 2 4 7 248 | 5 11 12 1 2 4 249 | 3 5 13 6 9 10 250 | 0 9 10 5 7 13 251 | 3 4 8 6 11 13 252 | 4 12 14 0 3 7 253 | 1 9 10 11 13 14 254 | 0 8 12 2 10 14 255 | 2 7 11 9 10 13 256 | 4 13 14 3 8 11 257 | -------------------------------------------------------------------------------- /spherical_coding/codes.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import random 3 | from numpy import array, zeros, copy 4 | from math import * 5 | import sys 6 | from time import time 7 | 8 | Tlim = 1000 9 | Sample = 1000 10 | 11 | 12 | n = int(sys.argv[1]) 13 | 14 | relative_len = False 15 | try: 16 | XPC_bitlen = int(sys.argv[2]) 17 | XPC_bitlen_string = str(XPC_bitlen) 18 | except: 19 | XPC_bitlen_rel = float(sys.argv[2]) 20 | XPC_bitlen_string = str(XPC_bitlen_rel)+"n" 21 | XPC_bitlen = int(ceil(2**(XPC_bitlen_rel * n))) 22 | 23 | R = sqrt(4./3) 24 | 25 | 26 | def rand_unif_sphere(r=1.0): 27 | v = array([random.gauss(0, 1.) for i in range(n)], dtype=np.float64) 28 | l = v.dot(v) 29 | return (r / sqrt(l))*v 30 | 31 | 32 | def random_pair(): 33 | return (rand_unif_sphere(R), rand_unif_sphere(R)) 34 | 35 | 36 | def good_pair(): 37 | v = rand_unif_sphere(R) 38 | w = rand_unif_sphere() 39 | w -= (w.dot(v)/R**2) * v 40 | w *= (1. / sqrt(w.dot(w))) 41 | w += .5 * v 42 | return v, w 43 | 44 | 45 | def random_sparse_code(c, s=6): 46 | M = zeros((c, n), dtype=np.int64) 47 | for v in M: 48 | for rep in xrange(s): 49 | while True: 50 | a = random.randint(0, n-1) 51 | if v[a]==0: 52 | v[a] = 2 * (rep % 2) - 1 53 | break 54 | return M 55 | 56 | def compress(M, u): 57 | return M.dot(u) > 0 58 | 59 | def mesure_XPC_quality(M, S=Sample): 60 | l = len(M) 61 | hist_good = zeros(l+1, dtype=np.int64) 62 | hist_bad = zeros(l+1, dtype=np.int64) 63 | for a in xrange(S): 64 | v, w = random_pair() 65 | x = sum(compress(M, v) ^ compress(M, w)) 66 | hist_bad[x] += 1 67 | 68 | v, w = good_pair() 69 | x = sum(compress(M, v) ^ compress(M, w)) 70 | hist_good[x] += 1 71 | 72 | for i in range(l): 73 | hist_good[i+1] += hist_good[i] 74 | hist_bad[i+1] += hist_bad[i] 75 | 76 | return hist_bad, hist_good 77 | 78 | 79 | def line_scores(G): 80 | s = G[0, 0] * G[0, 0] 81 | n, _ = G.shape 82 | v = [(sum([x*x for x in G[i]]) - s,i) for i in range(n)] 83 | return v 84 | 85 | 86 | def score(G): 87 | s = G[0, 0] * G[0, 0] 88 | v = [sum([x*x for x in v]) - s for v in G] 89 | return sum([x*x for x in v]) 90 | 91 | 92 | def update_G(M, G, i): 93 | l, n = M.shape 94 | v = M.dot(M[i].transpose()) 95 | for j in xrange(l): 96 | G[i, j] = v[j] 97 | G[j, i] = v[j] 98 | 99 | 100 | def perm(n): 101 | L = range(n) 102 | for rep in xrange(2 * n): 103 | a = random.randint(0, n-1) 104 | b = random.randint(0, n-1) 105 | L[a], L[b] = L[b], L[a] 106 | return L 107 | 108 | 109 | def improve_once(M, G, i): 110 | l, n = M.shape 111 | old_score = score(G) 112 | pp = perm(n) 113 | for aa in range(n): 114 | a = pp[aa] 115 | for bb in range(a): 116 | b = pp[bb] 117 | if M[i, a] == M[i, b]: 118 | continue 119 | (M[i, a], M[i, b]) = (M[i, b], M[i, a]) 120 | update_G(M, G, i) 121 | new_score = score(G) 122 | if new_score < old_score: 123 | return True 124 | else: 125 | (M[i, a], M[i, b]) = (M[i, b], M[i, a]) 126 | update_G(M, G, i) 127 | return False 128 | 129 | 130 | def improve(M): 131 | l, n = M.shape 132 | G = M.dot(M.transpose()) 133 | score0 = score(G) 134 | T0 = time() 135 | a = 0 136 | while True: 137 | a += 1 138 | if time() - T0 > Tlim: 139 | break 140 | v = line_scores(G) 141 | v.sort(reverse=True) 142 | c = 0 143 | for (_, i) in v: 144 | if improve_once(M, G, i): 145 | break 146 | else: 147 | c += 1 148 | else: 149 | print "no improvement found" 150 | break 151 | G = M.dot(M.transpose()) 152 | print "n:", n , "iter:", a, " \t" , 1.*score0, "\t ->", 1.*score(G) 153 | return M 154 | 155 | 156 | def get_good_code(s=6): 157 | M = random_sparse_code(XPC_bitlen, s=s) 158 | # print mesure_XPC_quality(M) 159 | improve(M) 160 | return M 161 | 162 | M = get_good_code(s=6) 163 | 164 | def sparse_repr(v): 165 | Lp = [] 166 | Lm = [] 167 | for i in range(n): 168 | if v[i] > 0: 169 | Lp += [i] 170 | if v[i] < 0: 171 | Lm += [i] 172 | return Lp + Lm 173 | 174 | f = open("sc_%d_%s.def"%(n, XPC_bitlen_string), 'w') 175 | 176 | for v in M: 177 | for x in sparse_repr(v): 178 | print >>f, x, 179 | print >>f 180 | 181 | f.close() 182 | 183 | 184 | # f = open("sc_%d_%s.bench"%(n, XPC_bitlen_string), 'w') 185 | 186 | # b, g = mesure_XPC_quality(M) 187 | # for i in range(XPC_bitlen): 188 | # print >>f, "%d \t %d \t %d"%(i, b[i], g[i]) 189 | 190 | # f.close() 191 | -------------------------------------------------------------------------------- /spherical_coding/sc_16_256.def: -------------------------------------------------------------------------------- 1 | 0 6 11 4 8 14 2 | 2 6 8 7 11 13 3 | 4 9 10 2 5 13 4 | 1 10 12 7 8 15 5 | 0 7 9 4 11 12 6 | 4 6 7 5 9 15 7 | 6 9 14 0 13 15 8 | 0 2 15 4 12 13 9 | 3 10 15 4 8 11 10 | 1 6 12 3 7 14 11 | 0 7 8 1 3 9 12 | 2 7 14 3 4 6 13 | 3 6 13 0 1 2 14 | 3 8 9 5 6 15 15 | 3 10 14 0 6 9 16 | 0 11 15 5 6 12 17 | 5 9 14 0 2 11 18 | 1 8 15 2 6 9 19 | 4 9 10 2 8 15 20 | 7 13 15 0 1 6 21 | 1 5 13 6 10 12 22 | 0 1 7 6 11 15 23 | 6 8 12 0 1 14 24 | 2 8 12 0 3 9 25 | 0 3 14 2 7 12 26 | 7 12 14 2 4 11 27 | 2 10 11 7 8 15 28 | 0 3 6 2 12 14 29 | 1 7 11 0 6 13 30 | 0 4 15 8 11 12 31 | 2 5 13 3 10 11 32 | 5 14 15 1 8 12 33 | 6 10 12 0 8 11 34 | 6 8 9 7 10 14 35 | 0 10 11 2 3 5 36 | 0 2 12 3 10 13 37 | 5 8 10 6 7 12 38 | 2 5 13 0 8 14 39 | 2 13 15 4 5 8 40 | 3 7 11 0 9 12 41 | 1 7 11 4 8 14 42 | 7 9 10 8 13 14 43 | 5 6 10 1 14 15 44 | 2 3 14 5 12 13 45 | 0 1 3 2 5 15 46 | 0 6 11 12 13 14 47 | 0 7 12 2 3 4 48 | 1 6 8 2 7 11 49 | 3 7 8 11 13 14 50 | 2 8 11 9 12 14 51 | 4 9 13 2 3 14 52 | 3 7 9 0 12 14 53 | 5 8 12 7 14 15 54 | 1 8 11 3 5 7 55 | 3 4 6 2 10 11 56 | 3 5 12 8 10 14 57 | 2 9 12 3 6 10 58 | 0 3 15 1 4 14 59 | 2 5 13 7 9 10 60 | 0 3 14 1 13 15 61 | 8 12 13 6 7 15 62 | 1 5 12 4 6 13 63 | 4 6 8 2 3 12 64 | 2 6 10 4 9 11 65 | 1 3 8 12 14 15 66 | 1 4 13 6 9 11 67 | 4 6 9 0 3 11 68 | 1 10 14 0 7 15 69 | 4 7 10 5 9 11 70 | 4 10 15 9 12 13 71 | 0 12 13 2 3 11 72 | 3 7 12 5 6 10 73 | 0 7 8 9 13 15 74 | 5 10 15 1 6 13 75 | 5 7 12 9 10 15 76 | 7 9 10 4 8 15 77 | 4 6 13 9 11 14 78 | 3 8 13 1 2 9 79 | 3 5 15 0 6 7 80 | 2 4 12 1 5 10 81 | 2 7 11 3 4 12 82 | 0 4 11 2 5 12 83 | 6 10 15 2 5 14 84 | 1 4 12 5 14 15 85 | 6 11 13 0 1 3 86 | 4 10 12 3 8 13 87 | 1 4 10 8 12 13 88 | 10 12 15 5 8 13 89 | 5 11 14 2 7 8 90 | 2 6 15 8 9 10 91 | 0 2 6 7 9 13 92 | 2 8 12 0 3 15 93 | 0 7 13 8 9 10 94 | 1 7 10 4 5 9 95 | 0 9 13 3 5 8 96 | 8 10 13 1 9 14 97 | 11 12 15 0 9 10 98 | 8 9 10 1 4 14 99 | 1 2 3 7 11 14 100 | 9 11 15 2 3 8 101 | 1 4 14 0 9 11 102 | 1 9 15 4 11 14 103 | 1 13 15 3 4 14 104 | 7 8 13 4 5 12 105 | 2 3 14 0 1 8 106 | 2 10 12 5 14 15 107 | 1 6 9 3 5 13 108 | 6 8 15 2 4 11 109 | 1 6 11 4 13 15 110 | 0 2 10 1 7 15 111 | 2 3 5 8 11 12 112 | 2 8 11 1 12 13 113 | 5 6 8 4 9 11 114 | 2 3 10 5 7 9 115 | 1 13 14 4 10 12 116 | 2 11 13 5 9 14 117 | 7 10 12 3 6 15 118 | 5 11 13 7 10 12 119 | 2 6 7 3 5 12 120 | 8 12 14 0 3 4 121 | 0 3 11 4 10 14 122 | 5 8 11 0 6 15 123 | 3 7 15 1 6 13 124 | 4 6 9 10 12 14 125 | 7 13 14 3 4 15 126 | 1 5 10 0 6 15 127 | 0 6 9 10 11 15 128 | 5 8 15 3 11 14 129 | 8 10 13 5 12 15 130 | 6 7 14 0 1 4 131 | 4 6 8 0 3 14 132 | 1 2 13 3 5 7 133 | 1 8 15 0 2 5 134 | 7 11 12 2 4 14 135 | 4 7 10 2 3 9 136 | 3 11 12 6 8 14 137 | 0 3 13 4 5 8 138 | 1 8 9 2 5 7 139 | 5 10 11 6 12 14 140 | 4 8 14 3 6 13 141 | 0 2 11 7 9 13 142 | 5 9 11 3 10 14 143 | 4 6 7 0 10 13 144 | 2 3 9 1 5 11 145 | 2 8 9 3 5 13 146 | 2 8 14 0 5 10 147 | 5 8 14 0 4 13 148 | 5 10 14 7 12 15 149 | 0 4 14 1 7 15 150 | 3 9 13 5 6 8 151 | 4 5 13 3 8 12 152 | 1 5 6 3 8 13 153 | 1 7 10 2 4 9 154 | 7 13 15 0 3 11 155 | 12 14 15 1 2 10 156 | 1 11 13 0 5 12 157 | 0 12 13 1 5 6 158 | 2 9 14 4 12 15 159 | 4 5 9 10 12 14 160 | 1 9 14 0 5 12 161 | 6 10 13 0 4 14 162 | 1 5 7 8 10 15 163 | 3 8 15 7 11 14 164 | 2 7 8 5 10 13 165 | 2 4 10 0 9 11 166 | 6 7 14 1 4 11 167 | 1 13 15 3 9 12 168 | 2 5 6 4 9 14 169 | 1 6 14 0 4 12 170 | 6 9 12 1 10 14 171 | 5 10 15 1 4 7 172 | 0 1 14 2 10 11 173 | 6 12 15 5 7 8 174 | 5 7 10 3 6 14 175 | 1 2 9 11 13 15 176 | 2 9 13 1 3 8 177 | 2 6 12 5 8 10 178 | 1 2 15 6 8 9 179 | 6 8 15 2 3 4 180 | 4 7 8 0 5 12 181 | 0 1 14 4 7 10 182 | 1 3 7 8 9 13 183 | 0 3 14 5 11 15 184 | 2 7 9 10 11 13 185 | 11 13 14 0 5 10 186 | 5 6 11 2 10 12 187 | 6 7 11 2 12 15 188 | 2 8 15 7 11 14 189 | 4 8 11 9 10 13 190 | 2 3 15 11 12 13 191 | 0 7 10 1 3 8 192 | 3 9 12 0 2 4 193 | 1 2 6 4 8 10 194 | 1 12 15 5 7 9 195 | 6 10 15 0 4 8 196 | 10 11 15 1 7 13 197 | 1 6 9 3 5 14 198 | 2 9 15 3 11 12 199 | 1 3 13 4 14 15 200 | 6 11 12 2 9 13 201 | 2 10 11 5 12 14 202 | 1 14 15 7 8 11 203 | 1 6 7 2 3 9 204 | 2 8 9 0 13 14 205 | 2 5 13 0 12 15 206 | 2 6 7 0 5 9 207 | 1 9 13 5 8 14 208 | 3 5 7 8 12 14 209 | 0 8 14 7 10 12 210 | 1 3 15 0 2 10 211 | 0 4 7 1 9 11 212 | 3 4 7 10 11 12 213 | 6 10 12 2 7 9 214 | 3 6 13 1 5 15 215 | 5 9 15 2 4 6 216 | 6 9 11 1 4 5 217 | 1 2 4 3 8 10 218 | 7 13 15 3 6 9 219 | 1 5 7 11 13 15 220 | 6 11 14 0 7 8 221 | 0 10 13 2 11 12 222 | 6 14 15 4 9 11 223 | 3 8 12 0 4 6 224 | 4 9 14 0 2 8 225 | 1 2 10 3 6 11 226 | 0 2 14 3 4 7 227 | 0 8 13 4 7 12 228 | 6 10 14 0 8 9 229 | 0 5 11 3 4 13 230 | 5 6 12 4 10 15 231 | 4 13 14 1 3 10 232 | 6 7 14 1 9 13 233 | 3 12 15 4 9 10 234 | 4 9 15 0 10 12 235 | 0 13 14 1 3 15 236 | 5 6 10 4 12 15 237 | 5 6 13 9 12 14 238 | 0 2 13 6 9 10 239 | 0 1 15 5 11 13 240 | 9 10 12 4 6 11 241 | 9 11 15 0 6 13 242 | 6 10 14 7 11 12 243 | 0 7 9 4 11 15 244 | 1 11 14 4 5 12 245 | 3 9 13 0 5 7 246 | 3 6 12 8 10 15 247 | 4 5 11 7 8 13 248 | 0 8 15 2 10 13 249 | 9 14 15 1 3 4 250 | 0 1 15 3 7 13 251 | 1 7 11 9 10 13 252 | 1 7 11 0 4 12 253 | 1 4 5 8 11 14 254 | 7 9 15 1 12 13 255 | 1 11 14 2 7 15 256 | 1 5 8 4 11 15 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_17_256.def: -------------------------------------------------------------------------------- 1 | 3 9 13 1 10 12 2 | 0 1 5 7 8 10 3 | 3 4 14 7 15 16 4 | 9 12 13 1 3 4 5 | 0 8 13 2 4 16 6 | 3 10 11 0 12 14 7 | 0 14 16 1 5 13 8 | 1 10 12 0 4 14 9 | 1 15 16 6 11 14 10 | 0 4 7 11 13 14 11 | 0 14 16 1 3 9 12 | 5 7 12 8 13 14 13 | 1 2 16 3 5 13 14 | 6 15 16 9 11 13 15 | 3 6 10 2 5 7 16 | 4 6 10 0 5 16 17 | 3 5 7 0 2 8 18 | 7 12 16 2 4 13 19 | 4 5 12 6 9 14 20 | 3 14 16 2 9 15 21 | 7 13 15 1 2 6 22 | 8 9 14 5 7 12 23 | 2 13 16 11 12 14 24 | 0 9 11 4 12 14 25 | 4 5 11 0 2 3 26 | 0 13 14 8 9 12 27 | 1 5 7 2 8 16 28 | 11 12 14 1 4 8 29 | 2 5 9 4 6 15 30 | 6 10 14 3 15 16 31 | 2 9 13 3 7 12 32 | 10 11 12 3 5 14 33 | 1 8 11 0 3 9 34 | 2 7 10 13 14 16 35 | 6 7 16 0 9 10 36 | 1 8 10 2 7 12 37 | 3 9 12 2 8 15 38 | 2 3 11 8 9 15 39 | 10 14 16 1 8 13 40 | 7 8 12 10 13 16 41 | 0 8 10 5 11 16 42 | 9 10 16 3 7 13 43 | 2 5 6 0 7 10 44 | 1 8 12 0 2 10 45 | 3 8 13 1 6 7 46 | 3 5 11 2 6 8 47 | 0 5 8 6 9 13 48 | 3 10 13 11 12 16 49 | 7 8 13 2 9 15 50 | 6 12 13 9 10 16 51 | 8 12 14 0 7 13 52 | 3 9 13 0 6 11 53 | 4 13 14 2 5 16 54 | 4 9 15 5 6 10 55 | 8 9 10 4 13 16 56 | 0 3 14 1 4 12 57 | 11 12 13 2 3 7 58 | 7 8 15 3 4 16 59 | 8 13 16 0 11 15 60 | 7 14 16 5 13 15 61 | 3 10 11 5 6 13 62 | 1 11 16 2 6 12 63 | 8 15 16 5 9 14 64 | 0 3 10 2 14 15 65 | 2 5 11 10 14 16 66 | 6 7 9 1 5 10 67 | 9 13 14 2 6 7 68 | 5 7 12 2 3 9 69 | 3 12 13 7 9 16 70 | 2 4 11 5 12 13 71 | 1 9 13 3 10 16 72 | 4 6 15 2 11 14 73 | 2 3 10 6 9 11 74 | 5 6 7 1 9 10 75 | 0 11 13 1 4 8 76 | 4 9 15 2 3 14 77 | 2 3 6 4 9 12 78 | 1 2 12 0 5 8 79 | 0 9 13 2 11 16 80 | 3 8 11 6 14 16 81 | 9 12 14 0 1 11 82 | 1 2 13 5 10 15 83 | 0 4 14 3 5 12 84 | 3 11 14 4 9 10 85 | 5 8 15 9 12 13 86 | 1 6 7 10 12 13 87 | 1 3 15 5 11 14 88 | 0 4 6 2 3 14 89 | 0 7 14 4 5 6 90 | 3 11 15 4 7 10 91 | 2 3 14 8 10 11 92 | 0 5 12 7 11 13 93 | 8 13 16 0 7 14 94 | 2 3 10 0 15 16 95 | 2 5 9 11 12 15 96 | 3 12 16 1 6 7 97 | 4 10 15 6 9 12 98 | 2 8 11 1 12 16 99 | 2 6 12 4 14 15 100 | 1 2 13 3 5 9 101 | 0 1 16 3 7 15 102 | 9 10 12 7 8 13 103 | 6 8 12 0 4 5 104 | 9 11 16 3 4 14 105 | 1 2 13 5 15 16 106 | 3 5 6 7 11 16 107 | 4 8 16 1 6 9 108 | 2 10 16 5 11 14 109 | 0 4 8 9 10 14 110 | 1 5 15 2 3 7 111 | 2 10 12 7 8 14 112 | 1 5 6 7 11 14 113 | 5 9 14 0 12 16 114 | 2 7 8 5 10 16 115 | 10 11 12 13 15 16 116 | 2 7 13 0 6 10 117 | 3 8 15 1 12 14 118 | 1 6 11 3 12 15 119 | 3 6 15 7 11 13 120 | 7 9 14 1 12 13 121 | 7 8 12 5 13 15 122 | 8 12 14 0 4 7 123 | 3 11 16 0 12 15 124 | 6 11 13 4 12 14 125 | 3 8 11 2 13 14 126 | 4 5 13 2 11 12 127 | 10 11 13 7 9 16 128 | 1 8 14 4 13 16 129 | 7 8 11 10 14 15 130 | 5 7 9 3 4 6 131 | 3 6 16 0 5 13 132 | 5 10 14 4 7 11 133 | 5 8 15 0 6 11 134 | 5 8 14 1 4 15 135 | 10 13 16 2 4 14 136 | 4 11 16 1 6 8 137 | 4 8 14 2 6 9 138 | 3 9 15 0 12 13 139 | 0 3 14 5 10 16 140 | 5 7 9 2 8 14 141 | 1 5 7 4 10 14 142 | 11 14 16 4 9 15 143 | 7 10 11 0 1 8 144 | 0 5 9 3 4 12 145 | 1 10 11 8 12 13 146 | 1 3 16 6 7 14 147 | 7 9 10 0 3 16 148 | 1 10 15 11 12 13 149 | 3 7 13 1 5 14 150 | 2 5 7 0 10 11 151 | 5 9 11 0 6 12 152 | 4 9 11 3 6 7 153 | 0 2 16 6 10 15 154 | 3 6 11 1 5 16 155 | 4 8 11 7 10 16 156 | 8 13 14 4 6 12 157 | 2 11 16 4 9 14 158 | 6 9 14 0 4 10 159 | 3 4 5 7 10 16 160 | 4 7 14 0 2 15 161 | 5 14 15 4 9 10 162 | 4 6 9 8 10 11 163 | 2 10 13 0 8 16 164 | 0 4 5 7 12 13 165 | 0 6 9 1 5 10 166 | 7 10 13 4 11 12 167 | 1 7 14 6 10 15 168 | 0 1 5 2 8 12 169 | 6 8 11 0 3 4 170 | 6 13 16 1 3 9 171 | 1 12 14 2 4 7 172 | 0 3 7 5 12 14 173 | 0 6 15 2 4 5 174 | 6 13 16 5 7 10 175 | 4 5 10 0 1 15 176 | 1 10 13 3 9 16 177 | 2 4 9 0 3 16 178 | 0 2 11 8 13 16 179 | 4 14 16 1 7 8 180 | 0 1 8 12 13 15 181 | 4 10 15 1 2 5 182 | 4 7 8 1 2 16 183 | 1 9 15 4 5 6 184 | 7 11 12 6 9 15 185 | 2 10 12 1 4 6 186 | 1 11 15 4 7 8 187 | 7 11 13 8 9 12 188 | 2 10 14 3 4 11 189 | 3 4 12 6 11 14 190 | 12 13 14 3 8 11 191 | 5 6 16 0 12 15 192 | 8 10 13 4 12 16 193 | 7 10 15 0 6 16 194 | 0 14 15 4 9 16 195 | 0 2 11 7 14 15 196 | 1 2 4 3 8 15 197 | 2 6 15 1 11 12 198 | 0 3 7 4 11 13 199 | 2 8 15 3 6 13 200 | 3 4 14 6 8 9 201 | 4 10 14 11 13 15 202 | 0 8 12 2 11 15 203 | 7 12 16 2 11 15 204 | 3 7 15 4 10 11 205 | 2 11 15 1 7 8 206 | 6 10 15 0 2 13 207 | 0 2 5 8 11 14 208 | 3 8 10 4 12 15 209 | 3 6 11 2 10 14 210 | 2 13 16 3 9 11 211 | 2 5 8 0 7 10 212 | 3 4 8 0 7 15 213 | 5 6 8 1 7 10 214 | 5 10 12 1 3 15 215 | 1 4 14 0 5 8 216 | 4 9 13 6 10 16 217 | 0 12 13 2 8 14 218 | 1 3 6 2 5 15 219 | 3 5 15 0 4 16 220 | 2 12 15 9 13 16 221 | 0 11 15 3 10 16 222 | 4 8 14 3 9 10 223 | 2 10 12 7 9 16 224 | 1 4 8 13 15 16 225 | 0 1 9 6 11 15 226 | 5 8 16 0 1 14 227 | 8 9 16 0 5 7 228 | 0 5 8 1 12 13 229 | 2 8 9 1 6 15 230 | 1 7 15 0 3 12 231 | 0 10 13 11 12 15 232 | 1 5 6 7 9 15 233 | 0 2 4 9 14 16 234 | 6 8 9 7 11 15 235 | 4 6 9 1 3 14 236 | 2 13 16 5 6 12 237 | 8 9 12 1 6 14 238 | 4 6 7 1 15 16 239 | 3 9 12 4 14 15 240 | 1 6 9 2 5 12 241 | 10 11 13 2 6 12 242 | 0 8 16 1 3 15 243 | 0 5 11 1 2 7 244 | 8 10 15 1 3 9 245 | 1 8 15 5 7 9 246 | 5 6 10 2 4 9 247 | 6 13 15 0 1 8 248 | 4 6 16 0 9 12 249 | 1 7 13 0 9 15 250 | 6 9 11 1 3 5 251 | 6 10 13 14 15 16 252 | 6 7 10 12 13 15 253 | 11 14 15 0 8 13 254 | 2 5 6 1 12 15 255 | 1 5 16 0 6 12 256 | 10 13 15 1 9 11 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_18_256.def: -------------------------------------------------------------------------------- 1 | 4 10 13 11 14 16 2 | 5 15 16 4 11 14 3 | 2 9 12 0 7 13 4 | 3 7 14 8 9 11 5 | 0 7 12 2 11 16 6 | 5 10 14 2 8 11 7 | 2 3 7 6 9 12 8 | 4 8 16 9 14 17 9 | 2 7 13 1 4 5 10 | 4 6 11 0 5 9 11 | 6 8 10 0 11 13 12 | 2 12 15 5 6 10 13 | 1 14 17 8 15 16 14 | 4 12 14 1 6 17 15 | 12 13 16 4 6 14 16 | 2 3 15 4 6 17 17 | 3 13 16 4 9 12 18 | 1 3 5 0 9 14 19 | 5 10 12 1 6 16 20 | 7 11 15 1 12 16 21 | 3 6 13 0 4 7 22 | 1 7 12 2 4 5 23 | 1 13 15 8 9 12 24 | 5 13 14 3 11 16 25 | 2 3 10 8 13 17 26 | 6 11 14 3 8 15 27 | 1 14 17 4 5 10 28 | 0 5 11 1 7 14 29 | 0 6 10 7 9 17 30 | 0 1 11 2 9 17 31 | 4 10 15 0 2 16 32 | 8 11 15 3 4 12 33 | 3 4 12 1 10 17 34 | 5 11 15 2 6 16 35 | 3 6 14 0 7 13 36 | 1 10 15 3 13 17 37 | 5 7 15 0 2 16 38 | 1 9 17 0 7 13 39 | 0 6 11 5 12 16 40 | 2 4 16 3 12 13 41 | 7 9 16 4 10 13 42 | 7 13 15 3 5 12 43 | 6 9 14 5 11 12 44 | 11 12 13 9 14 16 45 | 0 11 17 10 13 16 46 | 7 8 11 6 12 17 47 | 10 11 16 1 2 5 48 | 9 14 17 0 1 11 49 | 0 3 5 4 12 15 50 | 1 11 15 6 8 14 51 | 1 12 16 6 7 17 52 | 2 9 15 6 10 11 53 | 2 7 8 5 15 17 54 | 3 7 11 4 14 15 55 | 0 4 13 3 5 6 56 | 8 13 14 2 5 15 57 | 3 11 16 1 12 15 58 | 9 12 16 0 4 10 59 | 6 11 12 0 1 10 60 | 1 6 10 0 16 17 61 | 0 12 17 7 10 13 62 | 4 5 17 11 12 13 63 | 10 14 16 1 6 15 64 | 2 7 13 0 3 15 65 | 9 12 13 4 16 17 66 | 8 9 14 4 6 17 67 | 5 7 8 0 9 15 68 | 6 8 12 2 14 17 69 | 2 3 6 1 7 16 70 | 2 9 12 7 10 14 71 | 0 1 9 10 12 17 72 | 2 12 15 5 8 9 73 | 0 3 14 4 7 17 74 | 1 14 15 0 2 10 75 | 2 3 9 1 14 17 76 | 5 15 16 3 7 10 77 | 9 13 17 4 10 12 78 | 12 13 16 3 4 15 79 | 0 1 14 7 8 17 80 | 3 7 8 2 9 11 81 | 6 9 15 1 2 10 82 | 8 10 13 2 11 12 83 | 3 10 15 5 9 17 84 | 6 7 12 3 9 10 85 | 8 12 17 0 5 7 86 | 2 5 7 6 9 16 87 | 2 5 7 4 9 17 88 | 6 10 17 7 8 13 89 | 0 1 16 4 6 7 90 | 3 7 9 1 6 12 91 | 9 11 14 4 7 13 92 | 5 9 10 1 3 17 93 | 1 4 9 7 10 12 94 | 0 5 8 2 10 16 95 | 1 6 15 9 10 17 96 | 2 6 7 3 8 13 97 | 8 13 17 7 11 16 98 | 6 11 14 0 3 7 99 | 9 11 13 3 10 15 100 | 8 10 17 0 12 15 101 | 2 12 13 11 16 17 102 | 5 16 17 6 10 14 103 | 3 14 15 1 6 8 104 | 1 12 13 11 14 15 105 | 5 6 11 1 8 14 106 | 0 5 11 8 9 13 107 | 1 5 6 0 3 8 108 | 0 7 14 1 13 16 109 | 0 2 5 1 7 16 110 | 0 5 6 3 4 14 111 | 4 16 17 8 9 15 112 | 1 8 10 4 11 15 113 | 11 13 14 8 10 15 114 | 2 8 11 0 6 7 115 | 5 8 11 0 9 10 116 | 5 12 17 0 6 9 117 | 4 16 17 1 3 9 118 | 5 6 15 2 4 16 119 | 6 7 16 0 3 5 120 | 5 6 16 4 7 8 121 | 2 4 9 10 11 14 122 | 6 7 9 2 8 14 123 | 1 7 9 0 10 12 124 | 10 16 17 1 8 11 125 | 1 6 13 0 3 12 126 | 4 11 16 1 3 9 127 | 2 6 15 0 12 17 128 | 1 3 6 4 8 10 129 | 0 1 15 9 10 12 130 | 13 14 15 2 16 17 131 | 7 10 12 2 4 13 132 | 3 6 14 4 9 11 133 | 0 2 6 4 5 12 134 | 5 13 16 12 14 17 135 | 3 4 15 6 8 13 136 | 2 8 10 7 13 17 137 | 0 2 10 3 5 9 138 | 3 6 17 1 2 10 139 | 6 7 16 2 9 13 140 | 0 12 17 1 5 11 141 | 1 3 8 4 5 6 142 | 4 15 16 10 11 12 143 | 8 14 15 4 7 9 144 | 0 1 17 14 15 16 145 | 2 4 8 1 3 9 146 | 10 11 15 3 4 7 147 | 1 11 16 7 8 10 148 | 3 10 17 0 12 14 149 | 2 3 8 4 10 15 150 | 3 13 14 5 9 17 151 | 0 14 16 2 6 13 152 | 0 2 6 1 4 9 153 | 5 14 16 4 9 11 154 | 2 13 17 1 8 10 155 | 1 8 14 0 12 16 156 | 0 6 15 9 11 14 157 | 0 14 16 4 7 12 158 | 4 8 13 9 10 11 159 | 5 8 16 3 10 17 160 | 4 13 15 2 5 14 161 | 8 10 17 12 13 14 162 | 1 5 11 3 7 17 163 | 7 12 17 2 5 6 164 | 5 8 13 4 7 9 165 | 1 4 9 5 14 15 166 | 11 13 17 5 7 9 167 | 9 12 15 0 5 8 168 | 2 4 5 7 11 17 169 | 4 5 10 0 7 11 170 | 7 12 16 3 10 11 171 | 5 6 9 1 2 11 172 | 11 12 15 2 3 5 173 | 6 10 12 0 4 14 174 | 0 8 14 10 13 15 175 | 5 8 14 0 10 16 176 | 1 4 12 7 8 17 177 | 14 15 16 3 13 17 178 | 7 11 14 0 8 9 179 | 2 14 17 3 9 16 180 | 3 12 16 5 14 17 181 | 6 9 10 5 7 15 182 | 2 9 10 6 13 16 183 | 1 5 12 11 15 16 184 | 3 4 6 7 9 13 185 | 8 11 13 6 12 14 186 | 9 11 15 1 2 16 187 | 4 13 14 6 8 11 188 | 1 3 11 0 2 17 189 | 6 13 16 12 15 17 190 | 5 10 16 1 6 7 191 | 10 12 13 3 4 15 192 | 10 11 17 2 6 14 193 | 13 14 16 0 7 11 194 | 2 5 8 0 7 10 195 | 3 4 5 0 2 8 196 | 3 8 15 0 2 13 197 | 4 13 16 2 7 9 198 | 0 6 13 1 4 11 199 | 13 14 17 1 9 12 200 | 0 4 11 15 16 17 201 | 2 5 7 13 14 15 202 | 10 13 15 0 4 6 203 | 2 10 14 1 16 17 204 | 4 6 13 5 10 17 205 | 1 3 11 6 9 15 206 | 1 6 7 8 10 16 207 | 5 10 13 0 9 17 208 | 3 6 12 0 15 17 209 | 2 3 6 0 8 12 210 | 2 7 13 0 8 15 211 | 5 7 11 4 13 14 212 | 1 12 14 9 11 13 213 | 3 16 17 8 9 10 214 | 0 3 12 2 7 15 215 | 3 9 13 6 8 17 216 | 3 15 16 2 12 13 217 | 3 4 5 2 12 15 218 | 1 8 11 3 13 15 219 | 2 10 17 5 9 12 220 | 9 10 16 0 4 8 221 | 4 10 16 5 11 15 222 | 8 12 13 2 5 7 223 | 4 5 13 9 10 14 224 | 3 7 14 1 15 17 225 | 2 11 12 0 1 10 226 | 1 2 9 5 11 12 227 | 6 8 14 1 10 12 228 | 1 3 7 8 9 13 229 | 3 4 12 1 10 16 230 | 7 9 16 1 2 17 231 | 13 15 17 4 14 16 232 | 8 12 14 2 4 9 233 | 14 15 16 3 11 13 234 | 2 12 16 4 9 14 235 | 5 7 15 3 11 17 236 | 7 12 16 2 13 15 237 | 0 5 17 7 8 15 238 | 3 4 11 5 7 16 239 | 2 15 17 0 6 8 240 | 3 6 15 1 7 14 241 | 5 9 13 2 8 15 242 | 8 12 15 5 9 13 243 | 6 10 17 2 3 16 244 | 0 7 15 3 8 17 245 | 4 6 8 5 13 14 246 | 8 9 16 2 6 12 247 | 8 15 17 1 4 14 248 | 0 1 10 3 8 14 249 | 1 14 17 4 8 16 250 | 11 12 14 0 1 8 251 | 5 11 14 1 2 15 252 | 3 15 17 4 11 14 253 | 10 11 13 8 12 17 254 | 2 7 8 0 13 15 255 | 6 11 16 1 4 5 256 | 0 3 6 11 14 17 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_19_256.def: -------------------------------------------------------------------------------- 1 | 9 15 17 8 12 14 2 | 2 11 15 5 13 18 3 | 5 7 16 3 12 17 4 | 7 14 18 6 11 17 5 | 1 13 16 3 5 8 6 | 0 9 18 7 8 10 7 | 0 10 13 5 6 18 8 | 1 11 14 8 13 17 9 | 5 6 8 3 12 16 10 | 2 10 11 12 16 17 11 | 2 6 16 0 1 8 12 | 7 9 11 2 16 17 13 | 0 3 5 2 9 18 14 | 9 10 11 1 3 15 15 | 3 4 12 10 11 18 16 | 8 11 14 1 3 12 17 | 4 8 13 9 12 16 18 | 4 11 13 6 14 15 19 | 9 15 16 1 12 17 20 | 7 11 15 8 9 12 21 | 6 9 16 1 10 11 22 | 2 7 15 8 13 16 23 | 6 15 16 0 11 12 24 | 0 3 10 7 14 17 25 | 0 6 18 1 10 15 26 | 3 11 15 5 12 14 27 | 1 3 16 10 12 18 28 | 2 6 8 10 17 18 29 | 0 7 11 4 6 8 30 | 2 12 17 0 6 14 31 | 4 10 14 7 9 13 32 | 4 5 10 1 2 18 33 | 1 10 18 2 9 17 34 | 11 14 16 2 13 18 35 | 10 11 13 0 9 17 36 | 6 11 15 5 13 18 37 | 10 14 17 5 12 15 38 | 1 5 15 4 6 13 39 | 2 9 13 3 16 17 40 | 6 7 18 1 12 15 41 | 2 11 16 0 6 10 42 | 2 4 5 0 6 11 43 | 1 8 11 14 15 16 44 | 2 8 14 4 5 9 45 | 4 5 13 2 9 14 46 | 5 7 15 4 12 13 47 | 5 6 18 3 12 13 48 | 4 7 17 2 3 15 49 | 0 2 3 4 11 15 50 | 0 5 10 3 11 13 51 | 1 9 10 7 13 14 52 | 0 4 12 9 10 14 53 | 8 15 17 6 12 16 54 | 4 7 15 6 16 17 55 | 4 14 16 5 9 13 56 | 0 3 18 2 11 16 57 | 3 8 10 0 13 15 58 | 0 16 17 9 10 15 59 | 8 15 18 9 11 16 60 | 2 16 17 7 13 15 61 | 7 12 18 1 5 6 62 | 9 14 17 1 15 18 63 | 10 11 18 6 7 9 64 | 9 11 12 6 7 14 65 | 7 12 14 3 4 18 66 | 4 6 16 14 15 17 67 | 1 12 13 2 4 18 68 | 9 10 12 2 4 8 69 | 8 16 18 1 7 13 70 | 5 7 18 0 4 6 71 | 0 2 8 11 15 18 72 | 1 8 16 3 6 18 73 | 4 7 12 11 15 17 74 | 3 7 11 0 1 8 75 | 5 9 12 8 10 16 76 | 0 7 8 1 12 18 77 | 1 3 13 6 15 18 78 | 3 8 9 12 15 17 79 | 3 12 17 0 1 7 80 | 3 11 16 6 8 14 81 | 11 12 17 1 3 5 82 | 5 10 13 9 14 18 83 | 0 2 12 11 13 17 84 | 2 4 13 0 1 17 85 | 2 12 14 8 13 16 86 | 3 5 10 2 4 15 87 | 1 15 18 6 7 12 88 | 0 5 8 6 10 16 89 | 0 12 18 6 10 17 90 | 6 8 16 0 13 14 91 | 2 11 12 3 14 17 92 | 0 10 14 1 3 17 93 | 10 12 15 0 2 9 94 | 4 9 10 1 2 5 95 | 3 8 15 2 13 14 96 | 10 11 16 6 13 14 97 | 2 14 18 5 7 10 98 | 4 9 16 1 6 13 99 | 1 6 13 3 8 18 100 | 6 8 14 4 5 13 101 | 1 3 8 4 11 18 102 | 0 6 10 3 4 5 103 | 4 7 8 5 14 15 104 | 6 8 13 1 17 18 105 | 8 9 11 0 5 15 106 | 2 3 10 1 11 12 107 | 9 10 15 4 14 16 108 | 1 6 7 0 10 11 109 | 4 5 14 7 11 16 110 | 0 3 10 5 8 12 111 | 4 13 14 0 1 9 112 | 1 3 15 5 11 14 113 | 4 9 15 2 5 17 114 | 5 9 18 0 2 7 115 | 9 13 17 0 7 12 116 | 8 15 16 2 3 11 117 | 1 13 18 0 5 9 118 | 2 5 16 7 9 14 119 | 5 10 11 4 9 13 120 | 4 10 12 11 13 16 121 | 2 17 18 3 11 14 122 | 4 10 17 1 6 18 123 | 0 12 16 1 11 17 124 | 2 6 11 1 7 16 125 | 2 6 7 0 5 14 126 | 3 4 15 7 8 12 127 | 1 2 4 0 13 18 128 | 9 10 17 6 11 15 129 | 3 14 16 2 5 9 130 | 0 1 15 10 11 14 131 | 0 2 6 3 9 17 132 | 11 17 18 1 14 16 133 | 5 9 14 2 10 17 134 | 2 10 15 8 11 17 135 | 0 13 18 5 6 10 136 | 1 5 11 0 7 10 137 | 3 8 10 5 6 16 138 | 6 12 16 1 2 17 139 | 3 11 15 6 10 12 140 | 12 16 17 4 7 11 141 | 4 11 17 8 9 15 142 | 11 16 18 2 12 14 143 | 5 11 17 7 10 18 144 | 4 10 14 3 6 18 145 | 1 7 13 8 9 18 146 | 0 7 16 3 10 12 147 | 4 7 12 2 13 16 148 | 0 3 8 6 10 15 149 | 0 4 12 9 14 18 150 | 0 2 4 6 12 17 151 | 7 8 17 2 11 15 152 | 10 13 15 9 11 18 153 | 8 13 17 4 9 16 154 | 1 12 18 4 6 17 155 | 3 7 18 6 9 10 156 | 0 11 17 1 13 16 157 | 9 12 13 0 1 16 158 | 3 13 15 0 1 5 159 | 1 7 18 5 15 16 160 | 5 7 14 2 10 18 161 | 0 4 17 1 14 18 162 | 5 9 18 3 7 17 163 | 2 7 8 0 4 6 164 | 0 10 18 8 14 16 165 | 6 8 9 5 12 14 166 | 0 7 16 4 5 8 167 | 0 11 17 3 14 16 168 | 2 3 7 8 11 17 169 | 2 6 13 7 9 10 170 | 0 12 13 2 7 8 171 | 5 7 11 4 6 15 172 | 4 8 15 2 3 10 173 | 8 13 16 6 17 18 174 | 0 10 15 2 5 13 175 | 3 7 11 9 13 15 176 | 1 4 6 2 8 15 177 | 5 8 10 9 15 16 178 | 12 15 17 0 8 11 179 | 1 11 14 2 7 17 180 | 12 13 15 1 6 16 181 | 3 6 17 7 8 15 182 | 6 7 9 1 4 18 183 | 13 15 16 2 3 12 184 | 10 13 14 2 8 17 185 | 3 12 15 1 8 10 186 | 6 11 12 4 15 17 187 | 0 14 16 1 6 12 188 | 1 3 14 5 9 11 189 | 0 13 17 2 4 8 190 | 3 11 12 7 15 17 191 | 4 5 7 0 6 14 192 | 0 7 17 5 11 13 193 | 1 8 11 5 7 16 194 | 0 15 16 4 14 17 195 | 14 17 18 0 3 16 196 | 12 16 18 3 5 15 197 | 4 15 17 5 9 10 198 | 0 5 17 3 6 18 199 | 4 7 9 13 16 18 200 | 2 8 13 4 6 18 201 | 6 11 15 13 16 18 202 | 7 8 13 0 2 9 203 | 1 8 9 3 5 13 204 | 7 9 11 2 10 14 205 | 1 4 14 3 8 10 206 | 3 7 14 0 12 16 207 | 2 7 11 8 10 15 208 | 9 13 18 1 5 11 209 | 2 3 9 10 11 18 210 | 4 6 8 9 10 17 211 | 4 7 12 8 13 14 212 | 2 10 16 0 15 18 213 | 2 9 15 6 17 18 214 | 3 4 5 1 2 18 215 | 10 12 17 0 8 18 216 | 6 10 16 4 9 13 217 | 8 12 15 1 2 4 218 | 11 12 15 10 13 18 219 | 3 5 18 1 7 12 220 | 6 9 13 8 14 17 221 | 0 2 4 9 12 16 222 | 4 9 14 5 6 7 223 | 5 8 16 0 2 14 224 | 1 13 14 8 12 16 225 | 14 16 18 1 6 7 226 | 0 3 6 1 10 16 227 | 4 8 12 5 7 14 228 | 2 5 13 1 4 9 229 | 3 14 16 1 4 6 230 | 1 16 17 5 6 12 231 | 2 4 14 3 6 13 232 | 0 3 9 6 15 17 233 | 5 7 18 9 15 17 234 | 9 13 14 3 5 18 235 | 0 3 14 7 16 18 236 | 2 13 17 3 4 8 237 | 7 11 14 1 5 17 238 | 7 14 17 2 4 10 239 | 4 9 13 2 3 12 240 | 7 9 17 4 11 14 241 | 2 5 16 3 6 14 242 | 8 12 15 4 5 16 243 | 4 10 18 0 11 15 244 | 1 8 12 2 5 6 245 | 1 3 9 8 12 15 246 | 5 14 15 1 7 9 247 | 3 6 10 5 12 14 248 | 5 8 9 4 7 16 249 | 3 12 18 0 10 13 250 | 1 12 14 0 13 17 251 | 8 11 13 5 7 10 252 | 7 15 18 1 9 14 253 | 3 14 17 10 12 13 254 | 11 12 13 1 5 9 255 | 3 9 13 0 17 18 256 | 7 15 18 0 1 6 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_20_256.def: -------------------------------------------------------------------------------- 1 | 9 14 15 8 18 19 2 | 6 9 16 0 14 17 3 | 2 15 16 3 8 13 4 | 8 16 18 2 4 6 5 | 1 11 16 6 8 15 6 | 9 12 14 0 7 15 7 | 1 9 13 10 11 18 8 | 2 4 10 1 18 19 9 | 1 7 15 8 14 16 10 | 0 7 19 3 8 10 11 | 2 9 16 1 3 5 12 | 2 3 17 5 14 16 13 | 3 5 13 6 12 14 14 | 13 15 19 1 4 12 15 | 5 7 16 2 13 15 16 | 2 3 19 1 7 12 17 | 1 7 9 13 15 17 18 | 11 18 19 1 3 8 19 | 5 11 15 7 17 19 20 | 0 14 16 6 7 11 21 | 2 12 17 0 9 14 22 | 1 2 8 6 12 13 23 | 13 15 19 6 7 10 24 | 7 8 13 5 6 12 25 | 6 14 17 0 16 19 26 | 5 9 15 8 10 19 27 | 12 13 16 10 14 15 28 | 12 16 19 1 6 9 29 | 8 9 17 1 13 18 30 | 2 17 18 8 12 14 31 | 1 12 16 2 9 19 32 | 7 16 17 4 12 13 33 | 2 3 10 6 8 15 34 | 0 14 18 2 8 11 35 | 3 10 18 0 11 13 36 | 0 1 8 9 12 13 37 | 8 12 18 0 1 9 38 | 8 11 12 0 1 5 39 | 8 11 16 9 10 14 40 | 0 13 15 9 12 18 41 | 0 15 18 4 7 17 42 | 1 15 18 3 4 10 43 | 0 9 10 2 11 15 44 | 4 5 19 0 3 17 45 | 11 12 13 2 7 14 46 | 3 5 12 9 10 13 47 | 15 16 18 9 14 17 48 | 3 16 18 5 15 19 49 | 4 9 12 3 5 10 50 | 4 5 13 1 2 6 51 | 9 18 19 10 12 15 52 | 4 6 15 8 10 12 53 | 1 4 14 6 12 17 54 | 1 5 19 9 10 17 55 | 7 9 16 4 5 12 56 | 4 9 12 8 11 15 57 | 4 10 13 1 2 17 58 | 10 16 17 6 18 19 59 | 7 10 18 8 11 12 60 | 5 7 19 9 10 13 61 | 0 3 6 4 7 17 62 | 1 11 12 4 6 17 63 | 2 8 16 4 9 12 64 | 3 4 9 5 10 19 65 | 13 14 16 3 6 19 66 | 0 4 12 5 6 17 67 | 2 4 7 0 9 18 68 | 5 14 15 3 6 7 69 | 4 7 8 2 10 16 70 | 4 6 10 7 9 11 71 | 6 7 18 8 15 16 72 | 3 12 15 4 16 18 73 | 2 12 13 0 16 19 74 | 8 9 14 0 7 16 75 | 0 15 18 5 6 19 76 | 8 13 15 2 4 10 77 | 1 9 12 0 6 15 78 | 4 14 18 2 9 16 79 | 13 15 17 11 14 19 80 | 7 8 10 3 14 17 81 | 0 4 17 3 10 13 82 | 4 6 16 0 7 14 83 | 9 13 17 1 3 11 84 | 0 10 11 5 8 14 85 | 0 7 11 1 4 15 86 | 13 14 17 4 12 18 87 | 2 17 18 0 7 19 88 | 0 1 8 12 15 19 89 | 4 11 18 6 13 16 90 | 0 4 18 9 15 19 91 | 6 12 19 4 11 18 92 | 1 4 10 0 6 17 93 | 2 10 17 4 9 11 94 | 4 10 19 1 3 16 95 | 9 11 14 8 12 17 96 | 0 9 18 11 15 17 97 | 2 5 9 7 11 13 98 | 6 10 16 3 4 19 99 | 3 11 16 1 12 19 100 | 8 9 16 1 3 15 101 | 3 15 16 2 8 13 102 | 4 8 15 1 10 12 103 | 3 14 16 5 8 10 104 | 2 5 11 4 8 9 105 | 7 8 18 9 13 17 106 | 0 4 8 12 13 18 107 | 9 15 18 1 13 19 108 | 2 8 18 1 7 15 109 | 11 14 15 1 6 17 110 | 8 10 11 2 4 13 111 | 7 13 15 0 4 16 112 | 0 1 5 3 16 18 113 | 1 6 15 8 13 14 114 | 6 11 14 0 4 18 115 | 1 3 4 0 5 10 116 | 1 4 13 0 9 14 117 | 0 6 11 5 7 9 118 | 2 3 10 0 11 17 119 | 8 14 19 1 15 18 120 | 4 8 16 13 14 17 121 | 0 5 8 3 7 16 122 | 7 12 18 4 13 19 123 | 3 4 5 1 8 14 124 | 5 14 18 3 17 19 125 | 1 17 18 4 5 16 126 | 1 10 11 6 12 15 127 | 10 11 19 1 3 5 128 | 7 14 17 5 6 16 129 | 1 2 18 3 9 15 130 | 4 12 16 2 5 18 131 | 1 8 15 5 14 17 132 | 3 11 19 2 5 17 133 | 10 11 15 0 6 13 134 | 6 14 18 7 8 9 135 | 2 5 19 0 10 13 136 | 0 8 13 10 15 19 137 | 6 13 14 0 15 18 138 | 4 15 16 11 18 19 139 | 0 7 19 8 9 11 140 | 4 7 11 0 2 10 141 | 8 17 18 2 3 14 142 | 13 16 18 0 9 12 143 | 4 10 17 6 12 16 144 | 1 2 19 0 6 13 145 | 4 15 18 0 2 17 146 | 1 5 7 6 12 18 147 | 0 6 8 7 11 19 148 | 0 2 11 7 17 18 149 | 3 5 7 1 6 10 150 | 2 9 15 5 16 17 151 | 9 10 19 2 4 8 152 | 0 17 18 5 8 19 153 | 1 8 15 2 13 19 154 | 6 7 13 1 4 17 155 | 7 13 14 2 3 9 156 | 3 8 14 5 9 11 157 | 7 12 13 3 11 14 158 | 1 5 14 2 7 11 159 | 10 11 17 7 12 14 160 | 4 10 15 3 13 16 161 | 7 10 15 1 2 16 162 | 1 11 13 2 4 17 163 | 4 7 12 2 6 11 164 | 3 7 10 13 17 18 165 | 3 14 16 1 9 13 166 | 7 11 17 10 13 19 167 | 3 10 18 8 11 12 168 | 5 10 16 3 13 19 169 | 5 6 14 11 12 17 170 | 0 5 12 4 6 14 171 | 2 12 13 0 11 19 172 | 0 5 17 7 10 14 173 | 6 16 17 2 8 14 174 | 3 11 15 4 17 19 175 | 5 6 11 4 15 19 176 | 6 7 14 3 5 9 177 | 2 7 13 9 15 18 178 | 0 4 18 3 10 15 179 | 7 9 12 5 18 19 180 | 0 2 15 5 17 19 181 | 2 7 8 4 10 16 182 | 4 6 18 0 2 10 183 | 2 11 13 15 17 19 184 | 12 14 16 3 7 13 185 | 12 14 16 5 6 8 186 | 10 13 16 5 8 12 187 | 3 9 11 7 8 15 188 | 1 6 19 5 7 16 189 | 2 11 13 1 16 19 190 | 5 14 17 1 6 16 191 | 4 5 11 7 15 18 192 | 6 11 14 10 13 15 193 | 2 9 16 11 17 18 194 | 5 10 12 3 4 16 195 | 0 9 10 6 13 16 196 | 8 16 19 0 11 17 197 | 3 11 12 2 8 18 198 | 3 14 17 2 4 6 199 | 6 13 14 3 5 9 200 | 0 8 14 12 16 19 201 | 1 12 16 3 4 13 202 | 8 14 19 2 4 15 203 | 4 6 14 12 13 15 204 | 2 14 16 3 8 11 205 | 3 6 17 0 13 18 206 | 10 12 17 2 7 9 207 | 5 13 16 7 12 14 208 | 5 7 16 1 2 17 209 | 3 16 19 4 6 11 210 | 1 2 19 8 10 18 211 | 1 11 13 0 3 5 212 | 9 13 14 0 6 10 213 | 4 11 12 3 7 9 214 | 5 6 7 1 17 19 215 | 8 17 19 5 11 14 216 | 14 18 19 1 4 10 217 | 8 17 19 2 14 18 218 | 5 6 8 4 18 19 219 | 12 18 19 1 6 7 220 | 1 14 19 3 7 17 221 | 2 7 16 3 6 10 222 | 6 7 12 13 15 16 223 | 0 6 19 1 8 18 224 | 3 14 16 2 9 19 225 | 4 6 11 9 12 18 226 | 11 16 17 3 7 10 227 | 3 11 19 5 10 17 228 | 10 11 18 5 15 19 229 | 10 11 19 0 3 4 230 | 3 6 8 11 16 17 231 | 12 15 16 3 18 19 232 | 0 2 7 5 9 17 233 | 2 3 8 7 17 19 234 | 0 11 13 2 14 15 235 | 2 9 18 1 10 14 236 | 0 14 15 3 5 18 237 | 12 14 15 1 8 9 238 | 8 16 17 1 5 13 239 | 6 12 15 5 10 13 240 | 3 14 17 6 9 18 241 | 10 14 15 0 3 12 242 | 2 5 18 0 1 9 243 | 7 9 11 1 3 13 244 | 0 8 12 1 11 17 245 | 9 15 17 2 10 12 246 | 2 4 7 1 9 18 247 | 6 9 10 0 2 5 248 | 6 13 18 2 11 12 249 | 8 9 16 0 3 12 250 | 5 6 7 8 15 19 251 | 3 14 18 0 10 19 252 | 6 16 19 5 12 13 253 | 9 11 15 1 10 12 254 | 1 5 17 0 2 19 255 | 2 14 17 5 9 10 256 | 1 7 18 0 3 12 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_21_256.def: -------------------------------------------------------------------------------- 1 | 1 3 17 14 16 19 2 | 0 2 12 3 14 19 3 | 2 8 19 3 7 17 4 | 2 3 11 7 15 16 5 | 10 11 12 3 5 13 6 | 5 13 14 4 12 18 7 | 12 13 16 9 11 19 8 | 1 7 20 0 3 10 9 | 0 2 4 1 9 15 10 | 0 1 19 4 10 14 11 | 3 5 12 1 9 13 12 | 12 15 17 1 13 19 13 | 7 8 16 2 19 20 14 | 2 5 8 0 13 14 15 | 13 16 19 1 7 10 16 | 4 8 13 0 5 15 17 | 4 8 9 1 13 16 18 | 7 9 13 8 17 20 19 | 2 7 8 1 11 20 20 | 0 3 18 1 7 19 21 | 1 11 14 4 9 16 22 | 0 4 16 1 3 6 23 | 13 14 15 0 6 12 24 | 7 8 10 9 15 17 25 | 2 12 14 5 8 19 26 | 9 10 19 0 11 17 27 | 4 7 15 2 11 18 28 | 0 10 16 8 13 17 29 | 1 14 20 4 13 16 30 | 8 9 15 3 19 20 31 | 9 11 12 10 14 16 32 | 2 15 19 4 5 18 33 | 11 13 15 9 12 14 34 | 2 3 8 16 18 19 35 | 6 8 15 7 10 13 36 | 6 7 16 8 9 19 37 | 2 5 15 9 10 20 38 | 4 6 12 1 8 15 39 | 14 18 19 5 7 11 40 | 5 8 12 1 3 18 41 | 15 18 20 6 9 14 42 | 10 11 20 1 4 6 43 | 2 5 6 3 13 15 44 | 3 12 13 5 11 16 45 | 6 13 15 0 12 17 46 | 1 15 19 2 16 20 47 | 3 9 12 7 11 17 48 | 0 8 20 3 5 13 49 | 8 10 18 4 7 19 50 | 1 7 9 6 11 13 51 | 1 15 17 3 7 14 52 | 2 6 9 8 12 14 53 | 6 15 18 11 14 17 54 | 7 14 16 2 12 13 55 | 3 5 20 10 12 14 56 | 3 4 6 5 12 19 57 | 6 16 18 4 15 19 58 | 2 4 17 0 7 9 59 | 2 8 16 0 4 7 60 | 5 10 19 3 12 20 61 | 0 11 15 2 8 14 62 | 4 5 10 6 7 16 63 | 2 5 11 0 3 16 64 | 3 9 10 0 2 6 65 | 2 6 12 4 5 20 66 | 8 9 14 10 16 19 67 | 3 5 11 7 10 14 68 | 1 2 14 11 12 16 69 | 16 17 20 2 3 10 70 | 5 8 19 3 12 17 71 | 9 10 15 1 7 13 72 | 4 7 17 2 3 10 73 | 8 10 20 0 16 19 74 | 10 18 20 4 8 11 75 | 0 6 7 4 18 20 76 | 12 15 19 5 6 11 77 | 3 6 18 1 5 16 78 | 1 4 17 14 15 20 79 | 5 7 9 1 11 16 80 | 3 8 9 10 12 13 81 | 6 14 19 0 13 17 82 | 10 11 15 5 7 18 83 | 5 12 20 4 7 18 84 | 0 2 8 3 18 19 85 | 3 4 8 2 12 17 86 | 9 13 20 0 10 11 87 | 5 10 20 9 12 16 88 | 0 5 10 11 18 20 89 | 1 12 16 3 7 18 90 | 11 16 17 0 12 15 91 | 6 12 17 0 9 14 92 | 1 16 18 5 15 17 93 | 11 14 17 6 15 18 94 | 12 15 16 6 9 13 95 | 3 10 20 0 8 14 96 | 8 10 16 3 14 19 97 | 4 12 19 10 11 15 98 | 7 9 11 13 15 17 99 | 1 12 18 2 7 15 100 | 11 18 20 5 7 14 101 | 6 11 16 0 19 20 102 | 13 17 18 0 5 12 103 | 10 17 20 1 4 14 104 | 5 6 16 0 3 15 105 | 16 18 20 3 14 17 106 | 8 9 10 1 7 12 107 | 3 4 11 6 15 19 108 | 2 13 19 1 5 18 109 | 4 5 17 0 8 9 110 | 0 9 13 11 15 19 111 | 0 5 6 15 16 18 112 | 1 11 16 8 10 14 113 | 12 13 15 3 10 16 114 | 2 7 20 0 4 6 115 | 4 15 20 6 17 18 116 | 1 11 19 2 5 20 117 | 6 8 17 2 7 13 118 | 2 8 18 9 15 20 119 | 0 10 15 7 11 17 120 | 14 16 17 7 8 11 121 | 5 7 18 11 14 16 122 | 7 13 17 1 3 16 123 | 3 9 18 0 13 17 124 | 3 11 15 1 5 20 125 | 0 6 17 11 12 16 126 | 1 5 12 6 10 17 127 | 5 18 20 0 11 13 128 | 9 11 17 3 15 16 129 | 9 11 18 0 16 19 130 | 9 10 13 3 5 16 131 | 9 16 19 2 4 18 132 | 2 7 8 1 10 14 133 | 4 10 16 11 12 19 134 | 6 9 17 7 8 20 135 | 3 5 19 9 11 20 136 | 5 9 18 4 16 20 137 | 0 14 20 3 12 19 138 | 1 2 9 6 12 13 139 | 2 6 20 8 16 17 140 | 4 10 12 3 16 20 141 | 3 15 16 7 10 20 142 | 12 14 17 1 3 4 143 | 0 5 14 7 16 19 144 | 1 12 14 15 18 19 145 | 13 14 15 4 5 17 146 | 0 9 16 7 12 15 147 | 5 6 15 3 8 17 148 | 0 1 11 2 4 20 149 | 0 13 15 1 4 14 150 | 0 4 7 2 5 16 151 | 6 19 20 0 4 18 152 | 0 6 7 12 19 20 153 | 6 14 16 0 3 17 154 | 7 8 15 0 2 5 155 | 6 8 20 2 4 18 156 | 6 10 18 4 14 20 157 | 8 12 13 0 6 20 158 | 3 13 17 7 10 12 159 | 9 11 12 5 15 17 160 | 6 7 17 8 12 13 161 | 1 10 14 2 12 19 162 | 10 15 17 4 11 13 163 | 8 12 20 2 5 19 164 | 0 14 20 10 11 19 165 | 4 8 16 3 14 17 166 | 5 11 18 3 6 17 167 | 2 3 9 6 8 11 168 | 3 12 18 9 13 19 169 | 4 5 12 0 19 20 170 | 1 2 12 13 18 19 171 | 3 7 11 4 6 14 172 | 7 14 18 1 8 13 173 | 1 12 13 11 16 20 174 | 1 10 13 9 14 15 175 | 2 14 15 5 9 10 176 | 1 2 18 0 12 14 177 | 1 5 15 2 10 19 178 | 9 13 16 4 10 19 179 | 0 1 15 13 14 19 180 | 3 7 13 5 9 17 181 | 4 11 20 1 9 14 182 | 2 6 20 3 5 19 183 | 2 13 18 3 6 15 184 | 5 6 8 2 4 20 185 | 0 3 8 5 11 14 186 | 3 9 15 0 17 19 187 | 4 5 11 2 18 20 188 | 4 9 11 2 7 17 189 | 2 8 16 6 12 19 190 | 5 12 18 1 2 13 191 | 5 9 13 2 7 18 192 | 8 11 19 15 17 20 193 | 2 7 9 5 19 20 194 | 1 7 8 4 11 13 195 | 0 9 12 1 8 15 196 | 10 11 20 3 5 18 197 | 1 9 18 5 12 13 198 | 2 7 19 6 12 18 199 | 6 7 19 9 13 16 200 | 10 12 18 2 6 8 201 | 0 3 11 13 17 18 202 | 4 14 15 1 8 20 203 | 1 16 17 0 4 18 204 | 0 1 2 5 14 20 205 | 9 12 18 3 10 16 206 | 0 8 18 4 9 15 207 | 5 13 20 4 6 19 208 | 5 9 17 4 6 20 209 | 1 2 15 0 16 19 210 | 7 8 20 2 15 16 211 | 6 13 18 7 14 19 212 | 4 6 20 8 13 17 213 | 8 18 19 7 10 13 214 | 3 10 16 6 11 15 215 | 1 13 14 7 15 16 216 | 3 4 10 0 18 19 217 | 0 3 13 1 14 18 218 | 0 15 18 3 12 16 219 | 3 6 17 0 13 18 220 | 8 10 19 1 4 16 221 | 6 10 13 2 4 9 222 | 2 7 11 0 1 20 223 | 11 15 17 6 12 13 224 | 9 17 19 8 14 15 225 | 1 7 18 6 8 10 226 | 8 14 18 0 7 20 227 | 4 7 9 0 10 11 228 | 1 8 19 2 5 15 229 | 5 6 13 10 17 19 230 | 10 11 12 0 1 4 231 | 4 14 17 5 13 18 232 | 4 15 18 3 5 20 233 | 5 10 14 6 17 19 234 | 2 9 19 1 10 13 235 | 6 14 20 8 17 18 236 | 4 8 17 2 7 11 237 | 11 14 18 2 8 16 238 | 10 12 17 0 11 14 239 | 1 2 10 8 18 20 240 | 2 14 19 7 9 17 241 | 0 7 18 2 6 9 242 | 8 14 16 1 5 10 243 | 1 12 20 10 17 18 244 | 4 16 19 11 14 15 245 | 9 12 15 6 14 17 246 | 12 14 18 4 9 20 247 | 3 6 12 4 10 13 248 | 6 7 13 0 2 17 249 | 2 14 17 6 9 10 250 | 9 17 20 3 5 11 251 | 7 9 16 1 4 19 252 | 3 7 9 1 4 15 253 | 9 16 17 3 8 20 254 | 4 6 8 14 16 18 255 | 13 17 20 1 2 10 256 | 1 10 12 11 14 18 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_22_256.def: -------------------------------------------------------------------------------- 1 | 8 10 15 1 12 18 2 | 10 18 21 7 8 16 3 | 0 7 8 12 20 21 4 | 0 13 18 5 8 20 5 | 0 13 21 5 10 18 6 | 6 11 19 7 9 21 7 | 4 14 17 7 15 20 8 | 0 6 17 3 13 19 9 | 0 1 4 2 7 16 10 | 9 16 20 6 17 19 11 | 6 9 17 12 15 20 12 | 6 16 21 0 18 20 13 | 0 6 7 1 5 10 14 | 9 12 19 8 17 20 15 | 4 8 18 6 13 16 16 | 1 3 7 8 9 11 17 | 0 7 13 8 17 19 18 | 5 14 15 8 12 20 19 | 1 4 19 9 11 17 20 | 2 3 11 4 8 16 21 | 1 2 6 10 11 16 22 | 0 2 5 10 13 21 23 | 2 9 17 10 13 21 24 | 1 8 19 11 17 18 25 | 2 3 13 5 9 21 26 | 1 7 16 0 3 20 27 | 6 7 15 1 5 18 28 | 5 6 13 12 14 19 29 | 7 17 19 9 13 18 30 | 4 18 19 5 11 15 31 | 1 16 20 5 6 13 32 | 2 9 19 6 10 16 33 | 2 8 12 7 9 17 34 | 1 11 17 2 18 21 35 | 8 12 15 13 17 21 36 | 2 4 8 7 9 19 37 | 14 16 20 5 7 15 38 | 2 3 21 5 11 17 39 | 5 6 20 9 13 19 40 | 4 13 18 9 12 17 41 | 7 8 12 3 15 17 42 | 0 8 19 3 4 10 43 | 0 4 14 17 18 21 44 | 2 4 15 6 20 21 45 | 3 7 15 4 16 21 46 | 4 16 21 0 7 14 47 | 3 5 13 10 15 17 48 | 6 18 19 2 5 20 49 | 1 13 21 11 15 18 50 | 5 9 12 8 16 19 51 | 4 11 14 2 10 18 52 | 5 9 10 0 19 20 53 | 0 11 12 5 10 13 54 | 2 9 20 4 10 21 55 | 11 16 17 6 18 21 56 | 4 10 20 2 8 13 57 | 11 13 14 2 15 18 58 | 0 7 21 6 12 20 59 | 5 16 20 0 11 21 60 | 1 6 7 16 17 21 61 | 12 13 15 3 6 20 62 | 9 17 21 3 10 16 63 | 12 14 17 4 6 9 64 | 8 13 19 2 7 12 65 | 1 3 4 7 11 13 66 | 14 15 19 3 7 17 67 | 2 4 21 1 13 18 68 | 5 11 20 0 4 12 69 | 6 8 10 2 4 16 70 | 4 7 19 1 2 3 71 | 0 1 18 13 19 20 72 | 8 11 17 3 5 12 73 | 4 11 18 0 5 10 74 | 2 11 18 5 8 13 75 | 8 13 15 3 7 14 76 | 0 4 10 2 14 18 77 | 3 6 16 1 13 18 78 | 4 16 18 2 11 12 79 | 12 19 20 4 7 10 80 | 15 18 21 3 9 11 81 | 3 14 20 0 1 9 82 | 4 8 12 1 6 19 83 | 1 9 21 4 6 20 84 | 2 14 18 6 12 15 85 | 3 7 17 1 10 14 86 | 1 13 14 11 16 21 87 | 1 3 6 2 16 17 88 | 12 15 17 7 9 14 89 | 0 17 19 1 13 18 90 | 4 15 16 14 17 18 91 | 2 14 15 3 18 20 92 | 6 7 20 2 4 14 93 | 1 3 15 2 5 12 94 | 1 14 17 0 5 6 95 | 0 7 21 9 10 19 96 | 4 9 21 0 12 16 97 | 5 19 21 1 13 16 98 | 0 1 8 5 14 18 99 | 3 6 11 1 16 20 100 | 1 15 16 4 8 13 101 | 7 17 18 1 6 8 102 | 15 18 20 0 6 21 103 | 12 19 20 11 13 16 104 | 5 16 17 2 9 10 105 | 5 12 17 2 15 20 106 | 7 8 10 1 6 20 107 | 15 17 21 6 11 12 108 | 4 15 16 1 10 17 109 | 1 8 21 6 12 15 110 | 3 8 19 1 10 12 111 | 3 15 21 0 13 19 112 | 7 8 17 0 11 12 113 | 12 13 17 9 14 16 114 | 5 14 15 4 13 17 115 | 8 14 19 4 11 18 116 | 2 10 16 12 17 20 117 | 2 5 6 3 12 21 118 | 7 12 18 1 19 20 119 | 1 5 13 12 18 21 120 | 3 4 15 0 11 20 121 | 1 4 8 5 13 19 122 | 0 3 18 2 7 21 123 | 3 8 10 7 9 19 124 | 2 6 13 4 9 19 125 | 13 16 20 1 5 19 126 | 3 7 9 0 16 18 127 | 6 7 12 0 11 20 128 | 6 11 21 2 4 7 129 | 1 5 10 3 12 13 130 | 11 14 21 4 6 19 131 | 3 14 16 4 5 11 132 | 5 9 15 3 10 11 133 | 3 14 18 1 10 12 134 | 2 6 8 0 4 12 135 | 1 15 16 10 12 19 136 | 2 8 21 3 5 16 137 | 8 14 20 12 16 21 138 | 0 9 20 1 6 15 139 | 0 3 15 7 8 19 140 | 2 3 16 0 8 18 141 | 8 14 15 7 10 16 142 | 8 12 14 0 3 18 143 | 8 12 13 3 7 21 144 | 8 10 18 11 14 16 145 | 10 14 15 1 8 16 146 | 5 19 20 1 14 16 147 | 10 15 20 1 5 18 148 | 10 19 21 0 4 6 149 | 16 19 21 1 4 11 150 | 3 8 18 1 7 11 151 | 7 10 21 9 16 17 152 | 3 12 21 0 4 9 153 | 0 5 9 6 12 19 154 | 4 13 20 8 14 15 155 | 7 13 17 0 19 21 156 | 4 20 21 0 9 10 157 | 2 4 19 0 5 14 158 | 18 19 20 0 5 13 159 | 5 20 21 2 7 13 160 | 8 12 14 2 18 20 161 | 5 15 19 8 10 20 162 | 1 14 17 8 11 18 163 | 5 15 20 7 16 19 164 | 1 9 15 5 14 20 165 | 3 14 15 0 2 5 166 | 8 9 13 2 4 11 167 | 10 12 17 7 11 21 168 | 15 17 18 9 10 21 169 | 2 6 17 5 11 19 170 | 12 16 18 11 17 21 171 | 1 9 20 2 10 11 172 | 12 14 20 8 9 21 173 | 6 9 18 0 10 17 174 | 14 17 20 9 12 16 175 | 2 6 21 3 8 10 176 | 5 10 18 7 8 20 177 | 6 14 15 1 2 17 178 | 2 3 6 15 17 18 179 | 8 12 17 10 13 20 180 | 10 16 19 4 14 21 181 | 5 11 16 9 10 17 182 | 5 7 16 10 13 17 183 | 2 10 14 12 13 18 184 | 0 5 15 6 14 16 185 | 5 7 16 1 11 21 186 | 7 18 20 3 5 8 187 | 3 11 19 6 9 20 188 | 9 16 18 4 12 15 189 | 3 9 13 6 10 18 190 | 4 6 17 11 12 19 191 | 7 8 11 0 9 21 192 | 8 11 13 1 7 12 193 | 11 13 15 5 6 8 194 | 3 8 15 10 17 19 195 | 4 13 14 0 2 19 196 | 4 5 9 0 6 7 197 | 2 6 10 16 19 21 198 | 3 10 20 2 8 14 199 | 1 15 16 3 4 14 200 | 0 1 20 7 9 18 201 | 10 16 19 1 9 12 202 | 4 7 20 2 18 19 203 | 3 14 15 2 4 6 204 | 1 11 17 0 2 20 205 | 1 2 11 0 4 14 206 | 6 13 17 7 11 14 207 | 10 12 18 4 15 19 208 | 3 9 12 1 18 20 209 | 10 15 20 3 4 5 210 | 1 11 20 5 13 15 211 | 0 2 14 5 11 15 212 | 7 13 20 1 3 19 213 | 2 10 11 13 20 21 214 | 5 6 19 2 12 13 215 | 5 8 12 6 15 17 216 | 1 4 7 0 13 16 217 | 2 4 5 0 14 16 218 | 8 10 11 0 13 14 219 | 1 5 21 0 9 10 220 | 1 3 12 4 6 14 221 | 3 8 17 10 14 15 222 | 8 15 16 6 14 19 223 | 9 14 15 6 16 17 224 | 6 12 14 2 15 20 225 | 3 8 9 11 13 19 226 | 0 9 10 2 5 13 227 | 14 16 18 11 15 17 228 | 4 13 19 8 14 18 229 | 6 11 18 2 10 14 230 | 3 5 7 6 9 15 231 | 0 7 21 9 16 19 232 | 14 17 20 3 10 13 233 | 0 16 21 13 14 18 234 | 7 8 18 2 13 14 235 | 0 11 21 7 10 17 236 | 3 8 11 5 17 21 237 | 12 15 17 2 11 19 238 | 4 6 16 7 13 19 239 | 1 13 21 0 3 17 240 | 2 4 12 13 18 19 241 | 0 15 21 9 11 20 242 | 1 14 18 2 9 20 243 | 2 16 17 7 9 20 244 | 8 11 18 3 10 19 245 | 14 16 21 1 3 19 246 | 0 1 7 11 12 21 247 | 4 7 12 3 9 17 248 | 4 10 11 2 3 17 249 | 5 10 14 3 15 18 250 | 3 9 11 7 15 19 251 | 0 5 18 9 15 20 252 | 8 10 21 4 9 19 253 | 0 3 21 9 12 16 254 | 4 17 19 6 9 21 255 | 1 7 11 6 9 12 256 | 0 5 20 6 11 14 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_23_256.def: -------------------------------------------------------------------------------- 1 | 7 15 20 1 6 21 2 | 0 11 21 4 15 16 3 | 1 18 19 5 6 10 4 | 3 7 21 1 11 15 5 | 5 17 22 3 8 16 6 | 12 19 21 0 6 7 7 | 9 14 17 2 3 18 8 | 6 7 8 0 5 12 9 | 2 8 22 5 11 17 10 | 4 13 17 0 18 22 11 | 8 13 14 1 12 17 12 | 2 3 6 1 9 17 13 | 12 13 16 0 2 15 14 | 0 3 15 5 13 21 15 | 10 18 21 1 9 17 16 | 2 7 17 5 14 18 17 | 0 15 20 2 9 17 18 | 0 9 14 10 20 22 19 | 10 15 16 11 12 13 20 | 5 8 17 6 9 11 21 | 4 5 7 12 16 17 22 | 2 3 12 8 19 22 23 | 3 5 15 13 14 18 24 | 0 13 22 2 19 20 25 | 10 12 22 3 8 11 26 | 10 14 19 1 5 21 27 | 6 8 17 5 20 22 28 | 4 7 21 3 9 20 29 | 8 14 22 7 12 18 30 | 12 14 20 11 13 18 31 | 2 5 15 14 18 19 32 | 1 3 17 7 19 21 33 | 7 9 21 0 13 19 34 | 2 5 20 4 18 19 35 | 2 11 18 3 4 22 36 | 3 13 22 1 19 20 37 | 0 5 18 2 13 22 38 | 2 4 8 1 5 22 39 | 5 8 11 0 4 7 40 | 7 10 20 8 11 19 41 | 7 9 14 8 11 18 42 | 6 8 13 15 16 22 43 | 15 19 21 5 14 22 44 | 9 14 17 0 1 19 45 | 1 2 8 7 17 21 46 | 2 13 17 1 3 20 47 | 4 6 14 10 11 18 48 | 9 11 20 1 2 15 49 | 10 13 16 5 6 8 50 | 7 13 17 1 5 16 51 | 8 12 21 6 9 10 52 | 2 5 9 7 16 17 53 | 0 2 9 1 17 19 54 | 14 20 22 3 9 19 55 | 7 18 20 1 9 21 56 | 0 4 12 7 13 21 57 | 2 9 14 1 8 21 58 | 7 9 18 2 4 16 59 | 6 16 19 10 17 18 60 | 2 8 11 1 5 13 61 | 0 4 18 6 16 17 62 | 5 7 11 3 18 20 63 | 5 13 14 11 17 22 64 | 8 16 21 2 4 19 65 | 4 10 17 15 16 21 66 | 0 4 16 6 9 15 67 | 10 11 17 9 16 21 68 | 12 13 20 2 10 21 69 | 2 5 17 4 7 22 70 | 3 10 12 1 4 18 71 | 5 9 15 3 13 16 72 | 4 8 18 1 13 22 73 | 4 6 21 2 18 19 74 | 1 11 20 3 5 14 75 | 7 16 19 2 9 10 76 | 6 14 15 3 5 19 77 | 12 13 18 4 11 19 78 | 3 10 13 0 6 20 79 | 1 11 20 6 14 16 80 | 4 8 19 6 12 16 81 | 7 11 21 1 2 18 82 | 6 19 20 2 5 10 83 | 0 5 19 4 14 20 84 | 8 10 22 6 12 19 85 | 0 8 10 4 5 18 86 | 3 5 12 8 13 15 87 | 1 10 22 14 17 20 88 | 2 3 10 0 9 17 89 | 7 11 12 3 5 20 90 | 9 12 22 7 14 20 91 | 7 11 16 3 17 18 92 | 3 8 18 0 12 19 93 | 4 15 18 0 1 10 94 | 11 13 22 7 16 21 95 | 6 10 15 8 9 22 96 | 9 18 20 4 11 15 97 | 11 14 18 3 4 6 98 | 2 11 15 0 3 8 99 | 9 13 16 0 17 20 100 | 3 5 14 0 9 22 101 | 0 8 16 6 13 19 102 | 4 17 18 2 11 13 103 | 0 2 13 6 10 20 104 | 8 17 21 10 13 19 105 | 13 15 20 6 10 16 106 | 10 14 21 5 16 22 107 | 6 14 16 3 10 15 108 | 2 8 16 3 11 15 109 | 1 11 18 6 12 19 110 | 6 18 19 0 1 20 111 | 0 9 11 2 8 18 112 | 4 12 17 9 10 11 113 | 11 19 22 2 6 21 114 | 9 11 22 0 5 13 115 | 5 8 12 10 14 20 116 | 17 20 22 1 7 13 117 | 3 20 21 2 6 10 118 | 13 17 20 9 18 22 119 | 14 15 18 4 9 16 120 | 5 11 14 1 7 10 121 | 6 8 20 14 15 19 122 | 0 6 7 5 14 21 123 | 10 16 20 8 13 19 124 | 2 12 17 15 18 21 125 | 0 2 9 11 12 20 126 | 2 14 20 5 6 13 127 | 5 7 17 10 15 19 128 | 7 8 16 6 9 19 129 | 2 14 21 8 13 15 130 | 1 4 22 3 6 15 131 | 5 17 19 2 7 14 132 | 5 14 19 0 1 22 133 | 6 20 22 9 10 11 134 | 2 9 13 8 10 17 135 | 8 12 17 0 16 19 136 | 16 17 18 7 9 11 137 | 12 19 20 15 16 17 138 | 9 13 16 0 7 14 139 | 5 17 21 3 6 12 140 | 1 4 12 0 15 17 141 | 1 16 19 0 3 13 142 | 15 16 19 6 7 22 143 | 10 17 19 1 12 14 144 | 0 10 16 8 9 18 145 | 0 9 12 1 4 14 146 | 7 12 22 0 10 19 147 | 5 10 15 0 1 2 148 | 0 11 20 1 7 15 149 | 6 21 22 4 5 16 150 | 5 7 16 12 15 22 151 | 14 17 19 8 10 12 152 | 3 9 20 2 14 15 153 | 4 11 16 7 8 19 154 | 2 13 19 8 14 17 155 | 7 16 19 6 18 21 156 | 1 16 20 4 8 12 157 | 1 8 15 3 19 20 158 | 2 3 12 5 6 11 159 | 4 16 18 8 19 22 160 | 6 17 20 5 8 14 161 | 1 12 13 4 19 22 162 | 2 8 20 4 9 13 163 | 2 9 11 0 8 13 164 | 7 9 18 11 15 16 165 | 1 10 12 2 18 20 166 | 4 20 21 0 6 18 167 | 0 6 15 2 3 12 168 | 11 12 20 3 21 22 169 | 9 10 12 1 2 6 170 | 1 10 14 2 15 17 171 | 4 12 18 3 5 17 172 | 3 7 15 4 10 21 173 | 4 5 22 11 12 21 174 | 12 14 17 0 5 7 175 | 1 7 22 12 13 14 176 | 7 8 14 2 6 21 177 | 5 7 20 4 14 22 178 | 7 12 15 0 13 20 179 | 0 1 3 2 5 22 180 | 3 21 22 0 5 9 181 | 9 11 14 17 19 21 182 | 10 13 17 6 11 16 183 | 7 8 12 2 3 13 184 | 3 7 16 8 15 20 185 | 8 9 20 11 16 21 186 | 3 15 21 11 16 17 187 | 1 10 13 3 19 22 188 | 6 18 19 0 11 14 189 | 6 10 18 9 15 16 190 | 3 11 16 5 19 21 191 | 0 4 13 9 10 12 192 | 2 3 4 10 15 22 193 | 4 11 21 1 13 14 194 | 0 3 12 5 6 20 195 | 8 19 22 0 4 21 196 | 7 13 15 2 4 22 197 | 4 15 21 6 8 16 198 | 1 3 11 0 12 18 199 | 1 3 19 4 13 20 200 | 0 20 21 1 17 18 201 | 1 10 15 6 7 9 202 | 3 6 9 5 12 13 203 | 3 9 18 2 10 13 204 | 6 16 18 4 7 11 205 | 16 17 22 4 8 11 206 | 0 17 21 7 8 10 207 | 0 10 14 11 18 22 208 | 1 7 18 8 16 19 209 | 2 7 19 3 12 13 210 | 9 15 22 11 18 19 211 | 0 19 21 2 7 16 212 | 3 5 22 1 4 20 213 | 1 5 6 16 17 18 214 | 7 15 22 1 9 14 215 | 4 12 14 13 16 18 216 | 6 12 22 2 9 20 217 | 3 11 20 8 9 21 218 | 5 12 22 9 15 17 219 | 12 15 20 1 17 22 220 | 4 5 10 3 11 14 221 | 9 16 20 11 12 14 222 | 13 19 20 0 17 18 223 | 2 21 22 3 4 10 224 | 1 11 21 9 10 15 225 | 1 17 21 5 16 18 226 | 9 12 15 6 10 11 227 | 4 9 15 7 10 12 228 | 7 12 20 0 3 14 229 | 3 15 21 14 19 22 230 | 1 14 19 4 11 17 231 | 1 3 5 13 16 21 232 | 3 4 22 1 8 9 233 | 4 8 20 7 17 19 234 | 5 16 18 6 13 21 235 | 0 8 11 1 14 21 236 | 1 3 7 6 10 16 237 | 15 16 18 5 6 17 238 | 9 13 20 6 11 14 239 | 2 4 8 14 15 21 240 | 5 6 15 9 10 21 241 | 4 15 21 0 7 14 242 | 0 2 12 3 11 14 243 | 13 15 22 10 19 21 244 | 6 14 15 7 9 19 245 | 8 14 19 11 18 21 246 | 0 2 21 4 9 10 247 | 1 6 18 8 16 21 248 | 13 15 17 10 18 21 249 | 4 7 12 20 21 22 250 | 12 15 18 3 13 22 251 | 1 3 8 13 18 22 252 | 1 4 6 14 21 22 253 | 8 13 21 0 12 22 254 | 8 12 16 2 4 7 255 | 2 10 17 4 6 16 256 | 5 12 15 13 17 18 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_24_256.def: -------------------------------------------------------------------------------- 1 | 8 16 22 2 11 12 2 | 3 4 23 1 11 14 3 | 9 20 21 5 6 10 4 | 3 6 18 7 10 12 5 | 11 12 19 16 22 23 6 | 9 13 23 7 10 20 7 | 1 4 22 12 15 19 8 | 2 8 20 13 15 19 9 | 2 3 12 5 18 20 10 | 3 19 20 5 7 21 11 | 1 11 20 6 21 23 12 | 1 5 8 2 18 20 13 | 1 9 12 7 15 19 14 | 2 9 11 1 13 20 15 | 5 8 22 13 16 23 16 | 3 5 21 11 13 20 17 | 2 12 16 3 10 20 18 | 5 7 11 4 14 15 19 | 6 18 22 5 15 17 20 | 0 7 18 19 21 22 21 | 1 12 15 2 10 18 22 | 3 12 14 0 10 17 23 | 10 19 21 0 6 12 24 | 3 9 12 2 7 11 25 | 9 17 21 4 16 22 26 | 6 16 17 0 14 15 27 | 5 7 23 3 6 19 28 | 4 19 23 1 2 17 29 | 2 20 21 13 14 18 30 | 0 4 19 3 18 23 31 | 15 20 21 0 6 9 32 | 6 15 22 0 1 14 33 | 4 8 20 7 12 17 34 | 5 11 23 13 16 21 35 | 2 13 22 5 7 20 36 | 4 20 21 8 10 23 37 | 1 5 6 7 9 15 38 | 9 11 21 1 5 18 39 | 1 15 19 2 5 10 40 | 8 10 17 4 5 22 41 | 7 17 18 3 10 11 42 | 13 19 22 5 15 16 43 | 13 15 23 2 12 16 44 | 8 20 23 10 17 22 45 | 2 3 4 10 12 23 46 | 15 17 21 9 14 22 47 | 11 16 20 0 2 22 48 | 3 10 21 7 9 22 49 | 0 15 22 5 14 23 50 | 1 10 20 6 11 14 51 | 7 9 17 0 4 11 52 | 8 16 19 2 6 10 53 | 5 6 20 4 9 10 54 | 14 19 20 6 11 13 55 | 3 5 7 8 17 21 56 | 7 16 20 2 11 17 57 | 1 4 18 0 3 5 58 | 16 19 23 6 14 15 59 | 4 5 22 1 19 21 60 | 1 18 19 9 20 23 61 | 1 4 11 6 20 22 62 | 9 17 18 6 14 16 63 | 8 21 22 4 7 19 64 | 0 22 23 5 11 18 65 | 5 14 15 4 11 22 66 | 13 15 23 3 7 21 67 | 10 13 21 1 20 22 68 | 5 15 20 0 16 18 69 | 17 18 20 2 8 22 70 | 2 3 9 6 11 14 71 | 12 13 14 2 5 19 72 | 1 4 14 5 9 19 73 | 4 11 16 2 12 20 74 | 4 5 21 11 14 15 75 | 4 7 17 1 10 22 76 | 13 20 23 0 1 2 77 | 8 18 19 16 17 20 78 | 6 7 16 1 13 22 79 | 7 13 21 2 14 17 80 | 7 9 16 5 8 15 81 | 0 12 23 4 17 22 82 | 8 14 17 7 12 19 83 | 2 10 19 4 8 21 84 | 7 13 23 11 15 21 85 | 0 15 16 6 18 23 86 | 3 5 17 9 15 20 87 | 12 17 19 1 7 8 88 | 1 6 14 4 10 17 89 | 17 22 23 2 12 19 90 | 6 10 15 5 16 23 91 | 4 16 17 9 10 18 92 | 1 21 23 0 16 22 93 | 10 11 23 4 16 19 94 | 7 21 22 2 16 20 95 | 9 15 18 7 14 21 96 | 3 9 13 4 11 21 97 | 8 13 19 0 18 20 98 | 3 13 21 2 4 12 99 | 11 18 21 0 3 13 100 | 6 10 19 5 12 22 101 | 6 13 14 5 19 23 102 | 1 3 15 0 19 21 103 | 3 17 19 4 9 20 104 | 11 13 22 7 8 19 105 | 0 13 18 8 15 17 106 | 12 16 23 3 7 13 107 | 10 15 22 6 13 16 108 | 9 14 19 0 10 12 109 | 9 14 16 12 20 21 110 | 0 6 9 2 3 23 111 | 14 19 22 2 9 18 112 | 0 3 20 13 19 22 113 | 5 10 20 15 21 23 114 | 4 10 12 1 2 5 115 | 3 20 22 1 2 6 116 | 9 14 21 2 3 22 117 | 1 2 14 0 11 17 118 | 3 14 16 0 4 7 119 | 6 9 17 14 20 23 120 | 0 8 23 3 12 17 121 | 4 9 10 2 13 20 122 | 3 15 21 4 9 13 123 | 8 15 22 0 1 13 124 | 5 11 21 7 9 16 125 | 6 17 20 1 5 18 126 | 5 19 20 1 4 10 127 | 3 17 22 10 12 18 128 | 1 19 20 2 14 15 129 | 8 10 20 6 12 15 130 | 7 12 22 6 15 20 131 | 3 11 23 4 13 17 132 | 7 20 21 4 6 19 133 | 1 5 9 4 11 23 134 | 12 16 18 8 9 13 135 | 6 12 20 2 16 18 136 | 6 13 21 3 14 17 137 | 7 11 14 5 12 19 138 | 5 9 13 0 11 22 139 | 7 8 11 0 10 23 140 | 4 10 20 17 18 23 141 | 12 21 22 7 15 23 142 | 0 1 7 5 9 10 143 | 14 19 20 6 15 23 144 | 3 10 11 8 15 18 145 | 6 12 18 11 13 16 146 | 2 17 23 11 12 16 147 | 2 15 19 8 12 13 148 | 4 9 10 2 11 13 149 | 9 14 21 0 4 10 150 | 0 2 19 1 4 10 151 | 8 17 18 9 10 21 152 | 8 19 20 10 14 21 153 | 7 8 12 5 9 17 154 | 3 12 18 11 17 23 155 | 11 12 23 6 18 21 156 | 1 9 11 10 14 19 157 | 6 16 22 2 10 13 158 | 2 8 16 0 3 10 159 | 0 5 11 1 6 19 160 | 0 9 23 16 17 20 161 | 12 16 23 3 4 18 162 | 3 11 19 5 12 15 163 | 6 8 17 15 18 22 164 | 11 12 14 0 6 8 165 | 13 15 18 14 19 23 166 | 8 12 19 3 5 14 167 | 2 7 9 5 10 14 168 | 13 15 19 3 4 14 169 | 0 6 18 1 4 17 170 | 0 14 23 5 7 13 171 | 0 5 21 1 11 23 172 | 0 12 13 6 10 23 173 | 10 14 15 3 4 12 174 | 0 14 16 2 4 23 175 | 6 16 21 4 17 20 176 | 7 14 18 3 9 10 177 | 0 8 15 5 9 13 178 | 2 14 22 3 11 17 179 | 10 17 18 3 13 21 180 | 7 14 17 1 10 16 181 | 8 9 17 2 7 14 182 | 4 7 21 0 5 16 183 | 3 9 18 1 13 23 184 | 3 6 23 5 21 22 185 | 1 17 22 0 3 4 186 | 7 10 12 0 17 21 187 | 12 17 20 3 8 11 188 | 10 13 19 3 12 18 189 | 4 8 23 12 19 22 190 | 5 9 14 3 16 23 191 | 10 17 19 5 13 20 192 | 2 4 8 6 7 22 193 | 14 20 22 1 7 15 194 | 4 19 23 3 8 10 195 | 11 16 22 8 17 18 196 | 6 7 22 16 18 19 197 | 1 18 19 2 12 15 198 | 1 18 21 2 3 7 199 | 6 8 11 15 19 22 200 | 1 6 7 12 13 18 201 | 3 5 11 2 6 8 202 | 4 18 19 1 16 21 203 | 7 18 22 0 12 17 204 | 10 11 18 1 3 9 205 | 3 13 18 7 8 10 206 | 0 7 8 10 13 20 207 | 10 13 16 9 14 23 208 | 0 7 13 4 9 16 209 | 7 9 19 6 22 23 210 | 9 15 20 13 14 17 211 | 4 14 15 11 18 20 212 | 0 8 13 1 18 23 213 | 0 16 21 6 8 22 214 | 12 16 22 0 14 19 215 | 1 5 12 6 9 20 216 | 5 6 19 15 18 21 217 | 7 11 13 0 1 21 218 | 2 13 17 1 19 23 219 | 5 16 18 1 20 22 220 | 0 2 16 8 12 18 221 | 10 15 16 11 19 22 222 | 2 17 18 3 8 16 223 | 1 2 6 8 12 14 224 | 4 6 14 8 11 16 225 | 0 9 11 3 7 8 226 | 2 5 19 9 12 17 227 | 4 5 6 8 13 14 228 | 6 20 21 9 15 16 229 | 8 13 18 2 9 23 230 | 0 1 21 6 11 15 231 | 1 9 11 5 21 23 232 | 7 21 22 8 14 20 233 | 2 16 20 3 12 14 234 | 0 1 17 10 16 21 235 | 0 3 15 8 10 14 236 | 2 8 15 7 17 23 237 | 8 11 18 2 13 14 238 | 2 17 20 4 5 15 239 | 16 18 22 7 11 20 240 | 2 8 21 5 6 15 241 | 0 8 22 6 16 21 242 | 5 6 11 3 12 23 243 | 18 22 23 0 1 6 244 | 0 17 22 2 4 13 245 | 2 4 13 9 11 19 246 | 1 11 15 4 6 12 247 | 7 16 18 5 9 13 248 | 2 8 9 4 15 17 249 | 3 7 8 15 20 22 250 | 7 10 16 4 11 21 251 | 4 11 12 7 10 22 252 | 9 14 21 13 15 23 253 | 14 16 17 0 1 23 254 | 6 8 12 0 14 18 255 | 3 18 21 1 5 12 256 | 0 21 23 1 3 15 257 | -------------------------------------------------------------------------------- /svp_challenge.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | """ 4 | SVP Challenge Solver Command Line Client 5 | """ 6 | 7 | import copy 8 | import logging 9 | import pickle as pickler 10 | from collections import OrderedDict 11 | 12 | from fpylll.util import gaussian_heuristic 13 | 14 | from g6k.algorithms.workout import workout 15 | from g6k.siever import Siever 16 | from g6k.utils.cli import parse_args, run_all, pop_prefixed_params 17 | from g6k.utils.stats import SieveTreeTracer 18 | from g6k.utils.util import load_svpchallenge_and_randomize, load_matrix_file, db_stats 19 | from fpylll import BKZ as BKZ_FPYLLL 20 | from fpylll.tools.bkz_stats import dummy_tracer 21 | 22 | def asvp_kernel(arg0, params=None, seed=None): 23 | logger = logging.getLogger('asvp') 24 | 25 | # Pool.map only supports a single parameter 26 | if params is None and seed is None: 27 | n, params, seed = arg0 28 | else: 29 | n = arg0 30 | 31 | params = copy.copy(params) 32 | 33 | load_matrix = params.pop("load_matrix") 34 | pre_bkz = params.pop("pre_bkz") 35 | pump_params = pop_prefixed_params("pump", params) 36 | workout_params = pop_prefixed_params("workout", params) 37 | verbose = params.pop("verbose") 38 | if verbose: 39 | workout_params["verbose"] = True 40 | challenge_seed = params.pop("challenge_seed") 41 | high_prec = params.pop("high_prec") 42 | trace = params.pop("trace") 43 | 44 | if load_matrix is None: 45 | A, bkz = load_svpchallenge_and_randomize(n, s=challenge_seed, seed=seed) 46 | if verbose: 47 | print("Loaded challenge dim %d" % n) 48 | if pre_bkz is not None: 49 | par = BKZ_FPYLLL.Param(pre_bkz, strategies=BKZ_FPYLLL.DEFAULT_STRATEGY, max_loops=1) 50 | bkz(par) 51 | 52 | else: 53 | A, _ = load_matrix_file(load_matrix, doLLL=False, high_prec=high_prec) 54 | if verbose: 55 | print("Loaded file '%s'" % load_matrix) 56 | 57 | g6k = Siever(A, params, seed=seed) 58 | 59 | if trace: 60 | tracer = SieveTreeTracer(g6k, root_label=("svp-challenge", n), start_clocks=True) 61 | else: 62 | tracer = dummy_tracer 63 | 64 | gh = gaussian_heuristic([g6k.M.get_r(i, i) for i in range(n)]) 65 | 66 | gamma = params.pop("gamma") 67 | 68 | if gamma is None: 69 | goal_r0 = (1.05**2) * gh 70 | else: 71 | goal_r0 = gamma**2 * gh 72 | 73 | if verbose: 74 | print("gh = %f, goal_r0/gh = %f, r0/gh = %f" % (gh, goal_r0/gh, sum([x*x for x in A[0]])/gh)) 75 | 76 | flast = workout(g6k, tracer, 0, n, goal_r0=goal_r0, 77 | pump_params=pump_params, **workout_params) 78 | if verbose: 79 | logger.info("sol %d, %s" % (n, A[0])) 80 | 81 | norm = sum([x*x for x in A[0]]) 82 | if verbose: 83 | logger.info("norm %.1f ,hf %.5f" % (norm**.5, (norm/gh)**.5)) 84 | 85 | tracer.exit() 86 | 87 | 88 | if hasattr(tracer, "trace"): 89 | stat = tracer.trace 90 | stat.data["flast"] = flast 91 | return stat 92 | else: 93 | return None 94 | 95 | 96 | def asvp(): 97 | """ 98 | Run a Workout until 1.05-approx-SVP on matrices with dimensions in ``range(lower_bound, upper_bound, step_size)``. 99 | """ 100 | description = asvp.__doc__ 101 | 102 | args, all_params = parse_args(description, 103 | load_matrix=None, 104 | pre_bkz=None, 105 | verbose=True, 106 | challenge_seed=0, 107 | workout__dim4free_dec=2, 108 | trace=True) 109 | 110 | stats = run_all(asvp_kernel, all_params.values(), 111 | lower_bound=args.lower_bound, 112 | upper_bound=args.upper_bound, 113 | step_size=args.step_size, 114 | trials=args.trials, 115 | workers=args.workers, 116 | seed=args.seed) 117 | 118 | inverse_all_params = OrderedDict([(v, k) for (k, v) in all_params.iteritems()]) 119 | 120 | for (n, params) in stats: 121 | stat = stats[(n, params)] 122 | if stat[0] is None: 123 | logging.info("Trace disabled") 124 | continue 125 | 126 | if len(stat) > 0: 127 | cputime = sum([float(node["cputime"]) for node in stat])/len(stat) 128 | walltime = sum([float(node["walltime"]) for node in stat])/len(stat) 129 | flast = sum([float(node["flast"]) for node in stat])/len(stat) 130 | avr_db, max_db = db_stats(stat) 131 | fmt = "%48s :: m: %1d, n: %2d, cputime :%7.4fs, walltime :%7.4fs, flast : %2.2f, avr_max db: 2^%2.2f, max_max db: 2^%2.2f" # noqa 132 | logging.info(fmt % (inverse_all_params[params], params.threads, n, cputime, walltime, flast, avr_db, max_db)) 133 | else: 134 | logging.info("Trace disabled") 135 | 136 | if args.pickle: 137 | pickler.dump(stats, open("hkz-asvp-%d-%d-%d-%d.sobj" % 138 | (args.lower_bound, args.upper_bound, args.step_size, args.trials), "wb")) 139 | 140 | 141 | if __name__ == '__main__': 142 | asvp() 143 | -------------------------------------------------------------------------------- /spherical_coding/sc_25_256.def: -------------------------------------------------------------------------------- 1 | 3 14 24 2 9 17 2 | 13 15 16 9 11 20 3 | 5 14 18 16 17 20 4 | 4 5 15 7 8 13 5 | 7 19 23 8 18 20 6 | 9 22 24 0 8 20 7 | 3 12 18 1 14 17 8 | 2 7 17 6 12 22 9 | 1 14 16 2 5 8 10 | 6 7 8 2 13 22 11 | 5 6 16 0 12 18 12 | 15 16 23 3 12 21 13 | 2 16 17 6 10 20 14 | 10 17 22 0 4 16 15 | 6 11 18 3 8 10 16 | 3 14 24 5 8 13 17 | 0 9 18 6 13 20 18 | 4 6 22 5 12 21 19 | 6 22 23 0 8 21 20 | 3 5 23 2 11 18 21 | 6 7 24 1 5 20 22 | 0 9 24 11 12 16 23 | 2 3 5 6 8 14 24 | 3 9 10 14 17 18 25 | 10 15 17 1 2 14 26 | 0 7 13 9 11 16 27 | 14 20 21 0 8 17 28 | 4 12 24 13 16 22 29 | 4 13 21 7 16 22 30 | 2 6 9 3 12 21 31 | 4 7 16 17 21 22 32 | 1 8 18 9 17 24 33 | 1 2 8 13 19 20 34 | 3 15 23 6 10 14 35 | 11 17 21 3 5 10 36 | 0 19 22 4 5 18 37 | 4 6 10 9 12 24 38 | 8 19 22 0 2 14 39 | 5 8 12 0 3 4 40 | 10 13 19 1 17 23 41 | 4 10 11 2 3 7 42 | 9 14 15 10 18 24 43 | 8 11 13 1 17 23 44 | 7 9 20 1 16 17 45 | 4 16 23 11 17 20 46 | 9 12 14 4 20 22 47 | 1 4 9 3 6 14 48 | 8 9 23 2 7 24 49 | 2 17 19 16 21 23 50 | 10 21 24 6 12 15 51 | 3 6 19 0 9 11 52 | 2 3 8 5 12 17 53 | 7 17 21 0 3 18 54 | 0 10 14 3 6 18 55 | 12 13 14 19 21 22 56 | 8 17 20 2 7 14 57 | 7 8 11 2 9 18 58 | 4 8 18 0 6 14 59 | 6 9 18 2 14 23 60 | 0 12 16 1 2 10 61 | 8 11 18 16 21 22 62 | 1 11 13 16 18 19 63 | 8 19 23 16 18 21 64 | 6 16 17 4 8 18 65 | 7 17 19 1 15 24 66 | 6 8 9 11 13 14 67 | 0 15 22 7 11 20 68 | 0 15 19 13 14 24 69 | 4 6 20 8 9 12 70 | 3 16 20 2 5 14 71 | 10 11 13 8 14 24 72 | 4 9 17 16 18 24 73 | 1 16 23 12 19 21 74 | 4 16 24 3 12 15 75 | 3 5 13 7 8 19 76 | 12 13 14 0 1 2 77 | 5 18 19 10 12 22 78 | 10 17 21 18 20 22 79 | 11 17 24 10 22 23 80 | 2 12 16 0 7 17 81 | 8 12 19 7 18 24 82 | 9 13 19 5 7 15 83 | 1 2 22 0 13 24 84 | 9 10 16 4 20 24 85 | 2 18 20 0 5 11 86 | 7 15 22 9 21 23 87 | 1 8 20 4 13 15 88 | 1 20 21 2 6 18 89 | 0 5 13 16 20 24 90 | 1 15 19 3 11 23 91 | 11 23 24 5 8 22 92 | 10 21 24 1 12 13 93 | 1 6 11 9 16 17 94 | 2 5 12 9 10 15 95 | 7 13 15 11 16 17 96 | 2 16 21 1 7 9 97 | 10 22 23 1 7 18 98 | 6 10 12 5 14 20 99 | 0 7 10 8 15 16 100 | 12 15 20 2 8 18 101 | 4 15 24 8 14 16 102 | 6 10 12 9 15 19 103 | 2 10 23 1 3 6 104 | 1 7 19 3 4 17 105 | 3 11 24 0 4 12 106 | 17 18 22 0 2 11 107 | 8 9 17 3 7 11 108 | 4 10 15 13 22 24 109 | 4 16 19 0 14 17 110 | 10 11 14 3 4 7 111 | 0 17 19 2 10 23 112 | 1 11 13 14 19 22 113 | 1 10 22 7 13 23 114 | 12 17 18 8 13 22 115 | 6 23 24 3 16 19 116 | 3 11 17 2 4 12 117 | 7 9 12 11 15 21 118 | 3 5 19 4 9 12 119 | 1 7 23 8 9 24 120 | 0 1 21 5 9 17 121 | 1 10 15 0 12 22 122 | 0 5 6 8 12 19 123 | 15 17 18 4 9 11 124 | 3 8 15 12 19 23 125 | 4 11 15 13 20 21 126 | 1 7 21 2 15 24 127 | 1 5 24 0 11 16 128 | 0 5 16 3 6 9 129 | 12 16 24 1 9 14 130 | 5 15 24 7 18 23 131 | 1 12 21 13 16 18 132 | 3 10 23 6 21 24 133 | 12 14 20 18 21 24 134 | 5 7 11 1 18 19 135 | 2 12 19 16 20 21 136 | 13 16 20 6 9 11 137 | 1 11 15 0 3 4 138 | 3 13 15 5 7 24 139 | 1 3 20 8 9 23 140 | 5 11 16 8 15 23 141 | 0 1 18 8 14 24 142 | 14 18 22 0 2 3 143 | 1 13 18 5 7 11 144 | 3 11 19 6 16 21 145 | 5 11 18 4 10 14 146 | 5 8 10 2 13 20 147 | 15 19 21 3 9 20 148 | 6 17 21 11 15 19 149 | 7 11 22 10 14 19 150 | 2 6 10 4 8 24 151 | 9 13 18 2 8 17 152 | 1 6 16 14 18 22 153 | 11 16 22 3 4 17 154 | 0 21 23 10 11 19 155 | 12 16 21 19 20 23 156 | 4 12 17 9 19 23 157 | 0 15 24 4 14 18 158 | 1 10 24 7 15 16 159 | 6 19 21 10 16 18 160 | 18 19 23 2 9 20 161 | 11 21 22 14 16 24 162 | 18 19 23 0 4 8 163 | 3 12 17 0 4 8 164 | 3 8 23 9 18 22 165 | 0 19 22 14 18 21 166 | 10 15 24 6 14 20 167 | 4 9 19 6 18 22 168 | 12 19 24 17 18 22 169 | 2 3 22 10 18 21 170 | 11 16 19 2 5 15 171 | 3 5 24 2 4 7 172 | 3 12 21 11 20 23 173 | 12 13 17 7 15 21 174 | 5 14 18 2 13 23 175 | 10 12 20 15 16 21 176 | 6 8 13 4 22 23 177 | 0 5 15 1 4 22 178 | 4 8 11 1 5 24 179 | 4 8 14 9 10 20 180 | 2 5 12 8 13 24 181 | 7 10 20 1 12 23 182 | 5 20 23 9 16 21 183 | 5 6 19 14 15 22 184 | 1 8 16 4 14 19 185 | 6 14 19 7 13 20 186 | 7 17 18 2 9 16 187 | 1 9 21 4 20 23 188 | 4 9 19 8 11 15 189 | 0 6 14 1 17 23 190 | 2 5 8 13 15 17 191 | 12 15 20 13 14 17 192 | 8 20 24 3 11 14 193 | 0 12 20 3 7 8 194 | 11 17 23 1 7 9 195 | 11 20 24 0 13 22 196 | 4 11 14 0 20 21 197 | 2 5 10 4 14 17 198 | 13 17 23 0 14 22 199 | 7 11 12 5 6 20 200 | 2 10 20 5 7 22 201 | 2 6 21 4 5 16 202 | 6 20 22 1 13 24 203 | 0 3 6 5 7 10 204 | 19 21 23 7 8 10 205 | 14 16 22 6 15 18 206 | 2 6 13 3 9 22 207 | 2 19 20 0 6 23 208 | 10 12 15 13 19 24 209 | 2 19 21 0 18 23 210 | 4 20 21 10 18 19 211 | 1 7 15 2 22 24 212 | 6 7 10 2 3 13 213 | 1 5 21 16 17 20 214 | 22 23 24 3 10 17 215 | 7 19 24 4 5 10 216 | 15 17 22 6 9 23 217 | 18 20 21 1 22 24 218 | 0 2 11 4 5 20 219 | 0 1 11 7 15 23 220 | 5 19 21 1 2 18 221 | 4 6 13 12 18 20 222 | 3 7 24 0 15 20 223 | 3 14 15 5 12 13 224 | 10 12 24 3 5 9 225 | 13 21 22 0 16 24 226 | 3 4 18 14 15 20 227 | 0 18 19 3 12 14 228 | 1 7 13 3 14 18 229 | 0 10 17 6 12 15 230 | 2 17 21 12 13 15 231 | 1 3 20 7 21 23 232 | 1 4 19 8 9 22 233 | 4 21 22 16 17 19 234 | 8 14 23 4 11 19 235 | 7 14 20 11 13 22 236 | 4 12 22 13 14 15 237 | 4 5 15 3 8 23 238 | 5 6 16 0 22 24 239 | 2 7 16 5 8 13 240 | 6 7 17 18 21 23 241 | 0 16 19 9 15 24 242 | 1 10 16 2 11 15 243 | 9 20 23 3 6 10 244 | 9 10 23 2 4 8 245 | 13 15 21 0 5 24 246 | 1 8 19 7 9 13 247 | 0 12 24 9 14 19 248 | 6 22 23 10 13 14 249 | 5 13 22 3 9 15 250 | 3 7 21 6 15 24 251 | 6 21 23 7 13 22 252 | 11 21 23 6 9 13 253 | 2 10 21 1 9 11 254 | 0 19 20 4 17 22 255 | 11 21 22 2 17 23 256 | 5 9 16 10 22 23 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_26_256.def: -------------------------------------------------------------------------------- 1 | 13 21 23 11 18 22 2 | 0 12 25 5 21 22 3 | 20 24 25 4 12 17 4 | 14 16 22 1 2 21 5 | 1 3 14 13 18 25 6 | 1 3 8 0 13 25 7 | 5 12 13 15 16 19 8 | 0 6 7 1 4 11 9 | 11 15 23 13 18 19 10 | 9 21 25 7 8 13 11 | 0 1 8 9 15 19 12 | 3 7 10 8 12 14 13 | 4 14 21 2 10 13 14 | 8 14 23 10 16 20 15 | 6 11 23 16 17 25 16 | 1 5 18 7 17 23 17 | 6 12 23 11 19 20 18 | 10 19 21 3 12 18 19 | 5 12 23 2 6 9 20 | 12 19 23 1 2 3 21 | 4 9 24 11 12 25 22 | 6 9 16 2 18 24 23 | 7 11 15 10 18 21 24 | 5 8 15 6 9 11 25 | 4 7 10 5 12 24 26 | 3 10 22 9 12 19 27 | 1 12 14 4 5 15 28 | 1 6 13 2 24 25 29 | 6 8 14 1 11 21 30 | 8 19 24 13 14 20 31 | 13 21 24 4 12 20 32 | 8 9 23 1 6 25 33 | 0 1 13 16 20 21 34 | 1 17 18 10 12 19 35 | 3 20 24 5 6 7 36 | 3 7 16 6 19 21 37 | 0 8 10 2 5 22 38 | 8 14 17 0 7 18 39 | 4 17 20 2 3 15 40 | 9 11 22 15 16 25 41 | 13 19 20 0 17 25 42 | 1 17 22 6 12 15 43 | 11 14 21 13 19 20 44 | 13 24 25 1 2 23 45 | 0 4 22 20 21 24 46 | 6 22 23 13 14 21 47 | 10 12 17 0 9 24 48 | 0 1 11 6 8 18 49 | 0 8 19 5 7 13 50 | 6 14 24 4 12 21 51 | 13 23 25 12 18 19 52 | 0 14 15 4 6 19 53 | 5 7 24 1 12 14 54 | 6 15 20 1 19 25 55 | 0 14 24 8 9 25 56 | 1 5 16 4 11 25 57 | 1 17 23 4 8 24 58 | 6 7 9 2 13 15 59 | 2 11 14 9 18 24 60 | 10 21 24 8 17 25 61 | 12 13 25 5 8 16 62 | 4 11 23 7 14 16 63 | 4 18 21 2 12 13 64 | 4 16 17 7 11 25 65 | 9 10 18 0 3 12 66 | 2 12 16 9 18 20 67 | 2 6 23 4 22 24 68 | 6 15 24 0 22 23 69 | 3 12 13 0 1 16 70 | 0 8 18 2 5 10 71 | 1 5 10 4 9 12 72 | 0 8 19 7 18 25 73 | 12 20 24 2 5 14 74 | 9 14 17 15 19 22 75 | 1 17 22 3 12 25 76 | 7 15 19 6 10 16 77 | 16 19 21 10 17 24 78 | 7 8 18 9 21 25 79 | 1 6 25 17 20 23 80 | 0 11 16 1 3 4 81 | 7 15 19 3 4 13 82 | 3 9 22 2 23 25 83 | 11 18 24 1 4 14 84 | 5 10 25 9 20 23 85 | 0 11 13 8 9 10 86 | 2 15 22 1 24 25 87 | 5 11 12 6 22 23 88 | 6 17 24 2 3 16 89 | 11 14 20 2 12 17 90 | 2 11 15 7 12 20 91 | 6 14 19 8 12 22 92 | 8 14 25 11 15 17 93 | 3 8 10 11 19 24 94 | 2 15 25 6 10 16 95 | 17 19 22 9 15 16 96 | 5 14 22 1 21 24 97 | 3 20 25 5 7 10 98 | 17 19 25 3 12 23 99 | 4 14 25 1 16 24 100 | 8 14 17 19 22 25 101 | 0 10 21 13 16 23 102 | 2 4 24 3 15 17 103 | 13 15 19 2 5 21 104 | 11 15 17 9 21 23 105 | 0 13 19 6 10 12 106 | 0 4 8 5 7 22 107 | 2 16 21 6 7 10 108 | 7 12 21 1 8 9 109 | 17 24 25 7 11 13 110 | 4 7 10 2 3 18 111 | 0 3 19 5 8 20 112 | 3 11 18 14 16 17 113 | 9 13 24 7 8 20 114 | 3 7 21 5 22 25 115 | 3 17 22 14 15 20 116 | 0 5 21 13 16 24 117 | 10 14 22 6 7 8 118 | 0 23 24 4 6 19 119 | 14 23 25 0 2 5 120 | 5 7 17 10 13 18 121 | 16 17 18 0 20 22 122 | 1 12 22 3 16 17 123 | 14 15 17 16 18 23 124 | 11 17 24 1 15 23 125 | 1 9 24 14 18 19 126 | 1 9 11 0 16 21 127 | 3 6 21 2 9 24 128 | 14 18 23 6 12 21 129 | 1 7 20 11 15 22 130 | 17 18 21 2 4 22 131 | 0 1 3 14 17 22 132 | 4 22 25 8 11 14 133 | 0 5 16 15 20 21 134 | 6 11 23 9 17 19 135 | 10 16 25 2 14 20 136 | 6 12 16 8 13 19 137 | 8 18 25 4 14 24 138 | 17 20 25 10 15 18 139 | 8 20 21 3 5 19 140 | 7 13 21 5 20 24 141 | 6 11 15 5 21 24 142 | 6 20 25 12 17 23 143 | 1 10 15 7 8 25 144 | 15 23 24 3 6 14 145 | 11 18 22 14 19 25 146 | 17 19 20 4 10 13 147 | 14 18 24 2 8 19 148 | 10 19 23 15 16 17 149 | 3 13 16 0 18 23 150 | 2 8 22 0 20 23 151 | 19 21 23 0 6 20 152 | 2 18 21 1 22 25 153 | 5 9 19 2 20 25 154 | 6 17 24 9 12 16 155 | 5 9 18 4 7 24 156 | 3 4 23 2 10 22 157 | 0 8 21 4 9 16 158 | 7 17 18 5 8 20 159 | 3 9 23 0 4 18 160 | 0 5 18 7 9 12 161 | 1 18 19 3 10 21 162 | 9 14 18 6 15 20 163 | 1 12 24 0 3 16 164 | 0 2 17 3 15 22 165 | 1 4 21 9 10 22 166 | 7 11 19 15 18 23 167 | 0 22 25 1 5 16 168 | 2 4 6 10 11 23 169 | 3 11 13 1 6 14 170 | 5 10 20 2 21 22 171 | 2 8 12 9 15 20 172 | 9 10 15 2 19 23 173 | 2 11 16 3 21 22 174 | 11 13 25 12 19 22 175 | 1 7 21 5 6 18 176 | 16 18 23 0 5 9 177 | 4 13 18 11 15 22 178 | 10 11 17 6 21 22 179 | 6 15 18 5 8 20 180 | 4 7 17 10 16 19 181 | 3 6 9 10 12 16 182 | 15 17 21 2 10 14 183 | 3 5 17 0 19 23 184 | 2 20 24 0 5 9 185 | 2 4 20 8 12 24 186 | 2 9 20 0 3 21 187 | 15 17 23 7 11 14 188 | 11 12 16 2 15 17 189 | 1 6 14 4 16 21 190 | 4 9 11 14 15 22 191 | 7 9 25 13 14 24 192 | 13 21 22 3 10 19 193 | 14 16 25 3 17 23 194 | 1 6 19 7 9 14 195 | 12 13 20 4 16 23 196 | 4 11 14 0 16 20 197 | 5 11 23 8 13 22 198 | 5 18 20 16 23 25 199 | 5 6 23 1 9 10 200 | 5 12 25 0 7 9 201 | 5 9 23 4 16 20 202 | 14 18 19 3 8 25 203 | 8 13 23 2 7 20 204 | 7 8 25 4 12 13 205 | 0 15 20 2 4 18 206 | 9 13 24 1 18 20 207 | 1 4 7 9 13 21 208 | 3 14 15 1 2 13 209 | 4 8 11 2 3 7 210 | 0 2 9 7 10 21 211 | 14 15 24 10 20 22 212 | 3 14 24 8 15 17 213 | 11 12 19 0 6 13 214 | 5 17 19 2 14 23 215 | 23 24 25 0 2 13 216 | 10 17 23 1 5 9 217 | 12 14 15 8 11 16 218 | 2 10 19 1 11 13 219 | 4 10 22 7 18 19 220 | 13 14 19 8 9 12 221 | 8 21 22 3 17 18 222 | 3 18 19 5 7 13 223 | 10 18 25 2 3 24 224 | 1 7 25 0 4 6 225 | 5 15 25 3 19 20 226 | 3 22 25 7 13 17 227 | 8 11 21 12 23 24 228 | 3 13 19 12 18 20 229 | 4 22 24 9 10 11 230 | 1 16 22 2 10 20 231 | 4 5 7 17 21 22 232 | 0 4 24 3 13 19 233 | 2 9 21 7 22 24 234 | 1 6 10 7 18 22 235 | 17 20 23 8 15 18 236 | 13 16 20 6 11 21 237 | 17 18 20 7 8 24 238 | 6 11 17 8 15 20 239 | 2 7 10 5 11 16 240 | 10 11 17 4 5 7 241 | 8 13 18 0 16 24 242 | 6 16 21 3 4 10 243 | 8 10 24 20 22 23 244 | 4 15 23 0 12 17 245 | 5 10 23 9 12 16 246 | 2 6 24 1 4 15 247 | 0 9 10 6 11 16 248 | 3 12 24 13 23 25 249 | 0 9 12 8 11 24 250 | 1 4 15 14 21 22 251 | 11 16 22 3 5 25 252 | 1 7 15 5 11 20 253 | 1 18 22 4 5 19 254 | 6 13 22 3 14 25 255 | 3 16 23 12 15 21 256 | 6 8 19 7 18 21 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_27_256.def: -------------------------------------------------------------------------------- 1 | 16 22 26 4 20 25 2 | 17 18 21 7 12 23 3 | 9 22 26 0 6 14 4 | 7 18 20 1 17 21 5 | 2 18 19 0 13 26 6 | 6 19 20 3 5 21 7 | 10 12 18 3 9 19 8 | 1 4 12 2 13 22 9 | 3 8 14 4 13 17 10 | 9 17 18 4 16 19 11 | 10 16 24 14 17 18 12 | 0 6 13 2 14 19 13 | 5 17 20 16 18 23 14 | 5 18 22 20 21 26 15 | 7 15 16 6 9 24 16 | 8 12 20 2 23 26 17 | 10 15 18 2 12 23 18 | 3 23 25 1 6 16 19 | 9 14 18 8 20 24 20 | 12 17 23 0 3 16 21 | 12 23 25 2 6 7 22 | 8 16 18 0 1 5 23 | 0 12 17 9 11 23 24 | 5 9 11 18 21 22 25 | 1 14 26 12 19 25 26 | 10 12 21 1 8 15 27 | 11 18 20 17 22 26 28 | 4 10 24 1 5 6 29 | 5 10 23 9 12 16 30 | 9 10 11 4 17 23 31 | 16 18 26 3 11 13 32 | 1 15 21 6 13 19 33 | 9 11 19 0 12 15 34 | 8 10 16 14 15 18 35 | 12 20 21 11 19 24 36 | 12 15 22 3 14 25 37 | 6 11 15 9 20 25 38 | 21 25 26 0 3 6 39 | 0 10 21 1 8 24 40 | 8 14 26 1 2 18 41 | 4 12 21 3 17 24 42 | 11 13 20 0 18 22 43 | 2 16 24 13 19 26 44 | 1 5 25 8 13 20 45 | 4 6 11 3 7 8 46 | 2 11 24 8 17 18 47 | 9 13 22 0 8 19 48 | 7 23 25 1 2 11 49 | 4 13 26 3 12 17 50 | 13 14 24 2 12 25 51 | 7 12 14 2 17 20 52 | 4 6 11 0 17 21 53 | 14 16 23 9 13 15 54 | 9 10 23 13 15 24 55 | 5 6 12 8 9 23 56 | 10 15 20 1 3 13 57 | 5 9 19 13 14 22 58 | 1 8 19 3 6 14 59 | 3 13 18 7 19 22 60 | 14 16 20 11 22 24 61 | 10 13 24 1 5 9 62 | 6 7 15 13 14 22 63 | 15 17 20 0 6 11 64 | 1 22 26 5 7 8 65 | 2 4 10 16 20 25 66 | 1 10 16 7 25 26 67 | 17 22 23 2 5 14 68 | 1 14 24 0 16 18 69 | 19 20 22 5 13 26 70 | 1 10 17 3 18 23 71 | 5 7 13 9 14 24 72 | 0 1 13 12 18 22 73 | 12 16 25 0 6 23 74 | 3 17 20 0 9 14 75 | 6 14 16 4 13 21 76 | 7 10 20 3 15 22 77 | 2 3 6 11 15 25 78 | 0 2 19 1 6 17 79 | 19 20 26 8 12 14 80 | 15 20 26 1 7 25 81 | 8 16 20 0 7 18 82 | 2 20 22 6 9 21 83 | 1 4 18 5 15 25 84 | 1 11 20 2 7 9 85 | 0 11 20 1 4 9 86 | 3 19 21 14 22 23 87 | 2 9 18 4 8 19 88 | 18 21 24 9 16 19 89 | 3 10 16 0 1 9 90 | 3 22 23 16 18 21 91 | 0 4 23 3 12 14 92 | 12 23 24 3 6 10 93 | 6 8 12 13 14 16 94 | 5 14 24 4 8 21 95 | 6 10 23 0 1 12 96 | 4 8 25 12 17 24 97 | 7 11 20 2 4 23 98 | 1 5 22 14 21 23 99 | 14 20 21 7 25 26 100 | 0 7 23 3 5 10 101 | 8 13 18 6 21 25 102 | 3 17 22 4 18 24 103 | 5 10 17 11 13 15 104 | 7 11 13 2 6 8 105 | 1 3 10 15 16 19 106 | 3 12 15 18 19 22 107 | 2 16 23 9 18 24 108 | 7 16 25 5 8 21 109 | 4 5 26 1 10 21 110 | 5 8 11 3 9 20 111 | 1 20 23 2 15 26 112 | 8 9 14 3 15 23 113 | 2 21 22 3 4 12 114 | 0 4 11 7 10 24 115 | 2 11 23 4 8 15 116 | 4 11 24 7 13 21 117 | 3 13 16 21 22 25 118 | 8 13 19 4 16 20 119 | 5 7 11 9 23 26 120 | 12 13 26 6 15 21 121 | 9 11 12 2 8 20 122 | 5 13 21 7 15 24 123 | 6 11 18 0 8 12 124 | 17 18 22 5 9 15 125 | 7 10 25 3 19 26 126 | 0 16 19 7 11 26 127 | 7 17 24 3 22 25 128 | 4 24 25 5 16 20 129 | 10 14 26 1 7 9 130 | 5 15 22 0 7 9 131 | 6 18 25 4 14 15 132 | 5 13 21 3 7 22 133 | 14 15 22 4 5 24 134 | 2 3 13 0 7 14 135 | 4 12 20 15 16 18 136 | 0 2 11 9 10 24 137 | 6 8 9 3 20 21 138 | 2 21 24 11 16 17 139 | 0 10 26 4 14 19 140 | 3 9 23 8 14 26 141 | 1 13 24 5 11 17 142 | 2 17 24 3 4 22 143 | 1 13 20 17 19 24 144 | 2 9 10 17 24 25 145 | 8 9 23 7 10 14 146 | 5 18 24 0 11 26 147 | 2 4 8 11 16 24 148 | 5 7 22 10 15 26 149 | 10 17 19 6 20 25 150 | 4 10 26 0 13 17 151 | 7 8 24 0 14 21 152 | 8 14 23 3 19 24 153 | 2 16 17 0 14 21 154 | 10 22 25 12 13 19 155 | 10 14 22 9 17 23 156 | 13 18 26 5 16 21 157 | 11 17 25 6 12 26 158 | 1 15 20 5 16 21 159 | 10 19 25 2 17 21 160 | 3 7 26 2 13 25 161 | 7 16 21 12 14 22 162 | 8 11 21 10 12 26 163 | 7 13 22 0 3 11 164 | 3 16 24 2 20 25 165 | 20 22 24 1 10 15 166 | 16 24 25 7 11 17 167 | 6 11 12 3 13 24 168 | 2 10 25 7 11 20 169 | 1 8 22 5 12 26 170 | 1 19 23 0 2 9 171 | 9 13 15 0 1 3 172 | 10 15 19 11 13 25 173 | 5 20 25 12 17 19 174 | 12 19 22 9 16 17 175 | 22 24 26 1 10 19 176 | 4 12 22 5 8 17 177 | 10 13 23 2 14 26 178 | 16 21 24 0 2 17 179 | 5 21 24 2 11 17 180 | 3 10 12 14 17 19 181 | 7 8 23 4 9 17 182 | 2 16 21 6 8 15 183 | 8 9 16 5 17 25 184 | 15 25 26 7 20 21 185 | 11 21 22 2 19 25 186 | 4 11 17 0 6 18 187 | 0 10 20 6 16 21 188 | 5 8 14 15 19 21 189 | 21 23 26 4 10 13 190 | 4 7 16 12 18 24 191 | 6 14 20 8 21 25 192 | 1 14 23 8 12 17 193 | 3 4 18 9 10 22 194 | 2 12 25 3 5 22 195 | 2 4 7 0 19 25 196 | 6 19 22 2 8 15 197 | 5 15 19 1 6 24 198 | 6 10 22 0 12 18 199 | 4 6 17 1 2 7 200 | 2 15 19 8 16 25 201 | 11 15 23 4 17 26 202 | 1 16 23 3 11 21 203 | 0 16 22 14 15 19 204 | 1 18 26 13 14 25 205 | 7 15 25 8 18 23 206 | 4 16 22 21 23 24 207 | 5 12 22 3 25 26 208 | 6 13 23 4 11 18 209 | 0 9 24 1 6 25 210 | 14 15 17 5 8 26 211 | 5 23 24 9 18 20 212 | 1 19 26 4 6 24 213 | 5 14 23 11 21 26 214 | 0 6 15 14 17 20 215 | 7 18 20 0 8 11 216 | 1 19 24 6 9 15 217 | 10 17 23 19 21 22 218 | 5 18 23 7 14 17 219 | 1 12 23 13 22 25 220 | 0 4 17 2 11 12 221 | 8 11 23 1 5 13 222 | 14 18 25 5 9 22 223 | 1 6 21 5 16 18 224 | 0 10 19 2 3 4 225 | 12 15 21 0 18 25 226 | 3 7 17 2 20 24 227 | 10 11 18 6 9 20 228 | 9 10 14 6 15 18 229 | 4 10 23 9 12 25 230 | 6 13 19 3 15 23 231 | 4 7 14 8 10 20 232 | 8 14 21 0 20 26 233 | 0 4 22 6 19 26 234 | 2 12 13 9 15 20 235 | 5 19 26 2 4 15 236 | 6 21 25 0 11 24 237 | 15 16 23 2 6 8 238 | 1 15 25 4 7 21 239 | 7 21 26 9 12 13 240 | 3 8 18 4 17 23 241 | 0 24 25 12 13 23 242 | 5 15 22 3 14 19 243 | 16 22 24 10 13 18 244 | 11 25 26 0 15 20 245 | 0 2 19 6 12 26 246 | 3 9 10 13 16 26 247 | 5 7 20 16 17 25 248 | 7 13 15 11 20 26 249 | 5 9 18 6 10 25 250 | 4 5 18 2 3 7 251 | 0 2 24 1 18 19 252 | 3 4 19 10 11 17 253 | 6 13 16 1 5 26 254 | 4 7 26 11 12 16 255 | 9 19 22 1 16 26 256 | 1 7 8 19 20 23 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_28_256.def: -------------------------------------------------------------------------------- 1 | 5 13 19 2 11 23 2 | 21 24 27 8 15 20 3 | 3 14 18 0 10 27 4 | 19 20 22 13 15 23 5 | 4 9 12 15 16 27 6 | 7 13 18 1 9 22 7 | 8 21 22 1 9 24 8 | 20 21 23 3 12 17 9 | 7 11 26 0 13 27 10 | 5 20 27 15 21 22 11 | 4 24 27 0 7 25 12 | 1 15 19 3 10 14 13 | 10 21 22 2 12 16 14 | 6 15 22 3 7 27 15 | 10 13 27 5 18 21 16 | 16 17 26 1 19 27 17 | 3 5 21 0 24 26 18 | 13 20 21 2 11 14 19 | 0 5 19 10 15 22 20 | 13 18 24 10 19 26 21 | 1 25 26 0 4 15 22 | 7 9 25 2 13 16 23 | 18 26 27 3 6 24 24 | 11 19 23 1 13 25 25 | 9 12 14 11 19 26 26 | 4 10 15 3 11 21 27 | 3 13 14 21 22 25 28 | 4 9 26 0 17 20 29 | 1 20 23 0 7 18 30 | 11 17 27 1 18 21 31 | 6 9 24 5 14 17 32 | 1 4 26 9 10 25 33 | 6 18 26 9 20 22 34 | 3 25 26 8 12 16 35 | 3 6 9 8 12 21 36 | 14 18 19 0 12 21 37 | 10 16 19 0 17 18 38 | 10 12 24 15 20 26 39 | 11 13 22 3 6 27 40 | 9 22 23 14 24 25 41 | 12 18 24 14 15 19 42 | 6 18 27 4 13 25 43 | 0 2 24 6 7 12 44 | 3 5 15 7 16 18 45 | 2 4 19 0 15 26 46 | 2 8 9 4 5 7 47 | 3 4 16 2 17 25 48 | 13 26 27 17 19 20 49 | 5 18 26 2 12 17 50 | 9 16 27 8 11 12 51 | 7 15 19 1 8 24 52 | 4 7 14 0 6 10 53 | 0 3 9 19 21 26 54 | 1 14 15 8 21 27 55 | 1 11 20 5 12 13 56 | 4 9 18 2 12 14 57 | 3 4 8 1 15 20 58 | 2 12 14 4 15 24 59 | 18 24 26 11 16 25 60 | 3 11 15 6 22 26 61 | 5 16 18 6 7 14 62 | 2 17 21 3 7 22 63 | 2 16 22 13 19 23 64 | 0 5 26 3 4 17 65 | 9 11 12 14 15 27 66 | 1 7 16 18 20 27 67 | 5 18 27 15 17 26 68 | 1 14 16 8 23 25 69 | 1 23 24 6 10 27 70 | 2 5 26 15 18 25 71 | 4 13 27 0 5 20 72 | 2 12 18 0 7 26 73 | 2 7 15 8 20 27 74 | 4 5 21 8 16 25 75 | 4 5 27 9 13 21 76 | 5 9 13 3 19 20 77 | 7 8 26 13 17 22 78 | 2 4 16 8 20 25 79 | 0 5 9 1 3 16 80 | 13 14 15 10 22 24 81 | 8 9 17 3 4 21 82 | 11 17 18 2 9 21 83 | 1 3 8 7 11 15 84 | 13 19 23 10 20 22 85 | 0 16 23 1 17 26 86 | 0 1 11 2 5 26 87 | 2 7 13 6 15 23 88 | 10 12 15 0 3 13 89 | 5 8 16 0 1 13 90 | 6 14 24 0 1 13 91 | 4 12 14 7 9 10 92 | 2 22 27 3 13 20 93 | 7 22 23 9 17 24 94 | 4 9 23 7 11 27 95 | 1 10 21 4 22 27 96 | 4 17 23 9 10 14 97 | 8 18 24 10 13 23 98 | 6 8 13 0 14 25 99 | 5 7 20 12 19 21 100 | 14 23 24 5 13 17 101 | 1 5 22 17 24 25 102 | 0 4 17 9 13 24 103 | 5 15 21 4 8 22 104 | 1 7 20 14 23 26 105 | 12 16 23 1 6 13 106 | 4 8 17 6 12 18 107 | 5 13 16 1 21 26 108 | 12 19 25 6 14 17 109 | 6 8 24 12 17 18 110 | 3 8 19 6 7 11 111 | 7 9 22 1 6 23 112 | 12 22 24 7 10 11 113 | 0 3 16 11 12 22 114 | 7 14 24 16 21 25 115 | 7 25 26 14 20 22 116 | 10 12 14 18 19 25 117 | 2 3 20 1 6 8 118 | 13 19 21 0 6 17 119 | 16 17 18 0 3 22 120 | 9 13 17 2 4 6 121 | 3 21 24 1 8 18 122 | 8 10 19 15 20 25 123 | 1 5 9 6 20 24 124 | 1 11 19 10 15 21 125 | 3 7 21 6 19 25 126 | 4 5 21 12 16 26 127 | 5 14 24 6 13 17 128 | 4 18 25 16 19 26 129 | 2 6 21 0 10 19 130 | 15 19 23 10 18 26 131 | 9 16 27 0 2 19 132 | 0 20 22 3 5 15 133 | 6 9 15 7 25 26 134 | 1 25 27 13 14 24 135 | 9 16 26 8 10 22 136 | 1 8 11 9 12 18 137 | 0 5 21 6 13 20 138 | 9 17 19 2 10 15 139 | 11 21 27 12 17 26 140 | 6 11 13 15 18 27 141 | 7 20 25 3 15 17 142 | 0 2 6 16 22 23 143 | 0 24 25 2 8 9 144 | 11 20 27 3 17 22 145 | 2 3 25 17 21 24 146 | 2 10 13 1 9 15 147 | 10 16 20 6 25 27 148 | 2 10 23 1 20 22 149 | 3 19 26 9 14 27 150 | 3 5 17 10 14 15 151 | 8 9 18 13 17 27 152 | 0 7 21 5 10 25 153 | 1 10 22 6 12 15 154 | 6 17 25 12 15 21 155 | 16 20 26 8 15 19 156 | 0 2 12 13 14 17 157 | 2 8 15 6 12 18 158 | 6 19 21 3 10 26 159 | 4 22 25 0 1 16 160 | 4 6 23 2 3 24 161 | 5 6 11 4 9 17 162 | 1 8 10 17 19 22 163 | 8 17 20 6 22 25 164 | 0 8 22 2 19 20 165 | 7 17 23 0 4 9 166 | 1 4 11 7 19 27 167 | 2 17 24 9 14 16 168 | 4 10 19 24 26 27 169 | 0 8 17 12 20 24 170 | 1 10 11 13 20 22 171 | 5 8 15 1 6 21 172 | 7 8 22 0 10 11 173 | 2 8 14 3 10 12 174 | 2 16 24 3 10 12 175 | 2 11 21 4 12 16 176 | 0 7 19 5 21 25 177 | 3 19 27 0 23 25 178 | 7 19 24 1 2 20 179 | 3 18 25 5 7 24 180 | 9 11 19 6 8 23 181 | 1 12 15 11 16 18 182 | 6 21 22 23 24 25 183 | 1 18 22 20 21 25 184 | 3 14 18 1 16 24 185 | 0 10 12 9 23 24 186 | 5 15 22 0 4 21 187 | 4 20 23 8 14 21 188 | 3 11 27 0 5 13 189 | 3 9 23 4 13 16 190 | 0 2 14 10 17 27 191 | 10 20 26 0 7 27 192 | 7 8 21 5 11 25 193 | 5 16 21 2 22 24 194 | 3 18 20 4 24 25 195 | 9 11 19 14 25 26 196 | 1 5 18 7 11 12 197 | 2 10 18 12 15 20 198 | 14 20 23 15 16 25 199 | 8 20 27 1 7 14 200 | 6 16 23 7 9 25 201 | 12 22 26 10 14 24 202 | 11 16 21 2 14 19 203 | 8 15 20 16 22 23 204 | 14 19 25 2 9 13 205 | 11 14 23 10 19 24 206 | 15 18 27 5 23 25 207 | 12 24 27 4 6 11 208 | 2 11 23 6 14 16 209 | 17 21 23 11 13 22 210 | 10 17 23 11 20 24 211 | 13 23 25 4 5 26 212 | 8 12 13 0 16 22 213 | 15 22 26 1 12 20 214 | 11 14 21 1 2 4 215 | 16 18 19 4 12 27 216 | 9 14 26 15 18 24 217 | 1 7 18 3 16 20 218 | 1 7 16 0 20 26 219 | 3 17 24 0 4 14 220 | 0 18 19 5 7 23 221 | 12 25 27 10 18 20 222 | 12 14 27 3 8 25 223 | 3 5 6 14 17 21 224 | 13 14 25 12 15 26 225 | 1 13 22 4 9 20 226 | 0 11 13 1 21 25 227 | 5 11 27 12 16 25 228 | 13 23 26 6 7 17 229 | 3 11 22 4 7 20 230 | 13 15 18 5 14 17 231 | 4 9 11 7 20 22 232 | 4 8 16 6 17 23 233 | 9 19 21 8 18 23 234 | 3 8 26 5 10 23 235 | 6 9 26 1 16 27 236 | 23 26 27 5 18 24 237 | 2 18 19 1 3 6 238 | 15 16 25 18 21 23 239 | 11 17 24 2 6 13 240 | 22 23 25 7 10 17 241 | 6 8 16 1 23 27 242 | 19 24 26 7 18 20 243 | 6 12 19 10 15 24 244 | 2 3 7 10 14 19 245 | 4 11 18 0 5 27 246 | 2 4 20 8 11 12 247 | 2 7 23 11 12 14 248 | 5 11 12 14 16 21 249 | 10 19 23 11 15 21 250 | 10 22 24 8 9 27 251 | 4 8 26 5 17 22 252 | 7 23 24 2 17 25 253 | 18 26 27 5 8 24 254 | 4 21 25 8 9 23 255 | 2 6 16 13 22 26 256 | 11 13 26 3 7 23 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_29_256.def: -------------------------------------------------------------------------------- 1 | 0 2 4 10 15 18 2 | 13 21 28 7 11 20 3 | 0 2 4 5 9 10 4 | 3 6 18 1 5 21 5 | 10 19 22 6 9 26 6 | 4 19 21 1 17 24 7 | 1 2 20 10 14 16 8 | 9 25 28 13 16 18 9 | 12 19 23 3 8 27 10 | 3 15 24 7 12 28 11 | 12 23 26 13 17 25 12 | 8 12 15 7 17 18 13 | 19 20 27 14 18 22 14 | 6 10 20 13 15 27 15 | 11 12 20 1 5 18 16 | 14 17 20 16 23 25 17 | 11 12 15 16 20 25 18 | 2 9 27 3 14 26 19 | 10 21 28 6 8 25 20 | 5 15 18 6 16 23 21 | 3 21 24 2 7 22 22 | 14 17 21 16 18 27 23 | 1 2 3 17 18 22 24 | 3 14 23 16 21 22 25 | 9 14 22 1 4 20 26 | 13 15 19 11 14 23 27 | 8 10 11 1 21 28 28 | 0 9 28 7 11 18 29 | 8 20 24 18 19 21 30 | 13 19 26 0 10 21 31 | 8 10 12 2 13 25 32 | 6 17 22 5 19 21 33 | 1 2 10 20 23 24 34 | 3 23 25 4 10 12 35 | 11 19 25 14 26 27 36 | 10 14 15 8 13 28 37 | 20 23 24 0 25 27 38 | 9 21 22 24 25 28 39 | 1 16 18 3 8 10 40 | 3 12 26 18 19 21 41 | 3 15 20 5 19 23 42 | 6 7 11 19 21 25 43 | 8 18 25 12 22 23 44 | 16 17 26 0 1 8 45 | 2 14 18 11 21 26 46 | 4 13 20 0 1 24 47 | 2 14 24 7 8 15 48 | 1 13 14 3 17 19 49 | 1 3 26 0 10 27 50 | 6 9 19 2 22 28 51 | 12 23 24 2 15 20 52 | 1 22 27 3 13 18 53 | 10 16 24 0 15 18 54 | 7 11 14 5 10 26 55 | 7 20 22 10 14 28 56 | 4 5 11 6 8 12 57 | 8 18 23 11 25 27 58 | 9 12 18 10 15 23 59 | 5 13 15 2 4 21 60 | 0 9 19 7 14 17 61 | 5 10 22 3 18 21 62 | 2 5 12 0 23 28 63 | 7 15 28 12 17 26 64 | 5 18 27 13 21 26 65 | 15 25 26 2 17 23 66 | 10 18 27 4 8 17 67 | 1 7 12 17 19 22 68 | 4 27 28 0 16 23 69 | 7 9 21 2 4 18 70 | 17 20 25 5 8 12 71 | 2 12 25 18 20 27 72 | 11 18 28 7 13 23 73 | 17 23 26 1 18 20 74 | 11 15 17 18 24 27 75 | 5 14 20 18 23 24 76 | 4 18 21 6 14 28 77 | 11 14 28 9 15 17 78 | 4 18 26 0 19 20 79 | 12 16 17 4 9 24 80 | 3 7 9 12 18 25 81 | 0 15 26 6 13 25 82 | 2 23 26 4 11 25 83 | 1 3 18 0 4 5 84 | 11 15 17 8 10 20 85 | 9 11 26 3 6 21 86 | 8 22 26 3 15 17 87 | 0 23 25 7 19 28 88 | 10 15 21 7 9 14 89 | 13 20 27 7 8 16 90 | 5 18 20 14 19 27 91 | 3 16 24 1 6 8 92 | 12 16 21 10 13 14 93 | 8 13 21 3 18 19 94 | 4 7 13 11 21 22 95 | 6 15 21 7 10 26 96 | 1 5 25 4 10 15 97 | 0 12 24 10 25 26 98 | 9 16 26 13 20 23 99 | 0 14 18 2 3 4 100 | 2 5 11 4 8 22 101 | 1 9 21 0 7 24 102 | 15 16 23 2 8 11 103 | 6 26 28 8 18 27 104 | 8 16 22 6 23 27 105 | 1 13 23 8 14 18 106 | 5 6 26 8 19 22 107 | 21 24 27 4 12 28 108 | 6 18 19 0 11 13 109 | 22 24 28 2 14 21 110 | 5 9 13 14 15 21 111 | 7 11 24 5 16 27 112 | 8 16 28 4 12 23 113 | 13 16 20 5 8 12 114 | 5 7 21 13 23 27 115 | 7 11 26 4 6 9 116 | 1 12 25 0 6 27 117 | 1 22 25 9 24 28 118 | 12 19 28 1 6 11 119 | 0 4 10 6 8 15 120 | 4 12 15 3 5 22 121 | 3 18 27 1 9 19 122 | 3 22 24 4 9 25 123 | 1 10 20 3 4 28 124 | 7 25 26 3 11 28 125 | 12 13 18 3 7 16 126 | 1 3 22 2 15 25 127 | 5 19 24 1 4 27 128 | 4 14 26 3 6 12 129 | 13 14 21 2 15 19 130 | 0 7 25 2 8 17 131 | 2 12 15 5 19 26 132 | 3 20 21 0 1 6 133 | 5 12 20 10 13 17 134 | 6 23 28 13 18 26 135 | 2 7 21 4 10 11 136 | 10 11 19 0 5 9 137 | 18 23 28 3 12 27 138 | 7 15 16 13 17 21 139 | 0 15 19 12 22 25 140 | 12 16 28 8 17 26 141 | 16 24 25 20 26 27 142 | 18 26 28 4 9 16 143 | 20 23 25 7 12 13 144 | 17 20 22 2 8 11 145 | 10 15 18 13 14 16 146 | 2 21 27 4 15 25 147 | 2 3 10 8 23 26 148 | 9 11 26 0 13 17 149 | 7 23 28 3 22 24 150 | 12 19 24 3 8 23 151 | 1 14 19 6 8 21 152 | 23 25 28 1 9 16 153 | 16 17 27 6 14 19 154 | 6 10 25 4 17 19 155 | 4 5 16 2 25 26 156 | 8 11 19 4 10 20 157 | 0 1 22 5 6 13 158 | 14 15 16 0 9 24 159 | 2 11 21 3 5 9 160 | 6 24 26 5 7 17 161 | 6 17 19 15 20 23 162 | 5 17 24 22 23 27 163 | 4 10 16 22 27 28 164 | 1 8 19 7 9 15 165 | 5 12 24 1 16 20 166 | 17 27 28 9 13 19 167 | 2 13 17 3 20 22 168 | 4 10 23 3 9 21 169 | 8 14 16 3 11 26 170 | 0 16 28 4 5 24 171 | 16 17 27 0 2 14 172 | 3 13 14 0 6 17 173 | 6 7 19 9 10 23 174 | 12 20 25 1 5 15 175 | 7 15 21 1 2 16 176 | 6 12 27 8 19 26 177 | 8 13 28 2 19 26 178 | 11 12 25 2 5 6 179 | 2 14 23 0 1 13 180 | 3 6 22 14 19 20 181 | 8 10 21 1 3 4 182 | 11 20 26 4 7 14 183 | 6 19 20 5 10 22 184 | 1 9 10 0 2 5 185 | 13 15 22 16 17 27 186 | 7 19 22 8 20 28 187 | 1 10 24 9 18 20 188 | 9 17 27 6 20 26 189 | 4 16 17 10 25 27 190 | 11 22 23 12 20 24 191 | 4 21 24 0 11 17 192 | 15 25 28 18 21 23 193 | 2 9 24 0 5 26 194 | 3 5 28 12 15 24 195 | 0 6 13 8 11 27 196 | 13 14 16 1 7 28 197 | 9 18 24 5 21 27 198 | 2 9 28 14 15 25 199 | 9 23 25 0 7 20 200 | 11 13 16 6 19 22 201 | 24 26 27 3 8 12 202 | 2 13 22 0 1 19 203 | 7 16 26 5 11 23 204 | 4 14 17 2 10 13 205 | 23 25 28 6 17 24 206 | 3 7 10 11 20 27 207 | 14 24 27 8 13 19 208 | 0 16 24 7 19 27 209 | 9 20 22 19 25 27 210 | 2 22 24 3 10 12 211 | 7 13 24 6 9 21 212 | 0 3 25 6 11 28 213 | 2 22 25 9 13 27 214 | 6 10 20 8 23 27 215 | 1 15 26 5 20 25 216 | 3 19 23 21 24 25 217 | 8 14 24 2 10 12 218 | 1 17 21 16 26 27 219 | 6 11 16 4 22 27 220 | 0 9 11 1 12 17 221 | 13 16 19 4 5 25 222 | 7 8 17 14 16 28 223 | 2 16 26 1 11 14 224 | 4 6 22 9 12 26 225 | 0 3 4 5 15 24 226 | 2 7 23 12 13 22 227 | 0 26 28 7 23 25 228 | 9 17 25 6 22 24 229 | 5 15 22 8 10 18 230 | 12 21 26 2 9 10 231 | 10 17 28 5 11 16 232 | 7 21 23 1 17 28 233 | 1 9 14 11 13 16 234 | 1 7 21 2 8 15 235 | 18 21 28 0 8 27 236 | 9 15 22 1 3 5 237 | 6 25 26 12 20 23 238 | 5 15 16 7 9 13 239 | 9 11 24 0 22 26 240 | 3 14 19 7 18 28 241 | 0 24 25 6 14 28 242 | 17 23 28 0 2 14 243 | 0 11 18 5 8 20 244 | 3 4 7 14 17 20 245 | 6 10 11 15 24 28 246 | 4 11 19 2 13 15 247 | 7 25 28 1 15 23 248 | 9 18 22 21 24 27 249 | 4 8 24 0 12 14 250 | 2 17 20 6 13 27 251 | 19 24 27 0 5 18 252 | 0 7 10 4 22 25 253 | 8 14 16 11 13 22 254 | 16 22 28 17 23 26 255 | 0 4 6 9 14 22 256 | 4 11 21 12 19 25 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_30_256.def: -------------------------------------------------------------------------------- 1 | 9 10 26 6 8 20 2 | 6 10 25 7 9 12 3 | 4 14 29 20 23 24 4 | 7 10 24 4 6 14 5 | 1 22 28 17 21 29 6 | 17 20 23 21 24 27 7 | 8 13 16 17 21 24 8 | 8 22 29 11 18 27 9 | 5 13 29 0 1 10 10 | 3 5 10 7 13 21 11 | 4 7 23 12 17 20 12 | 0 11 20 18 24 28 13 | 7 23 26 0 15 18 14 | 12 24 29 6 18 26 15 | 7 12 17 1 15 28 16 | 6 10 25 3 5 18 17 | 6 26 28 1 13 17 18 | 4 16 19 7 15 23 19 | 9 10 16 5 18 19 20 | 1 3 15 21 25 27 21 | 7 10 13 18 21 25 22 | 6 9 26 0 8 10 23 | 1 13 29 3 19 24 24 | 14 20 28 4 13 21 25 | 9 23 25 16 17 20 26 | 14 19 20 0 12 21 27 | 2 12 29 1 11 22 28 | 1 10 19 15 22 29 29 | 3 8 27 11 22 25 30 | 1 2 29 16 21 22 31 | 15 16 25 12 23 28 32 | 13 15 23 0 22 25 33 | 8 13 19 2 4 26 34 | 3 23 26 7 12 29 35 | 15 17 21 7 25 28 36 | 8 18 28 4 22 27 37 | 8 9 25 0 5 6 38 | 8 13 20 2 12 16 39 | 3 10 16 1 4 12 40 | 4 7 10 0 15 23 41 | 2 17 26 0 13 20 42 | 0 12 14 15 18 24 43 | 15 26 27 2 3 28 44 | 6 8 29 3 10 15 45 | 2 7 18 1 24 27 46 | 5 20 26 0 9 19 47 | 4 9 24 6 22 25 48 | 5 11 23 8 25 29 49 | 1 18 25 14 16 21 50 | 2 10 12 9 18 20 51 | 6 7 24 14 17 29 52 | 6 16 17 1 19 26 53 | 5 8 13 7 19 29 54 | 1 6 20 11 23 28 55 | 13 18 22 7 14 24 56 | 0 2 9 15 23 28 57 | 9 10 13 17 24 29 58 | 4 13 23 6 14 18 59 | 10 23 27 7 19 22 60 | 0 6 24 1 5 16 61 | 1 10 23 8 9 24 62 | 1 3 8 9 25 27 63 | 4 20 25 0 13 26 64 | 2 16 21 9 22 29 65 | 4 20 25 14 21 27 66 | 6 18 19 4 8 17 67 | 7 16 17 2 6 22 68 | 6 14 19 20 21 26 69 | 0 5 6 8 18 19 70 | 2 3 17 14 21 25 71 | 16 24 28 3 18 27 72 | 10 21 28 1 2 8 73 | 8 14 24 7 16 19 74 | 10 25 27 13 21 24 75 | 3 14 25 8 15 28 76 | 10 21 29 5 17 23 77 | 6 9 24 5 14 26 78 | 0 4 12 13 15 20 79 | 13 26 29 12 20 25 80 | 11 14 22 2 9 16 81 | 11 18 19 20 22 28 82 | 1 25 26 14 20 28 83 | 5 6 29 0 14 19 84 | 1 17 27 0 14 20 85 | 22 27 28 11 20 23 86 | 20 21 26 10 11 27 87 | 17 25 27 4 9 14 88 | 7 27 28 3 21 23 89 | 4 11 13 9 10 20 90 | 5 17 25 2 12 22 91 | 16 25 29 5 7 10 92 | 2 19 21 13 22 26 93 | 3 8 15 1 22 24 94 | 8 12 23 2 15 26 95 | 3 6 29 8 14 26 96 | 5 22 25 1 14 26 97 | 1 21 23 10 20 24 98 | 9 16 21 3 11 25 99 | 1 5 10 3 6 23 100 | 6 9 11 16 19 21 101 | 0 13 28 1 23 25 102 | 0 13 24 7 19 27 103 | 8 15 26 13 18 20 104 | 3 19 22 1 5 20 105 | 7 8 11 10 20 29 106 | 0 27 29 7 18 25 107 | 9 12 26 3 7 28 108 | 6 17 25 4 18 29 109 | 13 17 18 11 20 21 110 | 4 18 27 5 11 25 111 | 8 20 27 14 23 25 112 | 15 19 22 16 18 24 113 | 10 14 24 0 16 26 114 | 6 11 27 5 12 25 115 | 2 18 22 6 19 28 116 | 12 13 15 21 23 27 117 | 11 15 29 4 9 27 118 | 10 13 26 0 1 22 119 | 11 21 29 8 23 26 120 | 7 13 23 1 15 16 121 | 16 18 24 0 2 10 122 | 3 20 22 15 28 29 123 | 3 15 24 1 8 28 124 | 2 13 27 12 18 29 125 | 10 15 24 19 22 26 126 | 3 11 12 9 14 17 127 | 2 25 27 3 21 22 128 | 2 8 11 1 9 23 129 | 1 6 28 10 11 19 130 | 5 9 15 10 18 29 131 | 4 5 21 0 2 13 132 | 6 25 26 11 16 23 133 | 1 14 24 11 15 17 134 | 0 7 12 9 10 19 135 | 6 11 29 7 19 20 136 | 20 21 27 14 17 24 137 | 1 7 27 16 17 22 138 | 10 14 22 1 3 28 139 | 6 8 9 4 12 19 140 | 4 8 9 1 18 29 141 | 0 16 17 2 14 20 142 | 3 9 25 8 18 22 143 | 23 24 27 4 10 12 144 | 3 8 25 2 12 22 145 | 6 11 27 10 13 18 146 | 3 9 25 6 11 18 147 | 0 11 24 6 14 16 148 | 5 8 22 4 17 20 149 | 4 5 24 1 7 16 150 | 5 17 28 4 6 23 151 | 5 7 24 3 16 19 152 | 4 5 29 2 17 20 153 | 2 9 11 10 18 23 154 | 6 12 23 1 11 14 155 | 5 9 18 14 23 28 156 | 8 17 19 5 13 16 157 | 4 8 15 17 28 29 158 | 15 19 21 11 16 28 159 | 3 7 15 0 24 26 160 | 4 7 15 11 13 26 161 | 2 19 27 1 6 12 162 | 17 22 26 3 5 14 163 | 12 17 23 2 26 29 164 | 6 13 21 0 27 29 165 | 0 4 5 2 12 18 166 | 8 12 26 2 4 13 167 | 4 6 16 0 21 27 168 | 2 3 5 15 20 27 169 | 11 18 28 1 2 13 170 | 2 5 21 12 15 27 171 | 5 19 29 1 4 17 172 | 2 3 14 6 7 19 173 | 1 6 21 17 22 29 174 | 9 23 29 0 4 15 175 | 4 18 28 5 7 16 176 | 1 5 29 9 18 23 177 | 3 22 27 15 16 25 178 | 2 4 25 9 12 14 179 | 8 19 24 2 21 23 180 | 19 24 26 3 14 18 181 | 6 18 24 4 20 28 182 | 5 17 19 8 16 26 183 | 4 9 16 2 10 21 184 | 7 21 29 10 16 22 185 | 5 16 18 3 21 24 186 | 9 12 15 0 7 16 187 | 9 23 29 13 25 27 188 | 7 20 22 17 25 28 189 | 11 12 26 1 14 17 190 | 10 22 29 2 14 15 191 | 5 20 26 0 7 15 192 | 12 16 28 0 18 26 193 | 4 10 12 2 7 17 194 | 9 23 29 13 21 28 195 | 7 11 14 3 8 10 196 | 6 10 27 22 23 24 197 | 6 12 17 7 25 29 198 | 15 21 22 12 13 27 199 | 9 21 28 16 23 24 200 | 5 12 19 11 17 22 201 | 7 14 24 1 19 21 202 | 18 22 23 3 6 12 203 | 14 23 27 3 4 11 204 | 7 21 25 2 18 19 205 | 5 9 11 12 13 25 206 | 5 6 19 3 25 26 207 | 15 20 29 7 8 28 208 | 20 21 28 6 19 22 209 | 0 23 29 2 22 24 210 | 15 27 28 3 7 20 211 | 7 10 15 12 16 27 212 | 9 13 16 5 8 12 213 | 8 10 11 3 22 27 214 | 14 24 26 8 21 22 215 | 2 12 27 0 10 14 216 | 11 14 16 0 5 17 217 | 4 20 29 0 5 16 218 | 19 20 28 7 15 26 219 | 3 25 27 6 10 17 220 | 13 22 28 0 8 18 221 | 9 11 20 14 17 21 222 | 3 4 6 11 12 20 223 | 1 5 9 0 20 26 224 | 1 11 24 5 15 22 225 | 1 10 22 4 13 20 226 | 15 24 28 6 8 14 227 | 3 26 28 2 8 15 228 | 0 15 28 10 11 21 229 | 0 2 9 12 15 26 230 | 7 16 26 13 24 25 231 | 9 13 17 4 16 24 232 | 16 19 23 7 13 14 233 | 0 18 26 1 22 24 234 | 2 4 17 3 13 29 235 | 12 18 25 3 27 29 236 | 6 7 10 11 14 25 237 | 16 20 24 9 11 28 238 | 4 11 17 0 16 25 239 | 0 1 20 12 13 25 240 | 19 24 26 9 18 21 241 | 11 14 27 0 9 24 242 | 13 19 23 3 26 28 243 | 4 19 28 1 3 12 244 | 5 8 29 12 14 15 245 | 4 8 27 19 26 28 246 | 2 23 28 9 11 17 247 | 8 19 21 0 4 18 248 | 18 21 24 0 15 23 249 | 13 19 26 2 18 28 250 | 4 23 29 3 9 12 251 | 11 15 16 4 17 26 252 | 0 19 25 16 22 27 253 | 5 14 27 1 11 28 254 | 2 8 29 5 18 27 255 | 1 13 19 8 10 23 256 | 3 7 17 2 5 23 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_31_256.def: -------------------------------------------------------------------------------- 1 | 3 14 20 7 12 13 2 | 15 21 28 0 14 29 3 | 7 22 24 11 23 25 4 | 9 28 30 2 3 19 5 | 13 20 21 19 22 27 6 | 4 18 25 5 7 8 7 | 0 14 23 7 16 18 8 | 22 28 29 8 9 20 9 | 6 9 16 3 17 27 10 | 14 25 30 2 9 12 11 | 6 14 25 3 23 27 12 | 0 12 25 4 17 29 13 | 13 19 27 0 22 29 14 | 2 19 28 20 26 29 15 | 11 17 28 1 4 27 16 | 3 7 29 15 20 28 17 | 11 19 26 3 10 30 18 | 7 9 16 8 12 19 19 | 0 3 15 23 25 28 20 | 6 9 25 11 13 15 21 | 14 28 29 1 15 27 22 | 8 19 29 3 9 26 23 | 8 16 23 3 4 19 24 | 2 21 28 4 5 15 25 | 2 7 20 13 18 30 26 | 6 8 14 10 15 19 27 | 17 22 25 0 2 6 28 | 0 13 22 18 20 29 29 | 15 16 24 9 14 27 30 | 1 3 5 7 19 21 31 | 13 19 21 6 16 20 32 | 0 5 22 2 13 25 33 | 5 13 27 7 15 29 34 | 2 5 30 3 20 28 35 | 0 4 20 11 21 22 36 | 15 16 25 5 7 14 37 | 9 15 21 4 14 16 38 | 10 21 23 2 24 27 39 | 8 10 21 13 27 29 40 | 2 16 23 8 10 24 41 | 24 28 30 0 5 7 42 | 0 12 18 5 19 20 43 | 9 16 26 15 21 25 44 | 5 24 28 1 2 8 45 | 13 27 29 1 12 25 46 | 4 19 30 2 3 14 47 | 11 19 23 0 13 21 48 | 10 22 28 9 16 25 49 | 12 14 16 1 18 29 50 | 7 16 17 6 18 26 51 | 6 12 15 11 13 29 52 | 10 21 24 16 22 30 53 | 0 8 26 20 23 30 54 | 4 11 17 0 2 19 55 | 1 8 20 7 13 16 56 | 12 14 25 3 21 22 57 | 12 21 29 8 22 28 58 | 4 11 19 17 22 30 59 | 2 5 11 0 16 17 60 | 9 26 30 12 18 25 61 | 5 17 20 2 9 11 62 | 8 23 26 15 18 30 63 | 4 13 22 5 7 25 64 | 7 18 22 2 15 28 65 | 9 14 27 16 21 29 66 | 16 20 24 10 15 26 67 | 12 14 21 9 25 30 68 | 9 15 17 22 23 30 69 | 13 18 28 21 22 25 70 | 11 17 18 8 9 15 71 | 3 4 16 13 14 30 72 | 3 12 30 21 26 27 73 | 11 15 28 4 10 17 74 | 11 15 22 14 18 28 75 | 11 23 30 6 10 26 76 | 16 17 28 2 13 20 77 | 6 25 27 8 13 24 78 | 1 27 30 5 11 15 79 | 13 14 17 23 24 30 80 | 6 13 25 1 2 28 81 | 6 12 29 0 8 11 82 | 12 17 23 5 25 28 83 | 5 27 28 10 13 20 84 | 17 19 23 7 18 25 85 | 3 5 24 7 11 30 86 | 20 21 30 1 6 23 87 | 11 12 26 2 7 21 88 | 5 10 18 7 11 29 89 | 13 26 30 6 21 27 90 | 4 12 28 10 16 25 91 | 3 7 18 17 20 26 92 | 11 12 23 27 28 30 93 | 1 10 30 0 8 23 94 | 17 21 22 7 24 27 95 | 9 11 28 19 25 26 96 | 7 20 24 2 13 29 97 | 11 24 28 4 8 23 98 | 10 18 19 1 4 11 99 | 10 15 22 21 24 27 100 | 0 24 26 5 16 19 101 | 8 15 29 3 9 22 102 | 12 14 29 5 20 26 103 | 5 8 14 9 12 29 104 | 6 14 26 0 1 13 105 | 4 19 20 5 7 15 106 | 4 7 8 15 18 20 107 | 12 22 26 18 23 24 108 | 3 18 26 6 20 22 109 | 3 22 25 5 6 16 110 | 12 18 30 1 11 13 111 | 19 20 29 4 13 16 112 | 4 8 25 10 16 24 113 | 4 23 24 1 21 30 114 | 0 6 15 10 13 28 115 | 5 8 30 1 6 28 116 | 10 11 30 1 13 22 117 | 2 13 15 3 18 21 118 | 6 17 24 0 10 14 119 | 6 14 24 1 7 26 120 | 9 26 28 11 18 29 121 | 7 8 24 5 9 17 122 | 10 16 23 11 12 24 123 | 6 23 27 2 14 19 124 | 0 7 26 2 8 9 125 | 22 25 27 7 10 26 126 | 8 10 29 4 17 26 127 | 7 9 17 0 24 29 128 | 0 1 6 14 15 16 129 | 10 13 23 2 17 29 130 | 5 12 30 3 14 18 131 | 3 13 20 2 17 26 132 | 6 18 22 0 20 23 133 | 1 26 28 9 10 24 134 | 0 2 26 8 13 15 135 | 13 16 27 4 21 30 136 | 2 17 23 4 16 19 137 | 12 17 29 1 11 14 138 | 15 21 27 0 25 28 139 | 13 21 27 1 2 10 140 | 3 15 21 5 11 22 141 | 4 12 22 11 16 19 142 | 2 8 28 0 14 30 143 | 14 17 30 3 10 28 144 | 0 3 30 18 20 22 145 | 2 13 17 6 11 15 146 | 10 17 27 4 19 30 147 | 2 6 27 1 24 25 148 | 5 7 27 2 17 24 149 | 17 23 27 4 5 25 150 | 0 20 27 1 14 17 151 | 7 13 15 1 10 12 152 | 14 15 26 7 13 20 153 | 9 24 29 11 17 18 154 | 1 17 29 14 21 22 155 | 9 12 21 6 13 15 156 | 8 20 27 19 23 26 157 | 11 24 30 12 25 27 158 | 4 6 19 8 25 26 159 | 0 19 21 7 12 15 160 | 9 25 29 3 12 20 161 | 2 16 23 6 11 27 162 | 9 12 13 7 24 27 163 | 4 10 27 6 13 20 164 | 1 14 15 6 19 26 165 | 0 12 27 1 6 23 166 | 6 13 20 4 15 27 167 | 18 20 26 1 15 19 168 | 1 16 21 2 7 26 169 | 2 18 26 12 15 28 170 | 22 24 27 5 14 21 171 | 14 15 24 12 13 29 172 | 1 14 20 8 10 22 173 | 12 14 21 4 11 18 174 | 5 16 22 4 9 23 175 | 0 6 30 14 19 29 176 | 23 24 25 1 9 12 177 | 0 6 29 11 20 26 178 | 3 12 23 8 9 21 179 | 3 8 25 0 11 21 180 | 2 3 6 8 26 29 181 | 9 23 29 16 19 26 182 | 5 17 18 3 26 30 183 | 1 26 28 4 5 17 184 | 2 6 8 5 21 26 185 | 8 12 24 0 6 19 186 | 15 22 29 7 10 11 187 | 1 6 23 2 3 12 188 | 10 11 19 2 5 20 189 | 1 18 24 3 11 29 190 | 1 18 30 10 23 25 191 | 4 6 13 16 20 29 192 | 7 9 18 1 24 26 193 | 11 12 16 7 15 23 194 | 7 19 27 5 10 29 195 | 2 20 30 9 14 24 196 | 0 8 11 13 24 26 197 | 16 22 23 6 17 30 198 | 16 21 27 3 5 29 199 | 0 7 28 15 18 26 200 | 0 15 18 1 3 22 201 | 3 5 25 1 10 20 202 | 3 9 30 4 7 12 203 | 1 9 19 2 4 21 204 | 6 8 28 1 5 10 205 | 1 8 21 9 14 15 206 | 8 17 23 2 4 10 207 | 8 16 19 2 11 22 208 | 6 13 21 9 14 24 209 | 3 6 16 4 14 27 210 | 2 4 21 0 12 28 211 | 9 18 22 10 17 27 212 | 0 4 22 1 7 12 213 | 4 23 28 3 8 17 214 | 17 19 20 1 2 16 215 | 20 22 27 13 17 24 216 | 3 8 11 21 22 23 217 | 4 28 29 12 19 24 218 | 6 10 11 5 18 28 219 | 9 22 24 23 25 28 220 | 4 10 24 14 18 28 221 | 10 27 29 3 7 23 222 | 10 27 28 22 23 24 223 | 9 21 23 4 8 16 224 | 5 6 10 0 15 20 225 | 1 4 9 6 10 30 226 | 3 8 19 2 24 25 227 | 15 17 25 5 11 12 228 | 4 10 28 1 5 19 229 | 0 5 9 7 14 22 230 | 13 14 16 7 17 28 231 | 16 23 27 7 19 25 232 | 2 5 25 3 6 14 233 | 0 1 17 12 23 26 234 | 12 18 20 0 16 17 235 | 5 6 13 16 18 30 236 | 3 9 19 1 7 14 237 | 10 15 18 21 25 30 238 | 8 9 18 5 24 29 239 | 14 26 29 11 17 25 240 | 5 8 28 7 14 20 241 | 10 13 25 4 16 21 242 | 9 19 24 3 15 26 243 | 0 18 22 12 16 30 244 | 3 20 25 8 18 30 245 | 11 16 21 19 23 30 246 | 3 9 29 0 12 24 247 | 3 21 24 10 20 22 248 | 5 18 23 25 26 29 249 | 0 25 28 6 8 26 250 | 0 17 18 27 29 30 251 | 18 26 29 10 14 22 252 | 4 20 28 18 23 27 253 | 3 4 30 9 19 22 254 | 11 25 27 7 19 28 255 | 4 7 9 2 19 27 256 | 2 17 30 1 21 29 257 | -------------------------------------------------------------------------------- /spherical_coding/sc_32_256.def: -------------------------------------------------------------------------------- 1 | 22 23 25 20 24 27 2 | 9 12 19 2 6 21 3 | 5 9 11 6 22 29 4 | 8 30 31 12 16 28 5 | 2 18 24 14 15 31 6 | 15 26 31 7 20 28 7 | 1 5 28 6 18 27 8 | 10 15 28 1 23 26 9 | 17 21 26 8 23 25 10 | 11 18 25 0 12 15 11 | 13 15 16 6 9 14 12 | 0 4 17 10 15 25 13 | 12 26 28 13 16 21 14 | 0 2 31 18 20 30 15 | 0 29 30 19 21 24 16 | 9 10 23 5 7 20 17 | 2 3 20 10 11 13 18 | 20 24 29 2 3 13 19 | 17 24 25 5 7 27 20 | 14 16 28 7 17 22 21 | 6 16 23 1 10 28 22 | 0 3 17 11 26 27 23 | 7 10 26 3 8 19 24 | 2 17 20 14 24 25 25 | 11 19 21 2 10 27 26 | 4 9 14 7 11 18 27 | 1 3 7 20 30 31 28 | 5 21 26 7 14 28 29 | 19 24 29 8 21 28 30 | 6 21 23 5 27 31 31 | 3 13 27 4 16 18 32 | 11 19 28 5 15 16 33 | 21 22 27 4 9 15 34 | 9 19 22 18 24 26 35 | 2 24 29 0 15 16 36 | 2 13 20 5 14 21 37 | 0 14 29 7 26 28 38 | 10 22 30 8 20 28 39 | 4 8 21 1 11 20 40 | 3 10 26 2 15 18 41 | 1 10 29 3 21 27 42 | 7 14 22 10 12 18 43 | 0 9 31 4 22 30 44 | 3 7 24 19 22 28 45 | 4 6 15 2 14 17 46 | 12 26 27 21 28 30 47 | 19 23 27 13 17 25 48 | 2 21 29 6 9 31 49 | 2 3 20 1 23 27 50 | 15 24 29 7 28 31 51 | 8 11 27 14 16 20 52 | 13 22 24 29 30 31 53 | 6 8 14 0 12 21 54 | 4 5 29 1 22 24 55 | 12 21 24 4 25 27 56 | 1 6 20 16 22 27 57 | 8 13 14 12 24 30 58 | 9 12 29 4 15 19 59 | 7 8 25 11 13 31 60 | 4 23 27 0 11 20 61 | 10 28 31 0 12 25 62 | 0 2 28 17 25 26 63 | 4 17 20 16 19 26 64 | 7 12 16 5 22 28 65 | 5 9 18 1 17 31 66 | 10 11 23 9 14 18 67 | 1 13 30 0 14 20 68 | 6 16 28 10 18 22 69 | 19 25 30 4 14 27 70 | 6 11 23 0 7 27 71 | 8 9 26 3 23 30 72 | 1 26 30 4 10 17 73 | 2 12 21 0 20 24 74 | 16 25 31 4 7 18 75 | 4 10 11 8 12 15 76 | 5 6 11 8 21 29 77 | 19 26 29 21 22 23 78 | 10 21 31 3 11 15 79 | 1 18 24 10 12 30 80 | 1 18 19 11 16 22 81 | 6 21 27 3 7 30 82 | 17 19 31 9 16 21 83 | 10 16 26 9 11 21 84 | 8 19 29 7 15 21 85 | 0 6 27 4 5 16 86 | 10 17 23 1 25 27 87 | 1 16 19 2 28 31 88 | 0 13 26 8 10 18 89 | 6 14 22 23 25 27 90 | 4 9 12 8 13 20 91 | 5 27 29 2 7 31 92 | 0 12 23 17 19 27 93 | 2 19 25 4 8 23 94 | 9 14 30 4 12 25 95 | 13 19 26 3 24 30 96 | 7 19 30 15 17 24 97 | 0 5 6 4 7 24 98 | 0 12 25 4 26 29 99 | 5 19 24 1 15 25 100 | 22 23 30 9 17 29 101 | 4 11 21 12 18 22 102 | 2 5 16 12 21 26 103 | 16 20 22 2 6 30 104 | 2 15 23 13 21 25 105 | 21 22 30 16 18 23 106 | 2 5 25 10 18 27 107 | 12 20 22 17 25 29 108 | 0 8 28 7 18 31 109 | 3 5 18 1 11 12 110 | 1 14 23 15 21 30 111 | 9 16 22 25 27 30 112 | 8 10 12 0 18 26 113 | 1 16 19 5 8 26 114 | 14 23 25 4 16 31 115 | 10 13 20 24 28 31 116 | 8 9 15 3 24 28 117 | 7 17 29 2 15 26 118 | 25 27 31 6 8 26 119 | 0 27 29 4 19 20 120 | 6 10 25 23 28 29 121 | 1 30 31 10 11 23 122 | 13 18 20 1 2 3 123 | 16 29 31 0 9 15 124 | 5 10 13 11 22 26 125 | 1 5 7 17 28 30 126 | 9 12 13 10 19 21 127 | 7 9 31 14 15 17 128 | 2 13 14 5 8 31 129 | 8 25 26 1 9 29 130 | 3 5 13 0 2 22 131 | 14 23 29 1 3 17 132 | 5 7 14 8 20 25 133 | 4 15 25 13 20 23 134 | 15 16 19 3 13 31 135 | 9 20 27 8 11 12 136 | 2 16 22 14 15 17 137 | 3 6 25 14 30 31 138 | 14 16 20 5 22 29 139 | 5 12 18 9 24 26 140 | 6 24 31 7 11 30 141 | 9 20 30 12 13 14 142 | 13 15 24 1 17 25 143 | 8 11 31 1 6 10 144 | 7 8 19 12 23 31 145 | 4 13 27 1 15 23 146 | 6 9 11 0 3 27 147 | 0 10 17 19 27 31 148 | 5 6 24 3 10 18 149 | 16 19 27 20 26 29 150 | 2 13 24 3 21 29 151 | 0 10 24 6 12 18 152 | 3 6 11 0 1 18 153 | 15 17 24 19 20 23 154 | 2 17 25 3 15 29 155 | 9 22 23 0 16 28 156 | 3 8 29 5 13 28 157 | 2 6 29 8 17 23 158 | 8 26 28 4 20 25 159 | 3 9 31 5 22 24 160 | 16 27 30 2 5 19 161 | 18 19 28 5 11 16 162 | 7 8 19 3 11 29 163 | 9 10 24 15 22 29 164 | 11 22 26 8 24 30 165 | 22 23 31 9 26 30 166 | 8 17 27 3 14 30 167 | 17 18 22 20 21 25 168 | 2 6 8 25 26 29 169 | 5 18 27 13 23 31 170 | 11 15 29 5 8 17 171 | 16 18 31 4 12 19 172 | 6 10 29 4 9 23 173 | 1 8 20 5 17 28 174 | 20 23 31 4 13 28 175 | 14 25 26 1 8 16 176 | 1 6 22 2 23 26 177 | 1 11 30 7 22 29 178 | 14 15 18 8 9 22 179 | 8 11 14 6 7 23 180 | 10 20 21 6 16 17 181 | 20 22 26 4 6 11 182 | 0 11 18 17 20 30 183 | 4 12 30 7 25 28 184 | 5 16 17 4 6 13 185 | 24 28 29 0 17 18 186 | 6 12 14 0 2 9 187 | 12 13 15 3 16 21 188 | 16 24 25 0 6 19 189 | 0 11 16 6 25 31 190 | 4 22 26 11 27 28 191 | 2 14 22 0 7 21 192 | 0 19 24 1 18 28 193 | 17 18 29 3 5 15 194 | 3 11 20 21 24 30 195 | 8 25 29 1 17 27 196 | 15 19 31 6 16 30 197 | 7 13 15 2 4 12 198 | 10 18 26 4 7 25 199 | 17 19 21 7 8 24 200 | 2 7 29 0 4 30 201 | 2 19 30 5 6 31 202 | 13 14 20 11 19 24 203 | 1 14 23 9 11 22 204 | 7 9 18 4 20 27 205 | 2 3 4 5 12 30 206 | 2 15 20 0 3 18 207 | 1 24 31 17 19 23 208 | 8 13 26 6 7 22 209 | 10 12 14 15 23 28 210 | 16 28 31 23 24 27 211 | 8 12 16 0 5 23 212 | 4 20 24 2 13 30 213 | 0 14 22 9 17 23 214 | 3 12 28 0 4 31 215 | 18 28 30 3 10 19 216 | 6 9 15 11 24 30 217 | 1 4 26 12 17 21 218 | 0 6 28 3 14 21 219 | 1 13 29 10 14 31 220 | 5 18 24 7 15 27 221 | 3 9 22 7 14 23 222 | 1 2 5 7 9 13 223 | 10 28 31 9 14 30 224 | 3 22 28 2 7 21 225 | 2 4 26 13 19 24 226 | 2 21 27 3 7 12 227 | 6 13 30 1 14 21 228 | 15 18 20 0 1 26 229 | 5 13 31 9 14 28 230 | 3 18 22 2 7 12 231 | 5 9 23 11 15 18 232 | 3 13 19 7 11 27 233 | 11 13 14 12 28 29 234 | 13 21 29 20 27 30 235 | 6 17 26 4 12 13 236 | 0 10 25 3 12 27 237 | 12 20 21 8 14 30 238 | 4 21 28 2 8 10 239 | 7 26 30 1 9 27 240 | 1 5 10 0 3 24 241 | 7 17 22 2 3 18 242 | 1 10 28 12 19 31 243 | 16 17 29 18 21 25 244 | 9 10 25 1 13 17 245 | 12 14 26 15 23 29 246 | 0 4 6 9 15 17 247 | 19 25 28 1 8 21 248 | 23 26 28 2 5 11 249 | 13 25 29 10 15 24 250 | 4 22 25 6 19 21 251 | 1 5 15 6 16 27 252 | 3 16 26 11 14 29 253 | 5 20 27 4 18 31 254 | 10 16 19 11 17 20 255 | 3 7 10 16 18 25 256 | 0 8 11 9 13 24 257 | --------------------------------------------------------------------------------