LP3_CORE_API MediaManager MediaManager::sub_directory(const gsl::cstring_span<> & sub_d) { if (base_directory == "/") { MediaManager subm(sub_d.data()); return subm; } else { MediaManager subm( str(boost::format("%s/%s") % base_directory % sub_d.data())); return subm; } }
// def createCoordsProof(self, version, g2, g3, r): void createCoordsProof( char* version, BIGNUM* g2, BIGNUM* g3, BIGNUM* r, BIGNUM* c, BIGNUM* d1, BIGNUM* d2 ) { // r1 = createRandomExponent() // r2 = createRandomExponent() BIGNUM* r1 = createRandomExponent(); BIGNUM* r2 = createRandomExponent(); // tmp1 = pow(g3, r1, self.mod) BIGNUM* tmp1 = my_pow( g3, r1, mod ); // tmp2 = mulm( pow(self.gen, r1, self.mod), pow(g2, r2, self.mod), self.mod) // Step A = pow(self.gen, r1, self.mod) BIGNUM* stepA = my_pow( gen, r1, mod ); // Step B = pow(g2, r2, self.mod) BIGNUM* stepB = my_pow( g2, r2, mod ); // Step C = mulm( StepA, StepB, mod ) BIGNUM* tmp2 = mulm( stepA, stepB, mod ); // c = sha256(version + str(tmp1) + str(tmp2)) BIGNUM* tmp3 = sha_with_version( version, tmp1, tmp2 ); BN_copy( c, tmp3 ); // d1 = (r1 - mulm(r, c, self.modOrder)) % self.modOrder BIGNUM* resultA = mulm( r, c, modOrder ); BIGNUM* d1_temp = subm( r1, resultA, modOrder ); BN_copy( d1, d1_temp ); // d2 = (r2 - mulm(self.secret, c, self.modOrder)) % self.modOrder BIGNUM* resultB = mulm( secret, c, modOrder ); BIGNUM* d2_temp = subm( r2, resultB, modOrder ); BN_copy( d2, d2_temp ); // clean up BN_clear_free( r1 ); BN_clear_free( r2 ); BN_clear_free( tmp1 ); BN_clear_free( stepA ); BN_clear_free( stepB ); BN_clear_free( tmp2 ); BN_clear_free( tmp3 ); BN_clear_free( resultA ); BN_clear_free( d1_temp ); BN_clear_free( resultB ); BN_clear_free( d2_temp ); // return (c, d1, d2) }
void main() { clrscr(); int m,n,p,q,a[20][20],b[20][20],c[20][20]; cout<<"Enter no:of rows & columns of first matrix:"; cin>>m>>n; cout<<"Enter no:of rows & columns of second matrix:"; cin>>p>>q; if(m!=p||n!=q) cout<<"Matrix addition and substraction not possible.\n"; else { cout<<"Enter elements of First matrix:\n"; getm(m,n,a); cout<<"Enter elements of Second matrix:\n"; getm(p,q,b); clrscr(); cout<<"First matrix:\n"; prim(m,n,a); cout<<"Second matrix:\n"; prim(p,q,b); cout<<"Matrix Sum:\n"; addm(m,n,a,b); cout<<"Matrix Difference:\n"; subm(m,n,a,b); } if(m!=q) cout<<"Matrix multiplication not possible."; else { if(m!=p||n!=q) { cout<<"Enter elements of First matrix:\n"; getm(m,n,a); cout<<"Enter elements of Second matrix:\n"; getm(p,q,b); clrscr(); cout<<"First matrix:\n"; prim(m,n,a); cout<<"Second matrix:\n"; prim(p,q,b); } cout<<"Matrix Product:\n"; mulm(m,n,q,a,b,c); } getch(); }
void BrowserDeploymentView::menu() { QMenu m(0); QMenu subm(0); QMenu roundtripm(0); QMenu roundtripbodym(0); QMenu toolm(0); MenuFactory::createTitle(m, def->definition(FALSE, TRUE)); m.addSeparator(); if (!deletedp()) { if (!is_read_only && (edition_number == 0)) { MenuFactory::addItem(m, QObject::tr("New deployment diagram"), 0, QObject::tr("to add a <i>deployment diagram</i>")); MenuFactory::addItem(m, QObject::tr("New node"), 1, QObject::tr("to add a <i>node</i>")); MenuFactory::addItem(m, QObject::tr("New artifact"), 2, QObject::tr("to add an <i>artifact</i>")); m.addSeparator(); } if (!is_edited) { MenuFactory::addItem(m, QObject::tr("Edit"), 3, QObject::tr("to edit the <i>deployment view</i>")); if (!is_read_only) { m.addSeparator(); //MenuFactory::addItem(m, "Edit node settings", 4), // "to set the sub node's settings"); MenuFactory::addItem(m, QObject::tr("Edit drawing settings"), 5, QObject::tr("to set how the sub <i>deployment diagrams</i>'s items must be drawn")); if (edition_number == 0) { m.addSeparator(); MenuFactory::addItem(m, QObject::tr("Delete"), 6, QObject::tr("to delete the <i>deployment view</i> and its sub items. \ Note that you can undelete them after")); } }
//def createLogProof(self, version, x): void createLogProof( char* version, BIGNUM* x, BIGNUM* c, BIGNUM* d ) { // randExponent = createRandomExponent() BIGNUM* randExponent = createRandomExponent(); // c = sha256( version + str( pow( self.gen, randExponent, self.mod ) ) ) BIGNUM* exponPower = my_pow( gen, randExponent, mod ); BIGNUM* c_temp = sha_with_version( version, exponPower, NULL ); BN_copy( c, c_temp ); // d = ( randExponent - mulm( x, c, self.modOrder ) ) % self.modOrder BIGNUM* tmp = mulm( x, c, modOrder ); BIGNUM* d_temp = subm( randExponent, tmp, modOrder ); BN_copy( d, d_temp ); // clean up BN_clear_free( randExponent ); BN_clear_free( exponPower ); BN_clear_free( c_temp ); BN_clear_free( tmp ); BN_clear_free( d_temp ); }
// def createEqualLogsProof(self, version, qa, qb, x): void createEqualLogsProof( char* version, BIGNUM* qa, BIGNUM* qb, BIGNUM* x, /* out */BIGNUM* c, /* out */BIGNUM* d ) { // r = createRandomExponent() BIGNUM* r = createRandomExponent(); // tmp1 = pow(self.gen, r, self.mod) BIGNUM* tmp1 = my_pow( gen, r, mod ); // qab = mulm(qa, qb, self.mod) BIGNUM* qab = mulm( qa, qb, mod ); // tmp2 = pow(qab, r, self.mod) BIGNUM* tmp2 = my_pow( qab, r, mod ); // c = sha256(version + str(tmp1) + str(tmp2)) BIGNUM* c_temp = sha_with_version( version, tmp1, tmp2 ); BN_copy( c, c_temp ); BN_clear_free( tmp1 ); // tmp1 = mulm(x, c, self.modOrder) tmp1 = mulm( x, c, modOrder ); // d = (r - tmp1) % self.modOrder BIGNUM* d_temp = subm( r, tmp1, modOrder ); BN_copy( d, d_temp ); // return (c, d) // clean up BN_clear_free( r ); BN_clear_free( tmp1 ); BN_clear_free( qab ); BN_clear_free( tmp2 ); BN_clear_free( c_temp ); BN_clear_free( d_temp ); }
void BrowserComponentView::menu() { QMenu m(0); QMenu subm(0); QMenu toolm(0); MenuFactory::createTitle(m, def->definition(FALSE, TRUE)); m.addSeparator(); if (!deletedp()) { if (!is_read_only && (edition_number == 0)) { MenuFactory::addItem(m, QObject::tr("New component diagram"), 0, QObject::tr("to add a <i>component diagram</i>")); MenuFactory::addItem(m, QObject::tr("New component"), 1, QObject::tr("to add a <i>component</i>")); m.addSeparator(); } if (!is_edited) { MenuFactory::addItem(m, QObject::tr("Edit"), 3, QObject::tr("to edit the <i>component view</i>")); m.addSeparator(); if (!is_read_only) { /*MenuFactory::addItem(m, "Edit component settings", 4), "to set the sub components's settings");*/ MenuFactory::addItem(m, QObject::tr("Edit drawing settings"), 5, QObject::tr("to set how the sub <i>component diagrams</i>'s items must be drawn")); if (edition_number == 0) { m.addSeparator(); MenuFactory::addItem(m, QObject::tr("Delete"), 6, QObject::tr("to delete the <i>component view</i> and its sub items. \ Note that you can undelete them after")); } }
void newton_descent(const Function &objective, const LineSearch &line_search, Vector &position, double epsilon, size_t max_iter = 100) { typename Function::Workspace wsp; Vector gradient; objective.eval(wsp, position.begin(), position.end()); wsp.gradient(gradient); double value = wsp.value(); double nr_gradient = 0.0; double step = 1.0; size_t niter = 0; size_t N = position.size(); do { Vector direction = -gradient; sumatrix hm (N,N); std::vector<size_t> active; if (wsp.hessian(hm, active)) // && active.size() == N) { active.resize(N); for (size_t i = 0; i < N; ++i) active[i] = i; size_t n = active.size() - 1; std::cerr << "newton_descent: " << n << " active sites\n"; sumatrix subm (n,n); extract_submatrix(hm, subm, active); #if 0 double mean = 0.0; for (size_t i = 0; i < n; ++i) mean += subm(i,i)/n; OT_DEBUG_SHOW(mean); for (size_t i = 0; i < n; ++i) subm(i,i) += mean/10; #endif Vector subd; extract_subvector(direction, subd, active); Vector resd = subd; IncompleteCholeskyPreconditioner<sumatrix> P(subm); ::pcg_solve(subm, resd, subd, P); // OT_DEBUG_SHOW(direction); // OT_DEBUG_SHOW(subd); OT_DEBUG_SHOW(resd); OT_DEBUG_SHOW(gradient); std::cerr << "copying back\n"; direction = Vector(N); for (size_t i = 0; i < n; ++i) { direction[active[i]] = resd[i]; //std::cerr << "direction [" << active[i] << "] = " << resd[i] // << "\n"; } } #if 1 int N = line_search(objective, wsp, position, value, gradient, direction, step); #else position += 0.9 * direction; objective.eval(wsp, position.begin(), position.end()); value = wsp.value(); wsp.gradient(gradient); #endif nr_gradient = boost::numeric::ublas::norm_inf(gradient); std::cerr << "[" << niter << "]:\t" << "f(x) = " << value << "\t" << "sup(Df(x)) = " << nr_gradient << "\n"; } while (nr_gradient >= epsilon && niter++ < max_iter); std::cerr << __FUNCTION__ << ": " << niter << " iterations\n"; std::cerr << "value: " << value << "\n"; }