Пример #1
0
	/**********************************
	 * Interface to create a blackbox *
	 **********************************/
	ALGEB lbCreateBlackboxFromMatrix(MKernelVector kv, ALGEB A, const LinBox::integer &p){



		RTableSettings setting;
		RTableGetSettings(kv,&setting,A);
		size_t m,n;
		m = RTableUpperBound(kv, A, 1);
		n = RTableUpperBound(kv, A, 2);


		std::stringstream *buffer= new std::stringstream();//std::string(buffer_data, m*n));

		//Timer chrono;
		//chrono.start();
		if (setting.storage == RTABLE_RECT)
			DenseMatrixToBuffer(kv, A, *buffer, m, n, setting);
		else
			if (setting.storage == RTABLE_SPARSE)
				SparseMatrixToBuffer(kv, A, *buffer, m, n, setting);
			else
				MapleRaiseError(kv, "Matrix storage must be either dense or sparse");
		//chrono.stop();

		//std::ofstream FILE("MAPLE_FILE.TXT");
		//FILE<<buffer->str()<<"\n";
		//FILE.close();

		//std::cout<<"buffering in <- : "<<chrono;
		//chrono.clear();
		//chrono.start();
		LB_GMP_SET();
		const DomainKey   *Dkey = &createDomain(p);
		const BlackboxKey *Bkey = &createBlackbox(*Dkey, *buffer);
		deleteDomain (*Dkey);
		LB_GMP_RESTORE();
		//chrono.stop();
		//std::cout<<"buffering out -> : "<<chrono;
		delete buffer;


		return BlackboxKeyToMaple(kv, *Bkey);
	}
Пример #2
0
	ALGEB lbCreateVectorFromVector(MKernelVector kv, ALGEB V, const LinBox::integer &p){

		LB_GMP_SET();
		const DomainKey *Dkey = &createDomain(p);
		LB_GMP_RESTORE();
		std::stringstream buffer;
		RTableSettings setting;
		RTableData tmp;
		RTableGetSettings(kv,&setting,V);
		size_t n;
		n = RTableUpperBound(kv, V, 1);
		buffer<<n<<"\n";
		M_INT index[1];
		if (setting.data_type == RTABLE_INTEGER8)
			for (size_t i=1;i<n+1; ++i){index[0]=(M_INT)i;
				tmp=RTableSelect(kv, V, index);
				buffer<<tmp.int8<<"\n";
			}
		if (setting.data_type == RTABLE_INTEGER16)
			for (size_t i=1;i<n+1; ++i){index[0]=(M_INT)i;
				tmp=RTableSelect(kv, V, index);
				buffer<<tmp.int16<<"\n";
			}
		if (setting.data_type == RTABLE_INTEGER32)
			for (size_t i=1;i<n+1; ++i){index[0]=(M_INT)i;
				tmp=RTableSelect(kv, V, index);
				buffer<<tmp.int32<<"\n";
			}
		if (setting.data_type == RTABLE_INTEGER64)
			for (size_t i=1;i<n+1; ++i){index[0]=(M_INT)i;
				tmp=RTableSelect(kv, V, index);
				buffer<<tmp.int64<<"\n";
			}
		if (setting.data_type == RTABLE_FLOAT32)
			for (size_t i=1;i<n+1; ++i){index[0]=(M_INT)i;
				tmp=RTableSelect(kv, V, index);
				buffer<<tmp.float32<<"\n";
			}
		if (setting.data_type == RTABLE_FLOAT64)
			for (size_t i=1;i<n+1; ++i){index[0]=(M_INT)i;
				tmp=RTableSelect(kv, V, index);
				buffer<<tmp.float64<<"\n";
			}
		if (setting.data_type == RTABLE_DAG) {
			LinBox::integer ibuf;
			for (size_t i=1;i<n+1; ++i){index[0]=(M_INT)i;
				tmp=RTableSelect(kv, V, index);
				GMPMapleToLinBox(ibuf, kv,tmp.dag);
				buffer<<ibuf<<"\n";
			}
		}
		    if ((setting.data_type == RTABLE_COMPLEX)|| (setting.data_type == RTABLE_CXDAG))
			MapleRaiseError(kv, "data type format in the matrix is not yet recognized by LinBox ");

		LB_GMP_SET();
		const VectorKey *Vkey = &createVector(*Dkey, buffer);
		deleteDomain (*Dkey);
		LB_GMP_RESTORE();

		return VectorKeyToMaple(kv, *Vkey);
	}
Пример #3
0
Файл: main.c Проект: moikop/ab
int processData(tdns* dns,char** argv,char* cmd,FILE* logf) {

    tdomain data;
    tdomain td;
    char ip_origen[IP_MAX];
    char ip_destino[IP_MAX];
    char msg[300];

    if(strcmp(argv[1],CMD_SEND)==0) {
        if(urlExists(*dns,argv[2])!=RES_OK) return RES_ERROR;
        if(urlExists(*dns,argv[3])!=RES_OK) return RES_ERROR;
        getValue(dns,argv[2],&data);
        strcpy(ip_origen,data.ip);
        getValue(dns,argv[3],&data);
        strcpy(ip_destino,data.ip);
        encryptMsg(msg,data.offset);
        log(logf,CMD_SEND,argv[2],ip_origen,argv[3],ip_destino,argv[3],msg);
        printf("Mensaje encriptado: %s\n",msg);
    }
    else if(strcmp(argv[1],CMD_GETIP)==0) {
            printf("Entré en  getip\n");
        if(urlExists(*dns,argv[2])!=RES_OK) return RES_ERROR;
        if(urlExists(*dns,argv[3])!=RES_OK) return RES_ERROR;
        getValue(dns,argv[2],&data);
        strcpy(ip_origen,data.ip);
        getValue(dns,argv[3],&data);
        strcpy(ip_destino,data.ip);
        log(logf,CMD_GETIP,argv[2],ip_origen,argv[3],ip_destino,"","");
        printf("Origen: %s %s\nDestino: %s %s\n",argv[2],ip_origen,argv[3],ip_destino);
    }
    else if(strcmp(argv[1],CMD_ADDDOMAIN)==0) {
        if(urlExists(*dns,argv[2])==RES_OK) {
            printf("Ya existe %s.\n",argv[2]);
            return RES_ERROR;
        }
        strcpy(td.domain,argv[2]);
        strcpy(td.ip,argv[3]);
        genoffset(td.domain);
        getoffset(td.domain,&(td.offset));
        AB_Crear(&(td.subab),sizeof(tdomain));
        if(addDomain(dns,argv[2],&td)!=RES_OK) return RES_ERROR;
        log(logf,CMD_ADDDOMAIN,argv[2],argv[3],"","","","");
        printf("Se agrego %s con direccion ip %s.\n",argv[2],argv[3]);
    }
    else if(strcmp(argv[1],CMD_DELETEDOMAIN) == 0) {
        if(urlExists(*dns,argv[2])!=RES_OK) {
            printf("No existe %s para eliminar.\n",argv[2]);
            return RES_ERROR;
        }
        getValue(dns,argv[2],&data);
        printf("Dato obtenido: %s %s.\n",data.domain,data.ip);
        strcpy(ip_origen,data.ip);
        deleteDomain(dns,argv[2]);
        log(logf,CMD_DELETEDOMAIN,argv[2],ip_origen,"","","","");
        printf("Se elimino a %s con ip %s.\n",argv[2],ip_origen);
    } else {
        printf("Comando equivocado.\n");
        showHelp(argv[0]);
        return RES_ERROR;
    }
    return RES_OK;
}