예제 #1
0
파일: tmlmtx.c 프로젝트: sabrown256/pactnew
static int oper_test(void)
   {int nrow, ncol;
    PM_matrix *m, *t, *b, *a, *c;

    nrow = 5;
    ncol = 3;

    m = PM_create(nrow, ncol);
    CFREE(m->array);
    m->array = (double *) a1;

    b = PM_create(nrow, 1);
    CFREE(b->array);
    b->array = (double *) b1;
        
    PRINT(STDOUT, "\nMatrix M\n");
    PM_print(m);

    PRINT(STDOUT, "\nMatrix B\n");
    PM_print(b);

    PRINT(STDOUT, "\nMatrix tr(M)\n");
    PM_print(t = PM_transpose(m));

    PRINT(STDOUT, "\nA = tr(M).M (piecewise)\n");
    PM_print(a = PM_times(t, m));
    PM_destroy(t);

    PRINT(STDOUT, "\nT = tr(M).M (nested)\n");
    PM_print(c = PM_times(t = PM_transpose(m), m));
    PM_destroy(c);

    PRINT(STDOUT, "\nC = tr(M).B\n");
    PM_print(c = PM_times(t, b));
    PM_destroy(t);

    PRINT(STDOUT, "\nSolve A.X = C\n");
    PM_print(PM_solve(a, c));
    PM_destroy(a);
    PM_destroy(c);

    PRINT(STDOUT, "\nTest LU decomposition\n");
    a = PM_create(3, 3);
    CFREE(a->array);
    a->array = (double *) tstd;

    PRINT(STDOUT, "\nMatrix A\n");
    PM_print(a);
    PRINT(STDOUT, "\nc = (A)^-1\n");
    PM_print(c = PM_inverse(a));
    PRINT(STDOUT, "\nc.A\n");
    PM_print(t = PM_times(c, a));
    PM_destroy(t);
    PM_destroy(c);

    CFREE(a);
    CFREE(b);
    CFREE(m);

    return(TRUE);}
예제 #2
0
파일: tmlev.c 프로젝트: sabrown256/pactnew
int tst3(int n)
   {int ok;
    PM_matrix *a, *b, *val;

    printf("Test #3\n");

    a = test_matrix(n);
    b = PM_create(a->nrow, a->ncol);
    PM_copy(b, a);

/* find eigenvalues and eigenvectors */
    val = PM_eigensys(a);

    printf("Eigenvalues for A:\n");
    PM_print(val);

    printf("Eigenvectors for A:\n");
    PM_print(a);

/* verify */
    ok = check_matrix(a, b, val);

    PM_destroy(val);
    PM_destroy(a);
    PM_destroy(b);

    return(ok);}
예제 #3
0
int main() {
	ParameterManager * params = PM_create(4);
	PM_manage(params,"studentname",STRING_TYPE,1);
    PM_manage(params,"id",INT_TYPE,1);
    PM_manage(params,"regstat",BOOLEAN_TYPE,1);
    PM_manage(params,"marks",LIST_TYPE,1);
    PM_manage(params,"average",REAL_TYPE,0);
	printf("Success?: %d\n", PM_destroy(params));
}
예제 #4
0
파일: tmlev.c 프로젝트: sabrown256/pactnew
PM_matrix *test_matrix(int n)
   {int i, j, l;
    double f;
    PM_matrix *a;

    switch (n)

/* trivial diagonal matrix with eigenvalues 1, -1 */
       {case 0:
	     a = PM_create(2, 2);
	     PM_zero(a);
	     PM_element(a, 1, 1) = 1.0;
	     PM_element(a, 2, 2) = -1.0;
             break;

/* fairly trivial matrix with eigenvalues 1, 2, 4 */
        case 1:
	     a = PM_create(3, 3);
	     PM_zero(a);
	     PM_element(a, 1, 1) = 2.0;
	     PM_element(a, 2, 2) = 2.0;
	     PM_element(a, 3, 3) = 3.0;
	     PM_element(a, 2, 3) = sqrt(2.0);
	     PM_element(a, 3, 2) = sqrt(2.0);
	     break;

/* arbitrarily chosen dense matrix */
        case 2:
	     a = PM_create(5, 5);
	     PM_zero(a);
             for (i = 1; i <= 5; i++)
	         for (j = i; j <= 5; j++)
		     {f = 3.14*i + 2.71*j*j;
                      l = floor(f);
		      l %= 7;
		      f -= l;
		      PM_element(a, i, j) = f;
		      PM_element(a, j, i) = f;};
	     break;};

    printf("Matrix A:\n");
    PM_print(a);

    return(a);}
예제 #5
0
//Creates the LL and adds the manditory items
JNIEXPORT void JNICALL Java_Dialogc_DialogcCreate(JNIEnv *env, jobject obj, jint size)
{

	//Destroy somewhere
	params = PM_create(size);
	PM_manage(params,"title",STRING_TYPE,1);
	PM_manage(params,"fields",LIST_TYPE,1);
	PM_manage(params,"buttons",LIST_TYPE,1);

}
예제 #6
0
PM_matrix *PM_eigensys(PM_matrix *a)
   {int i, n, rv;
    PM_matrix *r, *x;

    x = NULL;

    if (a != NULL)
       {if (a->nrow == a->ncol)
	   {n = a->nrow;

	    r  = _PM_hrsymatr(a, TRUE);
    	    rv = _PM_ql_tri_eigen(r, a, TRUE);

	    if (rv == TRUE)
	       {x = PM_create(n, 1);
		for (i = 1; i <= n; i++)
		    PM_element(x, i, 1) = PM_element(r, i, 1);};

	    PM_destroy(r);};};

    return(x);}
