ArrayXd GoSUM::CModelVariables::expandNTuple(const ArrayXd &X) const { if ( X.size()!=mvs.size() ) throw "GoSUM::CModelVariables::expand error: wrong X size"; int i,j,k,N=int(mvs.size()),eN=expandedSize(),exsize; ArrayXd eX=ArrayXd::Zero(eN); for ( i=j=0; i<N; i++,j+=exsize ) { exsize=mvs[i].expandedSize(); if ( exsize==1 ) { eX(j)=X(i); } else { for ( k=0; k<exsize; k++ ) if (k==X(i)) { eX(j+k) = 1.; break; } } } return eX; }
parzenWindowEstimator1D::parzenWindowEstimator1D() { dim = 1; Matrix eX(1,2); eX(0,0) = -0.1; eX(0,1) = 0.2; std::vector<int> bN; bN.push_back(20); resize(eX,bN); }
ArrayXd GoSUM::CModelVariables::expandedNTuple(int _at) const { int i,j,k,N=int(mvs.size()),eN=expandedSize(),exsize; ArrayXd eX=ArrayXd::Zero(eN); for ( i=j=0; i<N; i++,j+=exsize ) { exsize=mvs[i].expandedSize(); if ( exsize==1 ) { eX(j)=mvs[i].sampleValue(_at); } else { for ( k=0; k<exsize; k++ ) if (k==mvs[i].sampleValue(_at)) { eX(j+k) = 1.; break; } } } return eX; }
void Rotate_002( ) { vector_type eX( 1, 0, 0 ); vector_type eY( 0, 1, 0 ); quaternion_type q = quaternion_type::rotate( eX, eY ); vector_type _eX = q.rotate( eY ); CPPUNIT_ASSERTION_DOUBLES_EQUAL( _eX.x, value_type( -1 ), 1.0e-6 ); CPPUNIT_ASSERTION_DOUBLES_EQUAL( _eX.y, value_type( 0 ), 1.0e-6 ); CPPUNIT_ASSERTION_DOUBLES_EQUAL( _eX.z, value_type( 0 ), 1.0e-6 ); }
bool tEpetraThyraConverter::test_single_blockEpetraToThyra(int verbosity, std::ostream & os) { bool status; bool allPassed = true; const Epetra_Comm & Comm = *GetComm(); const RCP<const Teuchos::Comm<Teuchos::Ordinal> > tComm = Thyra::create_Comm(rcpFromRef(Comm)); // get process information int numProc = Comm.NumProc(); // int myPID = Comm.MyPID(); // how big is this vector int myElmts = 1000; int glElmts = myElmts*numProc; // build vector space const RCP<const Thyra::VectorSpaceBase<double> > vs = Thyra::defaultSpmdVectorSpace<double>(tComm,myElmts,glElmts); const RCP<const Thyra::VectorSpaceBase<double> > prodVS = vs; // from the vector space build an epetra map const RCP<const Epetra_Map> map = Teko::Epetra::thyraVSToEpetraMap(*prodVS,rcpFromRef(Comm)); // build an epetra multivector int vecs = 10; Epetra_MultiVector eX(*map,vecs); eX.Random(); // build a Thyra copy of this Epetra_MultiVector const RCP<Thyra::MultiVectorBase<double> > tX = Thyra::createMembers(prodVS,eX.NumVectors()); Teko::Epetra::blockEpetraToThyra(eX,tX.ptr()); TEST_ASSERT(tX!=Teuchos::null, "\n tEpetraThyraConverter::test_single_blockEpetraToThyra: " << toString(status) << ": blockEpetraToThyra returns not null"); double result = compareEpetraMVToThyra(eX,tX,verbosity,os); TEST_ASSERT(result==0.0, "\n tEpetraThyraConverter::test_single_blockEpetraToThyra: " << toString(status) << ": Epetra MV is compared to Thyra MV (maxdiff = " << result << ")"); return allPassed; }