/* read a problem from a file; use %g for integers to avoid int conflicts */
problem *get_problem (FILE *f, double tol)
{
    cs *T, *A, *C ;
    int sym, m, n, mn, nz1, nz2 ;
    problem *Prob ;
    Prob = cs_calloc (1, sizeof (problem)) ;
    if (!Prob) return (NULL) ;
    T = cs_load (f) ;                   /* load triplet matrix T from a file */
    Prob->A = A = cs_compress (T) ;     /* A = compressed-column form of T */
    cs_spfree (T) ;                     /* clear T */
    if (!cs_dupl (A)) return (free_problem (Prob)) ; /* sum up duplicates */
    Prob->sym = sym = is_sym (A) ;      /* determine if A is symmetric */
    m = A->m ; n = A->n ;
    mn = CS_MAX (m,n) ;
    nz1 = A->p [n] ;
    cs_dropzeros (A) ;                  /* drop zero entries */
    nz2 = A->p [n] ;
    if (tol > 0) cs_droptol (A, tol) ;  /* drop tiny entries (just to test) */
    Prob->C = C = sym ? make_sym (A) : A ;  /* C = A + triu(A,1)', or C=A */
    if (!C) return (free_problem (Prob)) ;
    printf ("\n--- Matrix: %g-by-%g, nnz: %g (sym: %g: nnz %g), norm: %8.2e\n",
            (double) m, (double) n, (double) (A->p [n]), (double) sym,
            (double) (sym ? C->p [n] : 0), cs_norm (C)) ;
    if (nz1 != nz2) printf ("zero entries dropped: %g\n", (double) (nz1 - nz2));
    if (nz2 != A->p [n]) printf ("tiny entries dropped: %g\n",
            (double) (nz2 - A->p [n])) ;
    Prob->b = cs_malloc (mn, sizeof (double)) ;
    Prob->x = cs_malloc (mn, sizeof (double)) ;
    Prob->resid = cs_malloc (mn, sizeof (double)) ;
    return ((!Prob->b || !Prob->x || !Prob->resid) ? free_problem (Prob) : Prob) ;
}
Beispiel #2
0
int main(void)
{
    cs *T, *A, *B;
    int m = 100, n = 3;
    T = cs_load(stdin);
    A = cs_compress(T);
    B = blkdiag(A, m, n);
    printf("B is %d x %d\n", B->m, B->n);
    sparseprint(B);

    cs_spfree(T);
    cs_spfree(A);
    cs_spfree(B);

    // Test the block diagonal feature

//    cs *T, *L, *Lt, *A, *X, *B;
//    css *S;
//    T = cs_load(stdin);
//    L = cs_compress(T);
//    Lt = cs_transpose(L, 1);
//    A = cs_multiply(L, Lt);
//    cs_spfree(T);
//    sparseprint(A);
//    S = cs_schol(0, A);
//    B = speye(A->n);
//    X = mldivide_chol(A, S, B);
//    sparseprint(X);
}
Beispiel #3
0
cs* NN_load_spdata(FILE* fp)
{
    cs *triplet,*compressed;
    triplet = cs_load(fp);
    compressed = cs_compress(triplet);
    cs_spfree(triplet);

    return compressed;
}
int main ( void )
{
  cs *A;
  cs *AT;
  cs *C;
  cs *D;
  cs *Eye;
  int i;
  int m;
  cs *T;

  printf ( "\n" );
  printf ( "CS_DEMO1:\n" );
  printf ( "  Demonstration of the CSPARSE package.\n" );
/* 
  Load the triplet matrix T from standard input.
*/
  T = cs_load ( stdin );	
/*
  Print T.
*/
  printf ( "T:\n" ); 
  cs_print ( T, 0 );
/*
  A = compressed-column form of T.
*/
  A = cs_triplet ( T );
  printf ( "A:\n" ); 
  cs_print ( A, 0 );
/*
  Clear T.
*/
  cs_spfree ( T );
/*
  AT = A'.
*/ 
  AT = cs_transpose ( A, 1 );
  printf ( "AT:\n" ); 
  cs_print ( AT, 0 );
/*
  M = number of rows of A.
*/
  m = A->m;
/*
  Create triplet identity matrix.
*/
  T = cs_spalloc ( m, m, m, 1, 1 );

  for ( i = 0; i < m; i++ ) 
  {
    cs_entry ( T, i, i, 1 );
  }
/* 
  Eye = speye ( m ) 
*/
  Eye = cs_triplet ( T );
  cs_spfree ( T );
/* 
  Compute C = A * A'.
*/
  C = cs_multiply ( A, AT );		
/* 
  Compute D = C + Eye * norm (C,1).
*/
  D = cs_add ( C, Eye, 1, cs_norm ( C ) );   

  printf ( "D:\n" ); 
  cs_print ( D, 0 );
/* 
  Clear A, AT, C, D, Eye, 
*/
  cs_spfree ( A );			
  cs_spfree ( AT );
  cs_spfree ( C );
  cs_spfree ( D );
  cs_spfree ( Eye );
/*
  Terminate.
*/
  printf ( "\n" );
  printf ( "CS_DEMO1:\n" );
  printf ( "  Normal end of execution.\n" );

  return ( 0 );
}
LRESULT CALLBACK OptionDialogScreen(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
	case WM_INITDIALOG:
		{
			InitOptionsDialog(hDlg, TAB_SCREEN);

			isStaticBar = FALSE;
			cur_cs = NULL;
			cs_enable(hDlg, FALSE);

			memcpy(&ms, &configuracion->mainScreenConfig->cs, sizeof(ConfigurationScreen));
			memcpy(&bb, &configuracion->bottomBarConfig->cs,  sizeof(ConfigurationScreen));
			memcpy(&tb, &configuracion->topBarConfig->cs,     sizeof(ConfigurationScreen));

			SendMessage(GetDlgItem(hDlg, IDC_COMBO_CS), CB_ADDSTRING, 0, (LPARAM)L"Mainscreen");
			SendMessage(GetDlgItem(hDlg, IDC_COMBO_CS), CB_ADDSTRING, 0, (LPARAM)L"Bottombar");
			SendMessage(GetDlgItem(hDlg, IDC_COMBO_CS), CB_ADDSTRING, 0, (LPARAM)L"Topbar");

			SendMessage(GetDlgItem(hDlg, IDC_COMBO_CS), CB_SETCURSEL, 0, 0);
			cur_cs = &ms;
			cs_load(hDlg, cur_cs);
		}
		return TRUE;
	case WM_COMMAND:
		{
			switch (LOWORD(wParam))
			{
			case IDC_COMBO_CS:
				if (HIWORD(wParam) == CBN_SELCHANGE) {
					cs_save(hDlg, cur_cs);
					ShowWindow(GetDlgItem(hDlg, IDC_CHECK_CS_SHRINKTOFIT), SW_HIDE);
					isStaticBar = FALSE;
					TCHAR str[MAX_PATH];
					GetDlgItemText(hDlg, IDC_COMBO_CS, str, MAX_PATH);
					if (lstrcmpi(str, L"Mainscreen") == 0) {
						cur_cs = &ms;
						cs_load(hDlg, cur_cs);
					} else if (lstrcmpi(str, L"Bottombar") == 0) {
						cur_cs = &bb;
						cs_load(hDlg, cur_cs);
						ShowWindow(GetDlgItem(hDlg, IDC_CHECK_CS_SHRINKTOFIT), SW_SHOW);
						isStaticBar = TRUE;
					} else if (lstrcmpi(str, L"Topbar") == 0) {
						cur_cs = &tb;
						cs_load(hDlg, cur_cs);
						ShowWindow(GetDlgItem(hDlg, IDC_CHECK_CS_SHRINKTOFIT), SW_SHOW);
						isStaticBar = TRUE;
					} else {
						cs_enable(hDlg, FALSE);
					}
				}
				break;
			case IDC_EDIT_CS_ICONS_PER_ROW:
				if (HIWORD(wParam) == EN_SETFOCUS) {
					static BOOL displayed_tip = FALSE;
					if (!displayed_tip) {
						displayed_tip = TRUE;
						MessageBox(hDlg, L"It is recommended to leave this 0. In that case:\nicons_per_row = screen_width / (icon_width + minimum_horizontal_space).", L"Tip", MB_OK);
					}
				}
				break;
			case IDC_BUTTON_CS_TEXT:
				wcscpy(cfs.facename, cur_cs->textFacename);
				cfs.color = cur_cs->textColor;
				cfs.height = cur_cs->textHeightXML;
				cfs.weight = cur_cs->textWeight;
				cfs.shadow = cur_cs->textShadow;
				cfs.roundrect = cur_cs->textRoundRect;
				DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DIALOGFONT), hDlg, (DLGPROC)ChooseFontProc);
				if (bChooseFontOK) {
					wcscpy(cur_cs->textFacename, cfs.facename);
					cur_cs->textColor = cfs.color;
					cur_cs->textHeightXML = cfs.height;
					cur_cs->textWeight = cfs.weight;
					cur_cs->textShadow = cfs.shadow;
					cur_cs->textRoundRect = cfs.roundrect;
				}
				break;
			case IDC_BUTTON_CS_BACK:
				DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DIALOGBACK), hDlg, (DLGPROC)ScreenBackSettingsProc);
				break;
			}
		}
		break;
	}

	return DefOptionWindowProc(hDlg, TAB_SCREEN, uMsg, wParam, lParam);
}
Beispiel #6
0
main (int argc, char **argv)
{
  int           errs = 0;
  int           nprocs = 1;
  int           c;
  extern int    optind;
  extern char  *optarg; 
  char         *name;
  extern GROUP *hostGroup;
  GROUP        *group;
  EXE          *exe;
  EXE          *dummy;
  CHANNEL      *channel = cs_channel (NULL, "dummy_chan");


  supervisor_mode = 1 << 2;
  
  while((c = getopt (argc, argv, "n:vis")) != -1)
  {
    switch (c)
      { 
      case 'v':
	verbose++;
	break;
      case 'i':
	cs_nowait ();
	break;
      case 'n':
	nprocs = atoi (optarg);
	break;
      case 's':
	supervisor_mode |= (1 << 0) | (1 << 3);
	break;
      case '?':
        errs++;
        break;
    }
  }

  if (errs || optind != (argc-1))
  {
      fprintf (stderr, "usage: %s [-vin num] file\n", argv[0]);
      exit (1);
  }

  group = cs_group (NULL, "code");
  cs_option (group, "commit", "transputer");
/*
  cs_option (hostGroup, "connect", group);
*/
  exe =  cs_exe (group, "code", name = argv[optind], 
		 "OutChan dummy", channel,
		 0);

  for (c = 0; c < nprocs - 1; c++)
    {
      CHANNEL *next = cs_channel (NULL, "dummy_chan");

      dummy =  cs_exe (NULL, "dummy_exe", "dummy.ex8",
	              "InChan  in", channel,
	              "OutChan out", next,
	              0);
      cs_option (dummy, "mode", "system");

      channel = next;
    }

  dummy = cs_exe (NULL, "dummy_exe", "dummy.ex8",
	          "InChan in", channel,
	          0);
  cs_option (dummy, "mode", "system");
   
  cs_load ();
}