コード例 #1
0
ファイル: parser.hpp プロジェクト: BackupTheBerlios/cbear-svn
	void operator()(R &r, boost::uint8_t value)
	{
		switch(this->state)
		{
		case state_t::none:
			switch(value)
			{
			case dle:
				this->state = state_t::dle;
				break;
			default:
				r(data_t(value));
				break;
			}
			break;
		case state_t::dle:
			this->state = state_t::none;
			switch(value)
			{
			case dle:
				r(data_t(dle));
				break;
			case etx:
				r(end_t());
				break;
			default:
				r(id_t(value));
				break;
			}
			break;
		}
	}
コード例 #2
0
ファイル: data.c プロジェクト: amumu/nokuno
static void
generate_vector_array(vector_t p[])
{
    data_t (*rand_next[3])();
    int dist, i;

    for (i = 0; i < 3; i++) {
        dist = fixed_flag ? 2 : rand_func()%3;

        switch (dist) {
        case 0:   /* [-1, 1) */
            min = -1.0;
            max = 1.0;
            rand_next[i] = rand_uniform;
            break;
        case 1:   /* N(0, 1) */
            m = 0.0;
            sigma = 1.0;
            rand_next[i] = rand_normal;
            break;
        default:  /* La(0, 1) */
            mu = 0.0;
            b = 1.0;
            rand_next[i] = rand_laplace;
            break;
        }
    }

    for (i = 0; i < N; i++) {
        p[i].x = rand_next[0]();
        p[i].y = rand_next[1]();
        p[i].z = rand_next[2]();
    }
}
コード例 #3
0
ファイル: data.c プロジェクト: amumu/nokuno
static void
generate_mass_array(data_t a[])
{
    data_t (*rand_next)();
    int dist, i;

    m = mu = 1.0/(data_t)N;
    min = m*0.5;
    max = m*1.5;

    dist = fixed_flag ? 2 : rand_func()%3;

    switch (dist) {
    case 0:   /* [1/2N, 3/2N) */
        rand_next = rand_uniform;
        break;
    case 1:   /* N(1/N, 1/10N) */
        sigma = m*1e-1;
        rand_next = rand_normal;
        break;
    default:  /* La(1/N, 1/10N) */
        b = m*1e-1;
        rand_next = rand_laplace;
        break;
    }

    for (i = 0; i < N; i++)
        do  a[i] = rand_next();
        while (a[i] < min || a[i] > max);
}
コード例 #4
0
ファイル: TH_0x1B.cpp プロジェクト: adriweb/tivars_lib_cpp
    string TH_0x1B::makeStringFromData(const data_t& data, const options_t& options)
    {
        (void)options;

        if (data.size() != dataByteCount)
        {
            throw invalid_argument("Empty data array. Needs to contain " + to_string(dataByteCount) + " bytes");
        }

        string coeffR = TH_0x00::makeStringFromData(data_t(data.begin(), data.begin() + TH_0x00::dataByteCount));
        string coeffI = TH_0x00::makeStringFromData(data_t(data.begin() + TH_0x00::dataByteCount, data.begin() + 2 * TH_0x00::dataByteCount));

        string str = dec2frac(atof(coeffR.c_str())) + "+" + dec2frac(atof(coeffI.c_str())) + "i";
        str = regex_replace(str, regex("\\+-"), "-");

        return str;
    }
