Skip to content
/ oa Public

Orthogonal Arrays based on Owen from Statlib

License

Notifications You must be signed in to change notification settings

bertcarnell/oa

Repository files navigation

oa

Orthogonal Arrays based on Owen from Statlib. Still available here

Status

Linux & MacOS Windows Code Coverage Actions CodeQL Linter
Build Status Build status codecov CMake CodeQL CppLinter

Documentation

Doxygen code documentation

Examples

Notes on each orthogonal array are from Owen.

Addelman-Kempthorne (addelkemp)

The addelkemp program produces OA( 2q^2, k, q, 2 ), k <= 2q+1, for odd prime powers q. Even prime powers may be produced using bosebush.

int q = 2;
int ncol = 2*q;
int n = 2*q*q;
oacpp::COrthogonalArray coa;
coa.addelkemp(q, ncol, &n);
coa.getoa();

Addelman-Kempethorn (addelkemp3)

The addelkemp3 program produces OA( 2\*q^3, k, q, 2 ), k <= 2q^2+2q+1, for prime powers q. q may be an odd prime power, or q may be 2 or 4.

int q = 3;
int ncol = 2*q*q + 2*q + 1;
int n;
oacpp::COrthogonalArray coa;
coa.addelkemp3(q, ncol, &n);
coa.getoa();

Bose

The bose program produces OA( q^2, k, q, 2 ), k <= q+1 for prime powers q.

int q = 2;
int ncol = q;
int n = 0;
oacpp::COrthogonalArray coa;
coa.bose(q, ncol, &n);
coa.getoa();

Bose-Bush

The bosebush program produces OA( 2q^2, k, q, 2 ), k <= 2q+1, for powers of 2, q=2^r.

int q = 8;
int ncol = 5;
int n = 0;
oacpp::COrthogonalArray coa;
coa.bosebush(q, ncol, &n);
coa.getoa();

Bush

The bush program produces OA( q^3, k, q, 3 ), k <= q+1 for prime powers q.

int q = 3;
int ncol = 3;
int n = 0;
oacpp::COrthogonalArray coa;
coa.bush(q, ncol, &n);
coa.getoa();

Bose-Bush lambda

The bosebushl program produces OA( lambda*q^2, k, q, 2 ),
k <= lambda*q+1, for prime powers q and lambda > 1. Both q and lambda must be powers of the same prime.

int q = 2;
int ncol = q;
int lambda = 2;
int n = 0;
oacpp::COrthogonalArray coa;
coa.bosebushl(lambda, q, ncol, &n);
coa.getoa();

Bush t

The bush program produces OA( q^t, k, q, t ), k <= q+1, t>=3, for prime powers q.

int q = 3;
int ncol = 3;
int str = 2;
int n = 0;
oacpp::COrthogonalArray coa;
coa.busht(str, q, ncol, &n);
coa.getoa();