예제 #7
0
파일: tmlmtx.c 프로젝트: sabrown256/pactnew
static int det_test(void)
   {int i, n, rv;
    double det;
    PM_matrix *m;

    n = 3;
    m = PM_create(n, n);
    n = n*n;

    for (i = 0; i < n; i++)
        m->array[i] = 0.0;
    PM_element(m, 1, 1) = 1.0;
    PM_element(m, 2, 3) = 1.0;
    PM_element(m, 3, 2) = 1.0;

    det = PM_determinant(m);

    PM_destroy(m);

    rv = (det == -1.0);

    return(rv);}
예제 #8
0
파일: tmlev.c 프로젝트: sabrown256/pactnew
int tst2(int n)
   {int rv;
    PM_matrix *a, *b;

    printf("Test #2\n");

    a = test_matrix(n);
    b = PM_create(a->nrow, a->ncol);
    PM_copy(b, a);

/* find the right eigenvectors */
    rv = PM_eigenvectors(a);

    if (rv == TRUE)
       {printf("Eigenvectors for A:\n");
	PM_print(a);};

/* verify */
    rv &= check_matrix(a, b, NULL);

    PM_destroy(a);

    return(rv);}
예제 #9
0
JNIEXPORT void JNICALL Java_ConfigManager_create(JNIEnv *env, jobject obj)
{
    SetJavaPMPointer(env, obj, PM_create(25));
}
예제 #10
0
PM_matrix *_PM_hrsymatr(PM_matrix *a, int cmv)
   {int i, j, k, l, n;
    double f, g, h, nrm, inrm, u, v;
    PM_matrix *r;

    if (a->nrow != a->ncol)
       return(NULL);

    n = a->nrow;

    r = PM_create(n, 2);

    for (i = n; i >= 2; i--)
        {l = i - 1;

	 h   = 0.0;
	 nrm = 0.0;
	 if (l > 1)
	    {for (k = 1; k <= l; k++)
	         nrm += fabs(PM_element(a, i, k));

/* skip transformation */
	     if (nrm == 0.0)
	        PM_element(r, i, 2) = PM_element(a, i, l);

	     else
	        {inrm = 1.0/nrm;
		 for (k = 1; k <= l; k++)
		     {v  = PM_element(a, i, k);
		      v *= inrm;
		      h += v*v;
		      PM_element(a, i, k) = v;};

		 f  = PM_element(a, i, l);
		 g  = sqrt(h);
		 g *= ((f > 0.0) ? -1.0 : 1.0);
		 PM_element(r, i, 2) = nrm*g;

		 h -= f*g;
		 PM_element(a, i, l) = f - g;

		 f = 0.0;
		 for (j = 1; j <= l; j++)
		     {if (cmv == TRUE)
			 PM_element(a, j, i) = PM_element(a, i, j)/h;

		      g = 0.0;
		      for (k = 1; k <= j; k++)
			  g += PM_element(a, j, k)*PM_element(a, i, k);

		      for (k = j+1; k <= l; k++)
			  g += PM_element(a, k, j)*PM_element(a, i, k);

		      PM_element(r, j, 2) = g/h;

		      f += PM_element(r, j, 2)*PM_element(a, i, j);};

		 u = f/(h + h);
		 for (j = 1; j <= l; j++)
		     {f = PM_element(a, i, j);
		      g = PM_element(r, j, 2) - u*f;

		      PM_element(r, j, 2) = g;

		      for (k = 1; k <= j; k++)
			  PM_element(a, j, k) -= (f*PM_element(r, k, 2) +
						  g*PM_element(a, i, k));};};}

	 else
	    PM_element(r, i, 2) = PM_element(a, i, l);

	 PM_element(r, i, 1) = h;};
		      
    PM_element(r, 1, 2) = 0.0;

    if (cmv == TRUE)
       {PM_element(r, 1, 1) = 0.0;

        for (i = 1; i <= n; i++)
	    {l = i - 1;
	     if (PM_element(r, i, 1) != 0.0)
	        {for (j = 1; j <= l; j++)
		     {g =0.0;
		      for (k = 1; k <= l; k++)
			  g += PM_element(a, i, k)*PM_element(a, k, j);
		      for (k = 1; k <= l; k++)
			  PM_element(a, k, j) -= g*PM_element(a, k, i);};};

	     PM_element(r, i, 1) = PM_element(a, i, i);

	     PM_element(a, i, i) = 1.0;
	     for (j = 1; j <= l; j++)
	         {PM_element(a, j, i) = 0.0;
		  PM_element(a, i, j) = 0.0;};};}

    else
       {for (i = 1; i <= n; i++)
	    PM_element(a, i, i) = 1.0;};

    return(r);}