Skip to content

Commit

Permalink
ptype complex64_t added
Browse files Browse the repository at this point in the history
  • Loading branch information
lambday committed Jun 3, 2013
1 parent 923f9b3 commit 97f4e8f
Show file tree
Hide file tree
Showing 22 changed files with 1,028 additions and 11 deletions.
114 changes: 114 additions & 0 deletions src/shogun/base/Parameter.cpp
Expand Up @@ -112,6 +112,13 @@ Parameter::add(floatmax_t* param, const char* name,
add_type(&type, param, name, description);
}

void
Parameter::add(complex64_t* param, const char* name,
const char* description) {
TSGDataType type(CT_SCALAR, ST_NONE, PT_COMPLEX64);
add_type(&type, param, name, description);
}

void
Parameter::add(CSGObject** param,
const char* name, const char* description) {
Expand Down Expand Up @@ -301,6 +308,13 @@ Parameter::add(SGSparseVector<floatmax_t>* param, const char* name,
add_type(&type, param, name, description);
}

void
Parameter::add(SGSparseVector<complex64_t>* param, const char* name,
const char* description) {
TSGDataType type(CT_SCALAR, ST_SPARSE, PT_COMPLEX64);
add_type(&type, param, name, description);
}

/* **************************************************************** */
/* Vector wrappers */

Expand Down Expand Up @@ -408,6 +422,14 @@ Parameter::add_vector(
add_type(&type, param, name, description);
}

void
Parameter::add_vector(
complex64_t** param, index_t* length, const char* name,
const char* description) {
TSGDataType type(CT_VECTOR, ST_NONE, PT_COMPLEX64, length);
add_type(&type, param, name, description);
}

void
Parameter::add_vector(CSGObject*** param, index_t* length,
const char* name, const char* description) {
Expand Down Expand Up @@ -598,6 +620,13 @@ Parameter::add_vector(SGSparseVector<floatmax_t>** param, index_t* length,
add_type(&type, param, name, description);
}

void
Parameter::add_vector(SGSparseVector<complex64_t>** param, index_t* length,
const char* name, const char* description) {
TSGDataType type(CT_VECTOR, ST_SPARSE, PT_COMPLEX64, length);
add_type(&type, param, name, description);
}




Expand Down Expand Up @@ -692,6 +721,13 @@ void Parameter::add(SGVector<floatmax_t>* param, const char* name,
add_type(&type, &param->vector, name, description);
}

void Parameter::add(SGVector<complex64_t>* param, const char* name,
const char* description)
{
TSGDataType type(CT_SGVECTOR, ST_NONE, PT_COMPLEX64, &param->vlen);
add_type(&type, &param->vector, name, description);
}

void Parameter::add(SGVector<CSGObject*>* param, const char* name,
const char* description)
{
Expand Down Expand Up @@ -881,6 +917,13 @@ void Parameter::add(SGVector<SGSparseVector<floatmax_t> >* param,
add_type(&type, &param->vector, name, description);
}

void Parameter::add(SGVector<SGSparseVector<complex64_t> >* param,
const char* name, const char* description)
{
TSGDataType type(CT_SGVECTOR, ST_SPARSE, PT_COMPLEX64, &param->vlen);
add_type(&type, &param->vector, name, description);
}

/* **************************************************************** */
/* Matrix wrappers */

Expand Down Expand Up @@ -1001,6 +1044,15 @@ Parameter::add_matrix(
add_type(&type, param, name, description);
}

void
Parameter::add_matrix(
complex64_t** param, index_t* length_y, index_t* length_x,
const char* name, const char* description) {
TSGDataType type(CT_MATRIX, ST_NONE, PT_COMPLEX64, length_y,
length_x);
add_type(&type, param, name, description);
}

void
Parameter::add_matrix(
CSGObject*** param, index_t* length_y, index_t* length_x,
Expand Down Expand Up @@ -1244,6 +1296,15 @@ Parameter::add_matrix(SGSparseVector<floatmax_t>** param,
add_type(&type, param, name, description);
}

void
Parameter::add_matrix(SGSparseVector<complex64_t>** param,
index_t* length_y, index_t* length_x,
const char* name, const char* description) {
TSGDataType type(CT_MATRIX, ST_SPARSE, PT_COMPLEX64, length_y,
length_x);
add_type(&type, param, name, description);
}




Expand Down Expand Up @@ -1351,6 +1412,14 @@ void Parameter::add(SGMatrix<floatmax_t>* param, const char* name,
add_type(&type, &param->matrix, name, description);
}

void Parameter::add(SGMatrix<complex64_t>* param, const char* name,
const char* description)
{
TSGDataType type(CT_SGMATRIX, ST_NONE, PT_COMPLEX64, &param->num_rows,
&param->num_cols);
add_type(&type, &param->matrix, name, description);
}

void Parameter::add(SGMatrix<CSGObject*>* param, const char* name,
const char* description)
{
Expand Down Expand Up @@ -1566,6 +1635,14 @@ void Parameter::add(SGMatrix<SGSparseVector<floatmax_t> >* param,
&param->num_cols);
add_type(&type, &param->matrix, name, description);
}

void Parameter::add(SGMatrix<SGSparseVector<complex64_t> >* param,
const char* name, const char* description)
{
TSGDataType type(CT_SGMATRIX, ST_SPARSE, PT_COMPLEX64, &param->num_rows,
&param->num_cols);
add_type(&type, &param->matrix, name, description);
}
/* **************************************************************** */
/* End of wrappers */

Expand Down Expand Up @@ -1694,6 +1771,8 @@ TParameter::delete_cont()
SG_FREE(*(float64_t**) m_parameter); break;
case PT_FLOATMAX:
SG_FREE(*(floatmax_t**) m_parameter); break;
case PT_COMPLEX64:
SG_FREE(*(complex64_t**) m_parameter); break;
case PT_SGOBJECT:
CSGObject** buf = *(CSGObject***) m_parameter;

Expand Down Expand Up @@ -1738,6 +1817,11 @@ TParameter::delete_cont()
SG_FREE(*(SGString<float64_t>**) m_parameter); break;
case PT_FLOATMAX:
SG_FREE(*(SGString<floatmax_t>**) m_parameter); break;
case PT_COMPLEX64:
SG_SERROR("TParameter::delete_cont(): Implementation "
"error: Could not delete "
"String<complex64>");
break;
case PT_SGOBJECT:
SG_SERROR("TParameter::delete_cont(): Implementation "
"error: Could not delete "
Expand Down Expand Up @@ -1779,6 +1863,8 @@ TParameter::delete_cont()
SG_FREE(*(SGSparseVector<float64_t>**) m_parameter); break;
case PT_FLOATMAX:
SG_FREE(*(SGSparseVector<floatmax_t>**) m_parameter); break;
case PT_COMPLEX64:
SG_FREE(*(SGSparseVector<complex64_t>**) m_parameter); break;
case PT_SGOBJECT:
SG_SERROR("TParameter::delete_cont(): Implementation "
"error: Could not delete "
Expand Down Expand Up @@ -1847,6 +1933,9 @@ TParameter::new_cont(SGVector<index_t> dims)
case PT_FLOATMAX:
*(floatmax_t**) m_parameter
= SG_MALLOC(floatmax_t, new_length); break;
case PT_COMPLEX64:
*(complex64_t**) m_parameter
= SG_MALLOC(complex64_t, new_length); break;
case PT_SGOBJECT:
*(CSGObject***) m_parameter
= SG_CALLOC(CSGObject*, new_length);
Expand Down Expand Up @@ -1894,6 +1983,11 @@ TParameter::new_cont(SGVector<index_t> dims)
case PT_FLOATMAX:
*(SGString<floatmax_t>**) m_parameter
= SG_MALLOC(SGString<floatmax_t>, new_length); break;
case PT_COMPLEX64:
SG_SERROR("TParameter::new_cont(): Implementation "
"error: Could not allocate "
"String<complex64>");
break;
case PT_SGOBJECT:
SG_SERROR("TParameter::new_cont(): Implementation "
"error: Could not allocate "
Expand Down Expand Up @@ -1945,6 +2039,9 @@ TParameter::new_cont(SGVector<index_t> dims)
case PT_FLOATMAX:
*(SGSparseVector<floatmax_t>**) m_parameter
= SG_MALLOC(SGSparseVector<floatmax_t>, new_length); break;
case PT_COMPLEX64:
*(SGSparseVector<complex64_t>**) m_parameter
= SG_MALLOC(SGSparseVector<complex64_t>, new_length); break;
case PT_SGOBJECT:
SG_SERROR("TParameter::new_cont(): Implementation "
"error: Could not allocate "
Expand Down Expand Up @@ -3149,6 +3246,23 @@ bool TParameter::compare_ptype(EPrimitiveType ptype, void* data1, void* data2,
}
break;
}
case PT_COMPLEX64:
{
float64_t casted1_real=((complex64_t*)data1)->real();
float64_t casted1_imag=((complex64_t*)data1)->imag();
float64_t casted2_real=((complex64_t*)data2)->real();
float64_t casted2_imag=((complex64_t*)data2)->imag();
if (CMath::abs(casted1_real-casted2_real)>accuracy ||
CMath::abs(casted1_imag-casted2_imag)>accuracy)
{
SG_SDEBUG("leaving TParameter::compare_ptype(): PT_COMPLEX64: "
"data1=%f+i%f, data2=%f+i%f\n",
casted1_real, casted1_imag,
casted2_real, casted2_imag);
return false;
}
break;
}
case PT_SGOBJECT:
{
CSGObject* casted1=*((CSGObject**)data1);
Expand Down
78 changes: 78 additions & 0 deletions src/shogun/base/Parameter.h
Expand Up @@ -374,6 +374,13 @@ class Parameter
* @param name name of parameter
* @param description description of parameter
*/
void add(complex64_t* param, const char* name,
const char* description="");
/** add param
* @param param parameter itself
* @param name name of parameter
* @param description description of parameter
*/
void add(CSGObject** param,
const char* name, const char* description="");
/** add param
Expand Down Expand Up @@ -558,6 +565,13 @@ class Parameter
*/
void add(SGSparseVector<floatmax_t>* param, const char* name,
const char* description="");
/** add param
* @param param parameter itself
* @param name name of parameter
* @param description description of parameter
*/
void add(SGSparseVector<complex64_t>* param, const char* name,
const char* description="");

/* ************************************************************ */
/* Vector wrappers */
Expand Down Expand Up @@ -672,6 +686,14 @@ class Parameter
* @param name name of parameter
* @param description description of parameter
*/
void add_vector(complex64_t** param, index_t* length,
const char* name, const char* description="");
/** add vector param
* @param param parameter vector itself
* @param length length of vector
* @param name name of parameter
* @param description description of parameter
*/
void add_vector(CSGObject*** param, index_t* length,
const char* name, const char* description="");
/** add vector param
Expand Down Expand Up @@ -882,6 +904,14 @@ class Parameter
*/
void add_vector(SGSparseVector<floatmax_t>** param, index_t* length,
const char* name, const char* description="");
/** add vector param
* @param param parameter vector itself
* @param length length of vector
* @param name name of parameter
* @param description description of parameter
*/
void add_vector(SGSparseVector<complex64_t>** param, index_t* length,
const char* name, const char* description="");


/** add vector param
Expand Down Expand Up @@ -980,6 +1010,13 @@ class Parameter
* @param name name of parameter
* @param description description of parameter
*/
void add(SGVector<complex64_t>* param, const char* name,
const char* description="");
/** add vector param
* @param param parameter vector itself
* @param name name of parameter
* @param description description of parameter
*/
void add(SGVector<CSGObject*>* param, const char* name,
const char* description="");
/** add vector param
Expand Down Expand Up @@ -1164,6 +1201,13 @@ class Parameter
*/
void add(SGVector<SGSparseVector<floatmax_t> >* param,
const char* name, const char* description="");
/** add vector param
* @param param parameter vector itself
* @param name name of parameter
* @param description description of parameter
*/
void add(SGVector<SGSparseVector<complex64_t> >* param,
const char* name, const char* description="");

/* ************************************************************ */
/* Matrix wrappers */
Expand Down Expand Up @@ -1305,6 +1349,16 @@ class Parameter
* @param name name of parameter
* @param description description of parameter
*/
void add_matrix(complex64_t** param,
index_t* length_y, index_t* length_x,
const char* name, const char* description="");
/** add matrix param
* @param param parameter matrix itself
* @param length_y y size of matrix
* @param length_x x size of matrix
* @param name name of parameter
* @param description description of parameter
*/
void add_matrix(CSGObject*** param,
index_t* length_y, index_t* length_x,
const char* name, const char* description="");
Expand Down Expand Up @@ -1568,6 +1622,16 @@ class Parameter
void add_matrix(SGSparseVector<floatmax_t>** param,
index_t* length_y, index_t* length_x,
const char* name, const char* description="");
/** add matrix param
* @param param parameter matrix itself
* @param length_y y size of matrix
* @param length_x x size of matrix
* @param name name of parameter
* @param description description of parameter
*/
void add_matrix(SGSparseVector<complex64_t>** param,
index_t* length_y, index_t* length_x,
const char* name, const char* description="");
/** add matrix param
* @param param parameter matrix itself
* @param name name of parameter
Expand Down Expand Up @@ -1664,6 +1728,13 @@ class Parameter
* @param name name of parameter
* @param description description of parameter
*/
void add(SGMatrix<complex64_t>* param, const char* name,
const char* description="");
/** add matrix param
* @param param parameter matrix itself
* @param name name of parameter
* @param description description of parameter
*/
void add(SGMatrix<CSGObject*>* param, const char* name,
const char* description="");
/** add matrix param
Expand Down Expand Up @@ -1848,6 +1919,13 @@ class Parameter
*/
void add(SGMatrix<SGSparseVector<floatmax_t> >* param,
const char* name, const char* description="");
/** add matrix param
* @param param parameter matrix itself
* @param name name of parameter
* @param description description of parameter
*/
void add(SGMatrix<SGSparseVector<complex64_t> >* param,
const char* name, const char* description="");

protected:

Expand Down

0 comments on commit 97f4e8f

Please sign in to comment.