/* 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) ; }
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); }
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); }
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 (); }