コード例 #5
0
ファイル: matrix.cpp プロジェクト: caomw/LASSO-Solver-OMP-Cpp
Matrix Matrix::m_sqrt(){
	Matrix res(rows,cols);
	vector<vector<double>> data_t(rows,vector<double>(cols,0));
	for(int i=0;i<rows;i++)
		for(int j=0;j<cols;j++)
			data_t[i][j] = sqrt(data[i][j]);
	res.setdata(data_t);
	return res;
}
コード例 #6
0
ファイル: matrix.cpp プロジェクト: caomw/LASSO-Solver-OMP-Cpp
Matrix Matrix::m_power(int p){
	Matrix res(rows,cols);
	vector<vector<double>> data_t(rows,vector<double>(cols,0));
	for(int i = 0; i < rows; i++){
		for(int j = 0; j < cols; j++){
			data_t[i][j] = pow(data[i][j],p);
		}
	}
	res.setdata(data_t);
	return res;
}
コード例 #7
0
ファイル: TH_0x02.cpp プロジェクト: alberthdev/CEmu
    string TH_0x02::makeStringFromData(const data_t& data, const options_t& options)
    {
        (void)options;

        size_t byteCount = data.size();
        size_t colCount = data[0];
        size_t rowCount = data[1];

        if (data.size() < 2+TH_0x00::dataByteCount || colCount < 1 || rowCount < 1 || colCount > 255 || rowCount > 255
            || ((byteCount - 2) % TH_0x00::dataByteCount != 0) || (colCount*rowCount != (byteCount - 2) / TH_0x00::dataByteCount))
        {
            std::cerr << "Invalid data array. Needs to contain 1+1+" << TH_0x00::dataByteCount << "*n bytes" << std::endl;
            return "";
        }

        string str = "[";

        for (uint i = 2, num = 0; i < byteCount; i += TH_0x00::dataByteCount, num++)
        {
            if (num % colCount == 0) // first column
            {
                str += "[";
            }
            str += TH_0x00::makeStringFromData(data_t(data.begin()+i, data.begin()+i+TH_0x00::dataByteCount));
            if (num % colCount < colCount - 1) // not last column
            {
                str += ",";
            } else {
                str += "]";
            }
        }

        str += "]";

        // TODO: prettified option
        
        return str;
    }
コード例 #8
0
ファイル: utils.cpp プロジェクト: alberthdev/CEmu
std::string calc_var_content_string(const calc_var_t& var)
{
    auto func = tivars::TypeHandlerFuncGetter::getStringFromDataFunc((int)var.type);
    return func(data_t(var.data, var.data + var.size), options_t());
}
コード例 #9
0
ファイル: TH_0x02.cpp プロジェクト: alberthdev/CEmu
    data_t TH_0x02::makeDataFromString(const string& str, const options_t& options)
    {
        (void)options;

        data_t data(2); // reserve 2 bytes for size fields

        if (str.length() < 5 || str.substr(0, 2) != "[[" || str.substr(str.length()-2, 2) != "]]")
        {
            std::cerr << "Invalid input string. Needs to be a valid matrix" << std::endl;
            return data_t();
        }

        size_t rowCount, colCount;
        vector<vector<string>> matrix;
        vector<string> rows;

        rows = explode(str.substr(2, str.length()-4), "][");
        rowCount = rows.size();
        matrix.resize(rowCount);

        colCount = (size_t) (count(rows[0].begin(), rows[0].end(), ',') + 1);

        if (colCount > 0xFF || rowCount > 0xFF)
        {
            std::cerr << "Invalid input string. Needs to be a valid matrix (max col/row = 255)" << std::endl;
            return data_t();
        }

        uint counter = 0;
        for (const auto& row : rows)
        {
            auto tmp = explode(row, ",");
            for (auto& numStr : tmp)
            {
                numStr = trim(numStr);
                if (!is_numeric(numStr))
                {
                    std::cerr << "Invalid input string. Needs to be a valid matrix (real numbers inside)" << std::endl;
                    return data_t();
                }
            }
            if (tmp.size() != colCount)
            {
                std::cerr << "Invalid input string. Needs to be a valid matrix (consistent column count)" << std::endl;
                return data_t();
            }
            matrix[counter++] = tmp;
        }

        data[0] = (uchar)(colCount & 0xFF);
        data[1] = (uchar)(rowCount & 0xFF);

        for (const vector<string>& row : matrix)
        {
            for (const auto& numStr : row)
            {
                const auto& tmp = TH_0x00::makeDataFromString(numStr);
                data.insert(data.end(), tmp.begin(), tmp.end());
            }
        }

        return data;
    }
コード例 #10
0
 void push_back(string_t *data)
 {
     m_deque.push_back(data_t(*this, data));
 }