From 65871dc8b2866d080c576ee3a10c332f64aaf57e Mon Sep 17 00:00:00 2001 From: Anders Pride Date: Wed, 22 Apr 2026 01:18:18 -0500 Subject: [PATCH 01/29] Created kronecker folder and search method --- .../kronecker/__init__.py | 1 + .../{ => kronecker}/kronecker.py | 4 +- .../kronecker/kronecker_search_methods.py | 88 +++++++++++++++++++ 3 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 qmcpy/discrete_distribution/kronecker/__init__.py rename qmcpy/discrete_distribution/{ => kronecker}/kronecker.py (99%) create mode 100644 qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py diff --git a/qmcpy/discrete_distribution/kronecker/__init__.py b/qmcpy/discrete_distribution/kronecker/__init__.py new file mode 100644 index 000000000..6d0653bb3 --- /dev/null +++ b/qmcpy/discrete_distribution/kronecker/__init__.py @@ -0,0 +1 @@ +from .kronecker import Kronecker \ No newline at end of file diff --git a/qmcpy/discrete_distribution/kronecker.py b/qmcpy/discrete_distribution/kronecker/kronecker.py similarity index 99% rename from qmcpy/discrete_distribution/kronecker.py rename to qmcpy/discrete_distribution/kronecker/kronecker.py index 1b9c2de5b..98e7653a2 100644 --- a/qmcpy/discrete_distribution/kronecker.py +++ b/qmcpy/discrete_distribution/kronecker/kronecker.py @@ -1,5 +1,5 @@ -from .abstract_discrete_distribution import AbstractLDDiscreteDistribution -from ..util import ParameterError +from ..abstract_discrete_distribution import AbstractLDDiscreteDistribution +from ...util import ParameterError import numpy as np import warnings diff --git a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py new file mode 100644 index 000000000..3fdb298ec --- /dev/null +++ b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py @@ -0,0 +1,88 @@ +import numpy as np +from sympy import gcdex, primerange, prime +#https://github.com/sympy/sympy/releases + +# I can't find where Jimmy's code for the kronecker search from SURE 2025 is, so I've temporarily put my method here +# Currently, this produces results that are very similar but not identical to my matlab code, which is a bit concerning. +# The wssd of the two methods are typically the same to 2-3 decimal places, depending on N and d + +def KTildeEx(t): + b = t * (t - 1) + 1/6 + step = 1 + b * (1 / (np.arange(1, len(t) + 1) ** 2)) + k = np.prod(step) + return k + +def kronecker_search_march_2026(N, dMax, searchsize): + if searchsize < 2: + raise ValueError("searchsize must be at least 2.") + if N < 2: + raise ValueError("N must be at least 2.") + if dMax < 1: + raise ValueError("dMax must be at least 1.") + + # search over the first n primes, n = searchsize + searchspace = np.array(list(primerange(1, prime(searchsize)+1))) + + alpha = np.zeros(dMax) + # we pick the golden ratio as the first alpha + alpha[0] = (np.sqrt(5) - 1) / 2 + alpha[0] = (np.sqrt(5) - 1) / 2 + + diff = np.cumsum(1.0 / np.arange(N, 1, -1)) + freq = np.cumsum(diff) + freq = np.flip(freq) + + # Compute Bezout coefficients for all pairs in the search space + bezoutCoeffs = np.zeros((searchsize, searchsize)) + for i in range(searchsize - 1): + a = searchspace[i] + for j in range(i + 1, searchsize): + c = searchspace[j] + # Use sympy.gcdex to get Bezout coefficients + d_coeff, b_coeff, _ = gcdex(int(a), int(c)) + bezoutCoeffs[i, j] = b_coeff + bezoutCoeffs[j, i] = d_coeff + bezoutCoeffs = np.abs(bezoutCoeffs) + + # setting up some useful variables for the search + coeff = np.zeros((dMax - 1, 4)) + num = N * (N + 1) / 2 + t = np.mod(alpha[0] * np.arange(1,N), 1) + kPrev = 1 + (t * (t - 1) + 1/6) + + # the main search loop + for dim in range(1, dMax): + best = np.array([0, 0, 0, 0, np.inf]) + nK0 = N * KTildeEx(np.zeros(dim+1)) + for i in range(searchsize): + p1 = searchspace[i] + for j in range(searchsize): + if j == i: + continue + p2 = searchspace[j] + b = bezoutCoeffs[i, j] + d = bezoutCoeffs[j, i] + alpha_dim = (p1 * alpha[dim - 1] + b) / (p2 * alpha[dim - 1] + d) + t = (alpha_dim * np.arange(1, N)) - np.floor(alpha_dim * np.arange(1, N)) + k_vector = kPrev * (1 + (t * (t - 1) + 1/6) / ((dim+1) ** 2)) + + wssd = nK0 - num + 2 * np.dot(freq, k_vector) + + if wssd < best[4]: + best[0] = p1 + best[1] = b + best[2] = p2 + best[3] = d + best[4] = wssd + + alpha_d = (best[0] * alpha[dim - 1] + best[1]) / (best[2] * alpha[dim - 1] + best[3]) + alpha[dim] = np.mod(alpha_d, 1) + t = np.mod(alpha[dim] * np.arange(1, N), 1) + kPrev = kPrev * (1 + (t * (t - 1) + 1/6) / ((dim+1) ** 2)) + coeff[dim - 1, :] = [best[0], best[1], best[2], best[3]] + #print(coeff[dim - 1, :], best[4]) #debugging line to check the coefficients and wssd at each dimension + + return alpha + +# quick and dirty test +# print(kronecker_search_march_2026(10000, 20, 50)) \ No newline at end of file From 4350e46f2105f8c3ea079828a6d2e639164bc8f9 Mon Sep 17 00:00:00 2001 From: Anders Pride Date: Mon, 18 May 2026 09:50:52 -0500 Subject: [PATCH 02/29] Clarified kronecker_search_methods.py --- .../kronecker/kronecker_search_methods.py | 164 +++++++++++++----- 1 file changed, 116 insertions(+), 48 deletions(-) diff --git a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py index 3fdb298ec..45bd39d35 100644 --- a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py +++ b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py @@ -1,38 +1,72 @@ import numpy as np from sympy import gcdex, primerange, prime +np.set_printoptions(precision=17) #https://github.com/sympy/sympy/releases # I can't find where Jimmy's code for the kronecker search from SURE 2025 is, so I've temporarily put my method here -# Currently, this produces results that are very similar but not identical to my matlab code, which is a bit concerning. -# The wssd of the two methods are typically the same to 2-3 decimal places, depending on N and d -def KTildeEx(t): - b = t * (t - 1) + 1/6 - step = 1 + b * (1 / (np.arange(1, len(t) + 1) ** 2)) - k = np.prod(step) - return k +def kronecker_search_march_2026(N, dMax, searchsize, coord_weights=None, alpha_0=None, return_coeffs=False): + """ + Args: + N (int): The maximum sample size to be searched over. + dMax (int): The maximum dimension for which to find the generating vector. + searchsize (int): The number of primes to search over for each component of the generating vector. + coord_weights (array-like, optional): An array of coordinate weights to use in the search. If None, weights are set to j^(-2). + alpha_0 (float, optional): The value for the first component of the generating vector. If None, the golden ratio is used. Note that alpha_0 is taken mod 1. + return_coeffs (bool, optional): Whether to return the coefficients of the linear transformation. Default is False. + Returns: + alpha, coeff (tuple): + - alpha (numpy array): The generating vector found by the search. + - coeff (numpy array, optional): The coefficients of the linear transformation used in the search, returned only if return_coeffs is True. A description of the coeff array is found below. + Complexity: + The time complexity of the search is O(searchsize^2 * dMax * N). + Approach: + Uses the quadratic Bernoulli polynomial kernel to conduct a CBC search for a generating vector, minimizing the weighted sum of squared discrepancies (wssd) with weights w_n = n. + Details on coeff array: + The coeff array, if returned, is a (dMax-1) x 4 array where each row corresponds to a dimension from 2 to dMax. The columns correspond to the coefficients of the linear transformation used to compute the alpha component for that dimension. Specifically, + - alpha[dim+1] = (coeff[dim, 0] * alpha[dim] + coeff[dim, 1]) / (coeff[dim, 2] * alpha[dim] + coeff[dim, 3]) + """ -def kronecker_search_march_2026(N, dMax, searchsize): if searchsize < 2: raise ValueError("searchsize must be at least 2.") if N < 2: raise ValueError("N must be at least 2.") if dMax < 1: raise ValueError("dMax must be at least 1.") + if coord_weights is not None and len(coord_weights) < dMax: + raise ValueError("Length of coord_weights must be greater than or equal to dMax.") - # search over the first n primes, n = searchsize - searchspace = np.array(list(primerange(1, prime(searchsize)+1))) - alpha = np.zeros(dMax) - # we pick the golden ratio as the first alpha - alpha[0] = (np.sqrt(5) - 1) / 2 - alpha[0] = (np.sqrt(5) - 1) / 2 + # the quadratic Bernoulli polynomial + bernoulli2 = lambda t: t * (t - 1) + 1/6 - diff = np.cumsum(1.0 / np.arange(N, 1, -1)) + # define coordinate weights if not provided, default to j^(-2) + if coord_weights is None: + coord_weights = np.array([j**(-2) for j in range(1, dMax + 1)], dtype=np.float64) + + # search over the first n primes, n = searchsize + searchspace = np.array(list(primerange(1, prime(searchsize)+1)), dtype=np.float64) + + # alpha is our generating vector, will be found cbc + alpha = np.zeros(dMax, dtype=np.float64) + + # we pick the golden ratio as the first component of alpha, or let the user specify + if alpha_0 is None: + alpha[0] = np.float64((np.sqrt(5) - 1) / 2) + else: + alpha[0] = np.mod(alpha_0, 1,dtype=np.float64) + + # precompute several constants for the wssd calculation + diff = np.cumsum(1.0 / np.arange(N, 1, -1,dtype=np.float64)) freq = np.cumsum(diff) freq = np.flip(freq) - - # Compute Bezout coefficients for all pairs in the search space + + num = N * (N + 1) / 2 + + nK0 = (1 + coord_weights/6) + nK0 = N * np.cumprod(nK0) + + # precompute Bezout coefficients for all pairs of primes in the search space bezoutCoeffs = np.zeros((searchsize, searchsize)) for i in range(searchsize - 1): a = searchspace[i] @@ -40,49 +74,83 @@ def kronecker_search_march_2026(N, dMax, searchsize): c = searchspace[j] # Use sympy.gcdex to get Bezout coefficients d_coeff, b_coeff, _ = gcdex(int(a), int(c)) - bezoutCoeffs[i, j] = b_coeff - bezoutCoeffs[j, i] = d_coeff - bezoutCoeffs = np.abs(bezoutCoeffs) - + bezoutCoeffs[i, j] = np.float64(b_coeff) + bezoutCoeffs[j, i] = np.float64(d_coeff) + + # setting up some useful variables for the search - coeff = np.zeros((dMax - 1, 4)) - num = N * (N + 1) / 2 - t = np.mod(alpha[0] * np.arange(1,N), 1) - kPrev = 1 + (t * (t - 1) + 1/6) + coeff = np.zeros((dMax - 1, 4)) # stores the coefficients of the linear transformation at each dimension + t = alpha[0] * np.arange(1, N) % 1 # t vector is the vector of coordinates generated for the first dimension + kPrev = 1 + coord_weights[0] * bernoulli2(t) # gets the k vector for the first dimension, which is used in the wssd calculation and updated each dimension of the search. + # The k vector is Ktilde(x_i) for i = 1,...,N-1, where Ktilde is the kernel and x_i are the points generated by the alpha vector, up to the current dimension. # the main search loop for dim in range(1, dMax): - best = np.array([0, 0, 0, 0, np.inf]) - nK0 = N * KTildeEx(np.zeros(dim+1)) + best_wssd = np.inf # stores the current wssd found for each dimension, initialized to infinity + best_alpha = 0 # stores the current best alpha component found for this dimension, initialized to 0 + best_k = None # stores the k vector for the current best alpha, used to update the k vector for the next dimension after the search is done for this dimension for i in range(searchsize): - p1 = searchspace[i] + p1 = searchspace[i] for j in range(searchsize): - if j == i: + if j == i: # the two primes have to be distinct, so we skip this case continue + p2 = searchspace[j] + b = bezoutCoeffs[i, j] d = bezoutCoeffs[j, i] - alpha_dim = (p1 * alpha[dim - 1] + b) / (p2 * alpha[dim - 1] + d) - t = (alpha_dim * np.arange(1, N)) - np.floor(alpha_dim * np.arange(1, N)) - k_vector = kPrev * (1 + (t * (t - 1) + 1/6) / ((dim+1) ** 2)) + + if b < 0: # we search over both minimal Bezout coefficients + b1 = -b + d1 = d + b2 = np.abs(b + p1) + d2 = np.abs(d -p2) + else: + d1 = -d + b1 = b + d2 = np.abs(d + p2) + b2 = np.abs(b - p1) - wssd = nK0 - num + 2 * np.dot(freq, k_vector) + alpha_dim1 = (p1 * alpha[dim - 1] + b1) / (p2 * alpha[dim - 1] + d1) # the linear transformation to get the next alpha_dim candidate to test + alpha_dim2 = (p1 * alpha[dim - 1] + b2) / (p2 * alpha[dim - 1] + d2) # the other candidate from the linear transformation + t1 = (alpha_dim1 * np.arange(1, N)) - np.floor(alpha_dim1 * np.arange(1, N)) # vector of coordinates generated by this candidate component + t2 = (alpha_dim2 * np.arange(1, N)) - np.floor(alpha_dim2 * np.arange(1, N)) + k_vector1 = kPrev * (1 + bernoulli2(t1) * coord_weights[dim]) # get the k vector for this candidate component, used in the wssd calculation + k_vector2 = kPrev * (1 + bernoulli2(t2) * coord_weights[dim]) + + wssd1 = np.dot(freq, k_vector1) + wssd2 = np.dot(freq, k_vector2) + + if wssd1 < wssd2: + b = b1 + d = d1 + wssd = wssd1 + k_vector = k_vector1 + alpha_dim = alpha_dim1 + else: + b = b2 + d = d2 + wssd = wssd2 + k_vector = k_vector2 + alpha_dim = alpha_dim2 - if wssd < best[4]: - best[0] = p1 - best[1] = b - best[2] = p2 - best[3] = d - best[4] = wssd - - alpha_d = (best[0] * alpha[dim - 1] + best[1]) / (best[2] * alpha[dim - 1] + best[3]) - alpha[dim] = np.mod(alpha_d, 1) - t = np.mod(alpha[dim] * np.arange(1, N), 1) - kPrev = kPrev * (1 + (t * (t - 1) + 1/6) / ((dim+1) ** 2)) - coeff[dim - 1, :] = [best[0], best[1], best[2], best[3]] - #print(coeff[dim - 1, :], best[4]) #debugging line to check the coefficients and wssd at each dimension - + if wssd < best_wssd: # if this candidate has a better wssd than the best found so far, we update the best coefficients and wssd + coeff[dim-1, 0] = p1 + coeff[dim-1, 1] = b + coeff[dim-1, 2] = p2 + coeff[dim-1, 3] = d + best_wssd = wssd + best_alpha = alpha_dim % 1 + best_k = k_vector + alpha[dim] = best_alpha # update the alpha vector with the best candidate found for this dimension + + kPrev = best_k # update the k vector for the next dimension with the k vector of the best candidate found for this dimension + + # print(coeff[dim - 1, :], (nK0[dim] - num + 2 * best_wssd)) # debugging line to check the coefficients and wssd at each dimension + if return_coeffs: + return alpha, coeff return alpha # quick and dirty test -# print(kronecker_search_march_2026(10000, 20, 50)) \ No newline at end of file +# print(kronecker_search_march_2026(2**15, 3, 50)) + From 1e969b5a2d412a033bacc87d2c6cf7fa38353ffb Mon Sep 17 00:00:00 2001 From: Anders Pride Date: Tue, 26 May 2026 13:58:32 -0500 Subject: [PATCH 03/29] Kron search method returns wssd and discrepancies --- .../kronecker/kronecker_search_methods.py | 87 ++++++++++++------- 1 file changed, 54 insertions(+), 33 deletions(-) diff --git a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py index 45bd39d35..e4ed6ad2e 100644 --- a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py +++ b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py @@ -1,30 +1,33 @@ import numpy as np from sympy import gcdex, primerange, prime +import time np.set_printoptions(precision=17) #https://github.com/sympy/sympy/releases + # I can't find where Jimmy's code for the kronecker search from SURE 2025 is, so I've temporarily put my method here -def kronecker_search_march_2026(N, dMax, searchsize, coord_weights=None, alpha_0=None, return_coeffs=False): +def kronecker_search_march_2026(N, dMax, searchsize, coord_weights=None, gen_vec_init=None): """ Args: N (int): The maximum sample size to be searched over. dMax (int): The maximum dimension for which to find the generating vector. searchsize (int): The number of primes to search over for each component of the generating vector. coord_weights (array-like, optional): An array of coordinate weights to use in the search. If None, weights are set to j^(-2). - alpha_0 (float, optional): The value for the first component of the generating vector. If None, the golden ratio is used. Note that alpha_0 is taken mod 1. - return_coeffs (bool, optional): Whether to return the coefficients of the linear transformation. Default is False. + gen_vec_init (array-like, optional): The initial value for the generating vector. If None, the golden ratio is used for the first component. Note that gen_vec_init is taken mod 1. Returns: - alpha, coeff (tuple): - - alpha (numpy array): The generating vector found by the search. - - coeff (numpy array, optional): The coefficients of the linear transformation used in the search, returned only if return_coeffs is True. A description of the coeff array is found below. - Complexity: - The time complexity of the search is O(searchsize^2 * dMax * N). + generating_vector, wssd, discrepancies, coeff (tuple): + - generating_vector (numpy array): The generating vector found by the search. + - wssd (float): The weighted sum of squared discrepancies for n = 1,...,N, for the generating vector found. + - discrepancies (numpy array): The discrepancies for n = 1,...,N. + - coeff (numpy array): The coefficients of the linear transformation used in the search. A description of the coeff array is found below. + Time cost: + The time cost of the search is O(searchsize^2 * dMax * N). Approach: Uses the quadratic Bernoulli polynomial kernel to conduct a CBC search for a generating vector, minimizing the weighted sum of squared discrepancies (wssd) with weights w_n = n. Details on coeff array: - The coeff array, if returned, is a (dMax-1) x 4 array where each row corresponds to a dimension from 2 to dMax. The columns correspond to the coefficients of the linear transformation used to compute the alpha component for that dimension. Specifically, - - alpha[dim+1] = (coeff[dim, 0] * alpha[dim] + coeff[dim, 1]) / (coeff[dim, 2] * alpha[dim] + coeff[dim, 3]) + The coeff array is a (dMax-1) x 4 array where each row corresponds to a dimension from 2 to dMax. The columns correspond to the coefficients of the linear transformation used to compute the gen_vec component for that dimension. Specifically, + - gen_vec[dim+1] = (coeff[dim, 0] * gen_vec[dim] + coeff[dim, 1]) / (coeff[dim, 2] * gen_vec[dim] + coeff[dim, 3]) """ if searchsize < 2: @@ -47,14 +50,14 @@ def kronecker_search_march_2026(N, dMax, searchsize, coord_weights=None, alpha_0 # search over the first n primes, n = searchsize searchspace = np.array(list(primerange(1, prime(searchsize)+1)), dtype=np.float64) - # alpha is our generating vector, will be found cbc - alpha = np.zeros(dMax, dtype=np.float64) + # gen_vec is our generating vector, will be found cbc + gen_vec = np.zeros(dMax, dtype=np.float64) - # we pick the golden ratio as the first component of alpha, or let the user specify - if alpha_0 is None: - alpha[0] = np.float64((np.sqrt(5) - 1) / 2) + # we pick the golden ratio as the first component of gen_vec, or let the user specify + if gen_vec_init is None: + gen_vec[0] = np.float64((np.sqrt(5) - 1) / 2) else: - alpha[0] = np.mod(alpha_0, 1,dtype=np.float64) + gen_vec[0] = np.mod(gen_vec_init, 1,dtype=np.float64) # precompute several constants for the wssd calculation diff = np.cumsum(1.0 / np.arange(N, 1, -1,dtype=np.float64)) @@ -80,15 +83,15 @@ def kronecker_search_march_2026(N, dMax, searchsize, coord_weights=None, alpha_0 # setting up some useful variables for the search coeff = np.zeros((dMax - 1, 4)) # stores the coefficients of the linear transformation at each dimension - t = alpha[0] * np.arange(1, N) % 1 # t vector is the vector of coordinates generated for the first dimension + t = gen_vec[0] * np.arange(1, N) % 1 # t vector is the vector of coordinates generated for the first dimension kPrev = 1 + coord_weights[0] * bernoulli2(t) # gets the k vector for the first dimension, which is used in the wssd calculation and updated each dimension of the search. - # The k vector is Ktilde(x_i) for i = 1,...,N-1, where Ktilde is the kernel and x_i are the points generated by the alpha vector, up to the current dimension. + # The k vector is Ktilde(x_i) for i = 1,...,N-1, where Ktilde is the kernel and x_i are the points generated by the gen_vec vector, up to the current dimension. # the main search loop for dim in range(1, dMax): best_wssd = np.inf # stores the current wssd found for each dimension, initialized to infinity - best_alpha = 0 # stores the current best alpha component found for this dimension, initialized to 0 - best_k = None # stores the k vector for the current best alpha, used to update the k vector for the next dimension after the search is done for this dimension + best_gen_vec = 0 # stores the current best gen_vec component found for this dimension, initialized to 0 + best_k = None # stores the k vector for the current best gen_vec, used to update the k vector for the next dimension after the search is done for this dimension for i in range(searchsize): p1 = searchspace[i] for j in range(searchsize): @@ -111,10 +114,10 @@ def kronecker_search_march_2026(N, dMax, searchsize, coord_weights=None, alpha_0 d2 = np.abs(d + p2) b2 = np.abs(b - p1) - alpha_dim1 = (p1 * alpha[dim - 1] + b1) / (p2 * alpha[dim - 1] + d1) # the linear transformation to get the next alpha_dim candidate to test - alpha_dim2 = (p1 * alpha[dim - 1] + b2) / (p2 * alpha[dim - 1] + d2) # the other candidate from the linear transformation - t1 = (alpha_dim1 * np.arange(1, N)) - np.floor(alpha_dim1 * np.arange(1, N)) # vector of coordinates generated by this candidate component - t2 = (alpha_dim2 * np.arange(1, N)) - np.floor(alpha_dim2 * np.arange(1, N)) + gen_vec_dim1 = (p1 * gen_vec[dim - 1] + b1) / (p2 * gen_vec[dim - 1] + d1) # the linear transformation to get the next gen_vec_dim candidate to test + gen_vec_dim2 = (p1 * gen_vec[dim - 1] + b2) / (p2 * gen_vec[dim - 1] + d2) # the other candidate from the linear transformation + t1 = (gen_vec_dim1 * np.arange(1, N)) - np.floor(gen_vec_dim1 * np.arange(1, N)) # vector of coordinates generated by this candidate component + t2 = (gen_vec_dim2 * np.arange(1, N)) - np.floor(gen_vec_dim2 * np.arange(1, N)) k_vector1 = kPrev * (1 + bernoulli2(t1) * coord_weights[dim]) # get the k vector for this candidate component, used in the wssd calculation k_vector2 = kPrev * (1 + bernoulli2(t2) * coord_weights[dim]) @@ -126,13 +129,13 @@ def kronecker_search_march_2026(N, dMax, searchsize, coord_weights=None, alpha_0 d = d1 wssd = wssd1 k_vector = k_vector1 - alpha_dim = alpha_dim1 + gen_vec_dim = gen_vec_dim1 else: b = b2 d = d2 wssd = wssd2 k_vector = k_vector2 - alpha_dim = alpha_dim2 + gen_vec_dim = gen_vec_dim2 if wssd < best_wssd: # if this candidate has a better wssd than the best found so far, we update the best coefficients and wssd coeff[dim-1, 0] = p1 @@ -140,17 +143,35 @@ def kronecker_search_march_2026(N, dMax, searchsize, coord_weights=None, alpha_0 coeff[dim-1, 2] = p2 coeff[dim-1, 3] = d best_wssd = wssd - best_alpha = alpha_dim % 1 + best_gen_vec = gen_vec_dim % 1 best_k = k_vector - alpha[dim] = best_alpha # update the alpha vector with the best candidate found for this dimension + gen_vec[dim] = best_gen_vec # update the gen_vec vector with the best candidate found for this dimension kPrev = best_k # update the k vector for the next dimension with the k vector of the best candidate found for this dimension + best_wssd = nK0[dim] - num + 2 * best_wssd # calculate the best wssd for this dimension using the formula from the paper, which involves the nK0 constants precomputed at the beginning of the function. This is used for debugging and to check the wssd at each dimension of the search. # print(coeff[dim - 1, :], (nK0[dim] - num + 2 * best_wssd)) # debugging line to check the coefficients and wssd at each dimension - if return_coeffs: - return alpha, coeff - return alpha + + # Adapted from Jimmy's code for calculating the discrepancies for n = 1,...,N from SURE 2025 + n_array = np.arange(1, N + 1) + k_tilde = lambda x, coord_weight: np.prod(1 + bernoulli2(x) * coord_weight, axis=1) + k_tilde_terms = k_tilde(gen_vec * np.arange(N).reshape((N, 1)) - np.floor(gen_vec * np.arange(N).reshape((N, 1))), coord_weights) -# quick and dirty test -# print(kronecker_search_march_2026(2**15, 3, 50)) + left_sum = np.cumsum(k_tilde_terms[1:]) * n_array[1:] + right_sum = np.cumsum(n_array[:-1] * k_tilde_terms[1:]) + + k_tilde_zero_terms = k_tilde_terms[0] * n_array + summation = np.zeros(N) + summation[1:] = left_sum - right_sum + discrepancies = (k_tilde_zero_terms + 2 * summation) / (n_array ** 2) - 1 + return gen_vec, best_wssd, discrepancies, coeff + + +# quick and dirty test +start = time.time() +a, wssd, _, _ = kronecker_search_march_2026(2**10, 20, 50) +print(a) +print(wssd) +end = time.time() +print("Run time (seconds): ", end - start) \ No newline at end of file From 1ff125dfd79f9a2374795377b0bef1ccaada5bd4 Mon Sep 17 00:00:00 2001 From: Anders Pride Date: Mon, 8 Jun 2026 19:31:58 -0500 Subject: [PATCH 04/29] Added lattice discrepancy computation for any sample size, and lattice rule search method --- .../discrete_distribution/lattice/lattice.py | 80 +++++++++++ .../lattice/lattice_vector_wssd_search.py | 128 ++++++++++++++++++ 2 files changed, 208 insertions(+) create mode 100644 qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py diff --git a/qmcpy/discrete_distribution/lattice/lattice.py b/qmcpy/discrete_distribution/lattice/lattice.py index 248692c32..1ad05069c 100644 --- a/qmcpy/discrete_distribution/lattice/lattice.py +++ b/qmcpy/discrete_distribution/lattice/lattice.py @@ -385,3 +385,83 @@ def _spawn(self, child_seed, dimension): order=self.order, m_max=self.input_m_max, ) + + def expected_squared_periodic_discrepancies(self, n_max, coord_weights=None, kernel=None): + """Returns the expected squared periodic discrepancies for each of the first n_max points of the lattice sequence. + Args: + n_max (int): Maximum number of points to calculate the squared periodic discrepancies for. + coord_weights (Union[None, np.ndarray]): Coordinate weights for the discrepancy calculation. If None, uses weights gamma_j = j^(-2). + kernel (Union[None, Callable]): Kernel function for the discrepancy calculation. If None, uses the second bernoulli polynomial. + Returns: + discs (np.ndarray): The expected squared periodic discrepancies for the first n_max points. + """ + + if coord_weights is not None and len(coord_weights) < self.d: + raise ValueError("Length of coord_weights must be greater than or equal to the dimension of the lattice") + if coord_weights is None: + coord_weights = np.array([j**(-2) for j in range(1, self.d + 1)], dtype=np.float64) + if self.order == "LINEAR": + raise NotImplementedError("expected_squared_periodic_discrepancies not implemented for linear order") + + if kernel is None: + kernel = lambda x: x * (x - 1) + 1/6 + + k_tilde = lambda x: np.prod(1 + coord_weights * kernel(x), axis=-1) + + # generate the vdc points without any random shift + r_x = np.uint64(self.gen_vec.shape[0]) + n = np.uint64(2**(np.ceil(np.log2(n_max)))) + d = np.uint64(self.d) + n_start = np.uint64(0) + x = np.empty((r_x, n, d), dtype=np.float64) + _ = qmctoolscl.lat_gen_natural(r_x, n, d, n_start, self.gen_vec, x, backend="c") + s = x + + # evaluate the kernel on the sample points + k_vector = k_tilde(s) + k_vector = k_vector.reshape(-1) + + # get the constant vector term of the summation + k_const = -1 + k_vector[0]*np.array([j**(-1) for j in range(1, n_max + 1)], dtype=np.float64) + + # group the kernel evaluations by powers of 2 + k_sum = np.zeros(np.ceil(np.log2(n_max)).astype(int), dtype=np.float64) + for i in range(k_sum.size): + k_sum[i] = np.sum(k_vector[2**i:(2**(i+1))]) + + # get the frequency matrix for how often each kernel evaluation appears (this is always the same and can be precomputed, not done here to avoid adding >1GB txt file to git) + freq_mtx = np.zeros((k_sum.size, n_max), dtype=np.float64) + for i in range(1,n_max): + for j in range(k_sum.size): + if np.floor(i / 2**j) % 2 == 1: + freq_mtx[j, i] = freq_mtx[j, i-1] + 2 + else: + freq_mtx[j, i] = freq_mtx[j, i-1] + for i in range(n_max): + freq_mtx[:,i] = freq_mtx[:,i] * (i + 1)**(-2) + + # multiply by the precomputed frequency matrix and add the constant vector + discs = k_const + np.vecmat(k_sum, freq_mtx) + return discs + + + def wssd(self, n_max, coord_weights=None, sample_weights=None): + """Returns the weighted sum of the expected squared periodic discrepancies for the first n points of the lattice sequence. + Args: + n (int): Number of points to calculate the weighted squared periodic discrepancy for. + coord_weights (Union[None, np.ndarray]): Coordinate weights for the discrepancy calculation. If None, uses weights gamma_j = j^(-2). + sample_weights (Union[None, np.ndarray]): Sample weights for the weighted squared periodic discrepancy calculation. If None, uses weights w_n = n. Note that the time cost may be higher for other sample weights. + Returns: + wssd (float): The weighted squared periodic discrepancy. + """ + if coord_weights is not None and len(coord_weights) < self.d: + raise ValueError("Length of coord_weights must be greater than or equal to the dimension of the lattice") + if sample_weights is not None and len(sample_weights) < n_max: + raise ValueError("Length of sample_weights must be equal to n_max") + if sample_weights is None: + sample_weights = np.arange(1, n_max + 1, dtype=np.float64) + + discs = self.expected_squared_periodic_discrepancies(n_max, coord_weights=coord_weights) + wssd = np.dot(sample_weights, discs) + + return wssd \ No newline at end of file diff --git a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py new file mode 100644 index 000000000..5c7012622 --- /dev/null +++ b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py @@ -0,0 +1,128 @@ +import numpy as np + +# I am not sure where the best place to put this is, will ask Aleksi + +def lattice_search(N, d): + m = np.ceil(np.log2(N)).astype(int) + + # ---------------------------------------------------------------------- + # Set up rhovector + # ---------------------------------------------------------------------- + bits = np.zeros((N, m), dtype=int) + for i in range(N): + # 2*bitget(i,1:m) in MATLAB + bits[i, :] = 2 * np.array([((i >> j) & 1) for j in range(m)], dtype=int) + + cumsumbits = np.cumsum(bits, axis=0) # N x m + rhovector = np.dot((1.0 / np.arange(1, N + 1)), cumsumbits) # 1 x m + + rhovectorNx1 = np.zeros((2**m - 1, 1)) + rIdx1 = 0 + for r in range(m, 0, -1): + rIdx2 = rIdx1 + 2**(r - 1) - 1 + rhovectorNx1[rIdx1:rIdx2 + 1, 0] = rhovector[r - 1] + rIdx1 = rIdx2 + 1 + + # ---------------------------------------------------------------------- + # Get ordering of the search space + # ---------------------------------------------------------------------- + gR = np.ones(2**(m - 2), dtype=int) + intMod = 2**m + for idx in range(1, 2**(m - 2)): + temp = (gR[idx - 1] * 5) % intMod + gR[idx] = min(intMod - temp, temp) + + gRows = np.ones(2**(m - 1), dtype=int) + gRows[-1] = 0 + rowVects = np.ones(2**m - 1, dtype=int) + gStrtIdx = 0 + vStrtIdx = 0 + + for l in range(m, 1, -1): + gEndIdx = gStrtIdx + 2**(l - 2) - 1 + vEndIdx = vStrtIdx + 2**(l - 1) - 1 + + gRow = np.ones(2**(l - 2), dtype=int) + intMod = 2**l + for idx in range(1, 2**(l - 2)): + temp = (gRow[idx - 1] * 5) % intMod + gRow[idx] = min(intMod - temp, temp) + + gRows[gStrtIdx:gEndIdx + 1] = gRow + rowV = np.concatenate(([1], np.flip(gRow[1:]))) + doubled = np.concatenate((rowV, rowV)) + rowVects[vStrtIdx:vEndIdx + 1] = 2**(m - l) * doubled + + gStrtIdx = gEndIdx + 1 + vStrtIdx = vEndIdx + 1 + + rowVects[-1] = 2**(m - 1) + + # ---------------------------------------------------------------------- + # Set up prodV + # ---------------------------------------------------------------------- + prodV = np.ones((2**m - 1, 1)) + prodV = prodV * rhovectorNx1 + + # Initial 1D case + rowV = rowVects / 2**m + rowV = 1 + (rowV * (rowV - 1) + 1 / 6) + prodV = prodV * rowV[:, None] + + # Set up k0 + k0 = 7 / 6 + + # ---------------------------------------------------------------------- + # Begin search + # ---------------------------------------------------------------------- + h = np.ones(d, dtype=int) + + for hComp in range(2, d + 1): + WSSD = np.zeros(2**(m - 2)) + + gamma = 1 / (hComp**2) + omega = lambda x: 1 + gamma * (x * (x - 1) + 1 / 6) + + k0 = k0 * (1 + gamma / 6) + + curIdx2 = 0 + prodIdx1 = 0 + for l in range(m, 1, -1): + nextIdx2 = curIdx2 + 2**(l - 2) - 1 + prodIdx2 = prodIdx1 + 2**(l - 2) - 1 + + curRow = gRows[curIdx2:nextIdx2 + 1] + col = curRow / 2**l + fftCol = omega(col) + + pCol = prodV[prodIdx1:prodIdx2 + 1, 0] + + wVector = 2 * np.fft.ifft(np.fft.fft(fftCol) * np.fft.fft(pCol)).real + numrep = 2**(m - l) + WSSD = WSSD + np.tile(wVector, numrep) + + curIdx2 = nextIdx2 + 1 + prodIdx1 = prodIdx2 + 2**(l - 2) + 1 + + WSSD = WSSD + omega(1 / 2) * prodV[-1, 0] + WSSD = WSSD + N * k0 - N * (N + 1) / 2 + + bestIdx = int(np.argmin(WSSD)) + bestWSSD = float(WSSD[bestIdx]) + newH = int(gR[bestIdx]) + + # Avoid duplicates + while newH in h: + WSSD[bestIdx] = np.inf + bestIdx = int(np.argmin(WSSD)) + bestWSSD = float(WSSD[bestIdx]) + newH = int(gR[bestIdx]) + + h[hComp - 1] = newH + + rowV = (newH * rowVects) % 2**m + rowV = rowV / 2**m + rowV = omega(rowV) + prodV = prodV * rowV[:, None] + + return h \ No newline at end of file From cef4e703f4a070facdefbf1429a09349f2a706df Mon Sep 17 00:00:00 2001 From: Anders Pride Date: Tue, 9 Jun 2026 16:43:20 -0500 Subject: [PATCH 05/29] Added demo for lattice and Kronecker methods --- demos/lattice_kronecker_methods.ipynb | 240 ++ .../kronecker/kronecker_search_methods.py | 26 +- .../kuo.lattice-39102-1024-1048576.3600.txt | 3600 +++++++++++++++++ .../lattice/lattice_vector_wssd_search.py | 15 +- 4 files changed, 3864 insertions(+), 17 deletions(-) create mode 100644 demos/lattice_kronecker_methods.ipynb create mode 100644 qmcpy/discrete_distribution/lattice/generating_vectors/kuo.lattice-39102-1024-1048576.3600.txt diff --git a/demos/lattice_kronecker_methods.ipynb b/demos/lattice_kronecker_methods.ipynb new file mode 100644 index 000000000..85be78d1a --- /dev/null +++ b/demos/lattice_kronecker_methods.ipynb @@ -0,0 +1,240 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "492a51ed", + "metadata": {}, + "source": [ + "# Lattice and Kronecker Methods" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "2e06ea48", + "metadata": {}, + "outputs": [], + "source": [ + "from qmcpy import *\n", + "import numpy as np\n", + "from matplotlib import pyplot\n", + "from time import time\n", + "np.set_printoptions(legacy='1.25')" + ] + }, + { + "cell_type": "markdown", + "id": "39b265e4", + "metadata": {}, + "source": [ + "## Discrepancy Values" + ] + }, + { + "cell_type": "markdown", + "id": "2c1e69d8", + "metadata": {}, + "source": [ + "#### Lattice" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "958e16e1", + "metadata": {}, + "outputs": [], + "source": [ + "dim = 50\n", + "n = 2**20\n", + "lat = Lattice(dimension=dim, order=\"RADICAL_INVERSE\", seed=12) # initialize a lattice as usual\n", + "coord_weights = np.array([j**(-2) for j in range(1, dim + 1)]) # define some coordinate weights\n", + "\n", + "lat_discs = lat.expected_squared_periodic_discrepancies(n_max=n, coord_weights=coord_weights) # compute the expected squared periodic discrepancies for n = 1, 2, ...\n", + "\n", + "sample_weights = np.arange(1, n+1) # define some sample weights\n", + "lat_wssd = lat.wssd(n_max=n, coord_weights=coord_weights, sample_weights=sample_weights) # compute the wssd" + ] + }, + { + "cell_type": "markdown", + "id": "f174209f", + "metadata": {}, + "source": [ + "#### Kronecker" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c8eec507", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\headw\\QMCSoftware\\qmcpy\\discrete_distribution\\kronecker\\kronecker.py:276: RuntimeWarning: CBC generating vector only supports dimension <= 13; falling back to Richtmyer.\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "kron = Kronecker(dimension=dim, seed=12) # initialize a Kronecker sequence as usual\n", + "kron_k_tilde = (lambda x, gamma: np.prod(1 + (x * (x - 1) + 1/6) * gamma, axis=-1), 1) # define the kernel function (in this case, the second Bernoulli polynomial)\n", + "\n", + "kron_discs = kron._square_periodic_discrepancies(n = n, k_tilde = kron_k_tilde, gamma = coord_weights) # compute the expected squared periodic discrepancies for n = 1, 2, ...\n", + "\n", + "kron_wssd = kron.wssd_discrepancy(n = n, weights = sample_weights, k_tilde = kron_k_tilde, gamma = coord_weights) # compute the wssd" + ] + }, + { + "cell_type": "markdown", + "id": "f1c20186", + "metadata": {}, + "source": [ + "## Searches" + ] + }, + { + "cell_type": "markdown", + "id": "01664bbb", + "metadata": {}, + "source": [ + "#### Lattice" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "524e3b99", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time taken for lattice vector wssd search: 8.519208669662476\n", + "Searched lattice vector: [ 1 444567 406809 53917 411513 111013 57773 23363 278133 179399\n", + " 145725 480145 365723 134199 361515 297163 315729 250703 322429 236947\n", + " 508553 455183 148433 37975 46187 474063 490317 14811 417263 342641\n", + " 474417 269197 309749 29993 366775 433399 240621 375377 84847 232327\n", + " 214987 375079 32109 388283 153487 140919 390453 362317 413527 405689]\n" + ] + } + ], + "source": [ + "from qmcpy.discrete_distribution.lattice.lattice_vector_wssd_search import lattice_vector_wssd_search\n", + "\n", + "# note that the search requires that the sample weights be w_n = n, so they are not customizable\n", + "\n", + "time_start = time()\n", + "searched_lattice_vector = lattice_vector_wssd_search(N = n, d = dim, kernel = lambda x: x * (x - 1) + 1 / 6, coord_weights = coord_weights) # search for a lattice vector with low wssd\n", + "time_end = time()\n", + "print(\"Time taken for lattice vector wssd search: \", time_end - time_start)\n", + "print(\"Searched lattice vector: \", searched_lattice_vector)" + ] + }, + { + "cell_type": "markdown", + "id": "9efeb0fa", + "metadata": {}, + "source": [ + "#### Kronecker" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "09388fbc", + "metadata": {}, + "outputs": [], + "source": [ + "from qmcpy.discrete_distribution.kronecker.kronecker_search_methods import kronecker_search_march_2026\n", + "\n", + "searchsize = 25 # the time cost is O(dim * N * searchsize^2), so searchsize should be chosen with care. The largest I have run was in MATLAB with searchsize = 300, N = 2^20, d = 100, which took about 24 hours \n", + "\n", + "# note that the search requires that the sample weights be w_n = n, so they are not customizable\n", + "\n", + "time_start = time()\n", + "searched_kron_vector = kronecker_search_march_2026(N = n, dMax = dim, kernel = lambda x: x * (x - 1) + 1 / 6, searchsize = searchsize, coord_weights = coord_weights) # search for a Kronecker vector with low wssd\n", + "time_end = time()\n", + "\n", + "print(\"Time taken for Kronecker vector wssd search: \", time_end - time_start)\n", + "print(\"Searched Kronecker vector: \", searched_kron_vector)" + ] + }, + { + "cell_type": "markdown", + "id": "26a634f7", + "metadata": {}, + "source": [ + "## Plotting" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9f66d72b", + "metadata": {}, + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "qmcpy\\discrete_distribution\\lattice\\generating_vectors\\kuo.lattice-39102-1024-1048576.3600.txt not found.", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mFileNotFoundError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[7]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m lat1 = Lattice(dimension=dim, order=\u001b[33m\"\u001b[39m\u001b[33mRADICAL_INVERSE\u001b[39m\u001b[33m\"\u001b[39m, seed=\u001b[32m12\u001b[39m, generating_vector=\u001b[43mnp\u001b[49m\u001b[43m.\u001b[49m\u001b[43mloadtxt\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mqmcpy\u001b[39;49m\u001b[33;43m\\\u001b[39;49m\u001b[33;43mdiscrete_distribution\u001b[39;49m\u001b[33;43m\\\u001b[39;49m\u001b[33;43mlattice\u001b[39;49m\u001b[33;43m\\\u001b[39;49m\u001b[33;43mgenerating_vectors\u001b[39;49m\u001b[33;43m\\\u001b[39;49m\u001b[33;43mkuo.lattice-39102-1024-1048576.3600.txt\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m, m_max=\u001b[32m20\u001b[39m) \u001b[38;5;66;03m# initialize a lattice with the generating vector of all 1s\u001b[39;00m\n\u001b[32m 2\u001b[39m lat_discs1 = lat1.expected_squared_periodic_discrepancies(n_max=n, coord_weights=coord_weights)\n\u001b[32m 5\u001b[39m lat2 = Lattice(dimension=dim, order=\u001b[33m\"\u001b[39m\u001b[33mRADICAL_INVERSE\u001b[39m\u001b[33m\"\u001b[39m, seed=\u001b[32m12\u001b[39m, generating_vector=np.uint64(searched_lattice_vector), m_max=\u001b[32m20\u001b[39m) \u001b[38;5;66;03m# initialize a lattice with the searched lattice vector\u001b[39;00m\n", + "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\headw\\miniconda3\\envs\\qmcpy\\Lib\\site-packages\\numpy\\lib\\_npyio_impl.py:1397\u001b[39m, in \u001b[36mloadtxt\u001b[39m\u001b[34m(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin, encoding, max_rows, quotechar, like)\u001b[39m\n\u001b[32m 1394\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(delimiter, \u001b[38;5;28mbytes\u001b[39m):\n\u001b[32m 1395\u001b[39m delimiter = delimiter.decode(\u001b[33m'\u001b[39m\u001b[33mlatin1\u001b[39m\u001b[33m'\u001b[39m)\n\u001b[32m-> \u001b[39m\u001b[32m1397\u001b[39m arr = \u001b[43m_read\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomment\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcomment\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdelimiter\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdelimiter\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1398\u001b[39m \u001b[43m \u001b[49m\u001b[43mconverters\u001b[49m\u001b[43m=\u001b[49m\u001b[43mconverters\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mskiplines\u001b[49m\u001b[43m=\u001b[49m\u001b[43mskiprows\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43musecols\u001b[49m\u001b[43m=\u001b[49m\u001b[43musecols\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1399\u001b[39m \u001b[43m \u001b[49m\u001b[43munpack\u001b[49m\u001b[43m=\u001b[49m\u001b[43munpack\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mndmin\u001b[49m\u001b[43m=\u001b[49m\u001b[43mndmin\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m=\u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1400\u001b[39m \u001b[43m \u001b[49m\u001b[43mmax_rows\u001b[49m\u001b[43m=\u001b[49m\u001b[43mmax_rows\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mquote\u001b[49m\u001b[43m=\u001b[49m\u001b[43mquotechar\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 1402\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m arr\n", + "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\headw\\miniconda3\\envs\\qmcpy\\Lib\\site-packages\\numpy\\lib\\_npyio_impl.py:1024\u001b[39m, in \u001b[36m_read\u001b[39m\u001b[34m(fname, delimiter, comment, quote, imaginary_unit, usecols, skiplines, max_rows, converters, ndmin, unpack, dtype, encoding)\u001b[39m\n\u001b[32m 1022\u001b[39m fname = os.fspath(fname)\n\u001b[32m 1023\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(fname, \u001b[38;5;28mstr\u001b[39m):\n\u001b[32m-> \u001b[39m\u001b[32m1024\u001b[39m fh = \u001b[43mnp\u001b[49m\u001b[43m.\u001b[49m\u001b[43mlib\u001b[49m\u001b[43m.\u001b[49m\u001b[43m_datasource\u001b[49m\u001b[43m.\u001b[49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mrt\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m=\u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 1025\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m encoding \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m 1026\u001b[39m encoding = \u001b[38;5;28mgetattr\u001b[39m(fh, \u001b[33m'\u001b[39m\u001b[33mencoding\u001b[39m\u001b[33m'\u001b[39m, \u001b[33m'\u001b[39m\u001b[33mlatin1\u001b[39m\u001b[33m'\u001b[39m)\n", + "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\headw\\miniconda3\\envs\\qmcpy\\Lib\\site-packages\\numpy\\lib\\_datasource.py:192\u001b[39m, in \u001b[36mopen\u001b[39m\u001b[34m(path, mode, destpath, encoding, newline)\u001b[39m\n\u001b[32m 155\u001b[39m \u001b[38;5;250m\u001b[39m\u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m 156\u001b[39m \u001b[33;03mOpen `path` with `mode` and return the file object.\u001b[39;00m\n\u001b[32m 157\u001b[39m \n\u001b[32m (...)\u001b[39m\u001b[32m 188\u001b[39m \n\u001b[32m 189\u001b[39m \u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m 191\u001b[39m ds = DataSource(destpath)\n\u001b[32m--> \u001b[39m\u001b[32m192\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mds\u001b[49m\u001b[43m.\u001b[49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpath\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m=\u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnewline\u001b[49m\u001b[43m=\u001b[49m\u001b[43mnewline\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\headw\\miniconda3\\envs\\qmcpy\\Lib\\site-packages\\numpy\\lib\\_datasource.py:529\u001b[39m, in \u001b[36mDataSource.open\u001b[39m\u001b[34m(self, path, mode, encoding, newline)\u001b[39m\n\u001b[32m 526\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m _file_openers[ext](found, mode=mode,\n\u001b[32m 527\u001b[39m encoding=encoding, newline=newline)\n\u001b[32m 528\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m529\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mFileNotFoundError\u001b[39;00m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpath\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m not found.\u001b[39m\u001b[33m\"\u001b[39m)\n", + "\u001b[31mFileNotFoundError\u001b[39m: qmcpy\\discrete_distribution\\lattice\\generating_vectors\\kuo.lattice-39102-1024-1048576.3600.txt not found." + ] + } + ], + "source": [ + "\n", + "# lat1 = Lattice(dimension=dim, order=\"RADICAL_INVERSE\", seed=12, generating_vector=np.loadtxt(\"qmcpy\\discrete_distribution\\lattice\\generating_vectors\\kuo.lattice-39102-1024-1048576.3600.txt\"), m_max=20) # initialize a lattice with the generating vector of all 1s\n", + "# lat_discs1 = lat1.expected_squared_periodic_discrepancies(n_max=n, coord_weights=coord_weights)\n", + "\n", + "\n", + "lat2 = Lattice(dimension=dim, order=\"RADICAL_INVERSE\", seed=12, generating_vector=np.uint64(searched_lattice_vector), m_max=20) # initialize a lattice with the searched lattice vector\n", + "lat_discs2 = lat2.expected_squared_periodic_discrepancies(n_max=n, coord_weights=coord_weights)\n", + "\n", + "\n", + "fig, ax = pyplot.subplots(nrows=1, ncols=1, figsize=(12,10))\n", + "ax.plot(np.arange(1, n+1), np.sqrt(lat_discs), label=\"Old Lattice Discrepancy\")\n", + "ax.plot(np.arange(1, n+1), np.sqrt(lat_discs2), label=\"Searched Lattice Discrepancy\")\n", + "# ax.plot(np.arange(1, n+1), np.sqrt(kron_discs), label=\"Kronecker Discrepancy\")\n", + "ax.set_xscale(\"log\")\n", + "ax.set_yscale(\"log\")\n", + "ax.legend()\n", + "ax.set_xlabel(\"Sample Size\")\n", + "ax.set_ylabel(\"Periodic Discrepancy\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "qmcpy", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py index e4ed6ad2e..bd6108b95 100644 --- a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py +++ b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py @@ -7,11 +7,12 @@ # I can't find where Jimmy's code for the kronecker search from SURE 2025 is, so I've temporarily put my method here -def kronecker_search_march_2026(N, dMax, searchsize, coord_weights=None, gen_vec_init=None): +def kronecker_search_march_2026(N, dMax, searchsize, kernel=None, coord_weights=None, gen_vec_init=None): """ Args: N (int): The maximum sample size to be searched over. dMax (int): The maximum dimension for which to find the generating vector. + kernel (function): The kernel function to use in the search. searchsize (int): The number of primes to search over for each component of the generating vector. coord_weights (array-like, optional): An array of coordinate weights to use in the search. If None, weights are set to j^(-2). gen_vec_init (array-like, optional): The initial value for the generating vector. If None, the golden ratio is used for the first component. Note that gen_vec_init is taken mod 1. @@ -41,7 +42,8 @@ def kronecker_search_march_2026(N, dMax, searchsize, coord_weights=None, gen_vec # the quadratic Bernoulli polynomial - bernoulli2 = lambda t: t * (t - 1) + 1/6 + if kernel is None: + kernel = lambda t: t * (t - 1) + 1/6 # define coordinate weights if not provided, default to j^(-2) if coord_weights is None: @@ -84,7 +86,7 @@ def kronecker_search_march_2026(N, dMax, searchsize, coord_weights=None, gen_vec # setting up some useful variables for the search coeff = np.zeros((dMax - 1, 4)) # stores the coefficients of the linear transformation at each dimension t = gen_vec[0] * np.arange(1, N) % 1 # t vector is the vector of coordinates generated for the first dimension - kPrev = 1 + coord_weights[0] * bernoulli2(t) # gets the k vector for the first dimension, which is used in the wssd calculation and updated each dimension of the search. + kPrev = 1 + coord_weights[0] * kernel(t) # gets the k vector for the first dimension, which is used in the wssd calculation and updated each dimension of the search. # The k vector is Ktilde(x_i) for i = 1,...,N-1, where Ktilde is the kernel and x_i are the points generated by the gen_vec vector, up to the current dimension. # the main search loop @@ -118,8 +120,8 @@ def kronecker_search_march_2026(N, dMax, searchsize, coord_weights=None, gen_vec gen_vec_dim2 = (p1 * gen_vec[dim - 1] + b2) / (p2 * gen_vec[dim - 1] + d2) # the other candidate from the linear transformation t1 = (gen_vec_dim1 * np.arange(1, N)) - np.floor(gen_vec_dim1 * np.arange(1, N)) # vector of coordinates generated by this candidate component t2 = (gen_vec_dim2 * np.arange(1, N)) - np.floor(gen_vec_dim2 * np.arange(1, N)) - k_vector1 = kPrev * (1 + bernoulli2(t1) * coord_weights[dim]) # get the k vector for this candidate component, used in the wssd calculation - k_vector2 = kPrev * (1 + bernoulli2(t2) * coord_weights[dim]) + k_vector1 = kPrev * (1 + kernel(t1) * coord_weights[dim]) # get the k vector for this candidate component, used in the wssd calculation + k_vector2 = kPrev * (1 + kernel(t2) * coord_weights[dim]) wssd1 = np.dot(freq, k_vector1) wssd2 = np.dot(freq, k_vector2) @@ -154,7 +156,7 @@ def kronecker_search_march_2026(N, dMax, searchsize, coord_weights=None, gen_vec # Adapted from Jimmy's code for calculating the discrepancies for n = 1,...,N from SURE 2025 n_array = np.arange(1, N + 1) - k_tilde = lambda x, coord_weight: np.prod(1 + bernoulli2(x) * coord_weight, axis=1) + k_tilde = lambda x, coord_weight: np.prod(1 + kernel(x) * coord_weight, axis=1) k_tilde_terms = k_tilde(gen_vec * np.arange(N).reshape((N, 1)) - np.floor(gen_vec * np.arange(N).reshape((N, 1))), coord_weights) left_sum = np.cumsum(k_tilde_terms[1:]) * n_array[1:] @@ -169,9 +171,9 @@ def kronecker_search_march_2026(N, dMax, searchsize, coord_weights=None, gen_vec # quick and dirty test -start = time.time() -a, wssd, _, _ = kronecker_search_march_2026(2**10, 20, 50) -print(a) -print(wssd) -end = time.time() -print("Run time (seconds): ", end - start) \ No newline at end of file +# start = time.time() +# a, wssd, _, _ = kronecker_search_march_2026(2**10, 20, 50) +# print(a) +# print(wssd) +# end = time.time() +# print("Run time (seconds): ", end - start) \ No newline at end of file diff --git a/qmcpy/discrete_distribution/lattice/generating_vectors/kuo.lattice-39102-1024-1048576.3600.txt b/qmcpy/discrete_distribution/lattice/generating_vectors/kuo.lattice-39102-1024-1048576.3600.txt new file mode 100644 index 000000000..e147de362 --- /dev/null +++ b/qmcpy/discrete_distribution/lattice/generating_vectors/kuo.lattice-39102-1024-1048576.3600.txt @@ -0,0 +1,3600 @@ + 1 1 + 2 433461 + 3 472323 + 4 440637 + 5 231645 + 6 275007 + 7 113895 + 8 331051 + 9 283181 + 10 384579 + 11 288619 + 12 306439 + 13 309943 + 14 452525 + 15 319841 + 16 217509 + 17 84615 + 18 111067 + 19 374949 + 20 315005 + 21 369473 + 22 95709 + 23 155273 + 24 215539 + 25 486377 + 26 107399 + 27 203705 + 28 168683 + 29 154561 + 30 254753 + 31 148129 + 32 117715 + 33 455263 + 34 64579 + 35 450769 + 36 169605 + 37 135865 + 38 239917 + 39 62503 + 40 381173 + 41 417239 + 42 354955 + 43 389279 + 44 457757 + 45 224125 + 46 137945 + 47 140507 + 48 402845 + 49 50989 + 50 42635 + 51 399209 + 52 455121 + 53 487667 + 54 474267 + 55 372965 + 56 429179 + 57 81069 + 58 30905 + 59 509195 + 60 160335 + 61 323865 + 62 153271 + 63 236745 + 64 270649 + 65 465083 + 66 317775 + 67 247885 + 68 99677 + 69 437389 + 70 211881 + 71 289405 + 72 215751 + 73 517253 + 74 240467 + 75 492367 + 76 512859 + 77 37555 + 78 427223 + 79 202991 + 80 329235 + 81 257587 + 82 508363 + 83 99177 + 84 164915 + 85 302617 + 86 216133 + 87 487081 + 88 242089 + 89 51161 + 90 76347 + 91 456301 + 92 198763 + 93 32097 + 94 495921 + 95 205443 + 96 144227 + 97 73919 + 98 468177 + 99 222321 + 100 126651 + 101 257177 + 102 507247 + 103 185133 + 104 358989 + 105 246357 + 106 40767 + 107 515589 + 108 269667 + 109 76563 + 110 365147 + 111 451759 + 112 194315 + 113 118517 + 114 373699 + 115 148541 + 116 343011 + 117 456827 + 118 71289 + 119 277797 + 120 48513 + 121 197421 + 122 362433 + 123 195259 + 124 207401 + 125 170191 + 126 338789 + 127 482571 + 128 266525 + 129 69419 + 130 241555 + 131 416591 + 132 360849 + 133 295805 + 134 152147 + 135 346543 + 136 316837 + 137 210915 + 138 469327 + 139 487023 + 140 319673 + 141 89575 + 142 360997 + 143 331655 + 144 44915 + 145 476083 + 146 422325 + 147 34159 + 148 52753 + 149 205401 + 150 276589 + 151 93013 + 152 124439 + 153 496919 + 154 119415 + 155 511763 + 156 294163 + 157 444073 + 158 235361 + 159 402073 + 160 139909 + 161 143071 + 162 59965 + 163 85083 + 164 129429 + 165 317033 + 166 170287 + 167 148793 + 168 405693 + 169 96829 + 170 469427 + 171 470965 + 172 88099 + 173 320275 + 174 331551 + 175 175463 + 176 17423 + 177 446309 + 178 72755 + 179 46205 + 180 332519 + 181 500255 + 182 162175 + 183 487837 + 184 133745 + 185 436083 + 186 219017 + 187 158915 + 188 361851 + 189 247937 + 190 411433 + 191 303391 + 192 272753 + 193 53983 + 194 151415 + 195 403435 + 196 481205 + 197 514165 + 198 321603 + 199 396159 + 200 267799 + 201 50329 + 202 347387 + 203 46559 + 204 117173 + 205 424339 + 206 41489 + 207 35595 + 208 140619 + 209 11279 + 210 344807 + 211 94057 + 212 68635 + 213 490695 + 214 43043 + 215 354601 + 216 168483 + 217 279267 + 218 66911 + 219 427093 + 220 253723 + 221 191505 + 222 434739 + 223 103101 + 224 124129 + 225 224295 + 226 390073 + 227 518925 + 228 491129 + 229 157591 + 230 206423 + 231 90293 + 232 324625 + 233 100193 + 234 282347 + 235 257207 + 236 141799 + 237 135649 + 238 462511 + 239 170029 + 240 513239 + 241 66777 + 242 488385 + 243 412045 + 244 219083 + 245 489019 + 246 487621 + 247 347081 + 248 437573 + 249 322099 + 250 307073 + 251 222681 + 252 358217 + 253 84319 + 254 361361 + 255 269373 + 256 147145 + 257 203989 + 258 126351 + 259 435147 + 260 29169 + 261 61103 + 262 311067 + 263 408271 + 264 462039 + 265 195357 + 266 190923 + 267 186169 + 268 148501 + 269 467997 + 270 372657 + 271 155507 + 272 64871 + 273 125217 + 274 316709 + 275 370231 + 276 243115 + 277 286493 + 278 92575 + 279 213585 + 280 316021 + 281 313543 + 282 480199 + 283 106655 + 284 271907 + 285 16209 + 286 413649 + 287 185457 + 288 162983 + 289 14303 + 290 259101 + 291 121619 + 292 389819 + 293 134157 + 294 48849 + 295 382629 + 296 170909 + 297 306225 + 298 395237 + 299 210789 + 300 127813 + 301 125121 + 302 390641 + 303 428365 + 304 310869 + 305 438045 + 306 26529 + 307 343853 + 308 255887 + 309 461505 + 310 241847 + 311 33861 + 312 12599 + 313 164383 + 314 87931 + 315 9347 + 316 24939 + 317 485285 + 318 183435 + 319 102949 + 320 200805 + 321 415461 + 322 153437 + 323 452151 + 324 445457 + 325 289101 + 326 248017 + 327 221047 + 328 464301 + 329 485507 + 330 481497 + 331 430027 + 332 115037 + 333 54075 + 334 91895 + 335 345643 + 336 253145 + 337 218193 + 338 300947 + 339 383837 + 340 513633 + 341 225675 + 342 167635 + 343 304539 + 344 437815 + 345 473515 + 346 354269 + 347 245253 + 348 291875 + 349 313477 + 350 57205 + 351 123333 + 352 500865 + 353 268261 + 354 484331 + 355 429677 + 356 373295 + 357 291785 + 358 243523 + 359 249637 + 360 482737 + 361 509401 + 362 294269 + 363 56715 + 364 248505 + 365 177377 + 366 395169 + 367 409837 + 368 34391 + 369 469059 + 370 300247 + 371 134489 + 372 164179 + 373 235077 + 374 510961 + 375 25391 + 376 208409 + 377 296813 + 378 258723 + 379 177087 + 380 325327 + 381 371937 + 382 294447 + 383 50271 + 384 278713 + 385 345457 + 386 30337 + 387 364233 + 388 479191 + 389 66371 + 390 81221 + 391 34209 + 392 484427 + 393 399909 + 394 238557 + 395 480127 + 396 380505 + 397 292199 + 398 313283 + 399 88847 + 400 490345 + 401 419871 + 402 387867 + 403 62849 + 404 31589 + 405 91805 + 406 154145 + 407 297741 + 408 370407 + 409 234141 + 410 366563 + 411 405097 + 412 208315 + 413 294493 + 414 519087 + 415 394417 + 416 411881 + 417 429791 + 418 125773 + 419 291995 + 420 166395 + 421 461237 + 422 43911 + 423 281157 + 424 469165 + 425 391087 + 426 382775 + 427 437269 + 428 362099 + 429 423013 + 430 206243 + 431 286807 + 432 311007 + 433 404535 + 434 410811 + 435 400211 + 436 175649 + 437 128559 + 438 124811 + 439 346653 + 440 373259 + 441 49739 + 442 94359 + 443 377107 + 444 373581 + 445 170095 + 446 246803 + 447 418191 + 448 83295 + 449 140779 + 450 117633 + 451 282189 + 452 372109 + 453 486177 + 454 177911 + 455 441709 + 456 192553 + 457 305951 + 458 162725 + 459 483863 + 460 479617 + 461 499165 + 462 126181 + 463 265325 + 464 396969 + 465 512907 + 466 373599 + 467 18625 + 468 66989 + 469 108669 + 470 112589 + 471 122099 + 472 504083 + 473 71041 + 474 406021 + 475 385635 + 476 276839 + 477 217757 + 478 439277 + 479 362017 + 480 345049 + 481 234923 + 482 397095 + 483 336431 + 484 443021 + 485 391759 + 486 346845 + 487 469721 + 488 453857 + 489 448931 + 490 59413 + 491 233559 + 492 514953 + 493 320345 + 494 281269 + 495 108107 + 496 333289 + 497 514597 + 498 266977 + 499 99997 + 500 50065 + 501 318899 + 502 404247 + 503 461993 + 504 60287 + 505 42899 + 506 29189 + 507 189497 + 508 416729 + 509 377227 + 510 465593 + 511 501653 + 512 72107 + 513 18995 + 514 460955 + 515 403389 + 516 230609 + 517 394967 + 518 136339 + 519 297807 + 520 282461 + 521 421651 + 522 361187 + 523 199445 + 524 80923 + 525 105619 + 526 206569 + 527 355139 + 528 36789 + 529 238729 + 530 100485 + 531 98591 + 532 325307 + 533 173593 + 534 303797 + 535 185213 + 536 515457 + 537 509447 + 538 328855 + 539 214929 + 540 214035 + 541 94579 + 542 248333 + 543 492899 + 544 460945 + 545 369889 + 546 278945 + 547 94501 + 548 170343 + 549 15859 + 550 368815 + 551 108893 + 552 217027 + 553 398577 + 554 187159 + 555 70969 + 556 123219 + 557 287695 + 558 249065 + 559 364893 + 560 237141 + 561 403087 + 562 478073 + 563 280531 + 564 222275 + 565 211119 + 566 197581 + 567 302785 + 568 473935 + 569 129531 + 570 173967 + 571 340645 + 572 516921 + 573 245005 + 574 370297 + 575 73813 + 576 374357 + 577 255307 + 578 404087 + 579 187795 + 580 111217 + 581 147649 + 582 353939 + 583 442559 + 584 77387 + 585 230563 + 586 258349 + 587 403663 + 588 138225 + 589 25653 + 590 256117 + 591 69813 + 592 167547 + 593 438703 + 594 495015 + 595 334797 + 596 396321 + 597 297241 + 598 457967 + 599 418131 + 600 331833 + 601 176757 + 602 356465 + 603 24227 + 604 283867 + 605 430879 + 606 39703 + 607 458123 + 608 405715 + 609 282359 + 610 372255 + 611 50235 + 612 264865 + 613 399103 + 614 138735 + 615 86267 + 616 175627 + 617 24763 + 618 352057 + 619 287331 + 620 221351 + 621 381759 + 622 476333 + 623 347289 + 624 239055 + 625 504775 + 626 305311 + 627 253153 + 628 401303 + 629 20593 + 630 62379 + 631 303677 + 632 202109 + 633 480745 + 634 126901 + 635 100303 + 636 187127 + 637 236673 + 638 141339 + 639 454561 + 640 290519 + 641 247511 + 642 165135 + 643 94737 + 644 85589 + 645 313557 + 646 272837 + 647 322277 + 648 513421 + 649 172849 + 650 430293 + 651 155067 + 652 172489 + 653 456573 + 654 313105 + 655 224501 + 656 422939 + 657 207587 + 658 502081 + 659 436181 + 660 365633 + 661 116013 + 662 52795 + 663 26557 + 664 213893 + 665 206483 + 666 37275 + 667 430039 + 668 158353 + 669 285479 + 670 291651 + 671 346139 + 672 64241 + 673 427035 + 674 72849 + 675 508207 + 676 511519 + 677 504699 + 678 78261 + 679 230337 + 680 53643 + 681 98747 + 682 430413 + 683 416047 + 684 164245 + 685 84875 + 686 156211 + 687 178043 + 688 141009 + 689 276243 + 690 346907 + 691 42707 + 692 24419 + 693 16967 + 694 151473 + 695 79031 + 696 235379 + 697 148569 + 698 513435 + 699 146975 + 700 293821 + 701 195399 + 702 188651 + 703 320793 + 704 71863 + 705 27245 + 706 281881 + 707 49773 + 708 516989 + 709 154253 + 710 289967 + 711 499997 + 712 39207 + 713 81137 + 714 235161 + 715 479041 + 716 517621 + 717 214559 + 718 164367 + 719 334767 + 720 431927 + 721 106313 + 722 510075 + 723 304857 + 724 62287 + 725 394701 + 726 308647 + 727 255633 + 728 437659 + 729 298929 + 730 91823 + 731 189247 + 732 247971 + 733 211063 + 734 303215 + 735 328439 + 736 318917 + 737 158625 + 738 447333 + 739 124767 + 740 517517 + 741 46099 + 742 254511 + 743 294313 + 744 187803 + 745 473899 + 746 11819 + 747 506245 + 748 192589 + 749 368859 + 750 350605 + 751 415255 + 752 39181 + 753 411749 + 754 177271 + 755 233427 + 756 16821 + 757 355791 + 758 407091 + 759 312789 + 760 95021 + 761 370329 + 762 351893 + 763 505009 + 764 19689 + 765 464089 + 766 482779 + 767 116303 + 768 374065 + 769 74003 + 770 99761 + 771 51707 + 772 104557 + 773 17787 + 774 430611 + 775 330017 + 776 444479 + 777 298131 + 778 435407 + 779 88389 + 780 176061 + 781 135229 + 782 221519 + 783 340455 + 784 378393 + 785 65011 + 786 57481 + 787 482691 + 788 223685 + 789 115443 + 790 502683 + 791 49337 + 792 25875 + 793 334867 + 794 178313 + 795 483205 + 796 175287 + 797 322337 + 798 244177 + 799 291085 + 800 490311 + 801 364623 + 802 517571 + 803 153095 + 804 120473 + 805 180439 + 806 115317 + 807 370629 + 808 517663 + 809 118145 + 810 277907 + 811 46235 + 812 390437 + 813 156061 + 814 332567 + 815 24491 + 816 252843 + 817 153869 + 818 379225 + 819 30109 + 820 156033 + 821 267977 + 822 303757 + 823 407169 + 824 436025 + 825 379923 + 826 338113 + 827 351829 + 828 382195 + 829 483031 + 830 406395 + 831 241431 + 832 468427 + 833 514249 + 834 243769 + 835 404843 + 836 268163 + 837 379297 + 838 243101 + 839 162655 + 840 405153 + 841 501793 + 842 427751 + 843 317483 + 844 96851 + 845 487175 + 846 151401 + 847 145133 + 848 329383 + 849 400595 + 850 211209 + 851 133171 + 852 494221 + 853 362563 + 854 477461 + 855 162515 + 856 210755 + 857 480485 + 858 300259 + 859 198249 + 860 381723 + 861 117907 + 862 187687 + 863 71143 + 864 459635 + 865 341411 + 866 439165 + 867 344359 + 868 347985 + 869 362385 + 870 176071 + 871 173689 + 872 504451 + 873 230829 + 874 396623 + 875 419957 + 876 485813 + 877 312201 + 878 500115 + 879 165017 + 880 206545 + 881 357523 + 882 253397 + 883 318417 + 884 416023 + 885 371495 + 886 297929 + 887 264159 + 888 67159 + 889 120943 + 890 306665 + 891 188337 + 892 164981 + 893 347009 + 894 205775 + 895 223943 + 896 111329 + 897 290219 + 898 138369 + 899 455737 + 900 110273 + 901 194509 + 902 415341 + 903 470447 + 904 417011 + 905 421243 + 906 35535 + 907 17841 + 908 463933 + 909 180883 + 910 331369 + 911 364643 + 912 504703 + 913 239729 + 914 197723 + 915 138433 + 916 290477 + 917 201333 + 918 460671 + 919 509791 + 920 317873 + 921 345267 + 922 397421 + 923 206065 + 924 54539 + 925 71835 + 926 225869 + 927 505183 + 928 192799 + 929 484313 + 930 84893 + 931 118479 + 932 240513 + 933 401507 + 934 24863 + 935 18047 + 936 519527 + 937 470245 + 938 100695 + 939 194425 + 940 414047 + 941 33543 + 942 394777 + 943 331667 + 944 512151 + 945 154321 + 946 96999 + 947 104373 + 948 38113 + 949 377211 + 950 463851 + 951 184585 + 952 500875 + 953 15539 + 954 27407 + 955 268653 + 956 336239 + 957 294389 + 958 70751 + 959 482707 + 960 66945 + 961 106359 + 962 341489 + 963 58681 + 964 465339 + 965 41767 + 966 199161 + 967 493691 + 968 355203 + 969 341127 + 970 417391 + 971 484525 + 972 86549 + 973 252799 + 974 110425 + 975 445399 + 976 386965 + 977 513851 + 978 335759 + 979 422227 + 980 456203 + 981 250281 + 982 321675 + 983 299981 + 984 118155 + 985 57969 + 986 96301 + 987 117163 + 988 272689 + 989 86979 + 990 460841 + 991 204045 + 992 109805 + 993 49557 + 994 379063 + 995 514615 + 996 438951 + 997 18645 + 998 394403 + 999 456919 + 1000 326795 + 1001 250261 + 1002 459479 + 1003 46889 + 1004 95415 + 1005 145345 + 1006 480867 + 1007 166075 + 1008 417933 + 1009 89151 + 1010 502677 + 1011 508409 + 1012 70755 + 1013 66599 + 1014 257447 + 1015 100991 + 1016 281541 + 1017 295841 + 1018 422201 + 1019 115989 + 1020 407313 + 1021 425123 + 1022 80879 + 1023 19759 + 1024 79309 + 1025 93399 + 1026 371821 + 1027 324715 + 1028 463839 + 1029 211299 + 1030 359531 + 1031 94133 + 1032 358481 + 1033 423655 + 1034 340519 + 1035 267687 + 1036 42969 + 1037 191949 + 1038 238493 + 1039 425069 + 1040 183835 + 1041 247423 + 1042 39225 + 1043 419899 + 1044 28407 + 1045 145197 + 1046 515807 + 1047 402991 + 1048 357163 + 1049 25383 + 1050 268713 + 1051 375883 + 1052 301617 + 1053 503029 + 1054 485349 + 1055 60045 + 1056 361791 + 1057 125539 + 1058 48941 + 1059 69753 + 1060 159979 + 1061 401225 + 1062 437985 + 1063 282061 + 1064 502499 + 1065 371681 + 1066 375217 + 1067 489413 + 1068 378591 + 1069 162751 + 1070 345321 + 1071 254151 + 1072 158663 + 1073 95971 + 1074 183677 + 1075 249743 + 1076 479327 + 1077 264239 + 1078 301659 + 1079 321669 + 1080 464621 + 1081 57577 + 1082 321509 + 1083 87173 + 1084 86497 + 1085 145019 + 1086 379123 + 1087 85905 + 1088 370635 + 1089 83419 + 1090 517599 + 1091 166785 + 1092 194491 + 1093 182403 + 1094 147591 + 1095 165753 + 1096 485537 + 1097 177099 + 1098 221093 + 1099 174005 + 1100 77093 + 1101 278663 + 1102 133471 + 1103 27527 + 1104 453213 + 1105 119105 + 1106 364155 + 1107 198895 + 1108 215203 + 1109 421931 + 1110 202861 + 1111 231951 + 1112 289321 + 1113 110197 + 1114 315897 + 1115 229743 + 1116 404361 + 1117 417471 + 1118 26861 + 1119 503919 + 1120 381599 + 1121 312865 + 1122 169447 + 1123 306075 + 1124 337525 + 1125 176415 + 1126 62797 + 1127 99445 + 1128 428501 + 1129 63397 + 1130 353419 + 1131 394393 + 1132 424005 + 1133 41557 + 1134 312025 + 1135 146549 + 1136 197179 + 1137 388207 + 1138 444833 + 1139 259973 + 1140 456513 + 1141 88651 + 1142 367565 + 1143 477467 + 1144 100473 + 1145 300639 + 1146 84367 + 1147 274251 + 1148 367269 + 1149 449867 + 1150 290281 + 1151 74541 + 1152 267371 + 1153 166855 + 1154 426959 + 1155 204633 + 1156 198319 + 1157 308923 + 1158 443275 + 1159 267219 + 1160 298589 + 1161 481703 + 1162 446549 + 1163 336791 + 1164 508297 + 1165 430417 + 1166 156655 + 1167 285515 + 1168 313627 + 1169 68307 + 1170 362321 + 1171 410173 + 1172 78463 + 1173 259017 + 1174 256295 + 1175 78103 + 1176 278921 + 1177 33119 + 1178 387205 + 1179 468785 + 1180 397651 + 1181 37229 + 1182 119321 + 1183 390201 + 1184 382321 + 1185 395457 + 1186 229655 + 1187 82917 + 1188 133999 + 1189 94071 + 1190 313245 + 1191 105391 + 1192 128301 + 1193 30777 + 1194 265711 + 1195 317151 + 1196 479339 + 1197 259665 + 1198 159193 + 1199 294025 + 1200 396187 + 1201 136409 + 1202 183915 + 1203 335771 + 1204 317135 + 1205 127939 + 1206 398613 + 1207 516753 + 1208 123877 + 1209 282095 + 1210 162215 + 1211 451409 + 1212 64451 + 1213 313625 + 1214 326197 + 1215 36007 + 1216 504363 + 1217 362061 + 1218 518317 + 1219 278021 + 1220 89413 + 1221 485989 + 1222 20863 + 1223 181111 + 1224 154031 + 1225 476225 + 1226 404279 + 1227 426387 + 1228 474563 + 1229 317929 + 1230 448879 + 1231 412887 + 1232 177023 + 1233 278861 + 1234 236689 + 1235 129883 + 1236 517163 + 1237 270427 + 1238 442705 + 1239 470753 + 1240 396939 + 1241 113447 + 1242 83331 + 1243 50849 + 1244 57567 + 1245 246295 + 1246 313733 + 1247 176291 + 1248 444167 + 1249 320647 + 1250 180915 + 1251 287359 + 1252 136381 + 1253 100293 + 1254 485065 + 1255 506713 + 1256 46801 + 1257 462909 + 1258 63089 + 1259 165195 + 1260 51325 + 1261 455797 + 1262 35207 + 1263 366349 + 1264 259607 + 1265 420031 + 1266 58205 + 1267 210677 + 1268 351911 + 1269 403851 + 1270 497623 + 1271 48053 + 1272 389955 + 1273 258437 + 1274 86615 + 1275 34883 + 1276 97931 + 1277 17075 + 1278 418973 + 1279 512649 + 1280 141867 + 1281 373397 + 1282 516589 + 1283 333667 + 1284 66333 + 1285 323297 + 1286 400151 + 1287 270223 + 1288 54245 + 1289 337247 + 1290 199951 + 1291 327049 + 1292 108165 + 1293 502303 + 1294 390471 + 1295 484677 + 1296 95171 + 1297 258673 + 1298 434929 + 1299 479469 + 1300 129631 + 1301 217999 + 1302 213621 + 1303 318863 + 1304 302869 + 1305 266719 + 1306 343821 + 1307 267753 + 1308 143883 + 1309 486895 + 1310 14831 + 1311 402139 + 1312 356721 + 1313 314247 + 1314 446037 + 1315 201073 + 1316 75253 + 1317 44971 + 1318 502495 + 1319 519285 + 1320 508497 + 1321 465645 + 1322 83463 + 1323 371533 + 1324 197701 + 1325 16063 + 1326 271029 + 1327 426577 + 1328 198169 + 1329 302887 + 1330 424477 + 1331 374305 + 1332 304883 + 1333 453757 + 1334 378101 + 1335 373791 + 1336 106975 + 1337 229097 + 1338 364877 + 1339 33651 + 1340 132631 + 1341 79935 + 1342 253033 + 1343 146639 + 1344 68661 + 1345 97971 + 1346 305463 + 1347 510179 + 1348 185641 + 1349 126625 + 1350 480693 + 1351 474305 + 1352 447351 + 1353 358491 + 1354 418877 + 1355 345519 + 1356 143413 + 1357 213525 + 1358 401231 + 1359 473811 + 1360 195141 + 1361 50339 + 1362 168779 + 1363 50667 + 1364 156497 + 1365 268231 + 1366 67021 + 1367 85909 + 1368 460853 + 1369 411245 + 1370 297417 + 1371 66715 + 1372 460833 + 1373 459345 + 1374 500509 + 1375 505751 + 1376 233645 + 1377 265691 + 1378 291067 + 1379 128905 + 1380 87715 + 1381 112689 + 1382 185809 + 1383 327119 + 1384 30325 + 1385 228471 + 1386 241773 + 1387 137025 + 1388 218003 + 1389 125263 + 1390 183205 + 1391 19129 + 1392 489035 + 1393 284805 + 1394 170113 + 1395 414309 + 1396 176297 + 1397 139845 + 1398 370641 + 1399 55833 + 1400 502757 + 1401 427851 + 1402 463461 + 1403 316819 + 1404 214511 + 1405 119133 + 1406 507485 + 1407 118277 + 1408 93103 + 1409 316367 + 1410 253767 + 1411 357899 + 1412 486693 + 1413 259725 + 1414 42441 + 1415 459279 + 1416 274319 + 1417 155997 + 1418 352479 + 1419 171687 + 1420 460123 + 1421 190189 + 1422 265459 + 1423 229143 + 1424 124969 + 1425 173619 + 1426 67247 + 1427 413803 + 1428 101269 + 1429 42027 + 1430 14285 + 1431 104369 + 1432 132117 + 1433 51269 + 1434 163165 + 1435 185305 + 1436 280141 + 1437 136287 + 1438 313299 + 1439 172383 + 1440 63587 + 1441 155805 + 1442 506429 + 1443 405639 + 1444 133591 + 1445 306049 + 1446 8941 + 1447 55565 + 1448 72585 + 1449 116657 + 1450 385409 + 1451 365855 + 1452 272119 + 1453 274331 + 1454 137085 + 1455 212165 + 1456 336001 + 1457 269075 + 1458 397577 + 1459 247151 + 1460 475961 + 1461 112771 + 1462 233639 + 1463 135537 + 1464 57513 + 1465 259493 + 1466 15567 + 1467 39883 + 1468 218153 + 1469 497389 + 1470 26117 + 1471 39479 + 1472 169703 + 1473 409895 + 1474 306975 + 1475 515513 + 1476 406423 + 1477 475945 + 1478 323835 + 1479 226089 + 1480 475815 + 1481 344717 + 1482 343669 + 1483 239315 + 1484 211951 + 1485 95141 + 1486 176279 + 1487 435955 + 1488 122363 + 1489 71517 + 1490 345183 + 1491 409811 + 1492 459829 + 1493 106357 + 1494 308503 + 1495 311933 + 1496 125293 + 1497 385239 + 1498 466545 + 1499 473593 + 1500 268943 + 1501 464291 + 1502 341545 + 1503 24791 + 1504 410715 + 1505 268839 + 1506 123253 + 1507 27215 + 1508 396199 + 1509 134843 + 1510 302243 + 1511 198619 + 1512 99727 + 1513 301447 + 1514 383343 + 1515 413265 + 1516 100185 + 1517 429073 + 1518 362891 + 1519 407501 + 1520 219567 + 1521 518301 + 1522 88859 + 1523 340927 + 1524 89687 + 1525 383409 + 1526 500497 + 1527 116199 + 1528 34183 + 1529 503195 + 1530 204867 + 1531 416039 + 1532 170871 + 1533 221553 + 1534 293655 + 1535 218211 + 1536 418449 + 1537 101721 + 1538 24369 + 1539 105283 + 1540 352387 + 1541 43559 + 1542 155195 + 1543 342367 + 1544 101877 + 1545 151023 + 1546 359291 + 1547 326803 + 1548 477275 + 1549 23849 + 1550 470813 + 1551 405957 + 1552 173861 + 1553 196037 + 1554 78485 + 1555 250665 + 1556 427427 + 1557 502897 + 1558 146673 + 1559 505957 + 1560 313449 + 1561 250029 + 1562 431583 + 1563 299881 + 1564 45107 + 1565 112987 + 1566 51661 + 1567 477383 + 1568 291569 + 1569 337295 + 1570 219997 + 1571 32405 + 1572 446279 + 1573 243295 + 1574 459527 + 1575 86883 + 1576 343159 + 1577 77871 + 1578 210553 + 1579 93569 + 1580 284259 + 1581 92133 + 1582 305657 + 1583 20293 + 1584 31819 + 1585 356399 + 1586 99925 + 1587 148867 + 1588 291141 + 1589 192731 + 1590 429285 + 1591 125997 + 1592 213453 + 1593 160091 + 1594 238677 + 1595 310903 + 1596 211683 + 1597 385579 + 1598 474543 + 1599 224015 + 1600 143223 + 1601 488261 + 1602 370643 + 1603 162029 + 1604 510083 + 1605 224393 + 1606 191587 + 1607 504219 + 1608 132271 + 1609 259495 + 1610 119291 + 1611 16971 + 1612 24409 + 1613 217967 + 1614 232143 + 1615 250091 + 1616 396261 + 1617 89967 + 1618 85235 + 1619 347421 + 1620 120035 + 1621 232617 + 1622 132751 + 1623 255689 + 1624 510835 + 1625 71069 + 1626 496241 + 1627 399743 + 1628 177901 + 1629 119053 + 1630 363021 + 1631 443439 + 1632 401683 + 1633 10195 + 1634 72077 + 1635 501707 + 1636 285403 + 1637 84107 + 1638 344475 + 1639 439355 + 1640 88377 + 1641 435335 + 1642 37829 + 1643 448395 + 1644 354423 + 1645 105051 + 1646 227227 + 1647 177259 + 1648 146631 + 1649 154305 + 1650 385681 + 1651 71331 + 1652 273839 + 1653 296923 + 1654 354135 + 1655 134511 + 1656 477627 + 1657 391343 + 1658 115663 + 1659 426521 + 1660 280709 + 1661 337719 + 1662 179581 + 1663 175221 + 1664 183241 + 1665 245159 + 1666 482075 + 1667 97599 + 1668 339741 + 1669 27621 + 1670 172629 + 1671 158599 + 1672 27041 + 1673 107149 + 1674 213515 + 1675 25373 + 1676 359819 + 1677 238905 + 1678 516381 + 1679 376693 + 1680 451979 + 1681 417637 + 1682 28073 + 1683 301669 + 1684 346739 + 1685 486931 + 1686 511825 + 1687 450449 + 1688 24049 + 1689 371309 + 1690 140917 + 1691 436281 + 1692 226431 + 1693 512505 + 1694 374819 + 1695 74283 + 1696 480187 + 1697 287379 + 1698 279717 + 1699 462547 + 1700 226761 + 1701 280549 + 1702 363705 + 1703 40649 + 1704 218319 + 1705 44093 + 1706 92449 + 1707 425241 + 1708 93317 + 1709 90271 + 1710 152431 + 1711 379293 + 1712 399811 + 1713 85131 + 1714 120913 + 1715 232633 + 1716 150679 + 1717 206151 + 1718 427597 + 1719 353853 + 1720 28191 + 1721 444607 + 1722 284487 + 1723 7779 + 1724 79179 + 1725 437081 + 1726 164831 + 1727 141875 + 1728 324589 + 1729 217201 + 1730 102211 + 1731 289917 + 1732 520789 + 1733 96063 + 1734 221729 + 1735 303205 + 1736 184529 + 1737 309349 + 1738 459559 + 1739 477375 + 1740 229741 + 1741 279715 + 1742 97935 + 1743 305209 + 1744 59231 + 1745 386225 + 1746 30673 + 1747 453833 + 1748 252987 + 1749 42115 + 1750 311451 + 1751 70813 + 1752 85731 + 1753 468599 + 1754 107155 + 1755 175807 + 1756 390835 + 1757 112297 + 1758 54569 + 1759 227377 + 1760 34123 + 1761 165789 + 1762 120535 + 1763 129125 + 1764 334353 + 1765 8513 + 1766 348255 + 1767 66235 + 1768 377585 + 1769 244169 + 1770 167797 + 1771 57561 + 1772 426951 + 1773 510341 + 1774 323967 + 1775 371869 + 1776 396461 + 1777 96819 + 1778 120771 + 1779 259711 + 1780 374697 + 1781 485207 + 1782 437971 + 1783 241259 + 1784 122227 + 1785 400593 + 1786 514583 + 1787 460669 + 1788 515093 + 1789 160651 + 1790 193481 + 1791 90273 + 1792 58821 + 1793 67377 + 1794 197361 + 1795 150709 + 1796 265743 + 1797 156857 + 1798 373989 + 1799 335959 + 1800 435373 + 1801 500877 + 1802 324517 + 1803 279053 + 1804 447689 + 1805 269083 + 1806 208723 + 1807 240141 + 1808 229005 + 1809 290007 + 1810 462437 + 1811 158031 + 1812 343115 + 1813 255075 + 1814 7765 + 1815 13149 + 1816 148757 + 1817 493693 + 1818 521105 + 1819 130031 + 1820 42125 + 1821 133589 + 1822 153713 + 1823 317129 + 1824 314847 + 1825 511243 + 1826 342051 + 1827 18009 + 1828 27997 + 1829 149573 + 1830 87637 + 1831 274479 + 1832 291155 + 1833 169389 + 1834 248037 + 1835 52609 + 1836 362577 + 1837 456585 + 1838 23579 + 1839 407711 + 1840 378823 + 1841 81467 + 1842 61089 + 1843 265833 + 1844 221795 + 1845 494121 + 1846 351157 + 1847 245949 + 1848 170417 + 1849 371993 + 1850 368985 + 1851 422725 + 1852 485215 + 1853 270699 + 1854 436113 + 1855 344765 + 1856 486259 + 1857 92359 + 1858 408995 + 1859 208687 + 1860 56997 + 1861 208471 + 1862 250655 + 1863 469153 + 1864 117913 + 1865 60593 + 1866 137641 + 1867 379873 + 1868 496145 + 1869 156887 + 1870 426903 + 1871 516011 + 1872 79277 + 1873 409311 + 1874 205493 + 1875 270957 + 1876 257697 + 1877 232559 + 1878 390059 + 1879 12693 + 1880 355561 + 1881 21433 + 1882 515147 + 1883 92647 + 1884 470067 + 1885 362315 + 1886 396443 + 1887 267501 + 1888 284135 + 1889 300073 + 1890 324181 + 1891 125359 + 1892 456953 + 1893 9809 + 1894 316249 + 1895 299065 + 1896 354783 + 1897 147961 + 1898 95917 + 1899 199513 + 1900 224897 + 1901 396893 + 1902 373819 + 1903 113455 + 1904 169021 + 1905 258713 + 1906 124505 + 1907 351445 + 1908 67193 + 1909 443983 + 1910 516771 + 1911 416149 + 1912 174053 + 1913 40045 + 1914 364653 + 1915 137081 + 1916 49845 + 1917 87603 + 1918 259507 + 1919 324227 + 1920 513325 + 1921 365281 + 1922 186715 + 1923 438171 + 1924 273039 + 1925 273521 + 1926 134079 + 1927 23877 + 1928 296307 + 1929 371691 + 1930 289989 + 1931 163473 + 1932 357213 + 1933 216219 + 1934 274483 + 1935 98071 + 1936 519393 + 1937 407525 + 1938 480101 + 1939 282339 + 1940 480441 + 1941 116181 + 1942 341405 + 1943 346449 + 1944 281465 + 1945 403061 + 1946 219215 + 1947 324827 + 1948 248535 + 1949 383947 + 1950 14377 + 1951 448201 + 1952 201511 + 1953 176417 + 1954 82555 + 1955 207243 + 1956 310299 + 1957 407691 + 1958 488909 + 1959 234623 + 1960 296097 + 1961 401907 + 1962 345583 + 1963 309079 + 1964 379535 + 1965 208009 + 1966 111147 + 1967 91409 + 1968 395065 + 1969 88495 + 1970 50835 + 1971 435317 + 1972 99881 + 1973 408209 + 1974 488775 + 1975 21435 + 1976 223769 + 1977 206445 + 1978 39799 + 1979 34975 + 1980 316123 + 1981 395399 + 1982 174159 + 1983 464335 + 1984 429235 + 1985 26257 + 1986 414819 + 1987 88553 + 1988 333931 + 1989 291095 + 1990 369803 + 1991 271295 + 1992 179013 + 1993 154451 + 1994 253811 + 1995 225045 + 1996 266103 + 1997 37755 + 1998 337951 + 1999 17989 + 2000 49313 + 2001 506275 + 2002 110493 + 2003 208531 + 2004 394395 + 2005 194959 + 2006 82231 + 2007 485079 + 2008 400985 + 2009 285615 + 2010 231295 + 2011 192559 + 2012 435593 + 2013 398277 + 2014 232401 + 2015 430137 + 2016 60703 + 2017 325001 + 2018 422589 + 2019 115081 + 2020 365811 + 2021 401627 + 2022 496153 + 2023 244771 + 2024 209977 + 2025 249531 + 2026 52717 + 2027 423283 + 2028 73943 + 2029 107661 + 2030 492493 + 2031 352661 + 2032 358677 + 2033 201917 + 2034 422661 + 2035 307943 + 2036 206819 + 2037 110727 + 2038 280819 + 2039 48727 + 2040 399481 + 2041 333451 + 2042 215965 + 2043 27467 + 2044 426943 + 2045 310325 + 2046 191017 + 2047 475827 + 2048 86201 + 2049 335415 + 2050 83121 + 2051 494837 + 2052 163555 + 2053 155753 + 2054 143209 + 2055 369609 + 2056 26699 + 2057 363675 + 2058 442193 + 2059 205317 + 2060 290541 + 2061 281967 + 2062 47697 + 2063 75373 + 2064 429555 + 2065 281505 + 2066 491173 + 2067 134113 + 2068 126507 + 2069 285555 + 2070 336731 + 2071 289585 + 2072 402333 + 2073 39079 + 2074 269351 + 2075 478631 + 2076 116981 + 2077 332497 + 2078 201255 + 2079 500887 + 2080 388935 + 2081 246131 + 2082 333789 + 2083 243435 + 2084 182137 + 2085 323263 + 2086 447985 + 2087 510645 + 2088 342253 + 2089 218599 + 2090 154165 + 2091 280097 + 2092 116149 + 2093 58333 + 2094 38669 + 2095 412583 + 2096 311647 + 2097 190493 + 2098 162261 + 2099 143897 + 2100 123463 + 2101 132319 + 2102 482019 + 2103 48937 + 2104 78907 + 2105 482835 + 2106 330181 + 2107 30599 + 2108 294475 + 2109 344895 + 2110 31105 + 2111 476533 + 2112 92561 + 2113 160797 + 2114 243313 + 2115 156309 + 2116 276267 + 2117 246601 + 2118 358343 + 2119 238113 + 2120 13331 + 2121 489629 + 2122 339307 + 2123 424065 + 2124 164959 + 2125 237863 + 2126 401297 + 2127 126043 + 2128 511041 + 2129 450895 + 2130 74977 + 2131 150953 + 2132 338033 + 2133 203421 + 2134 62707 + 2135 492053 + 2136 53595 + 2137 222731 + 2138 195509 + 2139 173873 + 2140 177647 + 2141 344481 + 2142 37843 + 2143 168785 + 2144 242339 + 2145 444455 + 2146 489573 + 2147 375781 + 2148 28563 + 2149 197691 + 2150 439233 + 2151 210517 + 2152 222259 + 2153 486897 + 2154 485997 + 2155 516639 + 2156 490077 + 2157 231289 + 2158 144135 + 2159 438065 + 2160 146243 + 2161 450265 + 2162 515909 + 2163 404953 + 2164 392025 + 2165 473971 + 2166 167685 + 2167 155481 + 2168 345507 + 2169 333859 + 2170 197213 + 2171 251427 + 2172 447891 + 2173 144109 + 2174 461531 + 2175 100915 + 2176 242669 + 2177 172381 + 2178 185563 + 2179 277223 + 2180 325739 + 2181 134053 + 2182 328613 + 2183 292123 + 2184 123079 + 2185 59669 + 2186 266871 + 2187 517205 + 2188 476387 + 2189 390959 + 2190 197865 + 2191 120297 + 2192 397789 + 2193 238661 + 2194 190099 + 2195 238487 + 2196 138283 + 2197 446213 + 2198 207241 + 2199 103179 + 2200 326029 + 2201 414347 + 2202 351777 + 2203 296753 + 2204 506785 + 2205 84311 + 2206 120095 + 2207 451955 + 2208 315195 + 2209 184917 + 2210 133243 + 2211 408115 + 2212 56749 + 2213 354187 + 2214 297297 + 2215 510229 + 2216 214203 + 2217 513307 + 2218 165093 + 2219 483199 + 2220 486583 + 2221 122673 + 2222 414887 + 2223 51241 + 2224 328307 + 2225 512601 + 2226 212697 + 2227 424201 + 2228 425279 + 2229 453425 + 2230 100285 + 2231 88871 + 2232 145369 + 2233 378759 + 2234 231001 + 2235 23015 + 2236 187059 + 2237 189759 + 2238 456103 + 2239 221271 + 2240 44957 + 2241 224629 + 2242 144875 + 2243 191917 + 2244 146733 + 2245 355693 + 2246 311641 + 2247 488183 + 2248 292363 + 2249 499259 + 2250 223201 + 2251 50059 + 2252 281731 + 2253 449997 + 2254 470739 + 2255 389599 + 2256 299857 + 2257 389681 + 2258 41619 + 2259 113083 + 2260 284111 + 2261 173197 + 2262 176973 + 2263 99565 + 2264 264111 + 2265 254063 + 2266 398175 + 2267 383365 + 2268 19237 + 2269 100879 + 2270 133717 + 2271 283627 + 2272 248697 + 2273 212803 + 2274 21229 + 2275 385881 + 2276 391047 + 2277 104421 + 2278 499791 + 2279 140769 + 2280 60171 + 2281 237873 + 2282 81731 + 2283 244059 + 2284 489061 + 2285 194949 + 2286 467055 + 2287 190997 + 2288 424285 + 2289 403349 + 2290 61859 + 2291 109761 + 2292 213327 + 2293 49753 + 2294 401499 + 2295 289221 + 2296 459757 + 2297 106989 + 2298 477325 + 2299 24945 + 2300 509299 + 2301 88515 + 2302 89483 + 2303 129701 + 2304 102557 + 2305 365749 + 2306 86377 + 2307 25437 + 2308 485921 + 2309 506313 + 2310 482757 + 2311 45659 + 2312 173455 + 2313 63321 + 2314 423191 + 2315 366359 + 2316 410681 + 2317 141521 + 2318 97333 + 2319 206681 + 2320 89677 + 2321 74969 + 2322 332831 + 2323 129505 + 2324 82549 + 2325 154005 + 2326 120093 + 2327 271151 + 2328 94425 + 2329 206137 + 2330 18385 + 2331 408301 + 2332 378531 + 2333 486633 + 2334 373243 + 2335 18315 + 2336 473435 + 2337 211949 + 2338 467247 + 2339 96315 + 2340 270831 + 2341 318905 + 2342 126325 + 2343 298869 + 2344 250083 + 2345 86597 + 2346 416725 + 2347 109403 + 2348 149107 + 2349 172275 + 2350 137639 + 2351 215447 + 2352 301895 + 2353 511341 + 2354 346059 + 2355 81383 + 2356 475379 + 2357 397563 + 2358 20601 + 2359 105291 + 2360 397235 + 2361 82083 + 2362 403917 + 2363 421061 + 2364 186905 + 2365 163491 + 2366 390493 + 2367 61129 + 2368 274707 + 2369 264575 + 2370 376189 + 2371 46625 + 2372 73561 + 2373 80297 + 2374 13893 + 2375 160715 + 2376 436271 + 2377 200047 + 2378 455961 + 2379 447523 + 2380 437353 + 2381 444345 + 2382 394099 + 2383 158067 + 2384 156527 + 2385 359215 + 2386 202475 + 2387 205893 + 2388 507583 + 2389 362219 + 2390 296885 + 2391 48081 + 2392 254187 + 2393 103027 + 2394 515107 + 2395 66455 + 2396 69585 + 2397 178703 + 2398 421715 + 2399 118041 + 2400 188229 + 2401 337853 + 2402 43853 + 2403 34877 + 2404 54869 + 2405 506695 + 2406 508317 + 2407 407363 + 2408 176739 + 2409 401221 + 2410 196189 + 2411 446969 + 2412 234209 + 2413 319199 + 2414 86885 + 2415 430167 + 2416 410289 + 2417 33507 + 2418 177769 + 2419 95017 + 2420 301747 + 2421 240243 + 2422 248747 + 2423 324411 + 2424 193357 + 2425 145971 + 2426 480437 + 2427 201343 + 2428 78427 + 2429 402589 + 2430 120879 + 2431 443057 + 2432 160815 + 2433 232349 + 2434 247631 + 2435 458229 + 2436 85917 + 2437 428619 + 2438 210047 + 2439 380307 + 2440 390311 + 2441 468459 + 2442 168237 + 2443 316131 + 2444 9837 + 2445 240527 + 2446 260197 + 2447 271291 + 2448 517371 + 2449 390279 + 2450 210711 + 2451 195601 + 2452 69675 + 2453 254843 + 2454 15553 + 2455 68049 + 2456 138485 + 2457 140423 + 2458 48245 + 2459 218007 + 2460 300645 + 2461 256537 + 2462 351635 + 2463 369097 + 2464 445287 + 2465 260549 + 2466 116063 + 2467 226487 + 2468 19367 + 2469 400221 + 2470 149571 + 2471 356677 + 2472 353181 + 2473 309379 + 2474 260531 + 2475 218577 + 2476 477495 + 2477 187345 + 2478 252689 + 2479 467263 + 2480 320689 + 2481 422739 + 2482 11221 + 2483 137581 + 2484 434305 + 2485 62281 + 2486 156269 + 2487 51039 + 2488 41037 + 2489 146215 + 2490 312461 + 2491 461961 + 2492 406711 + 2493 48029 + 2494 170939 + 2495 378299 + 2496 188261 + 2497 58723 + 2498 418329 + 2499 72915 + 2500 64923 + 2501 79329 + 2502 44337 + 2503 505049 + 2504 128961 + 2505 255499 + 2506 336953 + 2507 506841 + 2508 86755 + 2509 106907 + 2510 271979 + 2511 237115 + 2512 353839 + 2513 351005 + 2514 255929 + 2515 458091 + 2516 307843 + 2517 126851 + 2518 345273 + 2519 47971 + 2520 519463 + 2521 430511 + 2522 499867 + 2523 457175 + 2524 455079 + 2525 246851 + 2526 407955 + 2527 211007 + 2528 424031 + 2529 396669 + 2530 178375 + 2531 60845 + 2532 431585 + 2533 401729 + 2534 126565 + 2535 195753 + 2536 396923 + 2537 60847 + 2538 364015 + 2539 339891 + 2540 194993 + 2541 404805 + 2542 142305 + 2543 334789 + 2544 36819 + 2545 34189 + 2546 301995 + 2547 232635 + 2548 371301 + 2549 104549 + 2550 153551 + 2551 406757 + 2552 453011 + 2553 488337 + 2554 57163 + 2555 64357 + 2556 281963 + 2557 167811 + 2558 108431 + 2559 340589 + 2560 391593 + 2561 100507 + 2562 113063 + 2563 482993 + 2564 218891 + 2565 439757 + 2566 153679 + 2567 81759 + 2568 126119 + 2569 427283 + 2570 138275 + 2571 23233 + 2572 220849 + 2573 317467 + 2574 82563 + 2575 508491 + 2576 415819 + 2577 276137 + 2578 120289 + 2579 378293 + 2580 136551 + 2581 101267 + 2582 495695 + 2583 416617 + 2584 119743 + 2585 135799 + 2586 129925 + 2587 234001 + 2588 93825 + 2589 15479 + 2590 467727 + 2591 168023 + 2592 74139 + 2593 120901 + 2594 484509 + 2595 467899 + 2596 58341 + 2597 310949 + 2598 359257 + 2599 426335 + 2600 297705 + 2601 270941 + 2602 158007 + 2603 72971 + 2604 112479 + 2605 450143 + 2606 488851 + 2607 473189 + 2608 212399 + 2609 238799 + 2610 182807 + 2611 374629 + 2612 129861 + 2613 413781 + 2614 470133 + 2615 502085 + 2616 277553 + 2617 135717 + 2618 53037 + 2619 483243 + 2620 359991 + 2621 11039 + 2622 265333 + 2623 473041 + 2624 93679 + 2625 307803 + 2626 401121 + 2627 95093 + 2628 305199 + 2629 133087 + 2630 339105 + 2631 142153 + 2632 411511 + 2633 223193 + 2634 337815 + 2635 67525 + 2636 95175 + 2637 480891 + 2638 10979 + 2639 475299 + 2640 13139 + 2641 13871 + 2642 377021 + 2643 212431 + 2644 185587 + 2645 297245 + 2646 494309 + 2647 428911 + 2648 100071 + 2649 128369 + 2650 36725 + 2651 351851 + 2652 462787 + 2653 442847 + 2654 465487 + 2655 111943 + 2656 497233 + 2657 193419 + 2658 298249 + 2659 211023 + 2660 328867 + 2661 521301 + 2662 360751 + 2663 421351 + 2664 505413 + 2665 40873 + 2666 442035 + 2667 182161 + 2668 308779 + 2669 64783 + 2670 497985 + 2671 32351 + 2672 441677 + 2673 42141 + 2674 175505 + 2675 24003 + 2676 222365 + 2677 441279 + 2678 165949 + 2679 269437 + 2680 106923 + 2681 63359 + 2682 428423 + 2683 365747 + 2684 378529 + 2685 101073 + 2686 145495 + 2687 361639 + 2688 406821 + 2689 420505 + 2690 461253 + 2691 221407 + 2692 346959 + 2693 107493 + 2694 265679 + 2695 382925 + 2696 107639 + 2697 29993 + 2698 227485 + 2699 193929 + 2700 207057 + 2701 381899 + 2702 46537 + 2703 328137 + 2704 351473 + 2705 211309 + 2706 465739 + 2707 287825 + 2708 191705 + 2709 361417 + 2710 244785 + 2711 431285 + 2712 29333 + 2713 392355 + 2714 361753 + 2715 120941 + 2716 273895 + 2717 343903 + 2718 13539 + 2719 347673 + 2720 415853 + 2721 266747 + 2722 412889 + 2723 246111 + 2724 343685 + 2725 66651 + 2726 107281 + 2727 475471 + 2728 350267 + 2729 83109 + 2730 372693 + 2731 72537 + 2732 305925 + 2733 145609 + 2734 417697 + 2735 23981 + 2736 146205 + 2737 146845 + 2738 24281 + 2739 428233 + 2740 25807 + 2741 489281 + 2742 469031 + 2743 452973 + 2744 90211 + 2745 512047 + 2746 93805 + 2747 388757 + 2748 153039 + 2749 86643 + 2750 355677 + 2751 58601 + 2752 183325 + 2753 98721 + 2754 470773 + 2755 359039 + 2756 149645 + 2757 450043 + 2758 202155 + 2759 252391 + 2760 204143 + 2761 42519 + 2762 309343 + 2763 445331 + 2764 388569 + 2765 390537 + 2766 185777 + 2767 242363 + 2768 256959 + 2769 97327 + 2770 289651 + 2771 358561 + 2772 443993 + 2773 270569 + 2774 496095 + 2775 7955 + 2776 27459 + 2777 141773 + 2778 340219 + 2779 204929 + 2780 475695 + 2781 99271 + 2782 303563 + 2783 478751 + 2784 96227 + 2785 138457 + 2786 405843 + 2787 384895 + 2788 318297 + 2789 18257 + 2790 100319 + 2791 487189 + 2792 441163 + 2793 63279 + 2794 16159 + 2795 265039 + 2796 63753 + 2797 400037 + 2798 226629 + 2799 323471 + 2800 190335 + 2801 513703 + 2802 376643 + 2803 28547 + 2804 345013 + 2805 330771 + 2806 96653 + 2807 56191 + 2808 388441 + 2809 369211 + 2810 91535 + 2811 499363 + 2812 152325 + 2813 458153 + 2814 194785 + 2815 306603 + 2816 248777 + 2817 505579 + 2818 269923 + 2819 452741 + 2820 234227 + 2821 483733 + 2822 438003 + 2823 315989 + 2824 17373 + 2825 505437 + 2826 400323 + 2827 319185 + 2828 187141 + 2829 297899 + 2830 29325 + 2831 183175 + 2832 32037 + 2833 109149 + 2834 31953 + 2835 125553 + 2836 256903 + 2837 422541 + 2838 213387 + 2839 365383 + 2840 494863 + 2841 473265 + 2842 374419 + 2843 391879 + 2844 515929 + 2845 409973 + 2846 436729 + 2847 301663 + 2848 250819 + 2849 380853 + 2850 441779 + 2851 64359 + 2852 211511 + 2853 170333 + 2854 40801 + 2855 329621 + 2856 497593 + 2857 414741 + 2858 38315 + 2859 461397 + 2860 463833 + 2861 476019 + 2862 238227 + 2863 297127 + 2864 213693 + 2865 260445 + 2866 270099 + 2867 363855 + 2868 254169 + 2869 94615 + 2870 374709 + 2871 128597 + 2872 263711 + 2873 504923 + 2874 513269 + 2875 100647 + 2876 77345 + 2877 375335 + 2878 436129 + 2879 444683 + 2880 399785 + 2881 373253 + 2882 188583 + 2883 182661 + 2884 321261 + 2885 492209 + 2886 138691 + 2887 118851 + 2888 370801 + 2889 283871 + 2890 375761 + 2891 108219 + 2892 381791 + 2893 521061 + 2894 100699 + 2895 394279 + 2896 416331 + 2897 423195 + 2898 392333 + 2899 82503 + 2900 493133 + 2901 286319 + 2902 214885 + 2903 75085 + 2904 126007 + 2905 373435 + 2906 454699 + 2907 194095 + 2908 374725 + 2909 359533 + 2910 488751 + 2911 510297 + 2912 357837 + 2913 510141 + 2914 489591 + 2915 33807 + 2916 387977 + 2917 265867 + 2918 382915 + 2919 468711 + 2920 509771 + 2921 321593 + 2922 8725 + 2923 230081 + 2924 463971 + 2925 164527 + 2926 202821 + 2927 449243 + 2928 286147 + 2929 251107 + 2930 335713 + 2931 245335 + 2932 323447 + 2933 99899 + 2934 153005 + 2935 56363 + 2936 290999 + 2937 156193 + 2938 164267 + 2939 258175 + 2940 182643 + 2941 13031 + 2942 73361 + 2943 456013 + 2944 500821 + 2945 214977 + 2946 510303 + 2947 82195 + 2948 336167 + 2949 333041 + 2950 323319 + 2951 135907 + 2952 87081 + 2953 461265 + 2954 170827 + 2955 52519 + 2956 408207 + 2957 92059 + 2958 179641 + 2959 228933 + 2960 221449 + 2961 30681 + 2962 461353 + 2963 356169 + 2964 141443 + 2965 385915 + 2966 432695 + 2967 351731 + 2968 229803 + 2969 239815 + 2970 270205 + 2971 416833 + 2972 223119 + 2973 464427 + 2974 57265 + 2975 486615 + 2976 425297 + 2977 25657 + 2978 18615 + 2979 140049 + 2980 420129 + 2981 378463 + 2982 438187 + 2983 479057 + 2984 356569 + 2985 206803 + 2986 400649 + 2987 512581 + 2988 212233 + 2989 201973 + 2990 178821 + 2991 10193 + 2992 396751 + 2993 411689 + 2994 218893 + 2995 161647 + 2996 32479 + 2997 200657 + 2998 163259 + 2999 188909 + 3000 235815 + 3001 468603 + 3002 185711 + 3003 435439 + 3004 96911 + 3005 379475 + 3006 293557 + 3007 85487 + 3008 289949 + 3009 103079 + 3010 461657 + 3011 312965 + 3012 411535 + 3013 59479 + 3014 45341 + 3015 471447 + 3016 470241 + 3017 20731 + 3018 368203 + 3019 488799 + 3020 390767 + 3021 401901 + 3022 240203 + 3023 67359 + 3024 342371 + 3025 388151 + 3026 394787 + 3027 223875 + 3028 309743 + 3029 243759 + 3030 412615 + 3031 287377 + 3032 79261 + 3033 189575 + 3034 377839 + 3035 148371 + 3036 236505 + 3037 504407 + 3038 216565 + 3039 304945 + 3040 101347 + 3041 32483 + 3042 26123 + 3043 246515 + 3044 469647 + 3045 379157 + 3046 328757 + 3047 470183 + 3048 85499 + 3049 457409 + 3050 317327 + 3051 45793 + 3052 460163 + 3053 195417 + 3054 238987 + 3055 461707 + 3056 285521 + 3057 465375 + 3058 297633 + 3059 56385 + 3060 292495 + 3061 337483 + 3062 304699 + 3063 226917 + 3064 117625 + 3065 378411 + 3066 313055 + 3067 30761 + 3068 480707 + 3069 293457 + 3070 230349 + 3071 107079 + 3072 155749 + 3073 344455 + 3074 290263 + 3075 234071 + 3076 10883 + 3077 504953 + 3078 501357 + 3079 43293 + 3080 423523 + 3081 328537 + 3082 236483 + 3083 166171 + 3084 38377 + 3085 55643 + 3086 519281 + 3087 40523 + 3088 310891 + 3089 54807 + 3090 450257 + 3091 148641 + 3092 394659 + 3093 50393 + 3094 383571 + 3095 427871 + 3096 394141 + 3097 421721 + 3098 23239 + 3099 176937 + 3100 13165 + 3101 44269 + 3102 227427 + 3103 439141 + 3104 13875 + 3105 170259 + 3106 410205 + 3107 116255 + 3108 28187 + 3109 206685 + 3110 240255 + 3111 112111 + 3112 148361 + 3113 126139 + 3114 292807 + 3115 333175 + 3116 452079 + 3117 8537 + 3118 107979 + 3119 185177 + 3120 460521 + 3121 391313 + 3122 121301 + 3123 91615 + 3124 148751 + 3125 199575 + 3126 26329 + 3127 365039 + 3128 127227 + 3129 359197 + 3130 363689 + 3131 103439 + 3132 116143 + 3133 509529 + 3134 486799 + 3135 171933 + 3136 457269 + 3137 300819 + 3138 383871 + 3139 263795 + 3140 371411 + 3141 344283 + 3142 13901 + 3143 516001 + 3144 220661 + 3145 79983 + 3146 395003 + 3147 154397 + 3148 306029 + 3149 508137 + 3150 355521 + 3151 238163 + 3152 103155 + 3153 244249 + 3154 112759 + 3155 304815 + 3156 487597 + 3157 44407 + 3158 115581 + 3159 290929 + 3160 33925 + 3161 426203 + 3162 431537 + 3163 144103 + 3164 43139 + 3165 493889 + 3166 314259 + 3167 416369 + 3168 357677 + 3169 59509 + 3170 407949 + 3171 11369 + 3172 239493 + 3173 172337 + 3174 9481 + 3175 468623 + 3176 140203 + 3177 489907 + 3178 200207 + 3179 371547 + 3180 242719 + 3181 101051 + 3182 323475 + 3183 401063 + 3184 460323 + 3185 294285 + 3186 72081 + 3187 158513 + 3188 168605 + 3189 342875 + 3190 239303 + 3191 239665 + 3192 484939 + 3193 203543 + 3194 171833 + 3195 20195 + 3196 100311 + 3197 314743 + 3198 398739 + 3199 401575 + 3200 392409 + 3201 442007 + 3202 246973 + 3203 355713 + 3204 455711 + 3205 483053 + 3206 248379 + 3207 248605 + 3208 465197 + 3209 168091 + 3210 394149 + 3211 422577 + 3212 89837 + 3213 63425 + 3214 284781 + 3215 309057 + 3216 53177 + 3217 447213 + 3218 414081 + 3219 172925 + 3220 201689 + 3221 451953 + 3222 81319 + 3223 288315 + 3224 471759 + 3225 39953 + 3226 179947 + 3227 289185 + 3228 47631 + 3229 342375 + 3230 95509 + 3231 467583 + 3232 403759 + 3233 191121 + 3234 231343 + 3235 294237 + 3236 409963 + 3237 163151 + 3238 81103 + 3239 489517 + 3240 300977 + 3241 405353 + 3242 220019 + 3243 78993 + 3244 373779 + 3245 491893 + 3246 418757 + 3247 243007 + 3248 88035 + 3249 295693 + 3250 486581 + 3251 172593 + 3252 249463 + 3253 201763 + 3254 233953 + 3255 256923 + 3256 22247 + 3257 212105 + 3258 514453 + 3259 373005 + 3260 333023 + 3261 436425 + 3262 422747 + 3263 358241 + 3264 180009 + 3265 84385 + 3266 462205 + 3267 242625 + 3268 186207 + 3269 328381 + 3270 199869 + 3271 280395 + 3272 133425 + 3273 42929 + 3274 200285 + 3275 405045 + 3276 191883 + 3277 173357 + 3278 389975 + 3279 214137 + 3280 394469 + 3281 29713 + 3282 275277 + 3283 338559 + 3284 272939 + 3285 400973 + 3286 403589 + 3287 383381 + 3288 61539 + 3289 127411 + 3290 204575 + 3291 280153 + 3292 157657 + 3293 516233 + 3294 143729 + 3295 14245 + 3296 118239 + 3297 120487 + 3298 161515 + 3299 86743 + 3300 259695 + 3301 58023 + 3302 388483 + 3303 168423 + 3304 378703 + 3305 139529 + 3306 437333 + 3307 232509 + 3308 13951 + 3309 210975 + 3310 317837 + 3311 456761 + 3312 243293 + 3313 389963 + 3314 212455 + 3315 135675 + 3316 235869 + 3317 489851 + 3318 295209 + 3319 411985 + 3320 482805 + 3321 500817 + 3322 515443 + 3323 309289 + 3324 160895 + 3325 450681 + 3326 139471 + 3327 402381 + 3328 92321 + 3329 150599 + 3330 492225 + 3331 366165 + 3332 382433 + 3333 213897 + 3334 91735 + 3335 413983 + 3336 266001 + 3337 144943 + 3338 92639 + 3339 463773 + 3340 192747 + 3341 460919 + 3342 382913 + 3343 359477 + 3344 329671 + 3345 487523 + 3346 117891 + 3347 171117 + 3348 59269 + 3349 97417 + 3350 171871 + 3351 250525 + 3352 189423 + 3353 8081 + 3354 129897 + 3355 446151 + 3356 146109 + 3357 110505 + 3358 333587 + 3359 62987 + 3360 211221 + 3361 357243 + 3362 213473 + 3363 281671 + 3364 442715 + 3365 219189 + 3366 443253 + 3367 435363 + 3368 297161 + 3369 453161 + 3370 68627 + 3371 410971 + 3372 343233 + 3373 355915 + 3374 269217 + 3375 387431 + 3376 411097 + 3377 237183 + 3378 344755 + 3379 327277 + 3380 449777 + 3381 131799 + 3382 48181 + 3383 311511 + 3384 120091 + 3385 7093 + 3386 390125 + 3387 158753 + 3388 294281 + 3389 422365 + 3390 141203 + 3391 331579 + 3392 116683 + 3393 461933 + 3394 80913 + 3395 43487 + 3396 39849 + 3397 249485 + 3398 314327 + 3399 267699 + 3400 373907 + 3401 128653 + 3402 451171 + 3403 332245 + 3404 46935 + 3405 101083 + 3406 468025 + 3407 397991 + 3408 161605 + 3409 83003 + 3410 464759 + 3411 467803 + 3412 442503 + 3413 17937 + 3414 75717 + 3415 321135 + 3416 93861 + 3417 188735 + 3418 306009 + 3419 405579 + 3420 416721 + 3421 453169 + 3422 362117 + 3423 210675 + 3424 209507 + 3425 75243 + 3426 22807 + 3427 468067 + 3428 406483 + 3429 387859 + 3430 281055 + 3431 388589 + 3432 144881 + 3433 175401 + 3434 43545 + 3435 129869 + 3436 386931 + 3437 123223 + 3438 409461 + 3439 517063 + 3440 454543 + 3441 326533 + 3442 469715 + 3443 216367 + 3444 234793 + 3445 222363 + 3446 500805 + 3447 37691 + 3448 232339 + 3449 494563 + 3450 354593 + 3451 120623 + 3452 499447 + 3453 233819 + 3454 245525 + 3455 512237 + 3456 447957 + 3457 40799 + 3458 351733 + 3459 487549 + 3460 77657 + 3461 410505 + 3462 389669 + 3463 174127 + 3464 511279 + 3465 24481 + 3466 305541 + 3467 177015 + 3468 519107 + 3469 144989 + 3470 478671 + 3471 469133 + 3472 345451 + 3473 365323 + 3474 294225 + 3475 111675 + 3476 405825 + 3477 507299 + 3478 442967 + 3479 500599 + 3480 452981 + 3481 51727 + 3482 222237 + 3483 118921 + 3484 17021 + 3485 89149 + 3486 9563 + 3487 79199 + 3488 383241 + 3489 208629 + 3490 91599 + 3491 375525 + 3492 301661 + 3493 374049 + 3494 340021 + 3495 440053 + 3496 198823 + 3497 224787 + 3498 61121 + 3499 122615 + 3500 371579 + 3501 197611 + 3502 425621 + 3503 366713 + 3504 316939 + 3505 101905 + 3506 24171 + 3507 401565 + 3508 287091 + 3509 166509 + 3510 465939 + 3511 310617 + 3512 488773 + 3513 269047 + 3514 281069 + 3515 334367 + 3516 407339 + 3517 19321 + 3518 217701 + 3519 215315 + 3520 35553 + 3521 21901 + 3522 291567 + 3523 187937 + 3524 430651 + 3525 32311 + 3526 123537 + 3527 300521 + 3528 5811 + 3529 304903 + 3530 335469 + 3531 228991 + 3532 321671 + 3533 158593 + 3534 330299 + 3535 149545 + 3536 139031 + 3537 281739 + 3538 294127 + 3539 128305 + 3540 157215 + 3541 54577 + 3542 332327 + 3543 486309 + 3544 252623 + 3545 173629 + 3546 133663 + 3547 147981 + 3548 324491 + 3549 445587 + 3550 227607 + 3551 190063 + 3552 367383 + 3553 131771 + 3554 444535 + 3555 298961 + 3556 386147 + 3557 118181 + 3558 238353 + 3559 398465 + 3560 396965 + 3561 475859 + 3562 82109 + 3563 195947 + 3564 167101 + 3565 241579 + 3566 451065 + 3567 399927 + 3568 448673 + 3569 426565 + 3570 234245 + 3571 345957 + 3572 180061 + 3573 197207 + 3574 505283 + 3575 505659 + 3576 54233 + 3577 152663 + 3578 481155 + 3579 354391 + 3580 400891 + 3581 227395 + 3582 219535 + 3583 226123 + 3584 121423 + 3585 244551 + 3586 132045 + 3587 446551 + 3588 313999 + 3589 385783 + 3590 495507 + 3591 305613 + 3592 46891 + 3593 339689 + 3594 312893 + 3595 514481 + 3596 273563 + 3597 408791 + 3598 348479 + 3599 381971 + 3600 415201 diff --git a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py index 5c7012622..c1b02c2ad 100644 --- a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py +++ b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py @@ -2,7 +2,12 @@ # I am not sure where the best place to put this is, will ask Aleksi -def lattice_search(N, d): +def lattice_vector_wssd_search(N, d, kernel,coord_weights): + if kernel == None: + kernel = lambda x: x * (x - 1) + 1 / 6 # default kernel is the second Bernoulli polynomial + if coord_weights is None: + coord_weights = np.array([j**(-2) for j in range(1, d + 1)], dtype=np.float64) # default coordinate weights are j^(-2) + m = np.ceil(np.log2(N)).astype(int) # ---------------------------------------------------------------------- @@ -66,11 +71,11 @@ def lattice_search(N, d): # Initial 1D case rowV = rowVects / 2**m - rowV = 1 + (rowV * (rowV - 1) + 1 / 6) + rowV = 1 + kernel(rowV) prodV = prodV * rowV[:, None] # Set up k0 - k0 = 7 / 6 + k0 = 1 + coord_weights[0] * kernel(0) # ---------------------------------------------------------------------- # Begin search @@ -80,10 +85,10 @@ def lattice_search(N, d): for hComp in range(2, d + 1): WSSD = np.zeros(2**(m - 2)) - gamma = 1 / (hComp**2) + gamma = coord_weights[hComp - 1] omega = lambda x: 1 + gamma * (x * (x - 1) + 1 / 6) - k0 = k0 * (1 + gamma / 6) + k0 = k0 * (1 + gamma * kernel(0)) curIdx2 = 0 prodIdx1 = 0 From c33611e28564c8444f151fff31179c2059040f6e Mon Sep 17 00:00:00 2001 From: Anders Pride Date: Tue, 9 Jun 2026 16:54:31 -0500 Subject: [PATCH 06/29] Updated demo to correct coord. weight Kuo vector --- .../kuo.lattice-39102-1024-1048576.3600.txt | 0 demos/lattice_kronecker_methods.ipynb | 41 +++++++++++-------- 2 files changed, 23 insertions(+), 18 deletions(-) rename {qmcpy/discrete_distribution/lattice/generating_vectors => demos}/kuo.lattice-39102-1024-1048576.3600.txt (100%) diff --git a/qmcpy/discrete_distribution/lattice/generating_vectors/kuo.lattice-39102-1024-1048576.3600.txt b/demos/kuo.lattice-39102-1024-1048576.3600.txt similarity index 100% rename from qmcpy/discrete_distribution/lattice/generating_vectors/kuo.lattice-39102-1024-1048576.3600.txt rename to demos/kuo.lattice-39102-1024-1048576.3600.txt diff --git a/demos/lattice_kronecker_methods.ipynb b/demos/lattice_kronecker_methods.ipynb index 85be78d1a..5bfde07ea 100644 --- a/demos/lattice_kronecker_methods.ipynb +++ b/demos/lattice_kronecker_methods.ipynb @@ -179,25 +179,30 @@ "metadata": {}, "outputs": [ { - "ename": "FileNotFoundError", - "evalue": "qmcpy\\discrete_distribution\\lattice\\generating_vectors\\kuo.lattice-39102-1024-1048576.3600.txt not found.", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mFileNotFoundError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[7]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m lat1 = Lattice(dimension=dim, order=\u001b[33m\"\u001b[39m\u001b[33mRADICAL_INVERSE\u001b[39m\u001b[33m\"\u001b[39m, seed=\u001b[32m12\u001b[39m, generating_vector=\u001b[43mnp\u001b[49m\u001b[43m.\u001b[49m\u001b[43mloadtxt\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mqmcpy\u001b[39;49m\u001b[33;43m\\\u001b[39;49m\u001b[33;43mdiscrete_distribution\u001b[39;49m\u001b[33;43m\\\u001b[39;49m\u001b[33;43mlattice\u001b[39;49m\u001b[33;43m\\\u001b[39;49m\u001b[33;43mgenerating_vectors\u001b[39;49m\u001b[33;43m\\\u001b[39;49m\u001b[33;43mkuo.lattice-39102-1024-1048576.3600.txt\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m, m_max=\u001b[32m20\u001b[39m) \u001b[38;5;66;03m# initialize a lattice with the generating vector of all 1s\u001b[39;00m\n\u001b[32m 2\u001b[39m lat_discs1 = lat1.expected_squared_periodic_discrepancies(n_max=n, coord_weights=coord_weights)\n\u001b[32m 5\u001b[39m lat2 = Lattice(dimension=dim, order=\u001b[33m\"\u001b[39m\u001b[33mRADICAL_INVERSE\u001b[39m\u001b[33m\"\u001b[39m, seed=\u001b[32m12\u001b[39m, generating_vector=np.uint64(searched_lattice_vector), m_max=\u001b[32m20\u001b[39m) \u001b[38;5;66;03m# initialize a lattice with the searched lattice vector\u001b[39;00m\n", - "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\headw\\miniconda3\\envs\\qmcpy\\Lib\\site-packages\\numpy\\lib\\_npyio_impl.py:1397\u001b[39m, in \u001b[36mloadtxt\u001b[39m\u001b[34m(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin, encoding, max_rows, quotechar, like)\u001b[39m\n\u001b[32m 1394\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(delimiter, \u001b[38;5;28mbytes\u001b[39m):\n\u001b[32m 1395\u001b[39m delimiter = delimiter.decode(\u001b[33m'\u001b[39m\u001b[33mlatin1\u001b[39m\u001b[33m'\u001b[39m)\n\u001b[32m-> \u001b[39m\u001b[32m1397\u001b[39m arr = \u001b[43m_read\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomment\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcomment\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdelimiter\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdelimiter\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1398\u001b[39m \u001b[43m \u001b[49m\u001b[43mconverters\u001b[49m\u001b[43m=\u001b[49m\u001b[43mconverters\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mskiplines\u001b[49m\u001b[43m=\u001b[49m\u001b[43mskiprows\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43musecols\u001b[49m\u001b[43m=\u001b[49m\u001b[43musecols\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1399\u001b[39m \u001b[43m \u001b[49m\u001b[43munpack\u001b[49m\u001b[43m=\u001b[49m\u001b[43munpack\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mndmin\u001b[49m\u001b[43m=\u001b[49m\u001b[43mndmin\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m=\u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1400\u001b[39m \u001b[43m \u001b[49m\u001b[43mmax_rows\u001b[49m\u001b[43m=\u001b[49m\u001b[43mmax_rows\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mquote\u001b[49m\u001b[43m=\u001b[49m\u001b[43mquotechar\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 1402\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m arr\n", - "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\headw\\miniconda3\\envs\\qmcpy\\Lib\\site-packages\\numpy\\lib\\_npyio_impl.py:1024\u001b[39m, in \u001b[36m_read\u001b[39m\u001b[34m(fname, delimiter, comment, quote, imaginary_unit, usecols, skiplines, max_rows, converters, ndmin, unpack, dtype, encoding)\u001b[39m\n\u001b[32m 1022\u001b[39m fname = os.fspath(fname)\n\u001b[32m 1023\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(fname, \u001b[38;5;28mstr\u001b[39m):\n\u001b[32m-> \u001b[39m\u001b[32m1024\u001b[39m fh = \u001b[43mnp\u001b[49m\u001b[43m.\u001b[49m\u001b[43mlib\u001b[49m\u001b[43m.\u001b[49m\u001b[43m_datasource\u001b[49m\u001b[43m.\u001b[49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mrt\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m=\u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 1025\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m encoding \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m 1026\u001b[39m encoding = \u001b[38;5;28mgetattr\u001b[39m(fh, \u001b[33m'\u001b[39m\u001b[33mencoding\u001b[39m\u001b[33m'\u001b[39m, \u001b[33m'\u001b[39m\u001b[33mlatin1\u001b[39m\u001b[33m'\u001b[39m)\n", - "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\headw\\miniconda3\\envs\\qmcpy\\Lib\\site-packages\\numpy\\lib\\_datasource.py:192\u001b[39m, in \u001b[36mopen\u001b[39m\u001b[34m(path, mode, destpath, encoding, newline)\u001b[39m\n\u001b[32m 155\u001b[39m \u001b[38;5;250m\u001b[39m\u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m 156\u001b[39m \u001b[33;03mOpen `path` with `mode` and return the file object.\u001b[39;00m\n\u001b[32m 157\u001b[39m \n\u001b[32m (...)\u001b[39m\u001b[32m 188\u001b[39m \n\u001b[32m 189\u001b[39m \u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m 191\u001b[39m ds = DataSource(destpath)\n\u001b[32m--> \u001b[39m\u001b[32m192\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mds\u001b[49m\u001b[43m.\u001b[49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpath\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m=\u001b[49m\u001b[43mencoding\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnewline\u001b[49m\u001b[43m=\u001b[49m\u001b[43mnewline\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\headw\\miniconda3\\envs\\qmcpy\\Lib\\site-packages\\numpy\\lib\\_datasource.py:529\u001b[39m, in \u001b[36mDataSource.open\u001b[39m\u001b[34m(self, path, mode, encoding, newline)\u001b[39m\n\u001b[32m 526\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m _file_openers[ext](found, mode=mode,\n\u001b[32m 527\u001b[39m encoding=encoding, newline=newline)\n\u001b[32m 528\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m529\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mFileNotFoundError\u001b[39;00m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpath\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m not found.\u001b[39m\u001b[33m\"\u001b[39m)\n", - "\u001b[31mFileNotFoundError\u001b[39m: qmcpy\\discrete_distribution\\lattice\\generating_vectors\\kuo.lattice-39102-1024-1048576.3600.txt not found." - ] + "data": { + "text/plain": [ + "Text(0, 0.5, 'Periodic Discrepancy')" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/QAAANFCAYAAADVs7eyAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAx8BJREFUeJzs3Qd0FFUbxvFn04GQ0HsgdAi9hK5URVCUImAFVFABKxbAihURKxrF3tunIhYQBQQVpPcmvfea0ELafufOmk2WtE3dlP/vnD07c2d25t1EgXfuve+12e12uwAAAAAAQIHi5ekAAAAAAABA5pHQAwAAAABQAJHQAwAAAABQAJHQAwAAAABQAJHQAwAAAABQAJHQAwAAAABQAJHQAwAAAABQAPl4OoD8LiEhQQcOHFDJkiVls9k8HQ4AAAAAoJCz2+06ffq0qlSpIi+vtPvhSegzYJL5kJAQT4cBAAAAAChi9u7dq2rVqqV5nIQ+A6ZnPvEHGRQU5OlwAAAAAACFXFRUlNWxnJiPpoWEPgOJw+xNMk9CDwAAAADIKxlN+6YoHgAAAAAABRAJPQAAAAAABRAJPQAAAAAABRBz6NMQERFhveLj4z0dCgAAAAo582/O2NhYT4cBII/4+vrK29s729ex2c0Cd0i3umBwcLAiIyMpigcAAIAcZf4pfujQIZ06dcrToQDIY6VKlVKlSpVSLXznbh5KDz0AAADgIYnJfIUKFVS8ePEMK1oDKBwP8s6dO6cjR45Y+5UrV87ytUjoAQAAAA8Ns09M5suWLevpcADkoWLFilnvJqk3fwZkdfg9RfEAAAAAD0icM2965gEUPcX/+38/O/UzSOgBAAAAD2KYPVA02XLg/30S+jSYCvdhYWEKDw/3dCgAAAAAAKRAQp+G0aNHa+PGjVq2bJmnQwEAAAAKrNDQUL322msZ9lROnz5d+cHHH39sVR/PD+bPn2/9bFgFAWkhoQcAAACQaXv37tWtt96qKlWqyM/PTzVq1NC9996r48eP5/i9hg0bpr59++Z4kp7aw4bBgwdry5Ytyk3mviZRNy9THM3sDxo0SH/88YfLeR06dNDBgwet5cuA1JDQAwAAAMiUHTt2qHXr1tq6dau++uorbdu2TVOnTtXcuXPVvn17nThxQgWVSbBN1fHc9vTTT1vJ+ubNm/Xpp59aDxx69Oih5557znmOeVCS1jrl2RUTE5Pj10TeI6EHAAAAkOnpqSbZ/P3339W5c2dVr15dvXr10pw5c7R//349+uijaX7WPAS49NJLFRAQYNWsmj17drbjeeWVV9SkSROVKFFCISEhGjVqlM6cOeMctn7LLbcoMjLS2Ss+YcIEdenSRbt379b999/vbE+rN//nn3+2amuZmMuVK6d+/fo5j124cEEPPvigqlatat2/bdu21j0zUrJkSStZNz878/N499139fjjj+uJJ56wkvzUhtybePv06aPSpUtb92rUqJFmzpzpvOaGDRt01VVXKSgoyLr+JZdcou3bt7uMcjAPDMyoivr16ztHWpjRAeY7lylTRtdcc4127drlvGbi55566imVL1/euvadd97p8kBg1qxZ6tSpk3UNswSjiSHxvoa5nvke06ZNU9euXa3q7s2aNdOiRYtcfiYLFy60fi/muPmOPXv21MmTJ60HHua65medXN++fXXzzTerKCOhBwAAAPIJu92uczFxef4y93WX6X3/7bffrKQ5cS3tRCZBvfHGG/XNN9+kes2EhAT179/fehiwZMkSq1d/7Nix2f65eXl5acqUKVZC+8knn1hD1x9++GHnsHUzrN4koqZH3LxMAm6Sy2rVqjl7ys0rNTNmzLAS+N69e2vVqlXWKIQ2bdo4j991111WYvr1119r7dq1GjhwoK644grrwUVmmSkL5uf2448/pvkgxSS1f/31l9atW6dJkyYpMDDQOmYepJgHA/7+/tb3X7FihTUlIi4uzvl5E7t5WGAeovzyyy/WcmkmaTbJ/99//20l1OZ6Jv7kCbv53KZNm6wHDGZEhvnZmQQ/0dmzZzVmzBgtX77cOtf8PszPzPy+kzMPeszPfvXq1apXr56uv/56Z3ymrXv37tZDHvPzXLBggfXwIj4+3vqZmveffvrJeS2zfvuMGTOs71iU+Xg6AAAAAAAO52PjFfbEb3l+341P91RxP/dSA5OomqSzYcOGqR437aZX9ejRoymGrpse/H///dd6IGB6iY3nn3/e6t3Pjvvuu8+5beajP/vss1Yv8ltvvWU9PDBz0E0PsXngkJy3t7ezpzwtpkf7uuuuc0lgTe+ysWfPHn300UfWe+L3MQmr6bE27ea7ZYbpITc/s+Q95MmZ+wwYMMAajWDUqlXLZZUu8z3NgwVfX1+rzSTNyZle/ffff9/6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f6wHCJ9++qk1UuHAgQPO88qUKaOSJUvmSgyxsbG5ct3CgoS+kKhSs4GCR8/TJt9GCtI51Zs9TMt/etvTYQEAAKCQOXXqlP7++29NmjRJXbt2VY0aNdSmTRuNHz9eV199tct5w4cPtxJPkxh269ZNa9ascR7fvn27rrnmGlWsWFGBgYEKDw/XnDlzUvRYm57fIUOGWNdI7JE2IwHMAwST0JqeYzM64OTJk87PJSQk6OGHH7YSTTN6wAyXv/g7pBeb8cILL1ixmUT1tttuU3R0dLZ+bhl9X/N9du/erfvvv9/ZMz5//nzdcsstVo94Ylvid7m4N998pzvuuMO6fkBAgBo3bqxffvnFeXzBggW65JJLVKxYMYWEhOiee+7R2bNn043Z3M/8/CpXrqyGDRtaPweT2J85c8b6+aY15P6tt95S3bp1rThMPNdee63L7+bFF19UnTp1rNEdZpTHc8895zLK4ZtvvlHnzp2tz3/xxRfWsffff9+KwbQ1aNDAukeixM99/fXX6tChg/P7//nnn85z4uPjrfhr1qxp/Qzq16+v119/XckNGzZMffv21UsvvWR957Jly1rLmSd/qHDhwgWNHTvW+hma+M33+OCDD2S3261t89nkzIgNE9u2bduUG0joC5HgshVVc8xsrQjsIj9bvFqvHKdFnzwie0KCp0MDAACAO+x2KeZs3r/Mfd1kklHzmj59upXcpGXgwIE6cuSIfv31V61YsUItW7ZU9+7ddeKEo5CzSQp79+6tuXPnWr39V1xxhfr06aM9e/a4XMckSM2aNbPOefzxx60EyVwnLCxMixYtshJV8zmTsCUyIwdKlCihJUuWWMmjGSY+e/Zst2P73//+ZyXOzz//vJYvX24ld8kTyKzI6PuaYevVqlWzYjW94uZlklOTtCf2lJvXgw8+mOLaJknu1auX9aDj888/18aNG60HEmaofOLDBHM/M7Ji7dq1VsJsfm533XVXpr9HhQoVdOONN1qjMpL/zBOZn5d5WGC+x+bNmzVr1ixdeumlzuPmwY+JzfwuTZxffvmllfQnN27cON17773atGmT9bDGJPVPPPGElfibNvN7MZ//5JNPXD730EMP6YEHHrB+vu3bt7d+vomjRszPyPx8v/32W+u+5nqPPPKI9btObt68edbPy7yb65upB+aVyDxc+uqrrzRlyhQrlnfeecf6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5fBi4xPk6+1lrUl/sb+2HNXg8Oouw/ErBQVo8SPds/mFAAD5WaaH3C9fvly1a9fWq6++6hxy/8orr1htK1emXd0VAACgSKndTQpx1BvKSImXkgoL925SybndoXZZ5/a5GEfxuwOnUq55P/b7ddZ78mT/UFS0MlkqCQBQ2BP6+++/X1dffbV27dqladOmWa+dO3fqqquu0n333Zc7UQIAABREg79w+9R3fV+23jvXK+9sqxwc4NyOOh9rvT87wzFCMjVP/rTBZf+Wj5dlKlwAQBHooR87dqx8fJJG65vthx9+2DoGAACAZEPw3XS59wpdHlZR/VpUc7bZbDbn9pdL91jvc/9Ne079V/+dk2j+5qOZDBgAUKgTelMyf88e178sjL1796pkyZI5FRcAAEChsC+wqdvnvntlafn5pP7Ps+K+3tZ7WqPoExLXtwMAFBmZTugHDx6s2267Td98842VxJvX119/reHDh+v6669XYREREaGwsDCFh4d7OhQAAFCAeYe0TNoZu0saPleqlEaSb5az2zZHio5KceiTRbvTvU+tR2ame9wU1TMF8y5ewx4AUISq3L/00kvW8K8hQ4YoLi7OavP19dXIkSP1wgsvqLAYPXq09YqKiqJ6PwAAyLLKwcWTdoqVlqq1lmzp9Kl8PsDxftscKSSpY+HYmQvWe7lAPx07E6PWNUpr+e6TbsdR99FfndtXvfG3frn7ksx9EQBAwe+h9/Pz0+uvv66TJ09q9erV1stUujdV7/39XddQBQAAKPJSS9793Zim+EEPKda1ov2+k+esZN4wyfzAVknz7TNj/f6UIwAAAEUgoU9UvHhxNWnSxHqZbQAAAKQiteH1V70mla0jXRMhtbg57c8+l7SEnTH2+7Wu+70aZHj7uPiU69YDAIrQkPv+/fvr448/tgrime30mGXsAAAA8J8mA6XoU1JIm6S2cnWku1c4tlvcJK36LM2Pf3tnew2cusjaXrjtuLO9epniKhfor2WP9lD4c3NcPvP6dc1179erre3dJ86pfElGUQJAke2hN3PIE5dNMdvpvQAAAJCMl5fU9g6pSou0zxn0aZqHwpc/lGp785BS1vvFyfptnWqqT9Mqzv3Nh05r04G0h9i/NX+bNaceAFBIe+g/+ugj691ut+upp55S+fLlVaxYsdyODQAAoGgIuybtY+u/066A7xQa/aVL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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "\n", - "# lat1 = Lattice(dimension=dim, order=\"RADICAL_INVERSE\", seed=12, generating_vector=np.loadtxt(\"qmcpy\\discrete_distribution\\lattice\\generating_vectors\\kuo.lattice-39102-1024-1048576.3600.txt\"), m_max=20) # initialize a lattice with the generating vector of all 1s\n", - "# lat_discs1 = lat1.expected_squared_periodic_discrepancies(n_max=n, coord_weights=coord_weights)\n", + "gen_vec = np.loadtxt(\"kuo.lattice-39102-1024-1048576.3600.txt\",dtype=np.uint64) \n", + "lat1 = Lattice(dimension=dim, order=\"RADICAL_INVERSE\", seed=12, generating_vector=gen_vec[:,1], m_max=20) # initialize a lattice with the generating vector of all 1s\n", + "lat_discs1 = lat1.expected_squared_periodic_discrepancies(n_max=n, coord_weights=coord_weights)\n", "\n", "\n", "lat2 = Lattice(dimension=dim, order=\"RADICAL_INVERSE\", seed=12, generating_vector=np.uint64(searched_lattice_vector), m_max=20) # initialize a lattice with the searched lattice vector\n", @@ -205,8 +210,8 @@ "\n", "\n", "fig, ax = pyplot.subplots(nrows=1, ncols=1, figsize=(12,10))\n", - "ax.plot(np.arange(1, n+1), np.sqrt(lat_discs), label=\"Old Lattice Discrepancy\")\n", - "ax.plot(np.arange(1, n+1), np.sqrt(lat_discs2), label=\"Searched Lattice Discrepancy\")\n", + "ax.plot(np.arange(1, n+1), np.sqrt(lat_discs1), label=\"Kuo Lattice Discrepancy\")\n", + "ax.plot(np.arange(1, n+1), np.sqrt(lat_discs2), label=\"New Lattice Discrepancy\")\n", "# ax.plot(np.arange(1, n+1), np.sqrt(kron_discs), label=\"Kronecker Discrepancy\")\n", "ax.set_xscale(\"log\")\n", "ax.set_yscale(\"log\")\n", From 88648606c48494c1bd6b4c72953ab92a69d67023 Mon Sep 17 00:00:00 2001 From: Anders Pride Date: Tue, 9 Jun 2026 17:11:24 -0500 Subject: [PATCH 07/29] Added new generating vector option for Kronecker --- .../kron_vector_d-100_N-2exp20_2026_06_01.txt | 100 ++++++++++++++++ .../kronecker/kronecker.py | 113 +++++++++++++++++- 2 files changed, 212 insertions(+), 1 deletion(-) create mode 100644 qmcpy/discrete_distribution/kronecker/generating_vectors/kron_vector_d-100_N-2exp20_2026_06_01.txt diff --git a/qmcpy/discrete_distribution/kronecker/generating_vectors/kron_vector_d-100_N-2exp20_2026_06_01.txt b/qmcpy/discrete_distribution/kronecker/generating_vectors/kron_vector_d-100_N-2exp20_2026_06_01.txt new file mode 100644 index 000000000..098e8d858 --- /dev/null +++ b/qmcpy/discrete_distribution/kronecker/generating_vectors/kron_vector_d-100_N-2exp20_2026_06_01.txt @@ -0,0 +1,100 @@ +0.618033988749895 +0.3173225474723 +0.59332263014446 +0.20776441643926 +0.27373719258623 +0.649734278361753 +0.478954018631769 +0.86866022435182 +0.22845082022244 +0.581365429377986 +0.282365231829842 +0.0822850909119904 +0.223849641007295 +0.5770772201756 +0.51769659336634 +0.568025390904592 +0.156782234569368 +0.82246227056154 +0.805675312097409 +0.63877102813393 +0.358300563495856 +0.241741343018598 +0.705003192174204 +0.1931911954956 +0.261022001488623 +0.897938992038015 +0.46839743115877 +0.884022067965329 +0.752352896871505 +0.1601583600427 +0.10727599509739 +0.151478435512877 +0.163863657127101 +0.948303450359399 +0.80350943597439 +0.426371623468333 +0.435930910910882 +0.21329852459791 +0.661698149534002 +0.900679822160453 +0.122436710671457 +0.483663584095611 +0.928181067731583 +0.443143014606576 +0.74491332336194 +0.87948409225588 +0.0428242449803 +0.534576896789579 +0.24340042100879 +0.30424418245585 +0.574003104342617 +0.897289023268963 +0.541424476559586 +0.356895660350464 +0.507567280910795 +0.513983550428507 +0.0610821922457415 +0.183871471606587 +0.446015178033969 +0.455684287415085 +0.280817534817491 +0.115220095666085 +0.433740673279323 +0.515605957977756 +0.113076735656464 +0.733928297688305 +0.0597515651584137 +0.422268695684775 +0.0979181139173599 +0.213699261322352 +0.866811679881922 +0.0878569329036737 +0.678412735893121 +0.181093969536107 +0.128913741473518 +0.109341703717108 +0.289067270578427 +0.352218331663839 +0.303605902333137 +0.0613899204730832 +0.959535877660851 +0.475508309069064 +0.688698902674194 +0.657037932118495 +0.645555897563869 +0.720658665263604 +0.914423387894897 +0.425763295044487 +0.328825255006553 +0.892452975558004 +0.16973367306396 +0.912292406867098 +0.0923260018966512 +0.216301713289429 +0.147861410064151 +0.8600781655845 +0.752129792595509 +0.337431120990153 +0.542476014178907 +0.307279789725491 diff --git a/qmcpy/discrete_distribution/kronecker/kronecker.py b/qmcpy/discrete_distribution/kronecker/kronecker.py index 3310daeba..b78c75b04 100644 --- a/qmcpy/discrete_distribution/kronecker/kronecker.py +++ b/qmcpy/discrete_distribution/kronecker/kronecker.py @@ -284,7 +284,118 @@ def __init__(self, gen_vec = _richtmyer_generating_vector(self.dvec.max()+1) elif isinstance(generating_vector, str) and generating_vector.lower() == "suzuki": self.gen_vec_source = "SUZUKI" - gen_vec = _suzuki_generating_vector(self.dvec.max()+1) + gen_vec = _suzuki_generating_vector(self.dvec.max()+1) + elif isinstance(generating_vector, str) and generating_vector.lower() == "anders_cbc": + self.gen_vec_source = "ANDERS_CBC" + ANDERS_CBC = np.array([0.618033988749895, + 0.3173225474723, + 0.59332263014446, + 0.20776441643926, + 0.27373719258623, + 0.649734278361753, + 0.478954018631769, + 0.86866022435182, + 0.22845082022244, + 0.581365429377986, + 0.282365231829842, + 0.0822850909119904, + 0.223849641007295, + 0.5770772201756, + 0.51769659336634, + 0.568025390904592, + 0.156782234569368, + 0.82246227056154, + 0.805675312097409, + 0.63877102813393, + 0.358300563495856, + 0.241741343018598, + 0.705003192174204, + 0.1931911954956, + 0.261022001488623, + 0.897938992038015, + 0.46839743115877, + 0.884022067965329, + 0.752352896871505, + 0.1601583600427, + 0.10727599509739, + 0.151478435512877, + 0.163863657127101, + 0.948303450359399, + 0.80350943597439, + 0.426371623468333, + 0.435930910910882, + 0.21329852459791, + 0.661698149534002, + 0.900679822160453, + 0.122436710671457, + 0.483663584095611, + 0.928181067731583, + 0.443143014606576, + 0.74491332336194, + 0.87948409225588, + 0.0428242449803, + 0.534576896789579, + 0.24340042100879, + 0.30424418245585, + 0.574003104342617, + 0.897289023268963, + 0.541424476559586, + 0.356895660350464, + 0.507567280910795, + 0.513983550428507, + 0.0610821922457415, + 0.183871471606587, + 0.446015178033969, + 0.455684287415085, + 0.280817534817491, + 0.115220095666085, + 0.433740673279323, + 0.515605957977756, + 0.113076735656464, + 0.733928297688305, + 0.0597515651584137, + 0.422268695684775, + 0.0979181139173599, + 0.213699261322352, + 0.866811679881922, + 0.0878569329036737, + 0.678412735893121, + 0.181093969536107, + 0.128913741473518, + 0.109341703717108, + 0.289067270578427, + 0.352218331663839, + 0.303605902333137, + 0.0613899204730832, + 0.959535877660851, + 0.475508309069064, + 0.688698902674194, + 0.657037932118495, + 0.645555897563869, + 0.720658665263604, + 0.914423387894897, + 0.425763295044487, + 0.328825255006553, + 0.892452975558004, + 0.16973367306396, + 0.912292406867098, + 0.0923260018966512, + 0.216301713289429, + 0.147861410064151, + 0.8600781655845, + 0.752129792595509, + 0.337431120990153, + 0.542476014178907, + 0.307279789725491], dtype=np.float64) + gen_vec = ANDERS_CBC + if not (self.dvec.max() < len(gen_vec)): + if warn: + warnings.warn( + f"CBC generating vector only supports dimension <= {len(CBC)}; falling back to Richtmyer.", + RuntimeWarning, + ) + self.gen_vec_source = "RICHTMYER" + gen_vec = _richtmyer_generating_vector(self.dvec.max()+1) else: self.gen_vec_source = "CUSTOM" gen_vec = np.asarray(generating_vector, dtype=float) From bc3d3b674494d1a87416804562f40104da54ca2e Mon Sep 17 00:00:00 2001 From: Anders Pride Date: Wed, 10 Jun 2026 09:29:49 -0500 Subject: [PATCH 08/29] Corrected Kronecker discrepancy calculations --- demos/lattice_kronecker_methods.ipynb | 23 ++++++++++++++----- .../kronecker/kronecker.py | 5 +++- .../discrete_distribution/lattice/lattice.py | 2 +- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/demos/lattice_kronecker_methods.ipynb b/demos/lattice_kronecker_methods.ipynb index 5bfde07ea..52a450e0d 100644 --- a/demos/lattice_kronecker_methods.ipynb +++ b/demos/lattice_kronecker_methods.ipynb @@ -66,26 +66,26 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "id": "c8eec507", "metadata": {}, "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "C:\\Users\\headw\\QMCSoftware\\qmcpy\\discrete_distribution\\kronecker\\kronecker.py:276: RuntimeWarning: CBC generating vector only supports dimension <= 13; falling back to Richtmyer.\n", - " warnings.warn(\n" + "191.36069122430635\n" ] } ], "source": [ - "kron = Kronecker(dimension=dim, seed=12) # initialize a Kronecker sequence as usual\n", + "kron = Kronecker(dimension=dim, seed=12, generating_vector=\"ANDERS_CBC\") # initialize a Kronecker sequence as usual\n", "kron_k_tilde = (lambda x, gamma: np.prod(1 + (x * (x - 1) + 1/6) * gamma, axis=-1), 1) # define the kernel function (in this case, the second Bernoulli polynomial)\n", "\n", "kron_discs = kron._square_periodic_discrepancies(n = n, k_tilde = kron_k_tilde, gamma = coord_weights) # compute the expected squared periodic discrepancies for n = 1, 2, ...\n", "\n", - "kron_wssd = kron.wssd_discrepancy(n = n, weights = sample_weights, k_tilde = kron_k_tilde, gamma = coord_weights) # compute the wssd" + "kron_wssd = kron.wssd_discrepancy(n = n, weights = sample_weights, k_tilde = kron_k_tilde, gamma = coord_weights) # compute the wssd\n", + "print(kron_wssd[-1])" ] }, { @@ -197,6 +197,17 @@ }, "metadata": {}, "output_type": "display_data" + }, + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31mThe Kernel crashed while executing code in the current cell or a previous cell. \n", + "\u001b[1;31mPlease review the code in the cell(s) to identify a possible cause of the failure. \n", + "\u001b[1;31mClick here for more info. \n", + "\u001b[1;31mView Jupyter log for further details." + ] } ], "source": [ diff --git a/qmcpy/discrete_distribution/kronecker/kronecker.py b/qmcpy/discrete_distribution/kronecker/kronecker.py index b78c75b04..23a40bf31 100644 --- a/qmcpy/discrete_distribution/kronecker/kronecker.py +++ b/qmcpy/discrete_distribution/kronecker/kronecker.py @@ -474,7 +474,10 @@ def wssd_discrepancy(self, n, weights, k_tilde = None, gamma = None): def _square_periodic_discrepancies(self, n, k_tilde, gamma): n_array = np.arange(1, n + 1) - k_tilde_terms = k_tilde[0](self.gen_samples(n=n), gamma) + # we need the points without a random shift for the calculation, so we can't use self._gen_samples + i = np.arange(0, n) + points = (i[:,None] * self.gen_vec[:,None,:]) % 1 + k_tilde_terms = k_tilde[0](points, gamma) left_sum = np.cumsum(k_tilde_terms[...,1:], axis=-1) * n_array[1:] right_sum = np.cumsum(n_array[:-1] * k_tilde_terms[...,1:], axis=-1) diff --git a/qmcpy/discrete_distribution/lattice/lattice.py b/qmcpy/discrete_distribution/lattice/lattice.py index 1ad05069c..3018a06bf 100644 --- a/qmcpy/discrete_distribution/lattice/lattice.py +++ b/qmcpy/discrete_distribution/lattice/lattice.py @@ -440,7 +440,7 @@ def expected_squared_periodic_discrepancies(self, n_max, coord_weights=None, ker for i in range(n_max): freq_mtx[:,i] = freq_mtx[:,i] * (i + 1)**(-2) - # multiply by the precomputed frequency matrix and add the constant vector + # multiply by the frequency matrix and add the constant vector discs = k_const + np.vecmat(k_sum, freq_mtx) return discs From 82d8df4cb219985a7dfee54c61b5f69358512d70 Mon Sep 17 00:00:00 2001 From: Anders Pride Date: Thu, 9 Jul 2026 09:17:55 -0500 Subject: [PATCH 09/29] Final version before pull request --- demos/lattice_kronecker_methods.ipynb | 52 ++++++++++++++------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/demos/lattice_kronecker_methods.ipynb b/demos/lattice_kronecker_methods.ipynb index 52a450e0d..384db68ee 100644 --- a/demos/lattice_kronecker_methods.ipynb +++ b/demos/lattice_kronecker_methods.ipynb @@ -40,12 +40,12 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 17, "id": "958e16e1", "metadata": {}, "outputs": [], "source": [ - "dim = 50\n", + "dim = 64\n", "n = 2**20\n", "lat = Lattice(dimension=dim, order=\"RADICAL_INVERSE\", seed=12) # initialize a lattice as usual\n", "coord_weights = np.array([j**(-2) for j in range(1, dim + 1)]) # define some coordinate weights\n", @@ -66,7 +66,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 21, "id": "c8eec507", "metadata": {}, "outputs": [ @@ -74,18 +74,29 @@ "name": "stdout", "output_type": "stream", "text": [ - "191.36069122430635\n" + "193.7028792871213\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\headw\\AppData\\Local\\Temp\\ipykernel_26420\\204085947.py:9: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)\n", + " kron_wssd = np.float64(kron.wssd_discrepancy(n = n, weights = sample_weights, k_tilde = kron_k_tilde, gamma = coord_weights)) # compute the wssd\n" ] } ], "source": [ + "dim = 64\n", + "coord_weights = np.array([j**(-2) for j in range(1, dim + 1)])\n", + "sample_weights = np.arange(1, n+1) # define some sample weights\n", "kron = Kronecker(dimension=dim, seed=12, generating_vector=\"ANDERS_CBC\") # initialize a Kronecker sequence as usual\n", "kron_k_tilde = (lambda x, gamma: np.prod(1 + (x * (x - 1) + 1/6) * gamma, axis=-1), 1) # define the kernel function (in this case, the second Bernoulli polynomial)\n", "\n", - "kron_discs = kron._square_periodic_discrepancies(n = n, k_tilde = kron_k_tilde, gamma = coord_weights) # compute the expected squared periodic discrepancies for n = 1, 2, ...\n", + "kron_discs = kron._square_periodic_discrepancies(n = n, k_tilde = kron_k_tilde, gamma = coord_weights).reshape(-1) # compute the expected squared periodic discrepancies for n = 1, 2, ...\n", "\n", - "kron_wssd = kron.wssd_discrepancy(n = n, weights = sample_weights, k_tilde = kron_k_tilde, gamma = coord_weights) # compute the wssd\n", - "print(kron_wssd[-1])" + "kron_wssd = np.float64(kron.wssd_discrepancy(n = n, weights = sample_weights, k_tilde = kron_k_tilde, gamma = coord_weights)) # compute the wssd\n", + "print(kron_wssd)" ] }, { @@ -106,7 +117,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 19, "id": "524e3b99", "metadata": {}, "outputs": [ @@ -114,12 +125,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time taken for lattice vector wssd search: 8.519208669662476\n", + "Time taken for lattice vector wssd search: 9.876056909561157\n", "Searched lattice vector: [ 1 444567 406809 53917 411513 111013 57773 23363 278133 179399\n", " 145725 480145 365723 134199 361515 297163 315729 250703 322429 236947\n", " 508553 455183 148433 37975 46187 474063 490317 14811 417263 342641\n", " 474417 269197 309749 29993 366775 433399 240621 375377 84847 232327\n", - " 214987 375079 32109 388283 153487 140919 390453 362317 413527 405689]\n" + " 214987 375079 32109 388283 153487 140919 390453 362317 413527 405689\n", + " 307801 95733 176459 498361 147739 178349 300557 427387 162217 127697\n", + " 183267 336879 314911 122203]\n" ] } ], @@ -174,7 +187,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "id": "9f66d72b", "metadata": {}, "outputs": [ @@ -184,30 +197,19 @@ "Text(0, 0.5, 'Periodic Discrepancy')" ] }, - "execution_count": 12, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/QAAANFCAYAAADVs7eyAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAx8BJREFUeJzs3Qd0FFUbxvFn04GQ0HsgdAi9hK5URVCUImAFVFABKxbAihURKxrF3tunIhYQBQQVpPcmvfea0ELafufOmk2WtE3dlP/vnD07c2d25t1EgXfuve+12e12uwAAAAAAQIHi5ekAAAAAAABA5pHQAwAAAABQAJHQAwAAAABQAJHQAwAAAABQAJHQAwAAAABQAJHQAwAAAABQAJHQAwAAAABQAPl4OoD8LiEhQQcOHFDJkiVls9k8HQ4AAAAAoJCz2+06ffq0qlSpIi+vtPvhSegzYJL5kJAQT4cBAAAAAChi9u7dq2rVqqV5nIQ+A6ZnPvEHGRQU5OlwAAAAAACFXFRUlNWxnJiPpoWEPgOJw+xNMk9CDwAAAADIKxlN+6YoHgAAAAAABRAJPQAAAAAABRAJPQAAAAAABRBz6NMQERFhveLj4z0dCgAAAAo582/O2NhYT4cBII/4+vrK29s729ex2c0Cd0i3umBwcLAiIyMpigcAAIAcZf4pfujQIZ06dcrToQDIY6VKlVKlSpVSLXznbh5KDz0AAADgIYnJfIUKFVS8ePEMK1oDKBwP8s6dO6cjR45Y+5UrV87ytUjoAQAAAA8Ns09M5suWLevpcADkoWLFilnvJqk3fwZkdfg9RfEAAAAAD0icM2965gEUPcX/+38/O/UzSOgBAAAAD2KYPVA02XLg/30S+jSYCvdhYWEKDw/3dCgAAAAAAKRAQp+G0aNHa+PGjVq2bJmnQwEAAAAKrNDQUL322msZ9lROnz5d+cHHH39sVR/PD+bPn2/9bFgFAWkhoQcAAACQaXv37tWtt96qKlWqyM/PTzVq1NC9996r48eP5/i9hg0bpr59++Z4kp7aw4bBgwdry5Ytyk3mviZRNy9THM3sDxo0SH/88YfLeR06dNDBgwet5cuA1JDQAwAAAMiUHTt2qHXr1tq6dau++uorbdu2TVOnTtXcuXPVvn17nThxQgWVSbBN1fHc9vTTT1vJ+ubNm/Xpp59aDxx69Oih5557znmOeVCS1jrl2RUTE5Pj10TeI6EHAAAAkOnpqSbZ/P3339W5c2dVr15dvXr10pw5c7R//349+uijaX7WPAS49NJLFRAQYNWsmj17drbjeeWVV9SkSROVKFFCISEhGjVqlM6cOeMctn7LLbcoMjLS2Ss+YcIEdenSRbt379b999/vbE+rN//nn3+2amuZmMuVK6d+/fo5j124cEEPPvigqlatat2/bdu21j0zUrJkSStZNz878/N499139fjjj+uJJ56wkvzUhtybePv06aPSpUtb92rUqJFmzpzpvOaGDRt01VVXKSgoyLr+JZdcou3bt7uMcjAPDMyoivr16ztHWpjRAeY7lylTRtdcc4127drlvGbi55566imVL1/euvadd97p8kBg1qxZ6tSpk3UNswSjiSHxvoa5nvke06ZNU9euXa3q7s2aNdOiRYtcfiYLFy60fi/muPmOPXv21MmTJ60HHua65medXN++fXXzzTerKCOhBwAAAPIJu92uczFxef4y93WX6X3/7bffrKQ5cS3tRCZBvfHGG/XNN9+kes2EhAT179/fehiwZMkSq1d/7Nix2f65eXl5acqUKVZC+8knn1hD1x9++GHnsHUzrN4koqZH3LxMAm6Sy2rVqjl7ys0rNTNmzLAS+N69e2vVqlXWKIQ2bdo4j991111WYvr1119r7dq1GjhwoK644grrwUVmmSkL5uf2448/pvkgxSS1f/31l9atW6dJkyYpMDDQOmYepJgHA/7+/tb3X7FihTUlIi4uzvl5E7t5WGAeovzyyy/WcmkmaTbJ/99//20l1OZ6Jv7kCbv53KZNm6wHDGZEhvnZmQQ/0dmzZzVmzBgtX77cOtf8PszPzPy+kzMPeszPfvXq1apXr56uv/56Z3ymrXv37tZDHvPzXLBggfXwIj4+3vqZmveffvrJeS2zfvuMGTOs71iU+Xg6AAAAAAAO52PjFfbEb3l+341P91RxP/dSA5OomqSzYcOGqR437aZX9ejRoymGrpse/H///dd6IGB6iY3nn3/e6t3Pjvvuu8+5beajP/vss1Yv8ltvvWU9PDBz0E0PsXngkJy3t7ezpzwtpkf7uuuuc0lgTe+ysWfPHn300UfWe+L3MQmr6bE27ea7ZYbpITc/s+Q95MmZ+wwYMMAajWDUqlXLZZUu8z3NgwVfX1+rzSTNyZle/ffff9/6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f6wHCJ9++qk1UuHAgQPO88qUKaOSJUvmSgyxsbG5ct3CgoS+kKhSs4GCR8/TJt9GCtI51Zs9TMt/etvTYQEAAKCQOXXqlP7++29NmjRJXbt2VY0aNdSmTRuNHz9eV199tct5w4cPtxJPkxh269ZNa9ascR7fvn27rrnmGlWsWFGBgYEKDw/XnDlzUvRYm57fIUOGWNdI7JE2IwHMAwST0JqeYzM64OTJk87PJSQk6OGHH7YSTTN6wAyXv/g7pBeb8cILL1ixmUT1tttuU3R0dLZ+bhl9X/N9du/erfvvv9/ZMz5//nzdcsstVo94Ylvid7m4N998pzvuuMO6fkBAgBo3bqxffvnFeXzBggW65JJLVKxYMYWEhOiee+7R2bNn043Z3M/8/CpXrqyGDRtaPweT2J85c8b6+aY15P6tt95S3bp1rThMPNdee63L7+bFF19UnTp1rNEdZpTHc8895zLK4ZtvvlHnzp2tz3/xxRfWsffff9+KwbQ1aNDAukeixM99/fXX6tChg/P7//nnn85z4uPjrfhr1qxp/Qzq16+v119/XckNGzZMffv21UsvvWR957Jly1rLmSd/qHDhwgWNHTvW+hma+M33+OCDD2S3261t89nkzIgNE9u2bduUG0joC5HgshVVc8xsrQjsIj9bvFqvHKdFnzwie0KCp0MDAACAO+x2KeZs3r/Mfd1kklHzmj59upXcpGXgwIE6cuSIfv31V61YsUItW7ZU9+7ddeKEo5CzSQp79+6tuXPnWr39V1xxhfr06aM9e/a4XMckSM2aNbPOefzxx60EyVwnLCxMixYtshJV8zmTsCUyIwdKlCihJUuWWMmjGSY+e/Zst2P73//+ZyXOzz//vJYvX24ld8kTyKzI6PuaYevVqlWzYjW94uZlklOTtCf2lJvXgw8+mOLaJknu1auX9aDj888/18aNG60HEmaofOLDBHM/M7Ji7dq1VsJsfm533XVXpr9HhQoVdOONN1qjMpL/zBOZn5d5WGC+x+bNmzVr1ixdeumlzuPmwY+JzfwuTZxffvmllfQnN27cON17773atGmT9bDGJPVPPPGElfibNvN7MZ//5JNPXD730EMP6YEHHrB+vu3bt7d+vomjRszPyPx8v/32W+u+5nqPPPKI9btObt68edbPy7yb65upB+aVyDxc+uqrrzRlyhQrlnfeecf6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5fBi4xPk6+1lrUl/sb+2HNXg8Oouw/ErBQVo8SPds/mFAAD5WaaH3C9fvly1a9fWq6++6hxy/8orr1htK1emXd0VAACgSKndTQpx1BvKSImXkgoL925SybndoXZZ5/a5GEfxuwOnUq55P/b7ddZ78mT/UFS0MlkqCQBQ2BP6+++/X1dffbV27dqladOmWa+dO3fqqquu0n333Zc7UQIAABREg79w+9R3fV+23jvXK+9sqxwc4NyOOh9rvT87wzFCMjVP/rTBZf+Wj5dlKlwAQBHooR87dqx8fJJG65vthx9+2DoGAACAZEPw3XS59wpdHlZR/VpUc7bZbDbn9pdL91jvc/9Ne079V/+dk2j+5qOZDBgAUKgTelMyf88e178sjL1796pkyZI5FRcAAEChsC+wqdvnvntlafn5pP7Ps+K+3tZ7WqPoExLXtwMAFBmZTugHDx6s2267Td98842VxJvX119/reHDh+v6669XYREREaGwsDCFh4d7OhQAAFCAeYe0TNoZu0saPleqlEaSb5az2zZHio5KceiTRbvTvU+tR2ame9wU1TMF8y5ewx4AUISq3L/00kvW8K8hQ4YoLi7OavP19dXIkSP1wgsvqLAYPXq09YqKiqJ6PwAAyLLKwcWTdoqVlqq1lmzp9Kl8PsDxftscKSSpY+HYmQvWe7lAPx07E6PWNUpr+e6TbsdR99FfndtXvfG3frn7ksx9EQBAwe+h9/Pz0+uvv66TJ09q9erV1stUujdV7/39XddQBQAAKPJSS9793Zim+EEPKda1ov2+k+esZN4wyfzAVknz7TNj/f6UIwAAAEUgoU9UvHhxNWnSxHqZbQAAAKQiteH1V70mla0jXRMhtbg57c8+l7SEnTH2+7Wu+70aZHj7uPiU69YDAIrQkPv+/fvr448/tgrime30mGXsAAAA8J8mA6XoU1JIm6S2cnWku1c4tlvcJK36LM2Pf3tnew2cusjaXrjtuLO9epniKhfor2WP9lD4c3NcPvP6dc1179erre3dJ86pfElGUQJAke2hN3PIE5dNMdvpvQAAAJCMl5fU9g6pSou0zxn0aZqHwpc/lGp785BS1vvFyfptnWqqT9Mqzv3Nh05r04G0h9i/NX+bNaceAFBIe+g/+ugj691ut+upp55S+fLlVaxYsdyODQAAoGgIuybtY+u/066A7xQa/aVL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", + "image/png": "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4447snqljR76UaNGmcFvvXr1zDLjvBHEG8Fu5nB2I/A2errfeust89jYb9y4sRYsWJB1b+PZ8fHx5pcABqN33JgDb/Sqz5o1S5MmTdLWrVvNcoMRyBu99caXEt27d3do65kzZ8xg27ifMQLBmEtv1Bs6dKiZMyCzh964fsOGDXbXGn/aGFMS9u7da36BUKxYMfP5xv7333+fVW///v3myIXt27ebIwAAAPA39NADAOCHjID14MGDmjdvnhlwGz3rRmBvBOmZFi1apKuuusocEm/0jhtDzI059kavfCZjmH1mMG8whqIbAfuFc9ONsqNHj9o9v127dg7HRsDuzMaNG80vDYw2ZI4uMIbdJyYmateuXU6vMYbyf/fdd+Z1TzzxhHnNgw8+aE4tuLD9zjz22GNasWKFvv76azOYz2zD0qVLs55vbJdccol5zlUbAAAo7EiKBwCAnwoPD9fVV19tbk8++aRuvfVWTZgwQSNHjjTnp/fp08fMhG8kljMC6F9//VW33HKL2TtuBPKGkJAQu3saPejOytLT03PcTmPefqtWrTR79myHcxUqVMj2WuPLBmMzfrbHH3/c7En/5JNPzJEFzhijAV566SXzCw7ji4wL29C3b18z78DFqlSpkqOfCwAAXyOgBwAgQERFRWWt/b527VozCH/hhRfMufSGTz/9NM+etXLlSodjYxi+M8bIASMIr1ixoiIiInL8TGPkgPFFhDEc3xmjV94I/I05/8YQ/YvbYExTMO4RHMyfPwCAwMCQewAA/IwxbN5I8Gb0Rm/atEl79uzRZ599pmeffdbMHm8wEsIZyehee+017d6925wXnzkHPi8Yie2M5+3YscPMPG8830iM54wx7718+fJm24x57EZ7jR50I3u+MY/dGWN+vJHAz6hn1DeS7918883mz2SMSLjY4cOHzWR+xlx+IwGfcWxsx44dM8+PHj1aJ0+eNDPzr1692hxmb8ynN3r6L8zgDwCAPyGgBwDAzxjzv9u2bWsOLTeyuDdp0sQccm8kyXv99dfNOkYGemPZOmOIuXHeGO4+derUPGuDMZ/dyBZvZI03Es4ZzzICaWeMXvVly5apZs2auvbaa82efGPovzGH3lWPvZHkz/giYvjw4eZcd2O5OSNA/+GHH8xl7C62bds2M5Gfkc3fGEKfuUVHR5vnq1atan4JYQTvRnI9Yzm/++67z0zMlzmCAQAAf0OWewAA4BVj2LoRDBsbAADwHb6SBgAAAADADxHQAwAAAADghxhyDwAAAACAH6KHHgAAAAAAP0RADwAAAACAHyKgBwAAAADADxHQAwAAAADghwjoAQAAAADwQwT0AAAAAAD4IQJ6AAAAAAD8EAE9AAAAAADyP/8PTDW9jdOdZckAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" - }, - { - "ename": "", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31mThe Kernel crashed while executing code in the current cell or a previous cell. \n", - "\u001b[1;31mPlease review the code in the cell(s) to identify a possible cause of the failure. \n", - "\u001b[1;31mClick here for more info. \n", - "\u001b[1;31mView Jupyter log for further details." - ] } ], "source": [ @@ -223,7 +225,7 @@ "fig, ax = pyplot.subplots(nrows=1, ncols=1, figsize=(12,10))\n", "ax.plot(np.arange(1, n+1), np.sqrt(lat_discs1), label=\"Kuo Lattice Discrepancy\")\n", "ax.plot(np.arange(1, n+1), np.sqrt(lat_discs2), label=\"New Lattice Discrepancy\")\n", - "# ax.plot(np.arange(1, n+1), np.sqrt(kron_discs), label=\"Kronecker Discrepancy\")\n", + "ax.plot(np.arange(1, n+1), np.sqrt(kron_discs), label=\"Kronecker Discrepancy\")\n", "ax.set_xscale(\"log\")\n", "ax.set_yscale(\"log\")\n", "ax.legend()\n", From 9033e5990dc5fdd725910dfec60d96ec3317004a Mon Sep 17 00:00:00 2001 From: sou-cheng-choi Date: Fri, 17 Jul 2026 10:10:44 +0800 Subject: [PATCH 10/29] Add booktest file --- test/booktests/tb_lattice_kronecker_methods.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 test/booktests/tb_lattice_kronecker_methods.py diff --git a/test/booktests/tb_lattice_kronecker_methods.py b/test/booktests/tb_lattice_kronecker_methods.py new file mode 100644 index 000000000..c10cc0473 --- /dev/null +++ b/test/booktests/tb_lattice_kronecker_methods.py @@ -0,0 +1,12 @@ +import unittest +from testbook import testbook +from __init__ import TB_TIMEOUT, BaseNotebookTest + +class NotebookTests(BaseNotebookTest): + + @testbook('../../demos/lattice_kronecker_methods.ipynb', execute=True, timeout=TB_TIMEOUT) + def test_lattice_kronecker_methods_notebook(self, tb): + pass + +if __name__ == '__main__': + unittest.main() From 15ee863c9ea855f7f80f47aa943b6ee86857f2c6 Mon Sep 17 00:00:00 2001 From: sou-cheng-choi Date: Fri, 17 Jul 2026 10:16:33 +0800 Subject: [PATCH 11/29] Add imports in __init__.py --- qmcpy/discrete_distribution/__init__.py | 5 ++--- qmcpy/discrete_distribution/kronecker/__init__.py | 3 ++- qmcpy/discrete_distribution/lattice/__init__.py | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/qmcpy/discrete_distribution/__init__.py b/qmcpy/discrete_distribution/__init__.py index 182a16516..d5f08e3a1 100644 --- a/qmcpy/discrete_distribution/__init__.py +++ b/qmcpy/discrete_distribution/__init__.py @@ -1,10 +1,10 @@ from .abstract_discrete_distribution import AbstractDiscreteDistribution from .iid_std_uniform import IIDStdUniform -from .lattice import Lattice +from .lattice import Lattice, lattice_vector_wssd_search from .digital_net_b2 import DigitalNetB2 from .digital_net_any_bases import DigitalNetAnyBases,Halton,Faure from .mpmc import MPMC -from .kronecker import Kronecker +from .kronecker import Kronecker, kronecker_search_march_2026 DiscreteDistribution = AbstractDiscreteDistribution _DiscreteDistribution = AbstractDiscreteDistribution @@ -12,4 +12,3 @@ DigitalNet = DigitalNetB2 Net = DigitalNetB2 NetB2 = DigitalNetB2 - diff --git a/qmcpy/discrete_distribution/kronecker/__init__.py b/qmcpy/discrete_distribution/kronecker/__init__.py index 6d0653bb3..d88272a27 100644 --- a/qmcpy/discrete_distribution/kronecker/__init__.py +++ b/qmcpy/discrete_distribution/kronecker/__init__.py @@ -1 +1,2 @@ -from .kronecker import Kronecker \ No newline at end of file +from .kronecker import Kronecker +from .kronecker_search_methods import kronecker_search_march_2026 diff --git a/qmcpy/discrete_distribution/lattice/__init__.py b/qmcpy/discrete_distribution/lattice/__init__.py index b57762ece..3eb626fd7 100644 --- a/qmcpy/discrete_distribution/lattice/__init__.py +++ b/qmcpy/discrete_distribution/lattice/__init__.py @@ -1 +1,2 @@ from .lattice import Lattice +from .lattice_vector_wssd_search import lattice_vector_wssd_search From 081936cba3374caf9aa77c59bb06986e87bc1f4b Mon Sep 17 00:00:00 2001 From: sou-cheng-choi Date: Fri, 17 Jul 2026 10:18:29 +0800 Subject: [PATCH 12/29] Comment out global high precision --- .../kronecker/kronecker_search_methods.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py index bd6108b95..0a0cb7569 100644 --- a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py +++ b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py @@ -1,7 +1,7 @@ import numpy as np from sympy import gcdex, primerange, prime import time -np.set_printoptions(precision=17) +#np.set_printoptions(precision=17) #https://github.com/sympy/sympy/releases @@ -176,4 +176,4 @@ def kronecker_search_march_2026(N, dMax, searchsize, kernel=None, coord_weights= # print(a) # print(wssd) # end = time.time() -# print("Run time (seconds): ", end - start) \ No newline at end of file +# print("Run time (seconds): ", end - start) From a48c42e7b777da09e6d32818f7e0741b603bc6d7 Mon Sep 17 00:00:00 2001 From: sou-cheng-choi Date: Fri, 17 Jul 2026 10:33:14 +0800 Subject: [PATCH 13/29] Fix unit test for demo --- demos/lattice_kronecker_methods.ipynb | 136 +++++++++++++----- .../booktests/tb_lattice_kronecker_methods.py | 8 +- 2 files changed, 102 insertions(+), 42 deletions(-) diff --git a/demos/lattice_kronecker_methods.ipynb b/demos/lattice_kronecker_methods.ipynb index 384db68ee..0ab60dcfe 100644 --- a/demos/lattice_kronecker_methods.ipynb +++ b/demos/lattice_kronecker_methods.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "2e06ea48", "metadata": {}, "outputs": [], @@ -40,7 +40,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 2, "id": "958e16e1", "metadata": {}, "outputs": [], @@ -66,7 +66,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 3, "id": "c8eec507", "metadata": {}, "outputs": [ @@ -74,15 +74,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "193.7028792871213\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\headw\\AppData\\Local\\Temp\\ipykernel_26420\\204085947.py:9: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)\n", - " kron_wssd = np.float64(kron.wssd_discrepancy(n = n, weights = sample_weights, k_tilde = kron_k_tilde, gamma = coord_weights)) # compute the wssd\n" + "[193.70287929]\n" ] } ], @@ -117,7 +109,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 4, "id": "524e3b99", "metadata": {}, "outputs": [ @@ -125,20 +117,18 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time taken for lattice vector wssd search: 9.876056909561157\n", + "Time taken for lattice vector wssd search: 4.327883005142212\n", "Searched lattice vector: [ 1 444567 406809 53917 411513 111013 57773 23363 278133 179399\n", " 145725 480145 365723 134199 361515 297163 315729 250703 322429 236947\n", " 508553 455183 148433 37975 46187 474063 490317 14811 417263 342641\n", - " 474417 269197 309749 29993 366775 433399 240621 375377 84847 232327\n", - " 214987 375079 32109 388283 153487 140919 390453 362317 413527 405689\n", - " 307801 95733 176459 498361 147739 178349 300557 427387 162217 127697\n", - " 183267 336879 314911 122203]\n" + " 269197 474417 309749 29993 366775 433399 240621 375377 84847 232327\n", + " 214987 375079 32109 153487 388283 140919 390453 362317 405689 413527\n", + " 307801 147739 176459 95733 498361 178349 127697 427387 162217 183267\n", + " 300557 336879 314911 122203]\n" ] } ], "source": [ - "from qmcpy.discrete_distribution.lattice.lattice_vector_wssd_search import lattice_vector_wssd_search\n", - "\n", "# note that the search requires that the sample weights be w_n = n, so they are not customizable\n", "\n", "time_start = time()\n", @@ -158,13 +148,95 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "09388fbc", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Time taken for Kronecker vector wssd search: 417.6621832847595\n", + "Searched Kronecker vector: (array([0.61803399, 0.44322929, 0.22874783, 0.85854891, 0.09862349,\n", + " 0.13027022, 0.30100237, 0.49129871, 0.10752283, 0.93244982,\n", + " 0.08420257, 0.2563596 , 0.32164088, 0.19570311, 0.5898421 ,\n", + " 0.60631972, 0.02965074, 0.57696365, 0.29815947, 0.72586386,\n", + " 0.81107075, 0.6439515 , 0.07966279, 0.05997121, 0.09380327,\n", + " 0.64980017, 0.27700713, 0.74102903, 0.87941726, 0.56144415,\n", + " 0.11886968, 0.41924865, 0.54660185, 0.08176813, 0.48158459,\n", + " 0.25388801, 0.23265409, 0.54636109, 0.10474602, 0.16138721,\n", + " 0.31612105, 0.39305959, 0.31975094, 0.03629234, 0.37544416,\n", + " 0.05323235, 0.16550695, 0.95164815, 0.15079678, 0.24254269,\n", + " 0.29654601, 0.10189676, 0.03117397, 0.49020769, 0.40708275,\n", + " 0.31187689, 0.41786611, 0.84794106, 0.31750284, 0.29872605,\n", + " 0.11568039, 0.32747855, 0.1734749 , 0.40610889]), 126.80242919921875, array([2.94259096e-01, 1.05815272e-01, 5.93755625e-02, ...,\n", + " 5.26598765e-11, 5.25139932e-11, 5.26756416e-11]), array([[43., 39., 97., 88.],\n", + " [19., 8., 83., 35.],\n", + " [61., 6., 71., 7.],\n", + " [67., 11., 61., 10.],\n", + " [97., 72., 31., 23.],\n", + " [ 7., 3., 23., 10.],\n", + " [29., 28., 59., 57.],\n", + " [41., 31., 37., 28.],\n", + " [83., 69., 89., 74.],\n", + " [ 7., 1., 83., 12.],\n", + " [11., 10., 43., 39.],\n", + " [19., 9., 59., 28.],\n", + " [37., 6., 31., 5.],\n", + " [97., 62., 61., 39.],\n", + " [37., 20., 61., 33.],\n", + " [ 2., 1., 67., 34.],\n", + " [41., 15., 71., 26.],\n", + " [11., 3., 37., 10.],\n", + " [53., 45., 73., 62.],\n", + " [43., 30., 53., 37.],\n", + " [47., 38., 73., 59.],\n", + " [23., 2., 11., 1.],\n", + " [71., 53., 67., 50.],\n", + " [ 5., 3., 53., 32.],\n", + " [61., 33., 37., 20.],\n", + " [23., 18., 83., 65.],\n", + " [23., 20., 31., 27.],\n", + " [73., 51., 83., 58.],\n", + " [23., 9., 41., 16.],\n", + " [ 7., 5., 59., 42.],\n", + " [61., 44., 43., 31.],\n", + " [29., 6., 53., 11.],\n", + " [ 5., 4., 61., 49.],\n", + " [43., 40., 29., 27.],\n", + " [17., 16., 67., 63.],\n", + " [17., 10., 73., 43.],\n", + " [29., 6., 53., 11.],\n", + " [ 7., 2., 67., 19.],\n", + " [43., 36., 37., 31.],\n", + " [13., 6., 41., 19.],\n", + " [ 5., 2., 13., 5.],\n", + " [31., 8., 97., 25.],\n", + " [ 3., 2., 83., 55.],\n", + " [23., 3., 61., 8.],\n", + " [ 2., 1., 37., 19.],\n", + " [ 5., 1., 31., 6.],\n", + " [79., 59., 83., 62.],\n", + " [11., 8., 73., 53.],\n", + " [83., 74., 37., 33.],\n", + " [11., 8., 37., 27.],\n", + " [ 2., 1., 19., 10.],\n", + " [ 3., 1., 97., 32.],\n", + " [79., 76., 53., 51.],\n", + " [83., 38., 59., 27.],\n", + " [19., 5., 61., 16.],\n", + " [13., 5., 31., 12.],\n", + " [67., 39., 79., 46.],\n", + " [13., 7., 41., 22.],\n", + " [61., 13., 47., 10.],\n", + " [ 5., 3., 43., 26.],\n", + " [41., 4., 31., 3.],\n", + " [ 5., 4., 29., 23.],\n", + " [89., 77., 37., 32.]]))\n" + ] + } + ], "source": [ - "from qmcpy.discrete_distribution.kronecker.kronecker_search_methods import kronecker_search_march_2026\n", - "\n", "searchsize = 25 # the time cost is O(dim * N * searchsize^2), so searchsize should be chosen with care. The largest I have run was in MATLAB with searchsize = 300, N = 2^20, d = 100, which took about 24 hours \n", "\n", "# note that the search requires that the sample weights be w_n = n, so they are not customizable\n", @@ -187,23 +259,13 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 6, "id": "9f66d72b", "metadata": {}, "outputs": [ { "data": { - "text/plain": [ - "Text(0, 0.5, 'Periodic Discrepancy')" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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4447snqljR76UaNGmcFvvXr1zDLjvBHEG8Fu5nB2I/A2errfeust89jYb9y4sRYsWJB1b+PZ8fHx5pcABqN33JgDb/Sqz5o1S5MmTdLWrVvNcoMRyBu99caXEt27d3do65kzZ8xg27ifMQLBmEtv1Bs6dKiZMyCzh964fsOGDXbXGn/aGFMS9u7da36BUKxYMfP5xv7333+fVW///v3myIXt27ebIwAAAPA39NADAOCHjID14MGDmjdvnhlwGz3rRmBvBOmZFi1apKuuusocEm/0jhtDzI059kavfCZjmH1mMG8whqIbAfuFc9ONsqNHj9o9v127dg7HRsDuzMaNG80vDYw2ZI4uMIbdJyYmateuXU6vMYbyf/fdd+Z1TzzxhHnNgw8+aE4tuLD9zjz22GNasWKFvv76azOYz2zD0qVLs55vbJdccol5zlUbAAAo7EiKBwCAnwoPD9fVV19tbk8++aRuvfVWTZgwQSNHjjTnp/fp08fMhG8kljMC6F9//VW33HKL2TtuBPKGkJAQu3saPejOytLT03PcTmPefqtWrTR79myHcxUqVMj2WuPLBmMzfrbHH3/c7En/5JNPzJEFzhijAV566SXzCw7ji4wL29C3b18z78DFqlSpkqOfCwAAXyOgBwAgQERFRWWt/b527VozCH/hhRfMufSGTz/9NM+etXLlSodjYxi+M8bIASMIr1ixoiIiInL8TGPkgPFFhDEc3xmjV94I/I05/8YQ/YvbYExTMO4RHMyfPwCAwMCQewAA/IwxbN5I8Gb0Rm/atEl79uzRZ599pmeffdbMHm8wEsIZyehee+017d6925wXnzkHPi8Yie2M5+3YscPMPG8830iM54wx7718+fJm24x57EZ7jR50I3u+MY/dGWN+vJHAz6hn1DeS7918883mz2SMSLjY4cOHzWR+xlx+IwGfcWxsx44dM8+PHj1aJ0+eNDPzr1692hxmb8ynN3r6L8zgDwCAPyGgBwDAzxjzv9u2bWsOLTeyuDdp0sQccm8kyXv99dfNOkYGemPZOmOIuXHeGO4+derUPGuDMZ/dyBZvZI03Es4ZzzICaWeMXvVly5apZs2auvbaa82efGPovzGH3lWPvZHkz/giYvjw4eZcd2O5OSNA/+GHH8xl7C62bds2M5Gfkc3fGEKfuUVHR5vnq1atan4JYQTvRnI9Yzm/++67z0zMlzmCAQAAf0OWewAA4BVj2LoRDBsbAADwHb6SBgAAAADADxHQAwAAAADghxhyDwAAAACAH6KHHgAAAAAAP0RADwAAAACAHyKgBwAAAADADxHQAwAAAADghwjoAQAAAADwQwT0AAAAAAD4IQJ6AAAAAAD8EAE9AAAAAADyP/8PTDW9jdOdZckAAAAASUVORK5CYII=", + "image/png": "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mc+ZfZjrOHbsWL377rsZfk5MeDl79mzrZX4O0ndPffrpp615cyyzn2+++cYKBI177rnHmjdhYopJkyZZoaW5/oADO+BkERER5jet9X69WDjzXfuQ0eXt1cdXt16D595nPxNzJqebBQAAABd1/vx5+6ZNm6z3VElJdntsdM68zLEvUf/+/e033XSTNd2wYUP7XXfdZU3PnDnT+nd8irvvvtt+7733Onx2yZIldjc3N+u8k5KS7IUKFbJPmzbNWle7dm37yJEj7aGhodb8H3/8Yff09LSfPXs2y7aY45njXqouXbrYhw8fnjrfokUL+9ChQx22WbhwobXf06dPOyxPv+3WrVutbebPn5/pcUaMGGFv3769w7L9+/dbnzGfzUxWxzXmzp1rrVu2bFmG72DVqlXWuj179mS632LFitmfffZZe1bMZx955BGHZW3atLG//vrrDsu++uore9GiRR0+d//99zts06BBA/vgwYOzPNbbb79tr1evXur8iy++aPfz87NHRkamLnv88cet/Rhmube3t33s2LGZ7s/8HBUoUMA+derU1GU1a9a0v/TSS5f+5+46vg/F5fFwjLOAvKll90dUaElZ1Vn+iEYX8teSo0t1y8we+l/rUapdpHZONw8AAADXg/hz0uvFcubYzxySvPwv+2NmHCxT6fLYY49lWGeqckzl1ddff526zOQepkvY7t27VbVqVTVv3tyqGDJd3kx1zQMPPGB1F9uyZYtViRMeHm51P7sSiYmJVpXYt99+q4MHDyouLs6q1LnS/aW3du1aqwrNVJFlxpz7woULUyuyLqw4Mt3qLkdKNVVmg+TXqlVLbdq0sboQdujQQe3bt9ett95qdYE0FVtmPC2z/mLq16+fof2m4it9xZW5nqaq7dy5c6nX0FSwpWfmzbVJYaruTIWaOefo6GirC2JgYKDDZ0zXwfRji5kujimVZqaay3xnWbXfdG80VXWmi6Spblu9erVVbWeqzIALEWDBaUaPHm29zC/G61GNZjcpX8FQVfq+j0YW8dB+HVf/uf01tN5QDag2QG42etwCAAAgdzEBlAlNTDevlLGiUpjA4r777rPGvbqQGcfIMN0DP/vsM6vLmuluZ8KNlFDLBFhZBUSX4u2337a6rb333ntWuGPGdzJjWJkg62qZbn0XY869a9euVsB3IRPQXK6Ubnkm7LmQCdLm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", "text/plain": [ "
" ] @@ -250,7 +312,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.11" + "version": "3.13.13" } }, "nbformat": 4, diff --git a/test/booktests/tb_lattice_kronecker_methods.py b/test/booktests/tb_lattice_kronecker_methods.py index c10cc0473..d98231616 100644 --- a/test/booktests/tb_lattice_kronecker_methods.py +++ b/test/booktests/tb_lattice_kronecker_methods.py @@ -1,12 +1,10 @@ import unittest -from testbook import testbook -from __init__ import TB_TIMEOUT, BaseNotebookTest +from __init__ import BaseNotebookTest class NotebookTests(BaseNotebookTest): - @testbook('../../demos/lattice_kronecker_methods.ipynb', execute=True, timeout=TB_TIMEOUT) - def test_lattice_kronecker_methods_notebook(self, tb): - pass + def test_lattice_kronecker_methods_notebook(self): + self.run_notebook('../../demos/lattice_kronecker_methods.ipynb') if __name__ == '__main__': unittest.main() From cfbe5ec988d604aa20b0deae529c9d0ee473457a Mon Sep 17 00:00:00 2001 From: sou-cheng-choi Date: Fri, 17 Jul 2026 10:36:13 +0800 Subject: [PATCH 14/29] Replace with a smaller example in code cell [5] --- test/booktests/tb_lattice_kronecker_methods.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/test/booktests/tb_lattice_kronecker_methods.py b/test/booktests/tb_lattice_kronecker_methods.py index d98231616..421ef956e 100644 --- a/test/booktests/tb_lattice_kronecker_methods.py +++ b/test/booktests/tb_lattice_kronecker_methods.py @@ -1,10 +1,21 @@ import unittest from __init__ import BaseNotebookTest + class NotebookTests(BaseNotebookTest): def test_lattice_kronecker_methods_notebook(self): - self.run_notebook('../../demos/lattice_kronecker_methods.ipynb') + # Keep enough lattice candidates for the reduced dimension: dim <= n / 4. + replacements = { + "dim = 64": "dim = 8", + "n = 2**20": "n = 2**5", + "searchsize = 25": "searchsize = 4", + } + self.run_notebook( + "../../demos/lattice_kronecker_methods.ipynb", + replacements=replacements, + ) + if __name__ == '__main__': unittest.main() From a4055a10d323b98458049ed77a43c5f461334769 Mon Sep 17 00:00:00 2001 From: sou-cheng-choi Date: Fri, 17 Jul 2026 10:48:41 +0800 Subject: [PATCH 15/29] Add doc --- docs/api/discrete_distributions.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/api/discrete_distributions.md b/docs/api/discrete_distributions.md index c0d210da6..e6d90d456 100644 --- a/docs/api/discrete_distributions.md +++ b/docs/api/discrete_distributions.md @@ -24,6 +24,10 @@ jupyter: ::: qmcpy.discrete_distribution.lattice.Lattice +## `lattice_vector_wssd_search` + +::: qmcpy.discrete_distribution.lattice.lattice_vector_wssd_search.lattice_vector_wssd_search + ## `Halton` ::: qmcpy.discrete_distribution.digital_net_any_bases.halton.Halton @@ -40,6 +44,10 @@ jupyter: ::: qmcpy.discrete_distribution.kronecker.Kronecker +## `kronecker_search_march_2026` + +::: qmcpy.discrete_distribution.kronecker.kronecker_search_methods.kronecker_search_march_2026 + ## `IIDStdUniform` ::: qmcpy.discrete_distribution.iid_std_uniform.IIDStdUniform From cfbcf9caf10510456830118db4ea866bc33efd1a Mon Sep 17 00:00:00 2001 From: sou-cheng-choi Date: Fri, 17 Jul 2026 10:51:44 +0800 Subject: [PATCH 16/29] Potential fix for pull request finding 'Unused import' Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> --- .../discrete_distribution/kronecker/kronecker_search_methods.py | 1 - 1 file changed, 1 deletion(-) diff --git a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py index 0a0cb7569..2e6849b6c 100644 --- a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py +++ b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py @@ -1,6 +1,5 @@ import numpy as np from sympy import gcdex, primerange, prime -import time #np.set_printoptions(precision=17) #https://github.com/sympy/sympy/releases From 2a3bbb4f2d84c23eb27d4e74ce30522406c26358 Mon Sep 17 00:00:00 2001 From: sou-cheng-choi Date: Fri, 17 Jul 2026 10:51:57 +0800 Subject: [PATCH 17/29] Potential fix for pull request finding 'Testing equality to None' Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> --- .../discrete_distribution/lattice/lattice_vector_wssd_search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py index c1b02c2ad..1c953ac53 100644 --- a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py +++ b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py @@ -3,7 +3,7 @@ # I am not sure where the best place to put this is, will ask Aleksi def lattice_vector_wssd_search(N, d, kernel,coord_weights): - if kernel == None: + if kernel is None: kernel = lambda x: x * (x - 1) + 1 / 6 # default kernel is the second Bernoulli polynomial if coord_weights is None: coord_weights = np.array([j**(-2) for j in range(1, d + 1)], dtype=np.float64) # default coordinate weights are j^(-2) From b0889dca7798b36c07f93ac4d2ef904beb572301 Mon Sep 17 00:00:00 2001 From: sou-cheng-choi Date: Fri, 17 Jul 2026 15:44:49 +0800 Subject: [PATCH 18/29] Fix a bug in warning --- qmcpy/discrete_distribution/kronecker/kronecker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qmcpy/discrete_distribution/kronecker/kronecker.py b/qmcpy/discrete_distribution/kronecker/kronecker.py index 23a40bf31..41dd553f7 100644 --- a/qmcpy/discrete_distribution/kronecker/kronecker.py +++ b/qmcpy/discrete_distribution/kronecker/kronecker.py @@ -391,7 +391,7 @@ def __init__(self, if not (self.dvec.max() < len(gen_vec)): if warn: warnings.warn( - f"CBC generating vector only supports dimension <= {len(CBC)}; falling back to Richtmyer.", + f"ANDERS_CBC generating vector only supports dimension <= {len(ANDERS_CBC)}; falling back to Richtmyer.", RuntimeWarning, ) self.gen_vec_source = "RICHTMYER" From 98221ba13264f2b13c988a0c91ad6725668ad793 Mon Sep 17 00:00:00 2001 From: sou-cheng-choi Date: Fri, 17 Jul 2026 15:44:59 +0800 Subject: [PATCH 19/29] Add unit tests --- test/test_dd_lattice_kronecker.py | 189 ++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 test/test_dd_lattice_kronecker.py diff --git a/test/test_dd_lattice_kronecker.py b/test/test_dd_lattice_kronecker.py new file mode 100644 index 000000000..3f98b7b64 --- /dev/null +++ b/test/test_dd_lattice_kronecker.py @@ -0,0 +1,189 @@ +import numpy as np +import numpy.testing as npt +import pytest + +from qmcpy import ( + Kronecker, + Lattice, + kronecker_search_march_2026, + lattice_vector_wssd_search, +) + +###################################################### +# Helper functions +###################################################### +def _bernoulli_two(x): + return x * (x - 1) + 1 / 6 + + +def _periodic_kernel(x, coord_weights): + return np.prod(1 + _bernoulli_two(x) * coord_weights, axis=-1) + + +def _direct_squared_discrepancies(points, coord_weights): + """Evaluate the periodic-kernel definition directly for small prefixes.""" + return np.array( + [ + _periodic_kernel( + (points[:n, None] - points[None, :n]) % 1, coord_weights + ).mean() + - 1 + for n in range(1, len(points) + 1) + ] + ) + + +###################################################### +# Test class for Lattice and Kronecker methods +###################################################### +class TestLatticeKroneckerMethods(object): + + def test_lattice_discrepancy_and_wssd(self): + n, coord_weights = 8, np.array([1.0, 0.25]) + lattice = Lattice(2, randomize=False, order="RADICAL_INVERSE") + expected = _direct_squared_discrepancies( + lattice.gen_samples(n=n, warn=False), coord_weights + ) + + for actual in ( + lattice.expected_squared_periodic_discrepancies(n), + lattice.expected_squared_periodic_discrepancies( + n, coord_weights=coord_weights, kernel=_bernoulli_two + ), + ): + assert actual.shape == (n,) and np.isfinite(actual).all() + npt.assert_allclose(actual, expected, rtol=0, atol=5e-15) + + npt.assert_allclose( + lattice.wssd(n), np.arange(1, n + 1) @ expected, rtol=0, atol=5e-14 + ) + sample_weights = np.linspace(0.5, 1.5, n) + npt.assert_allclose( + lattice.wssd( + n, coord_weights=coord_weights, sample_weights=sample_weights + ), + sample_weights @ expected, + rtol=0, + atol=5e-14, + ) + + def test_lattice_validation(self): + lattice = Lattice(2, randomize=False) + with pytest.raises(ValueError, match="coord_weights"): + lattice.expected_squared_periodic_discrepancies(8, coord_weights=[1.0]) + with pytest.raises(ValueError, match="coord_weights"): + lattice.wssd(8, coord_weights=[1.0]) + with pytest.raises(ValueError, match="sample_weights"): + lattice.wssd(8, sample_weights=np.ones(7)) + with pytest.raises(NotImplementedError, match="linear order"): + Lattice(2, randomize=False, order="LINEAR").expected_squared_periodic_discrepancies(8) + + def test_lattice_vector_search(self): + default = lattice_vector_wssd_search(16, 4, None, None) + explicit = lattice_vector_wssd_search( + 16, 4, _bernoulli_two, np.array([1.0, 0.25, 1 / 9, 1 / 16]) + ) + npt.assert_array_equal(default, np.array([1, 5, 3, 7])) + npt.assert_array_equal(explicit, default) + assert default.shape == (4,) and default.dtype.kind in "iu" + assert len(np.unique(default)) == len(default) and np.all(default % 2 == 1) + + def test_kronecker_discrepancy_and_wssd(self): + n = 8 + kronecker = Kronecker( + 2, generating_vector="SUZUKI", randomize="SHIFT", shift=[0.1, 0.2] + ) + points = (np.arange(n)[:, None] * kronecker.gen_vec[0]) % 1 + sample_weights = np.arange(1, n + 1) + expected = _direct_squared_discrepancies(points, np.ones(2)) + actual = kronecker.periodic_discrepancy(n) ** 2 + assert actual.shape == (1, n) + npt.assert_allclose(actual, expected[None], rtol=0, atol=5e-15) + npt.assert_allclose( + kronecker.wssd_discrepancy(n, sample_weights), + [sample_weights @ expected], + rtol=0, + atol=5e-14, + ) + + coord_weights, kernel = np.array([1.0, 0.25]), (_periodic_kernel, 1) + expected = _direct_squared_discrepancies(points, coord_weights) + for actual in ( + kronecker._square_periodic_discrepancies(n, kernel, coord_weights), + kronecker.periodic_discrepancy( + n, k_tilde=kernel, gamma=coord_weights + ) + ** 2, + ): + npt.assert_allclose(actual, expected[None], rtol=0, atol=5e-15) + npt.assert_allclose( + kronecker.wssd_discrepancy( + n, sample_weights, k_tilde=kernel, gamma=coord_weights + ), + [sample_weights @ expected], + rtol=0, + atol=5e-14, + ) + + def test_anders_cbc_fallback(self): + kronecker = Kronecker(3, generating_vector="ANDERS_CBC", randomize=False) + assert kronecker.gen_vec_source == "ANDERS_CBC" + assert kronecker.gen_vec.shape == (1, 3) and np.isfinite(kronecker.gen_vec).all() + + with pytest.warns(RuntimeWarning, match="ANDERS_CBC.*dimension <= 100"): + fallback = Kronecker( + 101, generating_vector="ANDERS_CBC", randomize=False + ) + assert fallback.gen_vec_source == "RICHTMYER" + assert fallback.gen_vec.shape == (1, 101) + + def test_kronecker_search(self): + n = 8 + vector, wssd, discrepancies, coefficients = kronecker_search_march_2026( + N=n, dMax=3, searchsize=3 + ) + assert vector.shape == (3,) and discrepancies.shape == (n,) + assert coefficients.shape == (2, 4) + assert np.isfinite(vector).all() and np.isfinite(discrepancies).all() + assert np.all((0 <= vector) & (vector < 1)) + npt.assert_allclose( + wssd, np.arange(1, n + 1) @ discrepancies, rtol=0, atol=5e-14 + ) + + coord_weights = np.array([1.0, 0.25, 1 / 9]) + points = (np.arange(n)[:, None] * vector) % 1 + npt.assert_allclose( + discrepancies, + _direct_squared_discrepancies(points, coord_weights), + rtol=0, + atol=5e-15, + ) + + vector, wssd, discrepancies, coefficients = kronecker_search_march_2026( + N=n, + dMax=3, + searchsize=3, + kernel=_bernoulli_two, + coord_weights=coord_weights, + gen_vec_init=1.25, + ) + assert vector[0] == pytest.approx(0.25) and coefficients.shape == (2, 4) + npt.assert_allclose( + wssd, np.arange(1, n + 1) @ discrepancies, rtol=0, atol=5e-14 + ) + + @pytest.mark.parametrize( + ("kwargs", "message"), + [ + ({"N": 8, "dMax": 2, "searchsize": 1}, "searchsize"), + ({"N": 1, "dMax": 2, "searchsize": 2}, "N must"), + ({"N": 8, "dMax": 0, "searchsize": 2}, "dMax"), + ( + {"N": 8, "dMax": 3, "searchsize": 2, "coord_weights": np.ones(2)}, + "coord_weights", + ), + ], + ) + def test_kronecker_search_validation(self, kwargs, message): + with pytest.raises(ValueError, match=message): + kronecker_search_march_2026(**kwargs) From 2542d0d37a0ff0841e8199bec2e52e4a2238ad8b Mon Sep 17 00:00:00 2001 From: Anders Pride Date: Tue, 28 Jul 2026 16:05:09 -0500 Subject: [PATCH 20/29] Several miscellaneous requested changes: Changed variable & function names to be more consistent and descriptive. Fixed imports where needed and removed a few extraneous lines. Added docstrings/doctests where needed. Updated examples in the lattice_kronecker_methods demo to ensure a reasonable run time. --- demos/lattice_kronecker_methods.ipynb | 151 +++++------------- qmcpy/discrete_distribution/__init__.py | 2 +- .../kronecker/__init__.py | 2 +- .../kronecker/kronecker.py | 15 +- .../kronecker/kronecker_search_methods.py | 86 +++++----- .../lattice/lattice_vector_wssd_search.py | 93 ++++++++--- 6 files changed, 159 insertions(+), 190 deletions(-) diff --git a/demos/lattice_kronecker_methods.ipynb b/demos/lattice_kronecker_methods.ipynb index 0ab60dcfe..d8e721f27 100644 --- a/demos/lattice_kronecker_methods.ipynb +++ b/demos/lattice_kronecker_methods.ipynb @@ -10,16 +10,15 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "2e06ea48", "metadata": {}, "outputs": [], "source": [ "from qmcpy import *\n", "import numpy as np\n", - "from matplotlib import pyplot\n", "from time import time\n", - "np.set_printoptions(legacy='1.25')" + "from matplotlib import pyplot" ] }, { @@ -43,17 +42,26 @@ "execution_count": 2, "id": "958e16e1", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "17.68626758525142\n" + ] + } + ], "source": [ - "dim = 64\n", - "n = 2**20\n", + "dim = 100\n", + "n = 2**15\n", "lat = Lattice(dimension=dim, order=\"RADICAL_INVERSE\", seed=12) # initialize a lattice as usual\n", "coord_weights = np.array([j**(-2) for j in range(1, dim + 1)]) # define some coordinate weights\n", "\n", "lat_discs = lat.expected_squared_periodic_discrepancies(n_max=n, coord_weights=coord_weights) # compute the expected squared periodic discrepancies for n = 1, 2, ...\n", "\n", "sample_weights = np.arange(1, n+1) # define some sample weights\n", - "lat_wssd = lat.wssd(n_max=n, coord_weights=coord_weights, sample_weights=sample_weights) # compute the wssd" + "lat_wssd = lat.wssd(n_max=n, coord_weights=coord_weights, sample_weights=sample_weights) # compute the wssd\n", + "print(lat_wssd)" ] }, { @@ -74,20 +82,22 @@ "name": "stdout", "output_type": "stream", "text": [ - "[193.70287929]\n" + "[11.0370278]\n" ] } ], "source": [ - "dim = 64\n", + "dim = 100\n", + "n = 2**15\n", "coord_weights = np.array([j**(-2) for j in range(1, dim + 1)])\n", - "sample_weights = np.arange(1, n+1) # define some sample weights\n", - "kron = Kronecker(dimension=dim, seed=12, generating_vector=\"ANDERS_CBC\") # initialize a Kronecker sequence as usual\n", + "\n", + "kron = Kronecker(dimension=dim, seed=12, generating_vector=\"CBC_MT\") # initialize a Kronecker sequence as usual\n", "kron_k_tilde = (lambda x, gamma: np.prod(1 + (x * (x - 1) + 1/6) * gamma, axis=-1), 1) # define the kernel function (in this case, the second Bernoulli polynomial)\n", "\n", "kron_discs = kron._square_periodic_discrepancies(n = n, k_tilde = kron_k_tilde, gamma = coord_weights).reshape(-1) # compute the expected squared periodic discrepancies for n = 1, 2, ...\n", "\n", - "kron_wssd = np.float64(kron.wssd_discrepancy(n = n, weights = sample_weights, k_tilde = kron_k_tilde, gamma = coord_weights)) # compute the wssd\n", + "sample_weights = np.arange(1, n+1) # define some sample weights\n", + "kron_wssd = kron.wssd_discrepancy(n = n, sample_weights = sample_weights, k_tilde = kron_k_tilde, gamma = coord_weights) # compute the wssd\n", "print(kron_wssd)" ] }, @@ -117,22 +127,20 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time taken for lattice vector wssd search: 4.327883005142212\n", - "Searched lattice vector: [ 1 444567 406809 53917 411513 111013 57773 23363 278133 179399\n", - " 145725 480145 365723 134199 361515 297163 315729 250703 322429 236947\n", - " 508553 455183 148433 37975 46187 474063 490317 14811 417263 342641\n", - " 269197 474417 309749 29993 366775 433399 240621 375377 84847 232327\n", - " 214987 375079 32109 153487 388283 140919 390453 362317 405689 413527\n", - " 307801 147739 176459 95733 498361 178349 127697 427387 162217 183267\n", - " 300557 336879 314911 122203]\n" + "Time taken for lattice vector wssd search: 0.17128682136535645\n", + "Searched lattice vector: [ 1 4825 13541 15249 15405 9909 7493 11407 14819 10089 3683 3347\n", + " 13789 8837 5309 6307 6447 12103 9097 2767]\n" ] } ], "source": [ - "# note that the search requires that the sample weights be w_n = n, so they are not customizable\n", + "# note that the search method requires that the sample weights be w_n = n, so they are not customizable\n", + "n = 2**15\n", + "dim = 20\n", + "coord_weights = np.array([j**(-2) for j in range(1, dim + 1)])\n", "\n", "time_start = time()\n", - "searched_lattice_vector = lattice_vector_wssd_search(N = n, d = dim, kernel = lambda x: x * (x - 1) + 1 / 6, coord_weights = coord_weights) # search for a lattice vector with low wssd\n", + "searched_lattice_vector = lattice_vector_wssd_search(n_max = n, d_max = dim, kernel = lambda x: x * (x - 1) + 1 / 6, coord_weights = coord_weights) # search for a lattice vector with low wssd\n", "time_end = time()\n", "print(\"Time taken for lattice vector wssd search: \", time_end - time_start)\n", "print(\"Searched lattice vector: \", searched_lattice_vector)" @@ -156,97 +164,27 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time taken for Kronecker vector wssd search: 417.6621832847595\n", - "Searched Kronecker vector: (array([0.61803399, 0.44322929, 0.22874783, 0.85854891, 0.09862349,\n", - " 0.13027022, 0.30100237, 0.49129871, 0.10752283, 0.93244982,\n", - " 0.08420257, 0.2563596 , 0.32164088, 0.19570311, 0.5898421 ,\n", - " 0.60631972, 0.02965074, 0.57696365, 0.29815947, 0.72586386,\n", - " 0.81107075, 0.6439515 , 0.07966279, 0.05997121, 0.09380327,\n", - " 0.64980017, 0.27700713, 0.74102903, 0.87941726, 0.56144415,\n", - " 0.11886968, 0.41924865, 0.54660185, 0.08176813, 0.48158459,\n", - " 0.25388801, 0.23265409, 0.54636109, 0.10474602, 0.16138721,\n", - " 0.31612105, 0.39305959, 0.31975094, 0.03629234, 0.37544416,\n", - " 0.05323235, 0.16550695, 0.95164815, 0.15079678, 0.24254269,\n", - " 0.29654601, 0.10189676, 0.03117397, 0.49020769, 0.40708275,\n", - " 0.31187689, 0.41786611, 0.84794106, 0.31750284, 0.29872605,\n", - " 0.11568039, 0.32747855, 0.1734749 , 0.40610889]), 126.80242919921875, array([2.94259096e-01, 1.05815272e-01, 5.93755625e-02, ...,\n", - " 5.26598765e-11, 5.25139932e-11, 5.26756416e-11]), array([[43., 39., 97., 88.],\n", - " [19., 8., 83., 35.],\n", - " [61., 6., 71., 7.],\n", - " [67., 11., 61., 10.],\n", - " [97., 72., 31., 23.],\n", - " [ 7., 3., 23., 10.],\n", - " [29., 28., 59., 57.],\n", - " [41., 31., 37., 28.],\n", - " [83., 69., 89., 74.],\n", - " [ 7., 1., 83., 12.],\n", - " [11., 10., 43., 39.],\n", - " [19., 9., 59., 28.],\n", - " [37., 6., 31., 5.],\n", - " [97., 62., 61., 39.],\n", - " [37., 20., 61., 33.],\n", - " [ 2., 1., 67., 34.],\n", - " [41., 15., 71., 26.],\n", - " [11., 3., 37., 10.],\n", - " [53., 45., 73., 62.],\n", - " [43., 30., 53., 37.],\n", - " [47., 38., 73., 59.],\n", - " [23., 2., 11., 1.],\n", - " [71., 53., 67., 50.],\n", - " [ 5., 3., 53., 32.],\n", - " [61., 33., 37., 20.],\n", - " [23., 18., 83., 65.],\n", - " [23., 20., 31., 27.],\n", - " [73., 51., 83., 58.],\n", - " [23., 9., 41., 16.],\n", - " [ 7., 5., 59., 42.],\n", - " [61., 44., 43., 31.],\n", - " [29., 6., 53., 11.],\n", - " [ 5., 4., 61., 49.],\n", - " [43., 40., 29., 27.],\n", - " [17., 16., 67., 63.],\n", - " [17., 10., 73., 43.],\n", - " [29., 6., 53., 11.],\n", - " [ 7., 2., 67., 19.],\n", - " [43., 36., 37., 31.],\n", - " [13., 6., 41., 19.],\n", - " [ 5., 2., 13., 5.],\n", - " [31., 8., 97., 25.],\n", - " [ 3., 2., 83., 55.],\n", - " [23., 3., 61., 8.],\n", - " [ 2., 1., 37., 19.],\n", - " [ 5., 1., 31., 6.],\n", - " [79., 59., 83., 62.],\n", - " [11., 8., 73., 53.],\n", - " [83., 74., 37., 33.],\n", - " [11., 8., 37., 27.],\n", - " [ 2., 1., 19., 10.],\n", - " [ 3., 1., 97., 32.],\n", - " [79., 76., 53., 51.],\n", - " [83., 38., 59., 27.],\n", - " [19., 5., 61., 16.],\n", - " [13., 5., 31., 12.],\n", - " [67., 39., 79., 46.],\n", - " [13., 7., 41., 22.],\n", - " [61., 13., 47., 10.],\n", - " [ 5., 3., 43., 26.],\n", - " [41., 4., 31., 3.],\n", - " [ 5., 4., 29., 23.],\n", - " [89., 77., 37., 32.]]))\n" + "Time taken for kronecker vector wssd search: 5.96858549118042\n", + "Searched Kronecker vector: [0.61803399 0.26774665 0.91444648 0.22708655 0.12137476 0.71267465\n", + " 0.69787961 0.10230792 0.18609503 0.31195642 0.41561801 0.13176115\n", + " 0.22004561 0.56882224 0.1079203 0.10500649 0.16477572 0.85934099\n", + " 0.79691446 0.21233239]\n" ] } ], "source": [ - "searchsize = 25 # the time cost is O(dim * N * searchsize^2), so searchsize should be chosen with care. The largest I have run was in MATLAB with searchsize = 300, N = 2^20, d = 100, which took about 24 hours \n", - "\n", - "# note that the search requires that the sample weights be w_n = n, so they are not customizable\n", + "# note that the search method requires that the sample weights be w_n = n, so they are not customizable\n", + "n = 2**15\n", + "dim = 20\n", + "coord_weights = np.array([j**(-2) for j in range(1, dim + 1)])\n", + "searchsize = 20 # the time cost is O(dim * n * searchsize^2), so searchsize should be chosen with care. The largest search I have run was in MATLAB with searchsize = 300, N = 2^20, d = 100, which took about 24 hours \n", "\n", "time_start = time()\n", - "searched_kron_vector = kronecker_search_march_2026(N = n, dMax = dim, kernel = lambda x: x * (x - 1) + 1 / 6, searchsize = searchsize, coord_weights = coord_weights) # search for a Kronecker vector with low wssd\n", + "searched_kron_vector = kronecker_vector_search_mobius_transform(n_max = n, d_max = dim, kernel = lambda x: x * (x - 1) + 1 / 6, searchsize = searchsize, coord_weights = coord_weights) # search for a Kronecker vector with low wssd\n", "time_end = time()\n", "\n", - "print(\"Time taken for Kronecker vector wssd search: \", time_end - time_start)\n", - "print(\"Searched Kronecker vector: \", searched_kron_vector)" + "print(\"Time taken for kronecker vector wssd search: \", time_end - time_start)\n", + "print(\"Searched Kronecker vector: \", searched_kron_vector[0])" ] }, { @@ -275,8 +213,7 @@ } ], "source": [ - "gen_vec = np.loadtxt(\"kuo.lattice-39102-1024-1048576.3600.txt\",dtype=np.uint64) \n", - "lat1 = Lattice(dimension=dim, order=\"RADICAL_INVERSE\", seed=12, generating_vector=gen_vec[:,1], m_max=20) # initialize a lattice with the generating vector of all 1s\n", + "lat1 = Lattice(dimension=dim, order=\"RADICAL_INVERSE\", seed=12, generating_vector=\"kuo.lattice-33002-1024-1048576.9125.txt\", m_max=20) # initialize a lattice with the generating vector of all 1s\n", "lat_discs1 = lat1.expected_squared_periodic_discrepancies(n_max=n, coord_weights=coord_weights)\n", "\n", "\n", diff --git a/qmcpy/discrete_distribution/__init__.py b/qmcpy/discrete_distribution/__init__.py index d5f08e3a1..1244ac8ee 100644 --- a/qmcpy/discrete_distribution/__init__.py +++ b/qmcpy/discrete_distribution/__init__.py @@ -4,7 +4,7 @@ from .digital_net_b2 import DigitalNetB2 from .digital_net_any_bases import DigitalNetAnyBases,Halton,Faure from .mpmc import MPMC -from .kronecker import Kronecker, kronecker_search_march_2026 +from .kronecker import Kronecker, kronecker_vector_search_mobius_transform DiscreteDistribution = AbstractDiscreteDistribution _DiscreteDistribution = AbstractDiscreteDistribution diff --git a/qmcpy/discrete_distribution/kronecker/__init__.py b/qmcpy/discrete_distribution/kronecker/__init__.py index d88272a27..69aed4fdf 100644 --- a/qmcpy/discrete_distribution/kronecker/__init__.py +++ b/qmcpy/discrete_distribution/kronecker/__init__.py @@ -1,2 +1,2 @@ from .kronecker import Kronecker -from .kronecker_search_methods import kronecker_search_march_2026 +from .kronecker_search_methods import kronecker_vector_search_mobius_transform \ No newline at end of file diff --git a/qmcpy/discrete_distribution/kronecker/kronecker.py b/qmcpy/discrete_distribution/kronecker/kronecker.py index 41dd553f7..f06a50045 100644 --- a/qmcpy/discrete_distribution/kronecker/kronecker.py +++ b/qmcpy/discrete_distribution/kronecker/kronecker.py @@ -243,6 +243,7 @@ def __init__(self, - `"CBC"`: uses the first $d$ components of a known good Component-by-Component (CBC) generating vector. - `"RICHTMYER"`: uses $\boldsymbol{\alpha}_j = \sqrt{p_j} \bmod 1$, where $p_j$ are primes. This is the classical Richtmyer construction. - `"SUZUKI"`: uses a deterministic construction $\boldsymbol{\alpha}_j = 2^{j/(d+1)}$. + - `"CBC_MT"`: uses the first $d$ components of a known good CBC generating vector obtained using the Mobius transformation method, which can be found in kronecker_search_methods.py. - np.array: user-specified generating vector. shift (np.ndarray): Shift vector $\boldsymbol{\delta}$. If `randomize=True`, this is ignored and a random shift is generated. Otherwise, a fixed shift is used. @@ -285,9 +286,9 @@ def __init__(self, elif isinstance(generating_vector, str) and generating_vector.lower() == "suzuki": self.gen_vec_source = "SUZUKI" gen_vec = _suzuki_generating_vector(self.dvec.max()+1) - elif isinstance(generating_vector, str) and generating_vector.lower() == "anders_cbc": - self.gen_vec_source = "ANDERS_CBC" - ANDERS_CBC = np.array([0.618033988749895, + elif isinstance(generating_vector, str) and generating_vector.lower() == "cbc_mt": + self.gen_vec_source = "CBC_MT" + CBC_MT = np.array([0.618033988749895, 0.3173225474723, 0.59332263014446, 0.20776441643926, @@ -387,11 +388,11 @@ def __init__(self, 0.337431120990153, 0.542476014178907, 0.307279789725491], dtype=np.float64) - gen_vec = ANDERS_CBC + gen_vec = CBC_MT if not (self.dvec.max() < len(gen_vec)): if warn: warnings.warn( - f"ANDERS_CBC generating vector only supports dimension <= {len(ANDERS_CBC)}; falling back to Richtmyer.", + f"CBC_MT generating vector only supports dimension <= {len(CBC_MT)}; falling back to Richtmyer.", RuntimeWarning, ) self.gen_vec_source = "RICHTMYER" @@ -460,7 +461,7 @@ def periodic_discrepancy(self, n, k_tilde=None, gamma=None): return np.sqrt(self._square_periodic_discrepancies(n, k_tilde, gamma)) - def wssd_discrepancy(self, n, weights, k_tilde = None, gamma = None): + def wssd_discrepancy(self, n, sample_weights, k_tilde = None, gamma = None): # calculates the weighted sum of square discrepancy if gamma is None: gamma = np.ones(self.d) @@ -469,7 +470,7 @@ def wssd_discrepancy(self, n, weights, k_tilde = None, gamma = None): k_tilde = (lambda x, gamma: np.prod(1 + (x * (x - 1) + 1/6) * gamma, axis=-1), 1) discrepancies = self._square_periodic_discrepancies(n, k_tilde, gamma) - return np.sum(weights * discrepancies, axis=-1) + return np.sum(sample_weights * discrepancies, axis=-1) def _square_periodic_discrepancies(self, n, k_tilde, gamma): diff --git a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py index 2e6849b6c..b4ef4b77c 100644 --- a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py +++ b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py @@ -1,43 +1,42 @@ import numpy as np -from sympy import gcdex, primerange, prime -#np.set_printoptions(precision=17) -#https://github.com/sympy/sympy/releases +import sympy - -# I can't find where Jimmy's code for the kronecker search from SURE 2025 is, so I've temporarily put my method here - -def kronecker_search_march_2026(N, dMax, searchsize, kernel=None, coord_weights=None, gen_vec_init=None): +def kronecker_vector_search_mobius_transform(n_max, d_max, searchsize, kernel=None, coord_weights=None, gen_vec_init=None): """ + CBC search method for finding a generating vector for a Kronecker sequence, minimizing the weighted sum of squared discrepancies (WSSD). + - The first component is gen_vec_init, defaults to the golden ratio. + - We use a modified mobius transformation f(x) = (a*x + b)/(c*x + d) where a, c are distinct primes and b, d are the two pairs of the smallest positive integers such that |a*d - b*c| = 1. + - Each subsequent component is found by performing the mobius transformation on the previous component, searching over all pairs of distinct primes from the first searchsize many primes. Args: - N (int): The maximum sample size to be searched over. - dMax (int): The maximum dimension for which to find the generating vector. - kernel (function): The kernel function to use in the search. + n_max (int): The maximum sample size to be searched over. + d_max (int): The maximum dimension for which to find the generating vector. + kernel (callable): The kernel function to use in the search. searchsize (int): The number of primes to search over for each component of the generating vector. coord_weights (array-like, optional): An array of coordinate weights to use in the search. If None, weights are set to j^(-2). gen_vec_init (array-like, optional): The initial value for the generating vector. If None, the golden ratio is used for the first component. Note that gen_vec_init is taken mod 1. Returns: generating_vector, wssd, discrepancies, coeff (tuple): - generating_vector (numpy array): The generating vector found by the search. - - wssd (float): The weighted sum of squared discrepancies for n = 1,...,N, for the generating vector found. - - discrepancies (numpy array): The discrepancies for n = 1,...,N. + - wssd (float): The weighted sum of squared discrepancies for n = 1,...,n_max, for the generating vector found. + - discrepancies (numpy array): The discrepancies for n = 1,...,n_max. - coeff (numpy array): The coefficients of the linear transformation used in the search. A description of the coeff array is found below. Time cost: - The time cost of the search is O(searchsize^2 * dMax * N). + The time cost of the search is O(searchsize^2 * d_max * n_max). Approach: - Uses the quadratic Bernoulli polynomial kernel to conduct a CBC search for a generating vector, minimizing the weighted sum of squared discrepancies (wssd) with weights w_n = n. + Uses the quadratic Bernoulli polynomial kernel to conduct a CBC search for a generating vector, minimizing the weighted sum of squared discrepancies (wssd) with sample weights w_n = n. Details on coeff array: - The coeff array is a (dMax-1) x 4 array where each row corresponds to a dimension from 2 to dMax. The columns correspond to the coefficients of the linear transformation used to compute the gen_vec component for that dimension. Specifically, + The coeff array is a (d_max-1) x 4 array where each row corresponds to a dimension from 2 to d_max. The columns correspond to the coefficients of the linear transformation used to compute the gen_vec component for that dimension. Specifically, - gen_vec[dim+1] = (coeff[dim, 0] * gen_vec[dim] + coeff[dim, 1]) / (coeff[dim, 2] * gen_vec[dim] + coeff[dim, 3]) """ if searchsize < 2: raise ValueError("searchsize must be at least 2.") - if N < 2: - raise ValueError("N must be at least 2.") - if dMax < 1: - raise ValueError("dMax must be at least 1.") - if coord_weights is not None and len(coord_weights) < dMax: - raise ValueError("Length of coord_weights must be greater than or equal to dMax.") + if n_max < 2: + raise ValueError("n_max must be at least 2.") + if d_max < 1: + raise ValueError("d_max must be at least 1.") + if coord_weights is not None and len(coord_weights) < d_max: + raise ValueError("Length of coord_weights must be greater than or equal to d_max.") # the quadratic Bernoulli polynomial @@ -46,13 +45,13 @@ def kronecker_search_march_2026(N, dMax, searchsize, kernel=None, coord_weights= # define coordinate weights if not provided, default to j^(-2) if coord_weights is None: - coord_weights = np.array([j**(-2) for j in range(1, dMax + 1)], dtype=np.float64) + coord_weights = np.array([j**(-2) for j in range(1, d_max + 1)], dtype=np.float64) # search over the first n primes, n = searchsize - searchspace = np.array(list(primerange(1, prime(searchsize)+1)), dtype=np.float64) + searchspace = np.array(list(sympy.primerange(1, sympy.prime(searchsize)+1)), dtype=np.float64) # gen_vec is our generating vector, will be found cbc - gen_vec = np.zeros(dMax, dtype=np.float64) + gen_vec = np.zeros(d_max, dtype=np.float64) # we pick the golden ratio as the first component of gen_vec, or let the user specify if gen_vec_init is None: @@ -61,14 +60,14 @@ def kronecker_search_march_2026(N, dMax, searchsize, kernel=None, coord_weights= gen_vec[0] = np.mod(gen_vec_init, 1,dtype=np.float64) # precompute several constants for the wssd calculation - diff = np.cumsum(1.0 / np.arange(N, 1, -1,dtype=np.float64)) + diff = np.cumsum(1.0 / np.arange(n_max, 1, -1,dtype=np.float64)) freq = np.cumsum(diff) freq = np.flip(freq) - num = N * (N + 1) / 2 + num = n_max * (n_max + 1) / 2 nK0 = (1 + coord_weights/6) - nK0 = N * np.cumprod(nK0) + nK0 = n_max * np.cumprod(nK0) # precompute Bezout coefficients for all pairs of primes in the search space bezoutCoeffs = np.zeros((searchsize, searchsize)) @@ -77,19 +76,19 @@ def kronecker_search_march_2026(N, dMax, searchsize, kernel=None, coord_weights= for j in range(i + 1, searchsize): c = searchspace[j] # Use sympy.gcdex to get Bezout coefficients - d_coeff, b_coeff, _ = gcdex(int(a), int(c)) + d_coeff, b_coeff, _ = sympy.gcdex(int(a), int(c)) bezoutCoeffs[i, j] = np.float64(b_coeff) bezoutCoeffs[j, i] = np.float64(d_coeff) # setting up some useful variables for the search - coeff = np.zeros((dMax - 1, 4)) # stores the coefficients of the linear transformation at each dimension - t = gen_vec[0] * np.arange(1, N) % 1 # t vector is the vector of coordinates generated for the first dimension + coeff = np.zeros((d_max - 1, 4)) # stores the coefficients of the linear transformation at each dimension + t = gen_vec[0] * np.arange(1, n_max) % 1 # t vector is the vector of coordinates generated for the first dimension kPrev = 1 + coord_weights[0] * kernel(t) # gets the k vector for the first dimension, which is used in the wssd calculation and updated each dimension of the search. - # The k vector is Ktilde(x_i) for i = 1,...,N-1, where Ktilde is the kernel and x_i are the points generated by the gen_vec vector, up to the current dimension. + # The k vector is Ktilde(x_i) for i = 1,...,n_max-1, where Ktilde is the kernel and x_i are the points generated by the gen_vec vector, up to the current dimension. # the main search loop - for dim in range(1, dMax): + for dim in range(1, d_max): best_wssd = np.inf # stores the current wssd found for each dimension, initialized to infinity best_gen_vec = 0 # stores the current best gen_vec component found for this dimension, initialized to 0 best_k = None # stores the k vector for the current best gen_vec, used to update the k vector for the next dimension after the search is done for this dimension @@ -117,8 +116,8 @@ def kronecker_search_march_2026(N, dMax, searchsize, kernel=None, coord_weights= gen_vec_dim1 = (p1 * gen_vec[dim - 1] + b1) / (p2 * gen_vec[dim - 1] + d1) # the linear transformation to get the next gen_vec_dim candidate to test gen_vec_dim2 = (p1 * gen_vec[dim - 1] + b2) / (p2 * gen_vec[dim - 1] + d2) # the other candidate from the linear transformation - t1 = (gen_vec_dim1 * np.arange(1, N)) - np.floor(gen_vec_dim1 * np.arange(1, N)) # vector of coordinates generated by this candidate component - t2 = (gen_vec_dim2 * np.arange(1, N)) - np.floor(gen_vec_dim2 * np.arange(1, N)) + t1 = (gen_vec_dim1 * np.arange(1, n_max)) - np.floor(gen_vec_dim1 * np.arange(1, n_max)) # vector of coordinates generated by this candidate component + t2 = (gen_vec_dim2 * np.arange(1, n_max)) - np.floor(gen_vec_dim2 * np.arange(1, n_max)) k_vector1 = kPrev * (1 + kernel(t1) * coord_weights[dim]) # get the k vector for this candidate component, used in the wssd calculation k_vector2 = kPrev * (1 + kernel(t2) * coord_weights[dim]) @@ -153,26 +152,17 @@ def kronecker_search_march_2026(N, dMax, searchsize, kernel=None, coord_weights= # print(coeff[dim - 1, :], (nK0[dim] - num + 2 * best_wssd)) # debugging line to check the coefficients and wssd at each dimension - # Adapted from Jimmy's code for calculating the discrepancies for n = 1,...,N from SURE 2025 - n_array = np.arange(1, N + 1) + # Adapted from Jimmy's code for calculating the discrepancies for n = 1,...,n_max from SURE 2025 + n_array = np.arange(1, n_max + 1) k_tilde = lambda x, coord_weight: np.prod(1 + kernel(x) * coord_weight, axis=1) - k_tilde_terms = k_tilde(gen_vec * np.arange(N).reshape((N, 1)) - np.floor(gen_vec * np.arange(N).reshape((N, 1))), coord_weights) + k_tilde_terms = k_tilde(gen_vec * np.arange(n_max).reshape((n_max, 1)) - np.floor(gen_vec * np.arange(n_max).reshape((n_max, 1))), coord_weights) left_sum = np.cumsum(k_tilde_terms[1:]) * n_array[1:] right_sum = np.cumsum(n_array[:-1] * k_tilde_terms[1:]) k_tilde_zero_terms = k_tilde_terms[0] * n_array - summation = np.zeros(N) + summation = np.zeros(n_max) summation[1:] = left_sum - right_sum discrepancies = (k_tilde_zero_terms + 2 * summation) / (n_array ** 2) - 1 - return gen_vec, best_wssd, discrepancies, coeff - - -# quick and dirty test -# start = time.time() -# a, wssd, _, _ = kronecker_search_march_2026(2**10, 20, 50) -# print(a) -# print(wssd) -# end = time.time() -# print("Run time (seconds): ", end - start) + return gen_vec, best_wssd, discrepancies, coeff \ No newline at end of file diff --git a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py index 1c953ac53..0f416a4d0 100644 --- a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py +++ b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py @@ -1,25 +1,68 @@ import numpy as np -# I am not sure where the best place to put this is, will ask Aleksi - -def lattice_vector_wssd_search(N, d, kernel,coord_weights): - if kernel is None: +def lattice_vector_wssd_search(n_max, d_max, coord_weights=None, kernel=None): + """ + CBC search method for finding a lattice rule minimizing the WSSD. + Args: + n_max (int): The maximum number of points the lattice rule is optimized for. + d_max (int): The dimension of the lattice rule. + coord_weights (array-like, optional): The coordinate weights used to compute the discrepancy. Defaults to j^(-2) for j=1,...,d_max. + kernel (callable, optional): The kernel used to compute the discrepancy. Should accept a single argument and return a scalar. Defaults to the second Bernoulli polynomial. + Returns: + gen_vec (array-like): The generating vector of the lattice that minimizes the WSSD. + Time cost: + The time cost of the search is O(d_max * n_max * log(n_max)), though the contribution of d_max is smaller until around d_max = 100. + Note: + Uses sample weights of w_n = n for n = 1,...,n_max when calculating the WSSD. + + Examples: + >>> lattice_vector_wssd_search(n_max = 2**10, d_max = 5) + array([1, 403, 361, 281, 421]) + >>> lattice_vector_wssd_search(n_max = 2**15, d_max = 10) + array([1, 4825, 13541, 15249, 15405, 9909, 7493, 11407, 14819, 10089]) + + Custom coordinate weights + + >>> lattice_vector_wssd_search(n_max = 2**15, d_max = 10, coord_weights = [j**(-1) for j in range(1, 6)]) + array([1, 4825, 13541, 15249, 7311, 10339, 5933, 6307, 14729, 13037]) + + Custom kernels + + >>> bernoulli6 = lambda x: x**6 - 3 * x**5 + 5 / 2 * x**4 - 1 / 2 * x**2 + 1 / 42 + >>> lattice_vector_wssd_search(n_max = 2**15, d_max = 10, coord_weights = None, kernel = bernoulli6) + array([1, 1635, 6875, 8665, 8531, 1361, 11771, 10987, 2805, 9961]) + """ + + if kernel == None: kernel = lambda x: x * (x - 1) + 1 / 6 # default kernel is the second Bernoulli polynomial if coord_weights is None: - coord_weights = np.array([j**(-2) for j in range(1, d + 1)], dtype=np.float64) # default coordinate weights are j^(-2) - - m = np.ceil(np.log2(N)).astype(int) + coord_weights = np.array([j**(-2) for j in range(1, d_max + 1)], dtype=np.float64) # default coordinate weights are j^(-2) + + if not callable(kernel): + raise ValueError("kernel must be a callable function") + if not isinstance(coord_weights, (list, np.ndarray)): + raise ValueError("coord_weights must be array-like") + if not isinstance(n_max, int) or not isinstance(d_max, int): + raise ValueError("n_max and d_max must be integers") + + if len(coord_weights) < d_max: + raise ValueError("coord_weights must have length at least d_max") + if n_max < 3: + raise ValueError("n_max must be at least 3") + if d_max < 1: + raise ValueError("d_max must be at least 1") + + m = np.ceil(np.log2(n_max)).astype(int) # ---------------------------------------------------------------------- # Set up rhovector # ---------------------------------------------------------------------- - bits = np.zeros((N, m), dtype=int) - for i in range(N): - # 2*bitget(i,1:m) in MATLAB + bits = np.zeros((n_max, m), dtype=int) + for i in range(n_max): bits[i, :] = 2 * np.array([((i >> j) & 1) for j in range(m)], dtype=int) - cumsumbits = np.cumsum(bits, axis=0) # N x m - rhovector = np.dot((1.0 / np.arange(1, N + 1)), cumsumbits) # 1 x m + cumsumbits = np.cumsum(bits, axis=0) # n_max x m + rhovector = np.dot((1.0 / np.arange(1, n_max + 1)), cumsumbits) # 1 x m rhovectorNx1 = np.zeros((2**m - 1, 1)) rIdx1 = 0 @@ -80,10 +123,10 @@ def lattice_vector_wssd_search(N, d, kernel,coord_weights): # ---------------------------------------------------------------------- # Begin search # ---------------------------------------------------------------------- - h = np.ones(d, dtype=int) + gen_vec = np.ones(d_max, dtype=int) - for hComp in range(2, d + 1): - WSSD = np.zeros(2**(m - 2)) + for hComp in range(2, d_max + 1): + wssd = np.zeros(2**(m - 2)) gamma = coord_weights[hComp - 1] omega = lambda x: 1 + gamma * (x * (x - 1) + 1 / 6) @@ -104,30 +147,28 @@ def lattice_vector_wssd_search(N, d, kernel,coord_weights): wVector = 2 * np.fft.ifft(np.fft.fft(fftCol) * np.fft.fft(pCol)).real numrep = 2**(m - l) - WSSD = WSSD + np.tile(wVector, numrep) + wssd = wssd + np.tile(wVector, numrep) curIdx2 = nextIdx2 + 1 prodIdx1 = prodIdx2 + 2**(l - 2) + 1 - WSSD = WSSD + omega(1 / 2) * prodV[-1, 0] - WSSD = WSSD + N * k0 - N * (N + 1) / 2 + wssd = wssd + omega(1 / 2) * prodV[-1, 0] + wssd = wssd + n_max * k0 - n_max * (n_max + 1) / 2 - bestIdx = int(np.argmin(WSSD)) - bestWSSD = float(WSSD[bestIdx]) + bestIdx = int(np.argmin(wssd)) newH = int(gR[bestIdx]) # Avoid duplicates - while newH in h: - WSSD[bestIdx] = np.inf - bestIdx = int(np.argmin(WSSD)) - bestWSSD = float(WSSD[bestIdx]) + while newH in gen_vec: + wssd[bestIdx] = np.inf + bestIdx = int(np.argmin(wssd)) newH = int(gR[bestIdx]) - h[hComp - 1] = newH + gen_vec[hComp - 1] = newH rowV = (newH * rowVects) % 2**m rowV = rowV / 2**m rowV = omega(rowV) prodV = prodV * rowV[:, None] - return h \ No newline at end of file + return gen_vec \ No newline at end of file From dea6e2c5bcbc76f175e814f2e41d672709c9da95 Mon Sep 17 00:00:00 2001 From: Anders Pride Date: Tue, 28 Jul 2026 16:55:16 -0500 Subject: [PATCH 21/29] Updated docs to match new kronecker search name --- docs/api/discrete_distributions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/api/discrete_distributions.md b/docs/api/discrete_distributions.md index e6d90d456..f769e8d56 100644 --- a/docs/api/discrete_distributions.md +++ b/docs/api/discrete_distributions.md @@ -44,9 +44,9 @@ jupyter: ::: qmcpy.discrete_distribution.kronecker.Kronecker -## `kronecker_search_march_2026` +## `kronecker_vector_search_mobius_transform` -::: qmcpy.discrete_distribution.kronecker.kronecker_search_methods.kronecker_search_march_2026 +::: qmcpy.discrete_distribution.kronecker.kronecker_search_methods.kronecker_vector_search_mobius_transform ## `IIDStdUniform` From fe041c427987226bc9f4590463fda727ad605607 Mon Sep 17 00:00:00 2001 From: AndersPride Date: Tue, 28 Jul 2026 16:59:04 -0500 Subject: [PATCH 22/29] Potential fix for pull request finding 'Testing equality to None' Changed == None to is None Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> --- .../discrete_distribution/lattice/lattice_vector_wssd_search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py index 0f416a4d0..99300b7b0 100644 --- a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py +++ b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py @@ -33,7 +33,7 @@ def lattice_vector_wssd_search(n_max, d_max, coord_weights=None, kernel=None): array([1, 1635, 6875, 8665, 8531, 1361, 11771, 10987, 2805, 9961]) """ - if kernel == None: + if kernel is None: kernel = lambda x: x * (x - 1) + 1 / 6 # default kernel is the second Bernoulli polynomial if coord_weights is None: coord_weights = np.array([j**(-2) for j in range(1, d_max + 1)], dtype=np.float64) # default coordinate weights are j^(-2) From c98da32ac31d5ca2ba79681bf720f5b2eb99bbad Mon Sep 17 00:00:00 2001 From: sou-cheng-choi Date: Sat, 8 Aug 2026 18:19:44 +0800 Subject: [PATCH 23/29] Fix test failures --- .../booktests/tb_lattice_kronecker_methods.py | 7 ++- test/test_dd_lattice_kronecker.py | 59 +++++++++++-------- 2 files changed, 39 insertions(+), 27 deletions(-) diff --git a/test/booktests/tb_lattice_kronecker_methods.py b/test/booktests/tb_lattice_kronecker_methods.py index 421ef956e..5164e63a2 100644 --- a/test/booktests/tb_lattice_kronecker_methods.py +++ b/test/booktests/tb_lattice_kronecker_methods.py @@ -7,9 +7,10 @@ class NotebookTests(BaseNotebookTest): def test_lattice_kronecker_methods_notebook(self): # Keep enough lattice candidates for the reduced dimension: dim <= n / 4. replacements = { - "dim = 64": "dim = 8", - "n = 2**20": "n = 2**5", - "searchsize = 25": "searchsize = 4", + "dim = 100": "dim = 8", + "dim = 20": "dim = 8", + "n = 2**15": "n = 2**5", + "searchsize = 20": "searchsize = 4", } self.run_notebook( "../../demos/lattice_kronecker_methods.ipynb", diff --git a/test/test_dd_lattice_kronecker.py b/test/test_dd_lattice_kronecker.py index 3f98b7b64..a16690826 100644 --- a/test/test_dd_lattice_kronecker.py +++ b/test/test_dd_lattice_kronecker.py @@ -5,7 +5,7 @@ from qmcpy import ( Kronecker, Lattice, - kronecker_search_march_2026, + kronecker_vector_search_mobius_transform, lattice_vector_wssd_search, ) @@ -81,7 +81,10 @@ def test_lattice_validation(self): def test_lattice_vector_search(self): default = lattice_vector_wssd_search(16, 4, None, None) explicit = lattice_vector_wssd_search( - 16, 4, _bernoulli_two, np.array([1.0, 0.25, 1 / 9, 1 / 16]) + n_max=16, + d_max=4, + coord_weights=np.array([1.0, 0.25, 1 / 9, 1 / 16]), + kernel=_bernoulli_two, ) npt.assert_array_equal(default, np.array([1, 5, 3, 7])) npt.assert_array_equal(explicit, default) @@ -125,22 +128,23 @@ def test_kronecker_discrepancy_and_wssd(self): atol=5e-14, ) - def test_anders_cbc_fallback(self): - kronecker = Kronecker(3, generating_vector="ANDERS_CBC", randomize=False) - assert kronecker.gen_vec_source == "ANDERS_CBC" - assert kronecker.gen_vec.shape == (1, 3) and np.isfinite(kronecker.gen_vec).all() + def test_cbc_mobius_fallback(self): + kronecker = Kronecker(3, generating_vector="CBC_MT", randomize=False) + assert kronecker.gen_vec_source == "CBC_MT" + assert kronecker.gen_vec.shape == (1, 3) + assert np.isfinite(kronecker.gen_vec).all() - with pytest.warns(RuntimeWarning, match="ANDERS_CBC.*dimension <= 100"): - fallback = Kronecker( - 101, generating_vector="ANDERS_CBC", randomize=False - ) + with pytest.warns(RuntimeWarning, match="CBC_MT.*dimension <= 100"): + fallback = Kronecker(101, generating_vector="CBC_MT", randomize=False) assert fallback.gen_vec_source == "RICHTMYER" assert fallback.gen_vec.shape == (1, 101) def test_kronecker_search(self): n = 8 - vector, wssd, discrepancies, coefficients = kronecker_search_march_2026( - N=n, dMax=3, searchsize=3 + vector, wssd, discrepancies, coefficients = ( + kronecker_vector_search_mobius_transform( + n_max=n, d_max=3, searchsize=3 + ) ) assert vector.shape == (3,) and discrepancies.shape == (n,) assert coefficients.shape == (2, 4) @@ -159,13 +163,15 @@ def test_kronecker_search(self): atol=5e-15, ) - vector, wssd, discrepancies, coefficients = kronecker_search_march_2026( - N=n, - dMax=3, - searchsize=3, - kernel=_bernoulli_two, - coord_weights=coord_weights, - gen_vec_init=1.25, + vector, wssd, discrepancies, coefficients = ( + kronecker_vector_search_mobius_transform( + n_max=n, + d_max=3, + searchsize=3, + kernel=_bernoulli_two, + coord_weights=coord_weights, + gen_vec_init=1.25, + ) ) assert vector[0] == pytest.approx(0.25) and coefficients.shape == (2, 4) npt.assert_allclose( @@ -175,15 +181,20 @@ def test_kronecker_search(self): @pytest.mark.parametrize( ("kwargs", "message"), [ - ({"N": 8, "dMax": 2, "searchsize": 1}, "searchsize"), - ({"N": 1, "dMax": 2, "searchsize": 2}, "N must"), - ({"N": 8, "dMax": 0, "searchsize": 2}, "dMax"), + ({"n_max": 8, "d_max": 2, "searchsize": 1}, "searchsize"), + ({"n_max": 1, "d_max": 2, "searchsize": 2}, "n_max must"), + ({"n_max": 8, "d_max": 0, "searchsize": 2}, "d_max"), ( - {"N": 8, "dMax": 3, "searchsize": 2, "coord_weights": np.ones(2)}, + { + "n_max": 8, + "d_max": 3, + "searchsize": 2, + "coord_weights": np.ones(2), + }, "coord_weights", ), ], ) def test_kronecker_search_validation(self, kwargs, message): with pytest.raises(ValueError, match=message): - kronecker_search_march_2026(**kwargs) + kronecker_vector_search_mobius_transform(**kwargs) From 9874b968a4e51463f0c18c99e0075c65836dedce Mon Sep 17 00:00:00 2001 From: sou-cheng-choi Date: Sat, 8 Aug 2026 18:35:10 +0800 Subject: [PATCH 24/29] Fix doc tests --- .../lattice/lattice_vector_wssd_search.py | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py index 99300b7b0..cbca41913 100644 --- a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py +++ b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py @@ -3,6 +3,7 @@ def lattice_vector_wssd_search(n_max, d_max, coord_weights=None, kernel=None): """ CBC search method for finding a lattice rule minimizing the WSSD. + Args: n_max (int): The maximum number of points the lattice rule is optimized for. d_max (int): The dimension of the lattice rule. @@ -10,27 +11,31 @@ def lattice_vector_wssd_search(n_max, d_max, coord_weights=None, kernel=None): kernel (callable, optional): The kernel used to compute the discrepancy. Should accept a single argument and return a scalar. Defaults to the second Bernoulli polynomial. Returns: gen_vec (array-like): The generating vector of the lattice that minimizes the WSSD. + Time cost: The time cost of the search is O(d_max * n_max * log(n_max)), though the contribution of d_max is smaller until around d_max = 100. Note: Uses sample weights of w_n = n for n = 1,...,n_max when calculating the WSSD. Examples: - >>> lattice_vector_wssd_search(n_max = 2**10, d_max = 5) - array([1, 403, 361, 281, 421]) - >>> lattice_vector_wssd_search(n_max = 2**15, d_max = 10) - array([1, 4825, 13541, 15249, 15405, 9909, 7493, 11407, 14819, 10089]) + >>> lattice_vector_wssd_search(n_max=2**10, d_max=5) + array([ 1, 403, 361, 281, 421]) + >>> lattice_vector_wssd_search(n_max=2**15, d_max=10) + array([ 1, 4825, 13541, 15249, 15405, 9909, 7493, 11407, 14819, + 10089]) Custom coordinate weights - >>> lattice_vector_wssd_search(n_max = 2**15, d_max = 10, coord_weights = [j**(-1) for j in range(1, 6)]) - array([1, 4825, 13541, 15249, 7311, 10339, 5933, 6307, 14729, 13037]) + >>> lattice_vector_wssd_search(n_max=2**15, d_max=10, coord_weights=[j**(-1) for j in range(1, 11)]) + array([ 1, 4825, 13541, 15249, 7311, 10339, 5933, 6307, 14729, + 13037]) Custom kernels >>> bernoulli6 = lambda x: x**6 - 3 * x**5 + 5 / 2 * x**4 - 1 / 2 * x**2 + 1 / 42 - >>> lattice_vector_wssd_search(n_max = 2**15, d_max = 10, coord_weights = None, kernel = bernoulli6) - array([1, 1635, 6875, 8665, 8531, 1361, 11771, 10987, 2805, 9961]) + >>> lattice_vector_wssd_search(n_max=2**15, d_max=10, coord_weights=None, kernel=bernoulli6) + array([ 1, 1635, 6875, 8665, 8531, 1361, 11771, 10987, 2805, + 9961]) """ if kernel is None: From 24e21959b4ca84c6ff50fa672e8fdd4cc2c66cc2 Mon Sep 17 00:00:00 2001 From: AndersPride Date: Mon, 24 Aug 2026 19:18:19 -0500 Subject: [PATCH 25/29] Apply select Copilot suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../kronecker/kronecker_search_methods.py | 2 ++ qmcpy/discrete_distribution/lattice/lattice.py | 4 ++-- .../lattice/lattice_vector_wssd_search.py | 5 ++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py index b4ef4b77c..d316869a0 100644 --- a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py +++ b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py @@ -46,6 +46,8 @@ def kronecker_vector_search_mobius_transform(n_max, d_max, searchsize, kernel=No # define coordinate weights if not provided, default to j^(-2) if coord_weights is None: coord_weights = np.array([j**(-2) for j in range(1, d_max + 1)], dtype=np.float64) + else: + coord_weights = np.asarray(coord_weights, dtype=np.float64) # search over the first n primes, n = searchsize searchspace = np.array(list(sympy.primerange(1, sympy.prime(searchsize)+1)), dtype=np.float64) diff --git a/qmcpy/discrete_distribution/lattice/lattice.py b/qmcpy/discrete_distribution/lattice/lattice.py index 3018a06bf..5cc170f9b 100644 --- a/qmcpy/discrete_distribution/lattice/lattice.py +++ b/qmcpy/discrete_distribution/lattice/lattice.py @@ -446,9 +446,9 @@ def expected_squared_periodic_discrepancies(self, n_max, coord_weights=None, ker def wssd(self, n_max, coord_weights=None, sample_weights=None): - """Returns the weighted sum of the expected squared periodic discrepancies for the first n points of the lattice sequence. + """Returns the weighted sum of the expected squared periodic discrepancies for the first n_max points of the lattice sequence. Args: - n (int): Number of points to calculate the weighted squared periodic discrepancy for. + n_max (int): Number of points to calculate the weighted squared periodic discrepancy for. coord_weights (Union[None, np.ndarray]): Coordinate weights for the discrepancy calculation. If None, uses weights gamma_j = j^(-2). sample_weights (Union[None, np.ndarray]): Sample weights for the weighted squared periodic discrepancy calculation. If None, uses weights w_n = n. Note that the time cost may be higher for other sample weights. Returns: diff --git a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py index cbca41913..26c0b78b3 100644 --- a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py +++ b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py @@ -119,7 +119,7 @@ def lattice_vector_wssd_search(n_max, d_max, coord_weights=None, kernel=None): # Initial 1D case rowV = rowVects / 2**m - rowV = 1 + kernel(rowV) + rowV = 1 + coord_weights[0] * kernel(rowV) prodV = prodV * rowV[:, None] # Set up k0 @@ -134,8 +134,7 @@ def lattice_vector_wssd_search(n_max, d_max, coord_weights=None, kernel=None): wssd = np.zeros(2**(m - 2)) gamma = coord_weights[hComp - 1] - omega = lambda x: 1 + gamma * (x * (x - 1) + 1 / 6) - + omega = lambda x: 1 + gamma * kernel(x) k0 = k0 * (1 + gamma * kernel(0)) curIdx2 = 0 From 0a6bc4e1b32577d96374172fb935414e68040689 Mon Sep 17 00:00:00 2001 From: Anders Pride Date: Mon, 24 Aug 2026 19:25:53 -0500 Subject: [PATCH 26/29] Addresses issues in lattice.py raised by Copilot: Improved docstring consistency Fixed two instances where a previous approach was not properly updated --- qmcpy/discrete_distribution/lattice/lattice.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qmcpy/discrete_distribution/lattice/lattice.py b/qmcpy/discrete_distribution/lattice/lattice.py index 3018a06bf..890dec409 100644 --- a/qmcpy/discrete_distribution/lattice/lattice.py +++ b/qmcpy/discrete_distribution/lattice/lattice.py @@ -441,7 +441,7 @@ def expected_squared_periodic_discrepancies(self, n_max, coord_weights=None, ker freq_mtx[:,i] = freq_mtx[:,i] * (i + 1)**(-2) # multiply by the frequency matrix and add the constant vector - discs = k_const + np.vecmat(k_sum, freq_mtx) + discs = k_const + (k_sum @ freq_mtx) return discs @@ -457,7 +457,7 @@ def wssd(self, n_max, coord_weights=None, sample_weights=None): if coord_weights is not None and len(coord_weights) < self.d: raise ValueError("Length of coord_weights must be greater than or equal to the dimension of the lattice") if sample_weights is not None and len(sample_weights) < n_max: - raise ValueError("Length of sample_weights must be equal to n_max") + raise ValueError("Length of sample_weights must be at least n_max") if sample_weights is None: sample_weights = np.arange(1, n_max + 1, dtype=np.float64) From f223ce76eede51e50c4d1d4a0272b45370060b52 Mon Sep 17 00:00:00 2001 From: Anders Pride Date: Mon, 24 Aug 2026 22:06:31 -0500 Subject: [PATCH 27/29] Addresses sympy dependency and vector placement - Adds exception handling for import sympy. Prompts user to install sympy or choose to use the slower, recursive implementation instead. - Removes kuo.lattice-39102-1024-1048576.3600.txt file from demos and replaces it with a .npy file in the lattice\generating_vectors folder, like the other Kuo vector. Also edits lattice.py to accommodate this. Changes the demo notebook to use this vector, fairer comparison. - Adds the kronecker vector .txt file to pyproject.toml so that it is included in the package. --- demos/kuo.lattice-39102-1024-1048576.3600.txt | 3600 ----------------- demos/lattice_kronecker_methods.ipynb | 34 +- pyproject.toml | 1 + .../kronecker/kronecker_search_methods.py | 81 +- .../kuo.lattice-39102-1024-1048576.3600.npy | Bin 0 -> 28880 bytes .../discrete_distribution/lattice/lattice.py | 11 + 6 files changed, 102 insertions(+), 3625 deletions(-) delete mode 100644 demos/kuo.lattice-39102-1024-1048576.3600.txt create mode 100644 qmcpy/discrete_distribution/lattice/generating_vectors/kuo.lattice-39102-1024-1048576.3600.npy diff --git a/demos/kuo.lattice-39102-1024-1048576.3600.txt b/demos/kuo.lattice-39102-1024-1048576.3600.txt deleted file mode 100644 index e147de362..000000000 --- a/demos/kuo.lattice-39102-1024-1048576.3600.txt +++ /dev/null @@ -1,3600 +0,0 @@ - 1 1 - 2 433461 - 3 472323 - 4 440637 - 5 231645 - 6 275007 - 7 113895 - 8 331051 - 9 283181 - 10 384579 - 11 288619 - 12 306439 - 13 309943 - 14 452525 - 15 319841 - 16 217509 - 17 84615 - 18 111067 - 19 374949 - 20 315005 - 21 369473 - 22 95709 - 23 155273 - 24 215539 - 25 486377 - 26 107399 - 27 203705 - 28 168683 - 29 154561 - 30 254753 - 31 148129 - 32 117715 - 33 455263 - 34 64579 - 35 450769 - 36 169605 - 37 135865 - 38 239917 - 39 62503 - 40 381173 - 41 417239 - 42 354955 - 43 389279 - 44 457757 - 45 224125 - 46 137945 - 47 140507 - 48 402845 - 49 50989 - 50 42635 - 51 399209 - 52 455121 - 53 487667 - 54 474267 - 55 372965 - 56 429179 - 57 81069 - 58 30905 - 59 509195 - 60 160335 - 61 323865 - 62 153271 - 63 236745 - 64 270649 - 65 465083 - 66 317775 - 67 247885 - 68 99677 - 69 437389 - 70 211881 - 71 289405 - 72 215751 - 73 517253 - 74 240467 - 75 492367 - 76 512859 - 77 37555 - 78 427223 - 79 202991 - 80 329235 - 81 257587 - 82 508363 - 83 99177 - 84 164915 - 85 302617 - 86 216133 - 87 487081 - 88 242089 - 89 51161 - 90 76347 - 91 456301 - 92 198763 - 93 32097 - 94 495921 - 95 205443 - 96 144227 - 97 73919 - 98 468177 - 99 222321 - 100 126651 - 101 257177 - 102 507247 - 103 185133 - 104 358989 - 105 246357 - 106 40767 - 107 515589 - 108 269667 - 109 76563 - 110 365147 - 111 451759 - 112 194315 - 113 118517 - 114 373699 - 115 148541 - 116 343011 - 117 456827 - 118 71289 - 119 277797 - 120 48513 - 121 197421 - 122 362433 - 123 195259 - 124 207401 - 125 170191 - 126 338789 - 127 482571 - 128 266525 - 129 69419 - 130 241555 - 131 416591 - 132 360849 - 133 295805 - 134 152147 - 135 346543 - 136 316837 - 137 210915 - 138 469327 - 139 487023 - 140 319673 - 141 89575 - 142 360997 - 143 331655 - 144 44915 - 145 476083 - 146 422325 - 147 34159 - 148 52753 - 149 205401 - 150 276589 - 151 93013 - 152 124439 - 153 496919 - 154 119415 - 155 511763 - 156 294163 - 157 444073 - 158 235361 - 159 402073 - 160 139909 - 161 143071 - 162 59965 - 163 85083 - 164 129429 - 165 317033 - 166 170287 - 167 148793 - 168 405693 - 169 96829 - 170 469427 - 171 470965 - 172 88099 - 173 320275 - 174 331551 - 175 175463 - 176 17423 - 177 446309 - 178 72755 - 179 46205 - 180 332519 - 181 500255 - 182 162175 - 183 487837 - 184 133745 - 185 436083 - 186 219017 - 187 158915 - 188 361851 - 189 247937 - 190 411433 - 191 303391 - 192 272753 - 193 53983 - 194 151415 - 195 403435 - 196 481205 - 197 514165 - 198 321603 - 199 396159 - 200 267799 - 201 50329 - 202 347387 - 203 46559 - 204 117173 - 205 424339 - 206 41489 - 207 35595 - 208 140619 - 209 11279 - 210 344807 - 211 94057 - 212 68635 - 213 490695 - 214 43043 - 215 354601 - 216 168483 - 217 279267 - 218 66911 - 219 427093 - 220 253723 - 221 191505 - 222 434739 - 223 103101 - 224 124129 - 225 224295 - 226 390073 - 227 518925 - 228 491129 - 229 157591 - 230 206423 - 231 90293 - 232 324625 - 233 100193 - 234 282347 - 235 257207 - 236 141799 - 237 135649 - 238 462511 - 239 170029 - 240 513239 - 241 66777 - 242 488385 - 243 412045 - 244 219083 - 245 489019 - 246 487621 - 247 347081 - 248 437573 - 249 322099 - 250 307073 - 251 222681 - 252 358217 - 253 84319 - 254 361361 - 255 269373 - 256 147145 - 257 203989 - 258 126351 - 259 435147 - 260 29169 - 261 61103 - 262 311067 - 263 408271 - 264 462039 - 265 195357 - 266 190923 - 267 186169 - 268 148501 - 269 467997 - 270 372657 - 271 155507 - 272 64871 - 273 125217 - 274 316709 - 275 370231 - 276 243115 - 277 286493 - 278 92575 - 279 213585 - 280 316021 - 281 313543 - 282 480199 - 283 106655 - 284 271907 - 285 16209 - 286 413649 - 287 185457 - 288 162983 - 289 14303 - 290 259101 - 291 121619 - 292 389819 - 293 134157 - 294 48849 - 295 382629 - 296 170909 - 297 306225 - 298 395237 - 299 210789 - 300 127813 - 301 125121 - 302 390641 - 303 428365 - 304 310869 - 305 438045 - 306 26529 - 307 343853 - 308 255887 - 309 461505 - 310 241847 - 311 33861 - 312 12599 - 313 164383 - 314 87931 - 315 9347 - 316 24939 - 317 485285 - 318 183435 - 319 102949 - 320 200805 - 321 415461 - 322 153437 - 323 452151 - 324 445457 - 325 289101 - 326 248017 - 327 221047 - 328 464301 - 329 485507 - 330 481497 - 331 430027 - 332 115037 - 333 54075 - 334 91895 - 335 345643 - 336 253145 - 337 218193 - 338 300947 - 339 383837 - 340 513633 - 341 225675 - 342 167635 - 343 304539 - 344 437815 - 345 473515 - 346 354269 - 347 245253 - 348 291875 - 349 313477 - 350 57205 - 351 123333 - 352 500865 - 353 268261 - 354 484331 - 355 429677 - 356 373295 - 357 291785 - 358 243523 - 359 249637 - 360 482737 - 361 509401 - 362 294269 - 363 56715 - 364 248505 - 365 177377 - 366 395169 - 367 409837 - 368 34391 - 369 469059 - 370 300247 - 371 134489 - 372 164179 - 373 235077 - 374 510961 - 375 25391 - 376 208409 - 377 296813 - 378 258723 - 379 177087 - 380 325327 - 381 371937 - 382 294447 - 383 50271 - 384 278713 - 385 345457 - 386 30337 - 387 364233 - 388 479191 - 389 66371 - 390 81221 - 391 34209 - 392 484427 - 393 399909 - 394 238557 - 395 480127 - 396 380505 - 397 292199 - 398 313283 - 399 88847 - 400 490345 - 401 419871 - 402 387867 - 403 62849 - 404 31589 - 405 91805 - 406 154145 - 407 297741 - 408 370407 - 409 234141 - 410 366563 - 411 405097 - 412 208315 - 413 294493 - 414 519087 - 415 394417 - 416 411881 - 417 429791 - 418 125773 - 419 291995 - 420 166395 - 421 461237 - 422 43911 - 423 281157 - 424 469165 - 425 391087 - 426 382775 - 427 437269 - 428 362099 - 429 423013 - 430 206243 - 431 286807 - 432 311007 - 433 404535 - 434 410811 - 435 400211 - 436 175649 - 437 128559 - 438 124811 - 439 346653 - 440 373259 - 441 49739 - 442 94359 - 443 377107 - 444 373581 - 445 170095 - 446 246803 - 447 418191 - 448 83295 - 449 140779 - 450 117633 - 451 282189 - 452 372109 - 453 486177 - 454 177911 - 455 441709 - 456 192553 - 457 305951 - 458 162725 - 459 483863 - 460 479617 - 461 499165 - 462 126181 - 463 265325 - 464 396969 - 465 512907 - 466 373599 - 467 18625 - 468 66989 - 469 108669 - 470 112589 - 471 122099 - 472 504083 - 473 71041 - 474 406021 - 475 385635 - 476 276839 - 477 217757 - 478 439277 - 479 362017 - 480 345049 - 481 234923 - 482 397095 - 483 336431 - 484 443021 - 485 391759 - 486 346845 - 487 469721 - 488 453857 - 489 448931 - 490 59413 - 491 233559 - 492 514953 - 493 320345 - 494 281269 - 495 108107 - 496 333289 - 497 514597 - 498 266977 - 499 99997 - 500 50065 - 501 318899 - 502 404247 - 503 461993 - 504 60287 - 505 42899 - 506 29189 - 507 189497 - 508 416729 - 509 377227 - 510 465593 - 511 501653 - 512 72107 - 513 18995 - 514 460955 - 515 403389 - 516 230609 - 517 394967 - 518 136339 - 519 297807 - 520 282461 - 521 421651 - 522 361187 - 523 199445 - 524 80923 - 525 105619 - 526 206569 - 527 355139 - 528 36789 - 529 238729 - 530 100485 - 531 98591 - 532 325307 - 533 173593 - 534 303797 - 535 185213 - 536 515457 - 537 509447 - 538 328855 - 539 214929 - 540 214035 - 541 94579 - 542 248333 - 543 492899 - 544 460945 - 545 369889 - 546 278945 - 547 94501 - 548 170343 - 549 15859 - 550 368815 - 551 108893 - 552 217027 - 553 398577 - 554 187159 - 555 70969 - 556 123219 - 557 287695 - 558 249065 - 559 364893 - 560 237141 - 561 403087 - 562 478073 - 563 280531 - 564 222275 - 565 211119 - 566 197581 - 567 302785 - 568 473935 - 569 129531 - 570 173967 - 571 340645 - 572 516921 - 573 245005 - 574 370297 - 575 73813 - 576 374357 - 577 255307 - 578 404087 - 579 187795 - 580 111217 - 581 147649 - 582 353939 - 583 442559 - 584 77387 - 585 230563 - 586 258349 - 587 403663 - 588 138225 - 589 25653 - 590 256117 - 591 69813 - 592 167547 - 593 438703 - 594 495015 - 595 334797 - 596 396321 - 597 297241 - 598 457967 - 599 418131 - 600 331833 - 601 176757 - 602 356465 - 603 24227 - 604 283867 - 605 430879 - 606 39703 - 607 458123 - 608 405715 - 609 282359 - 610 372255 - 611 50235 - 612 264865 - 613 399103 - 614 138735 - 615 86267 - 616 175627 - 617 24763 - 618 352057 - 619 287331 - 620 221351 - 621 381759 - 622 476333 - 623 347289 - 624 239055 - 625 504775 - 626 305311 - 627 253153 - 628 401303 - 629 20593 - 630 62379 - 631 303677 - 632 202109 - 633 480745 - 634 126901 - 635 100303 - 636 187127 - 637 236673 - 638 141339 - 639 454561 - 640 290519 - 641 247511 - 642 165135 - 643 94737 - 644 85589 - 645 313557 - 646 272837 - 647 322277 - 648 513421 - 649 172849 - 650 430293 - 651 155067 - 652 172489 - 653 456573 - 654 313105 - 655 224501 - 656 422939 - 657 207587 - 658 502081 - 659 436181 - 660 365633 - 661 116013 - 662 52795 - 663 26557 - 664 213893 - 665 206483 - 666 37275 - 667 430039 - 668 158353 - 669 285479 - 670 291651 - 671 346139 - 672 64241 - 673 427035 - 674 72849 - 675 508207 - 676 511519 - 677 504699 - 678 78261 - 679 230337 - 680 53643 - 681 98747 - 682 430413 - 683 416047 - 684 164245 - 685 84875 - 686 156211 - 687 178043 - 688 141009 - 689 276243 - 690 346907 - 691 42707 - 692 24419 - 693 16967 - 694 151473 - 695 79031 - 696 235379 - 697 148569 - 698 513435 - 699 146975 - 700 293821 - 701 195399 - 702 188651 - 703 320793 - 704 71863 - 705 27245 - 706 281881 - 707 49773 - 708 516989 - 709 154253 - 710 289967 - 711 499997 - 712 39207 - 713 81137 - 714 235161 - 715 479041 - 716 517621 - 717 214559 - 718 164367 - 719 334767 - 720 431927 - 721 106313 - 722 510075 - 723 304857 - 724 62287 - 725 394701 - 726 308647 - 727 255633 - 728 437659 - 729 298929 - 730 91823 - 731 189247 - 732 247971 - 733 211063 - 734 303215 - 735 328439 - 736 318917 - 737 158625 - 738 447333 - 739 124767 - 740 517517 - 741 46099 - 742 254511 - 743 294313 - 744 187803 - 745 473899 - 746 11819 - 747 506245 - 748 192589 - 749 368859 - 750 350605 - 751 415255 - 752 39181 - 753 411749 - 754 177271 - 755 233427 - 756 16821 - 757 355791 - 758 407091 - 759 312789 - 760 95021 - 761 370329 - 762 351893 - 763 505009 - 764 19689 - 765 464089 - 766 482779 - 767 116303 - 768 374065 - 769 74003 - 770 99761 - 771 51707 - 772 104557 - 773 17787 - 774 430611 - 775 330017 - 776 444479 - 777 298131 - 778 435407 - 779 88389 - 780 176061 - 781 135229 - 782 221519 - 783 340455 - 784 378393 - 785 65011 - 786 57481 - 787 482691 - 788 223685 - 789 115443 - 790 502683 - 791 49337 - 792 25875 - 793 334867 - 794 178313 - 795 483205 - 796 175287 - 797 322337 - 798 244177 - 799 291085 - 800 490311 - 801 364623 - 802 517571 - 803 153095 - 804 120473 - 805 180439 - 806 115317 - 807 370629 - 808 517663 - 809 118145 - 810 277907 - 811 46235 - 812 390437 - 813 156061 - 814 332567 - 815 24491 - 816 252843 - 817 153869 - 818 379225 - 819 30109 - 820 156033 - 821 267977 - 822 303757 - 823 407169 - 824 436025 - 825 379923 - 826 338113 - 827 351829 - 828 382195 - 829 483031 - 830 406395 - 831 241431 - 832 468427 - 833 514249 - 834 243769 - 835 404843 - 836 268163 - 837 379297 - 838 243101 - 839 162655 - 840 405153 - 841 501793 - 842 427751 - 843 317483 - 844 96851 - 845 487175 - 846 151401 - 847 145133 - 848 329383 - 849 400595 - 850 211209 - 851 133171 - 852 494221 - 853 362563 - 854 477461 - 855 162515 - 856 210755 - 857 480485 - 858 300259 - 859 198249 - 860 381723 - 861 117907 - 862 187687 - 863 71143 - 864 459635 - 865 341411 - 866 439165 - 867 344359 - 868 347985 - 869 362385 - 870 176071 - 871 173689 - 872 504451 - 873 230829 - 874 396623 - 875 419957 - 876 485813 - 877 312201 - 878 500115 - 879 165017 - 880 206545 - 881 357523 - 882 253397 - 883 318417 - 884 416023 - 885 371495 - 886 297929 - 887 264159 - 888 67159 - 889 120943 - 890 306665 - 891 188337 - 892 164981 - 893 347009 - 894 205775 - 895 223943 - 896 111329 - 897 290219 - 898 138369 - 899 455737 - 900 110273 - 901 194509 - 902 415341 - 903 470447 - 904 417011 - 905 421243 - 906 35535 - 907 17841 - 908 463933 - 909 180883 - 910 331369 - 911 364643 - 912 504703 - 913 239729 - 914 197723 - 915 138433 - 916 290477 - 917 201333 - 918 460671 - 919 509791 - 920 317873 - 921 345267 - 922 397421 - 923 206065 - 924 54539 - 925 71835 - 926 225869 - 927 505183 - 928 192799 - 929 484313 - 930 84893 - 931 118479 - 932 240513 - 933 401507 - 934 24863 - 935 18047 - 936 519527 - 937 470245 - 938 100695 - 939 194425 - 940 414047 - 941 33543 - 942 394777 - 943 331667 - 944 512151 - 945 154321 - 946 96999 - 947 104373 - 948 38113 - 949 377211 - 950 463851 - 951 184585 - 952 500875 - 953 15539 - 954 27407 - 955 268653 - 956 336239 - 957 294389 - 958 70751 - 959 482707 - 960 66945 - 961 106359 - 962 341489 - 963 58681 - 964 465339 - 965 41767 - 966 199161 - 967 493691 - 968 355203 - 969 341127 - 970 417391 - 971 484525 - 972 86549 - 973 252799 - 974 110425 - 975 445399 - 976 386965 - 977 513851 - 978 335759 - 979 422227 - 980 456203 - 981 250281 - 982 321675 - 983 299981 - 984 118155 - 985 57969 - 986 96301 - 987 117163 - 988 272689 - 989 86979 - 990 460841 - 991 204045 - 992 109805 - 993 49557 - 994 379063 - 995 514615 - 996 438951 - 997 18645 - 998 394403 - 999 456919 - 1000 326795 - 1001 250261 - 1002 459479 - 1003 46889 - 1004 95415 - 1005 145345 - 1006 480867 - 1007 166075 - 1008 417933 - 1009 89151 - 1010 502677 - 1011 508409 - 1012 70755 - 1013 66599 - 1014 257447 - 1015 100991 - 1016 281541 - 1017 295841 - 1018 422201 - 1019 115989 - 1020 407313 - 1021 425123 - 1022 80879 - 1023 19759 - 1024 79309 - 1025 93399 - 1026 371821 - 1027 324715 - 1028 463839 - 1029 211299 - 1030 359531 - 1031 94133 - 1032 358481 - 1033 423655 - 1034 340519 - 1035 267687 - 1036 42969 - 1037 191949 - 1038 238493 - 1039 425069 - 1040 183835 - 1041 247423 - 1042 39225 - 1043 419899 - 1044 28407 - 1045 145197 - 1046 515807 - 1047 402991 - 1048 357163 - 1049 25383 - 1050 268713 - 1051 375883 - 1052 301617 - 1053 503029 - 1054 485349 - 1055 60045 - 1056 361791 - 1057 125539 - 1058 48941 - 1059 69753 - 1060 159979 - 1061 401225 - 1062 437985 - 1063 282061 - 1064 502499 - 1065 371681 - 1066 375217 - 1067 489413 - 1068 378591 - 1069 162751 - 1070 345321 - 1071 254151 - 1072 158663 - 1073 95971 - 1074 183677 - 1075 249743 - 1076 479327 - 1077 264239 - 1078 301659 - 1079 321669 - 1080 464621 - 1081 57577 - 1082 321509 - 1083 87173 - 1084 86497 - 1085 145019 - 1086 379123 - 1087 85905 - 1088 370635 - 1089 83419 - 1090 517599 - 1091 166785 - 1092 194491 - 1093 182403 - 1094 147591 - 1095 165753 - 1096 485537 - 1097 177099 - 1098 221093 - 1099 174005 - 1100 77093 - 1101 278663 - 1102 133471 - 1103 27527 - 1104 453213 - 1105 119105 - 1106 364155 - 1107 198895 - 1108 215203 - 1109 421931 - 1110 202861 - 1111 231951 - 1112 289321 - 1113 110197 - 1114 315897 - 1115 229743 - 1116 404361 - 1117 417471 - 1118 26861 - 1119 503919 - 1120 381599 - 1121 312865 - 1122 169447 - 1123 306075 - 1124 337525 - 1125 176415 - 1126 62797 - 1127 99445 - 1128 428501 - 1129 63397 - 1130 353419 - 1131 394393 - 1132 424005 - 1133 41557 - 1134 312025 - 1135 146549 - 1136 197179 - 1137 388207 - 1138 444833 - 1139 259973 - 1140 456513 - 1141 88651 - 1142 367565 - 1143 477467 - 1144 100473 - 1145 300639 - 1146 84367 - 1147 274251 - 1148 367269 - 1149 449867 - 1150 290281 - 1151 74541 - 1152 267371 - 1153 166855 - 1154 426959 - 1155 204633 - 1156 198319 - 1157 308923 - 1158 443275 - 1159 267219 - 1160 298589 - 1161 481703 - 1162 446549 - 1163 336791 - 1164 508297 - 1165 430417 - 1166 156655 - 1167 285515 - 1168 313627 - 1169 68307 - 1170 362321 - 1171 410173 - 1172 78463 - 1173 259017 - 1174 256295 - 1175 78103 - 1176 278921 - 1177 33119 - 1178 387205 - 1179 468785 - 1180 397651 - 1181 37229 - 1182 119321 - 1183 390201 - 1184 382321 - 1185 395457 - 1186 229655 - 1187 82917 - 1188 133999 - 1189 94071 - 1190 313245 - 1191 105391 - 1192 128301 - 1193 30777 - 1194 265711 - 1195 317151 - 1196 479339 - 1197 259665 - 1198 159193 - 1199 294025 - 1200 396187 - 1201 136409 - 1202 183915 - 1203 335771 - 1204 317135 - 1205 127939 - 1206 398613 - 1207 516753 - 1208 123877 - 1209 282095 - 1210 162215 - 1211 451409 - 1212 64451 - 1213 313625 - 1214 326197 - 1215 36007 - 1216 504363 - 1217 362061 - 1218 518317 - 1219 278021 - 1220 89413 - 1221 485989 - 1222 20863 - 1223 181111 - 1224 154031 - 1225 476225 - 1226 404279 - 1227 426387 - 1228 474563 - 1229 317929 - 1230 448879 - 1231 412887 - 1232 177023 - 1233 278861 - 1234 236689 - 1235 129883 - 1236 517163 - 1237 270427 - 1238 442705 - 1239 470753 - 1240 396939 - 1241 113447 - 1242 83331 - 1243 50849 - 1244 57567 - 1245 246295 - 1246 313733 - 1247 176291 - 1248 444167 - 1249 320647 - 1250 180915 - 1251 287359 - 1252 136381 - 1253 100293 - 1254 485065 - 1255 506713 - 1256 46801 - 1257 462909 - 1258 63089 - 1259 165195 - 1260 51325 - 1261 455797 - 1262 35207 - 1263 366349 - 1264 259607 - 1265 420031 - 1266 58205 - 1267 210677 - 1268 351911 - 1269 403851 - 1270 497623 - 1271 48053 - 1272 389955 - 1273 258437 - 1274 86615 - 1275 34883 - 1276 97931 - 1277 17075 - 1278 418973 - 1279 512649 - 1280 141867 - 1281 373397 - 1282 516589 - 1283 333667 - 1284 66333 - 1285 323297 - 1286 400151 - 1287 270223 - 1288 54245 - 1289 337247 - 1290 199951 - 1291 327049 - 1292 108165 - 1293 502303 - 1294 390471 - 1295 484677 - 1296 95171 - 1297 258673 - 1298 434929 - 1299 479469 - 1300 129631 - 1301 217999 - 1302 213621 - 1303 318863 - 1304 302869 - 1305 266719 - 1306 343821 - 1307 267753 - 1308 143883 - 1309 486895 - 1310 14831 - 1311 402139 - 1312 356721 - 1313 314247 - 1314 446037 - 1315 201073 - 1316 75253 - 1317 44971 - 1318 502495 - 1319 519285 - 1320 508497 - 1321 465645 - 1322 83463 - 1323 371533 - 1324 197701 - 1325 16063 - 1326 271029 - 1327 426577 - 1328 198169 - 1329 302887 - 1330 424477 - 1331 374305 - 1332 304883 - 1333 453757 - 1334 378101 - 1335 373791 - 1336 106975 - 1337 229097 - 1338 364877 - 1339 33651 - 1340 132631 - 1341 79935 - 1342 253033 - 1343 146639 - 1344 68661 - 1345 97971 - 1346 305463 - 1347 510179 - 1348 185641 - 1349 126625 - 1350 480693 - 1351 474305 - 1352 447351 - 1353 358491 - 1354 418877 - 1355 345519 - 1356 143413 - 1357 213525 - 1358 401231 - 1359 473811 - 1360 195141 - 1361 50339 - 1362 168779 - 1363 50667 - 1364 156497 - 1365 268231 - 1366 67021 - 1367 85909 - 1368 460853 - 1369 411245 - 1370 297417 - 1371 66715 - 1372 460833 - 1373 459345 - 1374 500509 - 1375 505751 - 1376 233645 - 1377 265691 - 1378 291067 - 1379 128905 - 1380 87715 - 1381 112689 - 1382 185809 - 1383 327119 - 1384 30325 - 1385 228471 - 1386 241773 - 1387 137025 - 1388 218003 - 1389 125263 - 1390 183205 - 1391 19129 - 1392 489035 - 1393 284805 - 1394 170113 - 1395 414309 - 1396 176297 - 1397 139845 - 1398 370641 - 1399 55833 - 1400 502757 - 1401 427851 - 1402 463461 - 1403 316819 - 1404 214511 - 1405 119133 - 1406 507485 - 1407 118277 - 1408 93103 - 1409 316367 - 1410 253767 - 1411 357899 - 1412 486693 - 1413 259725 - 1414 42441 - 1415 459279 - 1416 274319 - 1417 155997 - 1418 352479 - 1419 171687 - 1420 460123 - 1421 190189 - 1422 265459 - 1423 229143 - 1424 124969 - 1425 173619 - 1426 67247 - 1427 413803 - 1428 101269 - 1429 42027 - 1430 14285 - 1431 104369 - 1432 132117 - 1433 51269 - 1434 163165 - 1435 185305 - 1436 280141 - 1437 136287 - 1438 313299 - 1439 172383 - 1440 63587 - 1441 155805 - 1442 506429 - 1443 405639 - 1444 133591 - 1445 306049 - 1446 8941 - 1447 55565 - 1448 72585 - 1449 116657 - 1450 385409 - 1451 365855 - 1452 272119 - 1453 274331 - 1454 137085 - 1455 212165 - 1456 336001 - 1457 269075 - 1458 397577 - 1459 247151 - 1460 475961 - 1461 112771 - 1462 233639 - 1463 135537 - 1464 57513 - 1465 259493 - 1466 15567 - 1467 39883 - 1468 218153 - 1469 497389 - 1470 26117 - 1471 39479 - 1472 169703 - 1473 409895 - 1474 306975 - 1475 515513 - 1476 406423 - 1477 475945 - 1478 323835 - 1479 226089 - 1480 475815 - 1481 344717 - 1482 343669 - 1483 239315 - 1484 211951 - 1485 95141 - 1486 176279 - 1487 435955 - 1488 122363 - 1489 71517 - 1490 345183 - 1491 409811 - 1492 459829 - 1493 106357 - 1494 308503 - 1495 311933 - 1496 125293 - 1497 385239 - 1498 466545 - 1499 473593 - 1500 268943 - 1501 464291 - 1502 341545 - 1503 24791 - 1504 410715 - 1505 268839 - 1506 123253 - 1507 27215 - 1508 396199 - 1509 134843 - 1510 302243 - 1511 198619 - 1512 99727 - 1513 301447 - 1514 383343 - 1515 413265 - 1516 100185 - 1517 429073 - 1518 362891 - 1519 407501 - 1520 219567 - 1521 518301 - 1522 88859 - 1523 340927 - 1524 89687 - 1525 383409 - 1526 500497 - 1527 116199 - 1528 34183 - 1529 503195 - 1530 204867 - 1531 416039 - 1532 170871 - 1533 221553 - 1534 293655 - 1535 218211 - 1536 418449 - 1537 101721 - 1538 24369 - 1539 105283 - 1540 352387 - 1541 43559 - 1542 155195 - 1543 342367 - 1544 101877 - 1545 151023 - 1546 359291 - 1547 326803 - 1548 477275 - 1549 23849 - 1550 470813 - 1551 405957 - 1552 173861 - 1553 196037 - 1554 78485 - 1555 250665 - 1556 427427 - 1557 502897 - 1558 146673 - 1559 505957 - 1560 313449 - 1561 250029 - 1562 431583 - 1563 299881 - 1564 45107 - 1565 112987 - 1566 51661 - 1567 477383 - 1568 291569 - 1569 337295 - 1570 219997 - 1571 32405 - 1572 446279 - 1573 243295 - 1574 459527 - 1575 86883 - 1576 343159 - 1577 77871 - 1578 210553 - 1579 93569 - 1580 284259 - 1581 92133 - 1582 305657 - 1583 20293 - 1584 31819 - 1585 356399 - 1586 99925 - 1587 148867 - 1588 291141 - 1589 192731 - 1590 429285 - 1591 125997 - 1592 213453 - 1593 160091 - 1594 238677 - 1595 310903 - 1596 211683 - 1597 385579 - 1598 474543 - 1599 224015 - 1600 143223 - 1601 488261 - 1602 370643 - 1603 162029 - 1604 510083 - 1605 224393 - 1606 191587 - 1607 504219 - 1608 132271 - 1609 259495 - 1610 119291 - 1611 16971 - 1612 24409 - 1613 217967 - 1614 232143 - 1615 250091 - 1616 396261 - 1617 89967 - 1618 85235 - 1619 347421 - 1620 120035 - 1621 232617 - 1622 132751 - 1623 255689 - 1624 510835 - 1625 71069 - 1626 496241 - 1627 399743 - 1628 177901 - 1629 119053 - 1630 363021 - 1631 443439 - 1632 401683 - 1633 10195 - 1634 72077 - 1635 501707 - 1636 285403 - 1637 84107 - 1638 344475 - 1639 439355 - 1640 88377 - 1641 435335 - 1642 37829 - 1643 448395 - 1644 354423 - 1645 105051 - 1646 227227 - 1647 177259 - 1648 146631 - 1649 154305 - 1650 385681 - 1651 71331 - 1652 273839 - 1653 296923 - 1654 354135 - 1655 134511 - 1656 477627 - 1657 391343 - 1658 115663 - 1659 426521 - 1660 280709 - 1661 337719 - 1662 179581 - 1663 175221 - 1664 183241 - 1665 245159 - 1666 482075 - 1667 97599 - 1668 339741 - 1669 27621 - 1670 172629 - 1671 158599 - 1672 27041 - 1673 107149 - 1674 213515 - 1675 25373 - 1676 359819 - 1677 238905 - 1678 516381 - 1679 376693 - 1680 451979 - 1681 417637 - 1682 28073 - 1683 301669 - 1684 346739 - 1685 486931 - 1686 511825 - 1687 450449 - 1688 24049 - 1689 371309 - 1690 140917 - 1691 436281 - 1692 226431 - 1693 512505 - 1694 374819 - 1695 74283 - 1696 480187 - 1697 287379 - 1698 279717 - 1699 462547 - 1700 226761 - 1701 280549 - 1702 363705 - 1703 40649 - 1704 218319 - 1705 44093 - 1706 92449 - 1707 425241 - 1708 93317 - 1709 90271 - 1710 152431 - 1711 379293 - 1712 399811 - 1713 85131 - 1714 120913 - 1715 232633 - 1716 150679 - 1717 206151 - 1718 427597 - 1719 353853 - 1720 28191 - 1721 444607 - 1722 284487 - 1723 7779 - 1724 79179 - 1725 437081 - 1726 164831 - 1727 141875 - 1728 324589 - 1729 217201 - 1730 102211 - 1731 289917 - 1732 520789 - 1733 96063 - 1734 221729 - 1735 303205 - 1736 184529 - 1737 309349 - 1738 459559 - 1739 477375 - 1740 229741 - 1741 279715 - 1742 97935 - 1743 305209 - 1744 59231 - 1745 386225 - 1746 30673 - 1747 453833 - 1748 252987 - 1749 42115 - 1750 311451 - 1751 70813 - 1752 85731 - 1753 468599 - 1754 107155 - 1755 175807 - 1756 390835 - 1757 112297 - 1758 54569 - 1759 227377 - 1760 34123 - 1761 165789 - 1762 120535 - 1763 129125 - 1764 334353 - 1765 8513 - 1766 348255 - 1767 66235 - 1768 377585 - 1769 244169 - 1770 167797 - 1771 57561 - 1772 426951 - 1773 510341 - 1774 323967 - 1775 371869 - 1776 396461 - 1777 96819 - 1778 120771 - 1779 259711 - 1780 374697 - 1781 485207 - 1782 437971 - 1783 241259 - 1784 122227 - 1785 400593 - 1786 514583 - 1787 460669 - 1788 515093 - 1789 160651 - 1790 193481 - 1791 90273 - 1792 58821 - 1793 67377 - 1794 197361 - 1795 150709 - 1796 265743 - 1797 156857 - 1798 373989 - 1799 335959 - 1800 435373 - 1801 500877 - 1802 324517 - 1803 279053 - 1804 447689 - 1805 269083 - 1806 208723 - 1807 240141 - 1808 229005 - 1809 290007 - 1810 462437 - 1811 158031 - 1812 343115 - 1813 255075 - 1814 7765 - 1815 13149 - 1816 148757 - 1817 493693 - 1818 521105 - 1819 130031 - 1820 42125 - 1821 133589 - 1822 153713 - 1823 317129 - 1824 314847 - 1825 511243 - 1826 342051 - 1827 18009 - 1828 27997 - 1829 149573 - 1830 87637 - 1831 274479 - 1832 291155 - 1833 169389 - 1834 248037 - 1835 52609 - 1836 362577 - 1837 456585 - 1838 23579 - 1839 407711 - 1840 378823 - 1841 81467 - 1842 61089 - 1843 265833 - 1844 221795 - 1845 494121 - 1846 351157 - 1847 245949 - 1848 170417 - 1849 371993 - 1850 368985 - 1851 422725 - 1852 485215 - 1853 270699 - 1854 436113 - 1855 344765 - 1856 486259 - 1857 92359 - 1858 408995 - 1859 208687 - 1860 56997 - 1861 208471 - 1862 250655 - 1863 469153 - 1864 117913 - 1865 60593 - 1866 137641 - 1867 379873 - 1868 496145 - 1869 156887 - 1870 426903 - 1871 516011 - 1872 79277 - 1873 409311 - 1874 205493 - 1875 270957 - 1876 257697 - 1877 232559 - 1878 390059 - 1879 12693 - 1880 355561 - 1881 21433 - 1882 515147 - 1883 92647 - 1884 470067 - 1885 362315 - 1886 396443 - 1887 267501 - 1888 284135 - 1889 300073 - 1890 324181 - 1891 125359 - 1892 456953 - 1893 9809 - 1894 316249 - 1895 299065 - 1896 354783 - 1897 147961 - 1898 95917 - 1899 199513 - 1900 224897 - 1901 396893 - 1902 373819 - 1903 113455 - 1904 169021 - 1905 258713 - 1906 124505 - 1907 351445 - 1908 67193 - 1909 443983 - 1910 516771 - 1911 416149 - 1912 174053 - 1913 40045 - 1914 364653 - 1915 137081 - 1916 49845 - 1917 87603 - 1918 259507 - 1919 324227 - 1920 513325 - 1921 365281 - 1922 186715 - 1923 438171 - 1924 273039 - 1925 273521 - 1926 134079 - 1927 23877 - 1928 296307 - 1929 371691 - 1930 289989 - 1931 163473 - 1932 357213 - 1933 216219 - 1934 274483 - 1935 98071 - 1936 519393 - 1937 407525 - 1938 480101 - 1939 282339 - 1940 480441 - 1941 116181 - 1942 341405 - 1943 346449 - 1944 281465 - 1945 403061 - 1946 219215 - 1947 324827 - 1948 248535 - 1949 383947 - 1950 14377 - 1951 448201 - 1952 201511 - 1953 176417 - 1954 82555 - 1955 207243 - 1956 310299 - 1957 407691 - 1958 488909 - 1959 234623 - 1960 296097 - 1961 401907 - 1962 345583 - 1963 309079 - 1964 379535 - 1965 208009 - 1966 111147 - 1967 91409 - 1968 395065 - 1969 88495 - 1970 50835 - 1971 435317 - 1972 99881 - 1973 408209 - 1974 488775 - 1975 21435 - 1976 223769 - 1977 206445 - 1978 39799 - 1979 34975 - 1980 316123 - 1981 395399 - 1982 174159 - 1983 464335 - 1984 429235 - 1985 26257 - 1986 414819 - 1987 88553 - 1988 333931 - 1989 291095 - 1990 369803 - 1991 271295 - 1992 179013 - 1993 154451 - 1994 253811 - 1995 225045 - 1996 266103 - 1997 37755 - 1998 337951 - 1999 17989 - 2000 49313 - 2001 506275 - 2002 110493 - 2003 208531 - 2004 394395 - 2005 194959 - 2006 82231 - 2007 485079 - 2008 400985 - 2009 285615 - 2010 231295 - 2011 192559 - 2012 435593 - 2013 398277 - 2014 232401 - 2015 430137 - 2016 60703 - 2017 325001 - 2018 422589 - 2019 115081 - 2020 365811 - 2021 401627 - 2022 496153 - 2023 244771 - 2024 209977 - 2025 249531 - 2026 52717 - 2027 423283 - 2028 73943 - 2029 107661 - 2030 492493 - 2031 352661 - 2032 358677 - 2033 201917 - 2034 422661 - 2035 307943 - 2036 206819 - 2037 110727 - 2038 280819 - 2039 48727 - 2040 399481 - 2041 333451 - 2042 215965 - 2043 27467 - 2044 426943 - 2045 310325 - 2046 191017 - 2047 475827 - 2048 86201 - 2049 335415 - 2050 83121 - 2051 494837 - 2052 163555 - 2053 155753 - 2054 143209 - 2055 369609 - 2056 26699 - 2057 363675 - 2058 442193 - 2059 205317 - 2060 290541 - 2061 281967 - 2062 47697 - 2063 75373 - 2064 429555 - 2065 281505 - 2066 491173 - 2067 134113 - 2068 126507 - 2069 285555 - 2070 336731 - 2071 289585 - 2072 402333 - 2073 39079 - 2074 269351 - 2075 478631 - 2076 116981 - 2077 332497 - 2078 201255 - 2079 500887 - 2080 388935 - 2081 246131 - 2082 333789 - 2083 243435 - 2084 182137 - 2085 323263 - 2086 447985 - 2087 510645 - 2088 342253 - 2089 218599 - 2090 154165 - 2091 280097 - 2092 116149 - 2093 58333 - 2094 38669 - 2095 412583 - 2096 311647 - 2097 190493 - 2098 162261 - 2099 143897 - 2100 123463 - 2101 132319 - 2102 482019 - 2103 48937 - 2104 78907 - 2105 482835 - 2106 330181 - 2107 30599 - 2108 294475 - 2109 344895 - 2110 31105 - 2111 476533 - 2112 92561 - 2113 160797 - 2114 243313 - 2115 156309 - 2116 276267 - 2117 246601 - 2118 358343 - 2119 238113 - 2120 13331 - 2121 489629 - 2122 339307 - 2123 424065 - 2124 164959 - 2125 237863 - 2126 401297 - 2127 126043 - 2128 511041 - 2129 450895 - 2130 74977 - 2131 150953 - 2132 338033 - 2133 203421 - 2134 62707 - 2135 492053 - 2136 53595 - 2137 222731 - 2138 195509 - 2139 173873 - 2140 177647 - 2141 344481 - 2142 37843 - 2143 168785 - 2144 242339 - 2145 444455 - 2146 489573 - 2147 375781 - 2148 28563 - 2149 197691 - 2150 439233 - 2151 210517 - 2152 222259 - 2153 486897 - 2154 485997 - 2155 516639 - 2156 490077 - 2157 231289 - 2158 144135 - 2159 438065 - 2160 146243 - 2161 450265 - 2162 515909 - 2163 404953 - 2164 392025 - 2165 473971 - 2166 167685 - 2167 155481 - 2168 345507 - 2169 333859 - 2170 197213 - 2171 251427 - 2172 447891 - 2173 144109 - 2174 461531 - 2175 100915 - 2176 242669 - 2177 172381 - 2178 185563 - 2179 277223 - 2180 325739 - 2181 134053 - 2182 328613 - 2183 292123 - 2184 123079 - 2185 59669 - 2186 266871 - 2187 517205 - 2188 476387 - 2189 390959 - 2190 197865 - 2191 120297 - 2192 397789 - 2193 238661 - 2194 190099 - 2195 238487 - 2196 138283 - 2197 446213 - 2198 207241 - 2199 103179 - 2200 326029 - 2201 414347 - 2202 351777 - 2203 296753 - 2204 506785 - 2205 84311 - 2206 120095 - 2207 451955 - 2208 315195 - 2209 184917 - 2210 133243 - 2211 408115 - 2212 56749 - 2213 354187 - 2214 297297 - 2215 510229 - 2216 214203 - 2217 513307 - 2218 165093 - 2219 483199 - 2220 486583 - 2221 122673 - 2222 414887 - 2223 51241 - 2224 328307 - 2225 512601 - 2226 212697 - 2227 424201 - 2228 425279 - 2229 453425 - 2230 100285 - 2231 88871 - 2232 145369 - 2233 378759 - 2234 231001 - 2235 23015 - 2236 187059 - 2237 189759 - 2238 456103 - 2239 221271 - 2240 44957 - 2241 224629 - 2242 144875 - 2243 191917 - 2244 146733 - 2245 355693 - 2246 311641 - 2247 488183 - 2248 292363 - 2249 499259 - 2250 223201 - 2251 50059 - 2252 281731 - 2253 449997 - 2254 470739 - 2255 389599 - 2256 299857 - 2257 389681 - 2258 41619 - 2259 113083 - 2260 284111 - 2261 173197 - 2262 176973 - 2263 99565 - 2264 264111 - 2265 254063 - 2266 398175 - 2267 383365 - 2268 19237 - 2269 100879 - 2270 133717 - 2271 283627 - 2272 248697 - 2273 212803 - 2274 21229 - 2275 385881 - 2276 391047 - 2277 104421 - 2278 499791 - 2279 140769 - 2280 60171 - 2281 237873 - 2282 81731 - 2283 244059 - 2284 489061 - 2285 194949 - 2286 467055 - 2287 190997 - 2288 424285 - 2289 403349 - 2290 61859 - 2291 109761 - 2292 213327 - 2293 49753 - 2294 401499 - 2295 289221 - 2296 459757 - 2297 106989 - 2298 477325 - 2299 24945 - 2300 509299 - 2301 88515 - 2302 89483 - 2303 129701 - 2304 102557 - 2305 365749 - 2306 86377 - 2307 25437 - 2308 485921 - 2309 506313 - 2310 482757 - 2311 45659 - 2312 173455 - 2313 63321 - 2314 423191 - 2315 366359 - 2316 410681 - 2317 141521 - 2318 97333 - 2319 206681 - 2320 89677 - 2321 74969 - 2322 332831 - 2323 129505 - 2324 82549 - 2325 154005 - 2326 120093 - 2327 271151 - 2328 94425 - 2329 206137 - 2330 18385 - 2331 408301 - 2332 378531 - 2333 486633 - 2334 373243 - 2335 18315 - 2336 473435 - 2337 211949 - 2338 467247 - 2339 96315 - 2340 270831 - 2341 318905 - 2342 126325 - 2343 298869 - 2344 250083 - 2345 86597 - 2346 416725 - 2347 109403 - 2348 149107 - 2349 172275 - 2350 137639 - 2351 215447 - 2352 301895 - 2353 511341 - 2354 346059 - 2355 81383 - 2356 475379 - 2357 397563 - 2358 20601 - 2359 105291 - 2360 397235 - 2361 82083 - 2362 403917 - 2363 421061 - 2364 186905 - 2365 163491 - 2366 390493 - 2367 61129 - 2368 274707 - 2369 264575 - 2370 376189 - 2371 46625 - 2372 73561 - 2373 80297 - 2374 13893 - 2375 160715 - 2376 436271 - 2377 200047 - 2378 455961 - 2379 447523 - 2380 437353 - 2381 444345 - 2382 394099 - 2383 158067 - 2384 156527 - 2385 359215 - 2386 202475 - 2387 205893 - 2388 507583 - 2389 362219 - 2390 296885 - 2391 48081 - 2392 254187 - 2393 103027 - 2394 515107 - 2395 66455 - 2396 69585 - 2397 178703 - 2398 421715 - 2399 118041 - 2400 188229 - 2401 337853 - 2402 43853 - 2403 34877 - 2404 54869 - 2405 506695 - 2406 508317 - 2407 407363 - 2408 176739 - 2409 401221 - 2410 196189 - 2411 446969 - 2412 234209 - 2413 319199 - 2414 86885 - 2415 430167 - 2416 410289 - 2417 33507 - 2418 177769 - 2419 95017 - 2420 301747 - 2421 240243 - 2422 248747 - 2423 324411 - 2424 193357 - 2425 145971 - 2426 480437 - 2427 201343 - 2428 78427 - 2429 402589 - 2430 120879 - 2431 443057 - 2432 160815 - 2433 232349 - 2434 247631 - 2435 458229 - 2436 85917 - 2437 428619 - 2438 210047 - 2439 380307 - 2440 390311 - 2441 468459 - 2442 168237 - 2443 316131 - 2444 9837 - 2445 240527 - 2446 260197 - 2447 271291 - 2448 517371 - 2449 390279 - 2450 210711 - 2451 195601 - 2452 69675 - 2453 254843 - 2454 15553 - 2455 68049 - 2456 138485 - 2457 140423 - 2458 48245 - 2459 218007 - 2460 300645 - 2461 256537 - 2462 351635 - 2463 369097 - 2464 445287 - 2465 260549 - 2466 116063 - 2467 226487 - 2468 19367 - 2469 400221 - 2470 149571 - 2471 356677 - 2472 353181 - 2473 309379 - 2474 260531 - 2475 218577 - 2476 477495 - 2477 187345 - 2478 252689 - 2479 467263 - 2480 320689 - 2481 422739 - 2482 11221 - 2483 137581 - 2484 434305 - 2485 62281 - 2486 156269 - 2487 51039 - 2488 41037 - 2489 146215 - 2490 312461 - 2491 461961 - 2492 406711 - 2493 48029 - 2494 170939 - 2495 378299 - 2496 188261 - 2497 58723 - 2498 418329 - 2499 72915 - 2500 64923 - 2501 79329 - 2502 44337 - 2503 505049 - 2504 128961 - 2505 255499 - 2506 336953 - 2507 506841 - 2508 86755 - 2509 106907 - 2510 271979 - 2511 237115 - 2512 353839 - 2513 351005 - 2514 255929 - 2515 458091 - 2516 307843 - 2517 126851 - 2518 345273 - 2519 47971 - 2520 519463 - 2521 430511 - 2522 499867 - 2523 457175 - 2524 455079 - 2525 246851 - 2526 407955 - 2527 211007 - 2528 424031 - 2529 396669 - 2530 178375 - 2531 60845 - 2532 431585 - 2533 401729 - 2534 126565 - 2535 195753 - 2536 396923 - 2537 60847 - 2538 364015 - 2539 339891 - 2540 194993 - 2541 404805 - 2542 142305 - 2543 334789 - 2544 36819 - 2545 34189 - 2546 301995 - 2547 232635 - 2548 371301 - 2549 104549 - 2550 153551 - 2551 406757 - 2552 453011 - 2553 488337 - 2554 57163 - 2555 64357 - 2556 281963 - 2557 167811 - 2558 108431 - 2559 340589 - 2560 391593 - 2561 100507 - 2562 113063 - 2563 482993 - 2564 218891 - 2565 439757 - 2566 153679 - 2567 81759 - 2568 126119 - 2569 427283 - 2570 138275 - 2571 23233 - 2572 220849 - 2573 317467 - 2574 82563 - 2575 508491 - 2576 415819 - 2577 276137 - 2578 120289 - 2579 378293 - 2580 136551 - 2581 101267 - 2582 495695 - 2583 416617 - 2584 119743 - 2585 135799 - 2586 129925 - 2587 234001 - 2588 93825 - 2589 15479 - 2590 467727 - 2591 168023 - 2592 74139 - 2593 120901 - 2594 484509 - 2595 467899 - 2596 58341 - 2597 310949 - 2598 359257 - 2599 426335 - 2600 297705 - 2601 270941 - 2602 158007 - 2603 72971 - 2604 112479 - 2605 450143 - 2606 488851 - 2607 473189 - 2608 212399 - 2609 238799 - 2610 182807 - 2611 374629 - 2612 129861 - 2613 413781 - 2614 470133 - 2615 502085 - 2616 277553 - 2617 135717 - 2618 53037 - 2619 483243 - 2620 359991 - 2621 11039 - 2622 265333 - 2623 473041 - 2624 93679 - 2625 307803 - 2626 401121 - 2627 95093 - 2628 305199 - 2629 133087 - 2630 339105 - 2631 142153 - 2632 411511 - 2633 223193 - 2634 337815 - 2635 67525 - 2636 95175 - 2637 480891 - 2638 10979 - 2639 475299 - 2640 13139 - 2641 13871 - 2642 377021 - 2643 212431 - 2644 185587 - 2645 297245 - 2646 494309 - 2647 428911 - 2648 100071 - 2649 128369 - 2650 36725 - 2651 351851 - 2652 462787 - 2653 442847 - 2654 465487 - 2655 111943 - 2656 497233 - 2657 193419 - 2658 298249 - 2659 211023 - 2660 328867 - 2661 521301 - 2662 360751 - 2663 421351 - 2664 505413 - 2665 40873 - 2666 442035 - 2667 182161 - 2668 308779 - 2669 64783 - 2670 497985 - 2671 32351 - 2672 441677 - 2673 42141 - 2674 175505 - 2675 24003 - 2676 222365 - 2677 441279 - 2678 165949 - 2679 269437 - 2680 106923 - 2681 63359 - 2682 428423 - 2683 365747 - 2684 378529 - 2685 101073 - 2686 145495 - 2687 361639 - 2688 406821 - 2689 420505 - 2690 461253 - 2691 221407 - 2692 346959 - 2693 107493 - 2694 265679 - 2695 382925 - 2696 107639 - 2697 29993 - 2698 227485 - 2699 193929 - 2700 207057 - 2701 381899 - 2702 46537 - 2703 328137 - 2704 351473 - 2705 211309 - 2706 465739 - 2707 287825 - 2708 191705 - 2709 361417 - 2710 244785 - 2711 431285 - 2712 29333 - 2713 392355 - 2714 361753 - 2715 120941 - 2716 273895 - 2717 343903 - 2718 13539 - 2719 347673 - 2720 415853 - 2721 266747 - 2722 412889 - 2723 246111 - 2724 343685 - 2725 66651 - 2726 107281 - 2727 475471 - 2728 350267 - 2729 83109 - 2730 372693 - 2731 72537 - 2732 305925 - 2733 145609 - 2734 417697 - 2735 23981 - 2736 146205 - 2737 146845 - 2738 24281 - 2739 428233 - 2740 25807 - 2741 489281 - 2742 469031 - 2743 452973 - 2744 90211 - 2745 512047 - 2746 93805 - 2747 388757 - 2748 153039 - 2749 86643 - 2750 355677 - 2751 58601 - 2752 183325 - 2753 98721 - 2754 470773 - 2755 359039 - 2756 149645 - 2757 450043 - 2758 202155 - 2759 252391 - 2760 204143 - 2761 42519 - 2762 309343 - 2763 445331 - 2764 388569 - 2765 390537 - 2766 185777 - 2767 242363 - 2768 256959 - 2769 97327 - 2770 289651 - 2771 358561 - 2772 443993 - 2773 270569 - 2774 496095 - 2775 7955 - 2776 27459 - 2777 141773 - 2778 340219 - 2779 204929 - 2780 475695 - 2781 99271 - 2782 303563 - 2783 478751 - 2784 96227 - 2785 138457 - 2786 405843 - 2787 384895 - 2788 318297 - 2789 18257 - 2790 100319 - 2791 487189 - 2792 441163 - 2793 63279 - 2794 16159 - 2795 265039 - 2796 63753 - 2797 400037 - 2798 226629 - 2799 323471 - 2800 190335 - 2801 513703 - 2802 376643 - 2803 28547 - 2804 345013 - 2805 330771 - 2806 96653 - 2807 56191 - 2808 388441 - 2809 369211 - 2810 91535 - 2811 499363 - 2812 152325 - 2813 458153 - 2814 194785 - 2815 306603 - 2816 248777 - 2817 505579 - 2818 269923 - 2819 452741 - 2820 234227 - 2821 483733 - 2822 438003 - 2823 315989 - 2824 17373 - 2825 505437 - 2826 400323 - 2827 319185 - 2828 187141 - 2829 297899 - 2830 29325 - 2831 183175 - 2832 32037 - 2833 109149 - 2834 31953 - 2835 125553 - 2836 256903 - 2837 422541 - 2838 213387 - 2839 365383 - 2840 494863 - 2841 473265 - 2842 374419 - 2843 391879 - 2844 515929 - 2845 409973 - 2846 436729 - 2847 301663 - 2848 250819 - 2849 380853 - 2850 441779 - 2851 64359 - 2852 211511 - 2853 170333 - 2854 40801 - 2855 329621 - 2856 497593 - 2857 414741 - 2858 38315 - 2859 461397 - 2860 463833 - 2861 476019 - 2862 238227 - 2863 297127 - 2864 213693 - 2865 260445 - 2866 270099 - 2867 363855 - 2868 254169 - 2869 94615 - 2870 374709 - 2871 128597 - 2872 263711 - 2873 504923 - 2874 513269 - 2875 100647 - 2876 77345 - 2877 375335 - 2878 436129 - 2879 444683 - 2880 399785 - 2881 373253 - 2882 188583 - 2883 182661 - 2884 321261 - 2885 492209 - 2886 138691 - 2887 118851 - 2888 370801 - 2889 283871 - 2890 375761 - 2891 108219 - 2892 381791 - 2893 521061 - 2894 100699 - 2895 394279 - 2896 416331 - 2897 423195 - 2898 392333 - 2899 82503 - 2900 493133 - 2901 286319 - 2902 214885 - 2903 75085 - 2904 126007 - 2905 373435 - 2906 454699 - 2907 194095 - 2908 374725 - 2909 359533 - 2910 488751 - 2911 510297 - 2912 357837 - 2913 510141 - 2914 489591 - 2915 33807 - 2916 387977 - 2917 265867 - 2918 382915 - 2919 468711 - 2920 509771 - 2921 321593 - 2922 8725 - 2923 230081 - 2924 463971 - 2925 164527 - 2926 202821 - 2927 449243 - 2928 286147 - 2929 251107 - 2930 335713 - 2931 245335 - 2932 323447 - 2933 99899 - 2934 153005 - 2935 56363 - 2936 290999 - 2937 156193 - 2938 164267 - 2939 258175 - 2940 182643 - 2941 13031 - 2942 73361 - 2943 456013 - 2944 500821 - 2945 214977 - 2946 510303 - 2947 82195 - 2948 336167 - 2949 333041 - 2950 323319 - 2951 135907 - 2952 87081 - 2953 461265 - 2954 170827 - 2955 52519 - 2956 408207 - 2957 92059 - 2958 179641 - 2959 228933 - 2960 221449 - 2961 30681 - 2962 461353 - 2963 356169 - 2964 141443 - 2965 385915 - 2966 432695 - 2967 351731 - 2968 229803 - 2969 239815 - 2970 270205 - 2971 416833 - 2972 223119 - 2973 464427 - 2974 57265 - 2975 486615 - 2976 425297 - 2977 25657 - 2978 18615 - 2979 140049 - 2980 420129 - 2981 378463 - 2982 438187 - 2983 479057 - 2984 356569 - 2985 206803 - 2986 400649 - 2987 512581 - 2988 212233 - 2989 201973 - 2990 178821 - 2991 10193 - 2992 396751 - 2993 411689 - 2994 218893 - 2995 161647 - 2996 32479 - 2997 200657 - 2998 163259 - 2999 188909 - 3000 235815 - 3001 468603 - 3002 185711 - 3003 435439 - 3004 96911 - 3005 379475 - 3006 293557 - 3007 85487 - 3008 289949 - 3009 103079 - 3010 461657 - 3011 312965 - 3012 411535 - 3013 59479 - 3014 45341 - 3015 471447 - 3016 470241 - 3017 20731 - 3018 368203 - 3019 488799 - 3020 390767 - 3021 401901 - 3022 240203 - 3023 67359 - 3024 342371 - 3025 388151 - 3026 394787 - 3027 223875 - 3028 309743 - 3029 243759 - 3030 412615 - 3031 287377 - 3032 79261 - 3033 189575 - 3034 377839 - 3035 148371 - 3036 236505 - 3037 504407 - 3038 216565 - 3039 304945 - 3040 101347 - 3041 32483 - 3042 26123 - 3043 246515 - 3044 469647 - 3045 379157 - 3046 328757 - 3047 470183 - 3048 85499 - 3049 457409 - 3050 317327 - 3051 45793 - 3052 460163 - 3053 195417 - 3054 238987 - 3055 461707 - 3056 285521 - 3057 465375 - 3058 297633 - 3059 56385 - 3060 292495 - 3061 337483 - 3062 304699 - 3063 226917 - 3064 117625 - 3065 378411 - 3066 313055 - 3067 30761 - 3068 480707 - 3069 293457 - 3070 230349 - 3071 107079 - 3072 155749 - 3073 344455 - 3074 290263 - 3075 234071 - 3076 10883 - 3077 504953 - 3078 501357 - 3079 43293 - 3080 423523 - 3081 328537 - 3082 236483 - 3083 166171 - 3084 38377 - 3085 55643 - 3086 519281 - 3087 40523 - 3088 310891 - 3089 54807 - 3090 450257 - 3091 148641 - 3092 394659 - 3093 50393 - 3094 383571 - 3095 427871 - 3096 394141 - 3097 421721 - 3098 23239 - 3099 176937 - 3100 13165 - 3101 44269 - 3102 227427 - 3103 439141 - 3104 13875 - 3105 170259 - 3106 410205 - 3107 116255 - 3108 28187 - 3109 206685 - 3110 240255 - 3111 112111 - 3112 148361 - 3113 126139 - 3114 292807 - 3115 333175 - 3116 452079 - 3117 8537 - 3118 107979 - 3119 185177 - 3120 460521 - 3121 391313 - 3122 121301 - 3123 91615 - 3124 148751 - 3125 199575 - 3126 26329 - 3127 365039 - 3128 127227 - 3129 359197 - 3130 363689 - 3131 103439 - 3132 116143 - 3133 509529 - 3134 486799 - 3135 171933 - 3136 457269 - 3137 300819 - 3138 383871 - 3139 263795 - 3140 371411 - 3141 344283 - 3142 13901 - 3143 516001 - 3144 220661 - 3145 79983 - 3146 395003 - 3147 154397 - 3148 306029 - 3149 508137 - 3150 355521 - 3151 238163 - 3152 103155 - 3153 244249 - 3154 112759 - 3155 304815 - 3156 487597 - 3157 44407 - 3158 115581 - 3159 290929 - 3160 33925 - 3161 426203 - 3162 431537 - 3163 144103 - 3164 43139 - 3165 493889 - 3166 314259 - 3167 416369 - 3168 357677 - 3169 59509 - 3170 407949 - 3171 11369 - 3172 239493 - 3173 172337 - 3174 9481 - 3175 468623 - 3176 140203 - 3177 489907 - 3178 200207 - 3179 371547 - 3180 242719 - 3181 101051 - 3182 323475 - 3183 401063 - 3184 460323 - 3185 294285 - 3186 72081 - 3187 158513 - 3188 168605 - 3189 342875 - 3190 239303 - 3191 239665 - 3192 484939 - 3193 203543 - 3194 171833 - 3195 20195 - 3196 100311 - 3197 314743 - 3198 398739 - 3199 401575 - 3200 392409 - 3201 442007 - 3202 246973 - 3203 355713 - 3204 455711 - 3205 483053 - 3206 248379 - 3207 248605 - 3208 465197 - 3209 168091 - 3210 394149 - 3211 422577 - 3212 89837 - 3213 63425 - 3214 284781 - 3215 309057 - 3216 53177 - 3217 447213 - 3218 414081 - 3219 172925 - 3220 201689 - 3221 451953 - 3222 81319 - 3223 288315 - 3224 471759 - 3225 39953 - 3226 179947 - 3227 289185 - 3228 47631 - 3229 342375 - 3230 95509 - 3231 467583 - 3232 403759 - 3233 191121 - 3234 231343 - 3235 294237 - 3236 409963 - 3237 163151 - 3238 81103 - 3239 489517 - 3240 300977 - 3241 405353 - 3242 220019 - 3243 78993 - 3244 373779 - 3245 491893 - 3246 418757 - 3247 243007 - 3248 88035 - 3249 295693 - 3250 486581 - 3251 172593 - 3252 249463 - 3253 201763 - 3254 233953 - 3255 256923 - 3256 22247 - 3257 212105 - 3258 514453 - 3259 373005 - 3260 333023 - 3261 436425 - 3262 422747 - 3263 358241 - 3264 180009 - 3265 84385 - 3266 462205 - 3267 242625 - 3268 186207 - 3269 328381 - 3270 199869 - 3271 280395 - 3272 133425 - 3273 42929 - 3274 200285 - 3275 405045 - 3276 191883 - 3277 173357 - 3278 389975 - 3279 214137 - 3280 394469 - 3281 29713 - 3282 275277 - 3283 338559 - 3284 272939 - 3285 400973 - 3286 403589 - 3287 383381 - 3288 61539 - 3289 127411 - 3290 204575 - 3291 280153 - 3292 157657 - 3293 516233 - 3294 143729 - 3295 14245 - 3296 118239 - 3297 120487 - 3298 161515 - 3299 86743 - 3300 259695 - 3301 58023 - 3302 388483 - 3303 168423 - 3304 378703 - 3305 139529 - 3306 437333 - 3307 232509 - 3308 13951 - 3309 210975 - 3310 317837 - 3311 456761 - 3312 243293 - 3313 389963 - 3314 212455 - 3315 135675 - 3316 235869 - 3317 489851 - 3318 295209 - 3319 411985 - 3320 482805 - 3321 500817 - 3322 515443 - 3323 309289 - 3324 160895 - 3325 450681 - 3326 139471 - 3327 402381 - 3328 92321 - 3329 150599 - 3330 492225 - 3331 366165 - 3332 382433 - 3333 213897 - 3334 91735 - 3335 413983 - 3336 266001 - 3337 144943 - 3338 92639 - 3339 463773 - 3340 192747 - 3341 460919 - 3342 382913 - 3343 359477 - 3344 329671 - 3345 487523 - 3346 117891 - 3347 171117 - 3348 59269 - 3349 97417 - 3350 171871 - 3351 250525 - 3352 189423 - 3353 8081 - 3354 129897 - 3355 446151 - 3356 146109 - 3357 110505 - 3358 333587 - 3359 62987 - 3360 211221 - 3361 357243 - 3362 213473 - 3363 281671 - 3364 442715 - 3365 219189 - 3366 443253 - 3367 435363 - 3368 297161 - 3369 453161 - 3370 68627 - 3371 410971 - 3372 343233 - 3373 355915 - 3374 269217 - 3375 387431 - 3376 411097 - 3377 237183 - 3378 344755 - 3379 327277 - 3380 449777 - 3381 131799 - 3382 48181 - 3383 311511 - 3384 120091 - 3385 7093 - 3386 390125 - 3387 158753 - 3388 294281 - 3389 422365 - 3390 141203 - 3391 331579 - 3392 116683 - 3393 461933 - 3394 80913 - 3395 43487 - 3396 39849 - 3397 249485 - 3398 314327 - 3399 267699 - 3400 373907 - 3401 128653 - 3402 451171 - 3403 332245 - 3404 46935 - 3405 101083 - 3406 468025 - 3407 397991 - 3408 161605 - 3409 83003 - 3410 464759 - 3411 467803 - 3412 442503 - 3413 17937 - 3414 75717 - 3415 321135 - 3416 93861 - 3417 188735 - 3418 306009 - 3419 405579 - 3420 416721 - 3421 453169 - 3422 362117 - 3423 210675 - 3424 209507 - 3425 75243 - 3426 22807 - 3427 468067 - 3428 406483 - 3429 387859 - 3430 281055 - 3431 388589 - 3432 144881 - 3433 175401 - 3434 43545 - 3435 129869 - 3436 386931 - 3437 123223 - 3438 409461 - 3439 517063 - 3440 454543 - 3441 326533 - 3442 469715 - 3443 216367 - 3444 234793 - 3445 222363 - 3446 500805 - 3447 37691 - 3448 232339 - 3449 494563 - 3450 354593 - 3451 120623 - 3452 499447 - 3453 233819 - 3454 245525 - 3455 512237 - 3456 447957 - 3457 40799 - 3458 351733 - 3459 487549 - 3460 77657 - 3461 410505 - 3462 389669 - 3463 174127 - 3464 511279 - 3465 24481 - 3466 305541 - 3467 177015 - 3468 519107 - 3469 144989 - 3470 478671 - 3471 469133 - 3472 345451 - 3473 365323 - 3474 294225 - 3475 111675 - 3476 405825 - 3477 507299 - 3478 442967 - 3479 500599 - 3480 452981 - 3481 51727 - 3482 222237 - 3483 118921 - 3484 17021 - 3485 89149 - 3486 9563 - 3487 79199 - 3488 383241 - 3489 208629 - 3490 91599 - 3491 375525 - 3492 301661 - 3493 374049 - 3494 340021 - 3495 440053 - 3496 198823 - 3497 224787 - 3498 61121 - 3499 122615 - 3500 371579 - 3501 197611 - 3502 425621 - 3503 366713 - 3504 316939 - 3505 101905 - 3506 24171 - 3507 401565 - 3508 287091 - 3509 166509 - 3510 465939 - 3511 310617 - 3512 488773 - 3513 269047 - 3514 281069 - 3515 334367 - 3516 407339 - 3517 19321 - 3518 217701 - 3519 215315 - 3520 35553 - 3521 21901 - 3522 291567 - 3523 187937 - 3524 430651 - 3525 32311 - 3526 123537 - 3527 300521 - 3528 5811 - 3529 304903 - 3530 335469 - 3531 228991 - 3532 321671 - 3533 158593 - 3534 330299 - 3535 149545 - 3536 139031 - 3537 281739 - 3538 294127 - 3539 128305 - 3540 157215 - 3541 54577 - 3542 332327 - 3543 486309 - 3544 252623 - 3545 173629 - 3546 133663 - 3547 147981 - 3548 324491 - 3549 445587 - 3550 227607 - 3551 190063 - 3552 367383 - 3553 131771 - 3554 444535 - 3555 298961 - 3556 386147 - 3557 118181 - 3558 238353 - 3559 398465 - 3560 396965 - 3561 475859 - 3562 82109 - 3563 195947 - 3564 167101 - 3565 241579 - 3566 451065 - 3567 399927 - 3568 448673 - 3569 426565 - 3570 234245 - 3571 345957 - 3572 180061 - 3573 197207 - 3574 505283 - 3575 505659 - 3576 54233 - 3577 152663 - 3578 481155 - 3579 354391 - 3580 400891 - 3581 227395 - 3582 219535 - 3583 226123 - 3584 121423 - 3585 244551 - 3586 132045 - 3587 446551 - 3588 313999 - 3589 385783 - 3590 495507 - 3591 305613 - 3592 46891 - 3593 339689 - 3594 312893 - 3595 514481 - 3596 273563 - 3597 408791 - 3598 348479 - 3599 381971 - 3600 415201 diff --git a/demos/lattice_kronecker_methods.ipynb b/demos/lattice_kronecker_methods.ipynb index d8e721f27..7287b212c 100644 --- a/demos/lattice_kronecker_methods.ipynb +++ b/demos/lattice_kronecker_methods.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "2e06ea48", "metadata": {}, "outputs": [], @@ -47,7 +47,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "17.68626758525142\n" + "63.560193378614166\n" ] } ], @@ -82,7 +82,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[11.0370278]\n" + "[39.95402303]\n" ] } ], @@ -127,7 +127,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time taken for lattice vector wssd search: 0.17128682136535645\n", + "Time taken for lattice vector wssd search: 0.1646568775177002\n", "Searched lattice vector: [ 1 4825 13541 15249 15405 9909 7493 11407 14819 10089 3683 3347\n", " 13789 8837 5309 6307 6447 12103 9097 2767]\n" ] @@ -164,11 +164,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time taken for kronecker vector wssd search: 5.96858549118042\n", + "Time taken for kronecker vector wssd search: 4.109135389328003\n", "Searched Kronecker vector: [0.61803399 0.26774665 0.91444648 0.22708655 0.12137476 0.71267465\n", " 0.69787961 0.10230792 0.18609503 0.31195642 0.41561801 0.13176115\n", " 0.22004561 0.56882224 0.1079203 0.10500649 0.16477572 0.85934099\n", - " 0.79691446 0.21233239]\n" + " 0.20308554 0.43452109]\n" ] } ], @@ -197,13 +197,23 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "9f66d72b", "metadata": {}, "outputs": [ { "data": { - "image/png": "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mc+ZfZjrOHbsWL377rsZfk5MeDl79mzrZX4O0ndPffrpp615cyyzn2+++cYKBI177rnHmjdhYopJkyZZoaW5/oADO+BkERER5jet9X69WDjzXfuQ0eXt1cdXt16D595nPxNzJqebBQAAABd1/vx5+6ZNm6z3VElJdntsdM68zLEvUf/+/e033XSTNd2wYUP7XXfdZU3PnDnT+nd8irvvvtt+7733Onx2yZIldjc3N+u8k5KS7IUKFbJPmzbNWle7dm37yJEj7aGhodb8H3/8Yff09LSfPXs2y7aY45njXqouXbrYhw8fnjrfokUL+9ChQx22WbhwobXf06dPOyxPv+3WrVutbebPn5/pcUaMGGFv3769w7L9+/dbnzGfzUxWxzXmzp1rrVu2bFmG72DVqlXWuj179mS632LFitmfffZZe1bMZx955BGHZW3atLG//vrrDsu++uore9GiRR0+d//99zts06BBA/vgwYOzPNbbb79tr1evXur8iy++aPfz87NHRkamLnv88cet/Rhmube3t33s2LGZ7s/8HBUoUMA+derU1GU1a9a0v/TSS5f+5+46vg/F5fFwjLOAvKll90dUaElZ1Vn+iEYX8teSo0t1y8we+l/rUapdpHZONw8AAADXg/hz0uvFcubYzxySvPwv+2NmHCxT6fLYY49lWGeqckzl1ddff526zOQepkvY7t27VbVqVTVv3tyqGDJd3kx1zQMPPGB1F9uyZYtViRMeHm51P7sSiYmJVpXYt99+q4MHDyouLs6q1LnS/aW3du1aqwrNVJFlxpz7woULUyuyLqw4Mt3qLkdKNVVmg+TXqlVLbdq0sboQdujQQe3bt9ett95qdYE0FVtmPC2z/mLq16+fof2m4it9xZW5nqaq7dy5c6nX0FSwpWfmzbVJYaruTIWaOefo6GirC2JgYKDDZ0zXwfRji5kujimVZqaay3xnWbXfdG80VXWmi6Spblu9erVVbWeqzIALEWDBaUaPHm29zC/G61GNZjcpX8FQVfq+j0YW8dB+HVf/uf01tN5QDag2QG42etwCAAAgdzEBlAlNTDevlLGiUpjA4r777rPGvbqQGcfIMN0DP/vsM6vLmuluZ8KNlFDLBFhZBUSX4u2337a6rb333ntWuGPGdzJjWJkg62qZbn0XY869a9euVsB3IRPQXK6Ubnkm7LmQCdLm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", + "text/plain": [ + "Text(0, 0.5, 'Periodic Discrepancy')" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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Dg62JcJz587l119/xTCMW2rzGl9fXy5evIjFYkkzqn2Nj48P8fHxfP7551km0tlx7tw5jh07lmaU/b8GDx7M4MGDOXXqFJMmTaJZs2YcPHgwy1gz4+Pjg5ubG6NGjbphveTkZK5evYqXl5et7N+/t9GjR/Poo48yZ84c2/kXX3zxpr+o8fX1TfMkhYz06tWLBg0aEBoayvTp0/nss89u6h63SyP0IiIiIiJiYzKZcHW0v+c/tzodvVSpUqxbt47Tp0/TunVrYmJi8PLywsPDg3379tnqrV69mvj4eNtxw4YNiY+PZ968ebayRYsWERERQePGjW8plqioKJydnXF1dQWsXyJc22393zw8PGybwN2o7N/atGlDQkICU6dOTVN+/PhxANq2bYvFYkm3qV94eDjBwcE31Y+EhAT69euHv78/zzzzTIZ1Dh8+TGJiIgDFixfn/fffx2KxcOLEiSxjzUynTp1YuHAhhw4dSlO+Z8+edHV/+eUX2/u1a9cSGhpKkyZNAOvvIW/evLbzly9fZsGCBTe8d0Y6duzIvHnz0nx+UVFRXLx40XZcp04dypUrx7PPPktcXBxPP/30Td/ndmiEXkREREREHmglSpSwjdS3atWKpUuX0r9/fwYMGMDRo0eJjY1lxYoVtsevARQrVoxhw4bx3HPP0bNnT8xmMz/++CNDhgzJ8lnrGzduTDeK3LhxY1q1aoXJZKJNmzY0aNCANWvWZJjENmzYkBEjRnDq1Cm8vb3p06dPhmX/VqRIEcaNG0efPn1YtWoVJUqUYM2aNTzzzDOUKlWKIkWKMGHCBPr06cPGjRupUqUKp0+fZsOGDcycOTPNo9Uy609ycjLBwcHMnz8fT09Pli5danus3n/t2bOHxx57jObNm5M/f36WLl1KuXLlePTRR8mTJ88NY81Mr169WLNmDXXr1qVbt274+Piwa9cuzp07x44dO2z1HBwcGDNmDPv378fd3Z2JEyfyyiuvUL58eQCef/55unTpgqOjI97e3vz666+2L1luRq9evViyZAk1atTgueeew87OjuXLlzNr1iz8/f1t9Xr27Mnrr79O9+7dM/287haN0IuIiIiIyAMlICCAgQMH4uvraysrWrQo69ato379+ixdupTPPvuMKVOm4ODgQKVKldi4cSNvv/025cqVs13z7rvvsmLFCvLmzYunpydLlizh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zXTkyBGlpKToueee08SJE3Xy5ElHmxMnTmj06NGaO3cuR3PgkY4dO6ahQ4fq4MGDatKkSZltXn75ZSUlJWn//v3avXu3vvzyS7388stORzhDQkJ08eJFnTx5Unv37tWaNWtqaxeACikqKtJdd92lQ4cOqW/fvmW2WbNmjVauXKnt27frn//8p/bu3au8vDzNmzdPkrRz507t379fw4cP1913360zZ85o/PjxtbkbMCgCvQcLCgrSCy+8oBYtWpTbZvny5erRo4eGDRsmSQoNDVVsbKyWL18uu92uhg0bqlu3blq0aJFOnTqlN954w9EW8CT333+/QkNDy13+6aefymazOV0rHBcXp/T0dH3//feSpHPnzikjI0P5+fk6fvy4MjMza7xuoLIeeOABDR06VCaTqczlWVlZ2rx5s5588knVr19fkvTYY49JkuMIZ1pamkaNGqXXXntN/fv318WLF2uneKASBgwYoIkTJ8rf37/cNsuXL9fEiRMdn3UGDBigW2+9VcuWLZMkrV+/XsuXL1dubq7y8/N14cIFXbhwoTbKByosNDRUMTExjvfssqxatUqDBg1SZGSkJKlRo0aaNGmSVq1aJUkaN26cMjIylJGRod27dys0NNTx+Qa4GgK9wSUnJ6tXr15O83r16qUzZ87o6NGjkqT33ntPK1euVMeOHWUymco9Agp4stTUVLVp00YNGjRwzOvWrZtjmSRt375dw4YN088//6z58+dr0qRJbqkVqI7k5GRJcnpvDwgIUOfOnZWSkiJJio+PV0pKim655Rb5+/vL399fhYWF7igXqLLc3FxlZmaW+TmmZKwPGjRISUlJat++vQYOHKjo6Gjdfffd7igXqJbU1FRHmC8RGRmpnJwcZWdnO8339fVVREREbZYHA+M59AaXm5urpk2bOs0ruVnMmTNn1Lp1a3Xt2lXfffedO8oDXMZqtapx48ZO8wICAuTn5yer1SpJGjZsmDIyMtxQHeA6ubm5klTme3vJtZbx8fGKj4+v7dIAl6rIWA8ICNCiRYu0aNGi2i4PcKmyPseUXIpitVoVHh7uND8xMbE2y4OBcYTe4Pz8/HT+/Hmnefn5+Y5lgLcICAgodafvklMvAwMD3VQV4Hol791lvbfzvg5vwlhHXVLW55iSAxJ8jkF1EOgNrm3bto5T60tkZWXJx8dHrVu3dlNVgOt1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", "text/plain": [ "
" ] @@ -213,13 +223,13 @@ } ], "source": [ - "lat1 = Lattice(dimension=dim, order=\"RADICAL_INVERSE\", seed=12, generating_vector=\"kuo.lattice-33002-1024-1048576.9125.txt\", m_max=20) # initialize a lattice with the generating vector of all 1s\n", + "lat1 = Lattice(dimension=dim, order=\"RADICAL_INVERSE\", seed=12, generating_vector=\"kuo.lattice-39102-1024-1048576.3600.txt\", m_max=20)\n", "lat_discs1 = lat1.expected_squared_periodic_discrepancies(n_max=n, coord_weights=coord_weights)\n", "\n", - "\n", - "lat2 = Lattice(dimension=dim, order=\"RADICAL_INVERSE\", seed=12, generating_vector=np.uint64(searched_lattice_vector), m_max=20) # initialize a lattice with the searched lattice vector\n", + "lat2 = Lattice(dimension=dim, order=\"RADICAL_INVERSE\", seed=12, generating_vector=np.uint64(searched_lattice_vector), m_max=20)\n", "lat_discs2 = lat2.expected_squared_periodic_discrepancies(n_max=n, coord_weights=coord_weights)\n", "\n", + "# Note that the new lattice rule beats the Kuo lattice rule for low sample sizes, but they are comparable closer to n = 2^20.\n", "\n", "fig, ax = pyplot.subplots(nrows=1, ncols=1, figsize=(12,10))\n", "ax.plot(np.arange(1, n+1), np.sqrt(lat_discs1), label=\"Kuo Lattice Discrepancy\")\n", @@ -249,7 +259,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.13" + "version": "3.12.14" } }, "nbformat": 4, diff --git a/pyproject.toml b/pyproject.toml index 704a112bc..9a273cb9a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -164,6 +164,7 @@ includes = [ "qmcpy", "qmcpy/discrete_distribution/digital_net_b2/generating_matrices/*.npy", "qmcpy/discrete_distribution/lattice/generating_vectors/*.npy", + "qmcpy/discrete_distribution/kronecker/generating_vectors/*.txt", "qmcpy/util/qmcpy.mplstyle", ] excludes = [] diff --git a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py index d316869a0..be4e4fc52 100644 --- a/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py +++ b/qmcpy/discrete_distribution/kronecker/kronecker_search_methods.py @@ -1,9 +1,10 @@ import numpy as np -import sympy def kronecker_vector_search_mobius_transform(n_max, d_max, searchsize, kernel=None, coord_weights=None, gen_vec_init=None): """ - CBC search method for finding a generating vector for a Kronecker sequence, minimizing the weighted sum of squared discrepancies (WSSD). + Note that the sympy package is highly recommended for this search method, though not required. + + A deterministic CBC search method for finding a generating vector for a Kronecker sequence, minimizing the weighted sum of squared discrepancies (WSSD). - The first component is gen_vec_init, defaults to the golden ratio. - We use a modified mobius transformation f(x) = (a*x + b)/(c*x + d) where a, c are distinct primes and b, d are the two pairs of the smallest positive integers such that |a*d - b*c| = 1. - Each subsequent component is found by performing the mobius transformation on the previous component, searching over all pairs of distinct primes from the first searchsize many primes. @@ -23,7 +24,7 @@ def kronecker_vector_search_mobius_transform(n_max, d_max, searchsize, kernel=No Time cost: The time cost of the search is O(searchsize^2 * d_max * n_max). Approach: - Uses the quadratic Bernoulli polynomial kernel to conduct a CBC search for a generating vector, minimizing the weighted sum of squared discrepancies (wssd) with sample weights w_n = n. + Conducts a deterministic CBC search for a generating vector, minimizing the weighted sum of squared discrepancies (wssd) with sample weights w_n = n. Details on coeff array: The coeff array is a (d_max-1) x 4 array where each row corresponds to a dimension from 2 to d_max. The columns correspond to the coefficients of the linear transformation used to compute the gen_vec component for that dimension. Specifically, - gen_vec[dim+1] = (coeff[dim, 0] * gen_vec[dim] + coeff[dim, 1]) / (coeff[dim, 2] * gen_vec[dim] + coeff[dim, 3]) @@ -49,9 +50,52 @@ def kronecker_vector_search_mobius_transform(n_max, d_max, searchsize, kernel=No else: coord_weights = np.asarray(coord_weights, dtype=np.float64) - # search over the first n primes, n = searchsize - searchspace = np.array(list(sympy.primerange(1, sympy.prime(searchsize)+1)), dtype=np.float64) + # use sympy if it's already installed, otherwise uses slower and recursive direct implementation + try: + import sympy + except ImportError: + print("While not required, installing the sympy package is recommended for this search method. It is used to compute the Bezout coefficients for the linear transformation used in the search. If sympy is not installed, the search will use a recursive and likely slower implementation of the Euclidean algorithm instead.") + response = input("Do you want to continue without sympy? (y/n): ") + if response.lower() != 'y': + raise ImportError("Please install sympy and try again.") + else: + has_sympy = False + print("Continuing without sympy. This may take longer.") + else: + has_sympy = True + if has_sympy: + # search over the first n primes, n = searchsize + searchspace = np.array(list(sympy.primerange(1, sympy.prime(searchsize)+1)), dtype=np.float64) + else: + def get_primes(n): + primes = [] + num = 2 + while len(primes) < n: + is_prime = True + for p in primes: + if p * p > num: + break + if num % p == 0: + is_prime = False + break + if is_prime: + primes.append(num) + num += 1 + return primes + + # search over the first n primes, n = searchsize + searchspace = np.array(get_primes(searchsize), dtype=np.float64) + + # we define this method here for convenience, to use in computing Bezout coefficients if necessary + def recursive_euclidean_algorithm(a, b): + if b == 0: + return 1, 0, a + x1, y1, gcd = recursive_euclidean_algorithm(b, a % b) + x = y1 + y = x1 - (a // b) * y1 + return x, y, gcd + # gen_vec is our generating vector, will be found cbc gen_vec = np.zeros(d_max, dtype=np.float64) @@ -73,14 +117,25 @@ def kronecker_vector_search_mobius_transform(n_max, d_max, searchsize, kernel=No # precompute Bezout coefficients for all pairs of primes in the search space bezoutCoeffs = np.zeros((searchsize, searchsize)) - for i in range(searchsize - 1): - a = searchspace[i] - for j in range(i + 1, searchsize): - c = searchspace[j] - # Use sympy.gcdex to get Bezout coefficients - d_coeff, b_coeff, _ = sympy.gcdex(int(a), int(c)) - bezoutCoeffs[i, j] = np.float64(b_coeff) - bezoutCoeffs[j, i] = np.float64(d_coeff) + if has_sympy: + from sympy.core.intfunc import igcdex + for i in range(searchsize - 1): + a = searchspace[i] + for j in range(i + 1, searchsize): + c = searchspace[j] + # Use sympy.igcdex to get Bezout coefficients + d_coeff, b_coeff, _ = igcdex(int(a), int(c)) + bezoutCoeffs[i, j] = np.float64(b_coeff) + bezoutCoeffs[j, i] = np.float64(d_coeff) + else: + for i in range(searchsize - 1): + a = searchspace[i] + for j in range(i + 1, searchsize): + c = searchspace[j] + # Use the recursive Euclidean algorithm to get Bezout coefficients + d_coeff, b_coeff, _ = recursive_euclidean_algorithm(int(a), int(c)) + bezoutCoeffs[i, j] = np.float64(b_coeff) + bezoutCoeffs[j, i] = np.float64(d_coeff) # setting up some useful variables for the search diff --git a/qmcpy/discrete_distribution/lattice/generating_vectors/kuo.lattice-39102-1024-1048576.3600.npy b/qmcpy/discrete_distribution/lattice/generating_vectors/kuo.lattice-39102-1024-1048576.3600.npy new file mode 100644 index 0000000000000000000000000000000000000000..40fe8cb4e7afc28cde25e3f12b78f19b40ba4993 GIT binary patch literal 28880 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 A{Qv*} literal 0 HcmV?d00001 diff --git a/qmcpy/discrete_distribution/lattice/lattice.py b/qmcpy/discrete_distribution/lattice/lattice.py index c9284b85b..5db8d591f 100644 --- a/qmcpy/discrete_distribution/lattice/lattice.py +++ b/qmcpy/discrete_distribution/lattice/lattice.py @@ -187,6 +187,17 @@ def __init__( )[None, :] d_limit = 9125 n_limit = 1048576 + elif ( + isinstance(generating_vector, str) + and generating_vector == "kuo.lattice-39102-1024-1048576.3600.txt" + ): + self.gen_vec_source = generating_vector + gen_vec = np.load( + dirname(abspath(__file__)) + + "/generating_vectors/kuo.lattice-39102-1024-1048576.3600.npy" + )[None, :] + d_limit = 3600 + n_limit = 1048576 elif isinstance(generating_vector, str): self.gen_vec_source = generating_vector assert generating_vector[-4:] == ".txt" From 8b341338fde9688669ddbddc155f070a3d7f5dd6 Mon Sep 17 00:00:00 2001 From: Anders Pride Date: Tue, 25 Aug 2026 18:54:57 -0500 Subject: [PATCH 28/29] Significantly improves speed of lattice discrepancies -New approach in getting the squared discrepancy values for n=1,...,N is nearly an order of magnitude faster for large N, with help from Claude. -Also includes a fix to a doctest for lattice_vector_wssd_search. --- demos/lattice_kronecker_methods.ipynb | 8 +++---- .../discrete_distribution/lattice/lattice.py | 23 +++++++++++-------- .../lattice/lattice_vector_wssd_search.py | 3 +-- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/demos/lattice_kronecker_methods.ipynb b/demos/lattice_kronecker_methods.ipynb index 7287b212c..941bd9fb0 100644 --- a/demos/lattice_kronecker_methods.ipynb +++ b/demos/lattice_kronecker_methods.ipynb @@ -47,7 +47,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "63.560193378614166\n" + "63.560193378767764\n" ] } ], @@ -127,7 +127,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time taken for lattice vector wssd search: 0.1646568775177002\n", + "Time taken for lattice vector wssd search: 0.16274404525756836\n", "Searched lattice vector: [ 1 4825 13541 15249 15405 9909 7493 11407 14819 10089 3683 3347\n", " 13789 8837 5309 6307 6447 12103 9097 2767]\n" ] @@ -164,7 +164,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Time taken for kronecker vector wssd search: 4.109135389328003\n", + "Time taken for kronecker vector wssd search: 3.8035733699798584\n", "Searched Kronecker vector: [0.61803399 0.26774665 0.91444648 0.22708655 0.12137476 0.71267465\n", " 0.69787961 0.10230792 0.18609503 0.31195642 0.41561801 0.13176115\n", " 0.22004561 0.56882224 0.1079203 0.10500649 0.16477572 0.85934099\n", @@ -197,7 +197,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "9f66d72b", "metadata": {}, "outputs": [ diff --git a/qmcpy/discrete_distribution/lattice/lattice.py b/qmcpy/discrete_distribution/lattice/lattice.py index 5db8d591f..8124542bc 100644 --- a/qmcpy/discrete_distribution/lattice/lattice.py +++ b/qmcpy/discrete_distribution/lattice/lattice.py @@ -440,16 +440,19 @@ def expected_squared_periodic_discrepancies(self, n_max, coord_weights=None, ker for i in range(k_sum.size): k_sum[i] = np.sum(k_vector[2**i:(2**(i+1))]) - # get the frequency matrix for how often each kernel evaluation appears (this is always the same and can be precomputed, not done here to avoid adding >1GB txt file to git) - freq_mtx = np.zeros((k_sum.size, n_max), dtype=np.float64) - for i in range(1,n_max): - for j in range(k_sum.size): - if np.floor(i / 2**j) % 2 == 1: - freq_mtx[j, i] = freq_mtx[j, i-1] + 2 - else: - freq_mtx[j, i] = freq_mtx[j, i-1] - for i in range(n_max): - freq_mtx[:,i] = freq_mtx[:,i] * (i + 1)**(-2) + # get the frequency matrix for how often each kernel evaluation appears + # this is always the same and can be precomputed, but for values of n_max large enough to matter (~ 2^25) + # the precomputed file is >1GB and would take longer to load than to compute + i = np.arange(2**k_sum.size) + pattern = np.zeros((k_sum.size, 2**k_sum.size), dtype=np.float64) # start with the pattern for the full power of two + for l in range(k_sum.size): + pattern[l] = ((i >> (l)) & 1) * 2 + + # truncate the matrix to the correct size, get the cumsum and divide by the square of the index + pattern = pattern[:, :n_max] + freq_mtx = np.cumsum(pattern, axis=1) + divisor = np.arange(1, n_max + 1) ** 2 + freq_mtx /= divisor # multiply by the frequency matrix and add the constant vector discs = k_const + (k_sum @ freq_mtx) diff --git a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py index 26c0b78b3..32aeb4398 100644 --- a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py +++ b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py @@ -34,8 +34,7 @@ def lattice_vector_wssd_search(n_max, d_max, coord_weights=None, kernel=None): >>> bernoulli6 = lambda x: x**6 - 3 * x**5 + 5 / 2 * x**4 - 1 / 2 * x**2 + 1 / 42 >>> lattice_vector_wssd_search(n_max=2**15, d_max=10, coord_weights=None, kernel=bernoulli6) - array([ 1, 1635, 6875, 8665, 8531, 1361, 11771, 10987, 2805, - 9961]) + array([ 1, 12589, 15515, 3957, 1879, 8985, 15139, 9529, 7363, 6089]) """ if kernel is None: From 86bae718124e747fe36d333829addd8e26f0e944 Mon Sep 17 00:00:00 2001 From: Anders Pride Date: Tue, 25 Aug 2026 20:08:47 -0500 Subject: [PATCH 29/29] Potential fix to doctest error in lattice search --- .../lattice/lattice_vector_wssd_search.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py index 32aeb4398..ce41f80b2 100644 --- a/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py +++ b/qmcpy/discrete_distribution/lattice/lattice_vector_wssd_search.py @@ -158,13 +158,19 @@ def lattice_vector_wssd_search(n_max, d_max, coord_weights=None, kernel=None): wssd = wssd + omega(1 / 2) * prodV[-1, 0] wssd = wssd + n_max * k0 - n_max * (n_max + 1) / 2 - bestIdx = int(np.argmin(wssd)) + # Choose the best candidate, using the smallest index in case of ties to avoid different platforms providing different outputs + min_wssd = np.min(wssd) + rtol = 1e-15 + best_indices = np.where(np.abs(wssd - min_wssd) <= rtol * np.abs(min_wssd))[0] + bestIdx = int(best_indices[0]) newH = int(gR[bestIdx]) # Avoid duplicates while newH in gen_vec: wssd[bestIdx] = np.inf - bestIdx = int(np.argmin(wssd)) + min_wssd = np.min(wssd) + best_indices = np.where(np.abs(wssd - min_wssd) <= rtol * np.abs(min_wssd))[0] + bestIdx = int(best_indices[0]) newH = int(gR[bestIdx]) gen_vec[hComp - 1] = newH