Latin Hypercube Samples (lhs)  1.0
R, C++, and Rcpp code to generate Latin hypercube samples
COrthogonalArray.h
Go to the documentation of this file.
1 
25 #ifndef CORTHOGONALARRAY_H
26 #define CORTHOGONALARRAY_H
27 
28 #include "OACommonDefines.h"
29 #include "GaloisField.h"
30 #include "construct.h"
31 #include "runif.h"
32 #include "rutils.h"
33 #include "oa.h"
34 #include "primes.h"
35 
37 #define ROWCHECK 50
38 
39 #define NOMESSAGES 0
40 
41 #define SOMEMESSAGES 1
42 
43 #define ALLMESSAGES 2
44 
48 namespace oacpp {
55  {
56  public:
65 
107  void addelkemp(int q, int k, int* n);
108 
168  void addelkemp3(int q, int k, int* n);
169 
193  void addelkempn(int akn, int q, int k, int* n);
194 
211  void bose(int q, int k, int* n);
212 
236  void bosebush(int q, int k, int *n);
237 
271  void bosebushl(int lambda, int q, int k, int* n);
272 
292  void bush(int q, int k, int* n);
293 
311  void busht(int str, int q, int k, int* n);
312 
350  int oaagree(bool verbose);
394  int oatriple(bool verbose);
395 
399  void oadimen();
400 
428  void oarand(int is, int js, int ks, int ls);
429 
463  int oastr(bool verbose);
464 
489  bool oastr1(bool verbose);
490 
520  bool oastr2(bool verbose);
526  bool oastr3(bool verbose);
532  bool oastr4(bool verbose);
533 
539  bool oastrt(int t, bool verbose);
540 
545  int getnrows();
550  int getncols();
555  int getq();
560  const bclib::matrix<int> & getoa();
565  const std::string getMessage();
570  int getReturnCode();
571 
572  private:
573  GaloisField m_gf;
574  bclib::matrix<int> m_A;
575  int m_nrow;
576  int m_ncol;
577  int m_q;
578  RUnif m_randomClass;
579  int m_return_code;
580  std::string m_warning_msg;
581 
587  void createGaloisField(int q);
592  void checkDesignMemory();
600  int checkMaxColumns(int k, int maxColumns);
609  void checkResult(int result, int nvalue, int * n);
610  };
611 
612  inline
614  {
615  PRINT_OUTPUT << "\nThe array has " << m_nrow << " rows, " << m_ncol << " columns and appears\n";
616  PRINT_OUTPUT << "to have " << m_q << " symbols, since the largest symbol is " << m_q - 1 << ".\n";
617  }
618 
619  inline
621  {
622  return m_nrow;
623  }
624  inline
626  {
627  return m_ncol;
628  }
629  inline
631  {
632  return m_q;
633  }
634  inline
635  const bclib::matrix<int> & COrthogonalArray::getoa()
636  {
637  return m_A;
638  }
639  inline
641  {
642  return m_return_code;
643  }
644  inline
645  const std::string COrthogonalArray::getMessage()
646  {
647  return m_warning_msg;
648  }
649 
650 }
651 
652 #endif
PRINT_OUTPUT
#define PRINT_OUTPUT
Definition: OACommonDefines.h:54
oacpp::COrthogonalArray::oastr2
bool oastr2(bool verbose)
Definition: COrthogonalArray.cpp:423
oacpp::COrthogonalArray::getq
int getq()
Definition: COrthogonalArray.h:630
runif.h
oacpp::COrthogonalArray::addelkemp3
void addelkemp3(int q, int k, int *n)
Definition: COrthogonalArray.cpp:113
oacpp::COrthogonalArray
Definition: COrthogonalArray.h:55
GaloisField.h
oacpp::COrthogonalArray::addelkempn
void addelkempn(int akn, int q, int k, int *n)
Definition: COrthogonalArray.cpp:129
oacpp
Definition: ak.h:39
oacpp::GaloisField
Definition: GaloisField.h:27
oacpp::COrthogonalArray::oaagree
int oaagree(bool verbose)
Definition: COrthogonalArray.cpp:297
oacpp::COrthogonalArray::getReturnCode
int getReturnCode()
Definition: COrthogonalArray.h:640
oacpp::COrthogonalArray::getncols
int getncols()
Definition: COrthogonalArray.h:625
oacpp::COrthogonalArray::bosebushl
void bosebushl(int lambda, int q, int k, int *n)
Definition: COrthogonalArray.cpp:196
construct.h
primes.h
oacpp::COrthogonalArray::getMessage
const std::string getMessage()
Definition: COrthogonalArray.h:645
oacpp::COrthogonalArray::getoa
const bclib::matrix< int > & getoa()
Definition: COrthogonalArray.h:635
OACommonDefines.h
oacpp::RUnif
Definition: runif.h:79
oacpp::COrthogonalArray::oastr3
bool oastr3(bool verbose)
Definition: COrthogonalArray.cpp:429
oa.h
oacpp::COrthogonalArray::bush
void bush(int q, int k, int *n)
Definition: COrthogonalArray.cpp:246
oacpp::COrthogonalArray::bosebush
void bosebush(int q, int k, int *n)
Definition: COrthogonalArray.cpp:161
oacpp::COrthogonalArray::oastr
int oastr(bool verbose)
Definition: COrthogonalArray.cpp:396
oacpp::COrthogonalArray::~COrthogonalArray
~COrthogonalArray()
Definition: COrthogonalArray.h:64
rutils.h
oacpp::COrthogonalArray::getnrows
int getnrows()
Definition: COrthogonalArray.h:620
oacpp::COrthogonalArray::busht
void busht(int str, int q, int k, int *n)
Definition: COrthogonalArray.cpp:277
oacpp::COrthogonalArray::bose
void bose(int q, int k, int *n)
Definition: COrthogonalArray.cpp:145
oacpp::COrthogonalArray::oadimen
void oadimen()
Definition: COrthogonalArray.h:613
oacpp::COrthogonalArray::oastr4
bool oastr4(bool verbose)
Definition: COrthogonalArray.cpp:435
oacpp::COrthogonalArray::oastrt
bool oastrt(int t, bool verbose)
Definition: COrthogonalArray.cpp:441
oacpp::COrthogonalArray::oastr1
bool oastr1(bool verbose)
Definition: COrthogonalArray.cpp:417
oacpp::COrthogonalArray::addelkemp
void addelkemp(int q, int k, int *n)
Definition: COrthogonalArray.cpp:81
oacpp::COrthogonalArray::oatriple
int oatriple(bool verbose)
Definition: COrthogonalArray.cpp:343
oacpp::COrthogonalArray::COrthogonalArray
COrthogonalArray()
Definition: COrthogonalArray.cpp:29
oacpp::COrthogonalArray::oarand
void oarand(int is, int js, int ks, int ls)
Definition: COrthogonalArray.cpp:382