예제 #1
0
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;
	}
}
예제 #2
0
// 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)
}
예제 #3
0
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();
}
예제 #4
0
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"));
                }
            }
예제 #5
0
//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 );
}
예제 #6
0
// 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"));
                }
            }
예제 #8
0
  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";
  }