gnuplot_prog ( TCLAP::CmdLine& cmd, shared_ptr<KeyGenerators::base> _keygen ) : base ( cmd, _keygen ), dataNameArg ( "o", "output", "Gnuplot data (all keys with correlation coefficient) file name", true, "", "path" ), scriptNameArg ( "s", "script-output", "Gnuplot script output (all keys with correlation coefficient) file name", true, "", "path" ), confidenceDataNameArg ( "r", "confidence-output", "Gnuplot data (best and second best keys with confidence interval) file name", true, "", "path" ), confidenceScriptNameArg ( "g", "confidence-script-output", "Gnuplot script output (best and second best keys with confidence interval) file name", true, "", "path" ), alphaArg ( "a", "alpha", "The alpha to compute the (1 - alpha) confidence interval", true, 0.05, "0-1" ), bestPearson() { bestPearson = Trace::Zero(KEYNUM); cmd.add ( dataNameArg ); cmd.add ( scriptNameArg ); cmd.add ( confidenceDataNameArg ); cmd.add ( confidenceScriptNameArg ); cmd.add ( alphaArg ); currentTraces = 0; };
int main (int argc, char *argv[]) { /** Set up the command line arguments */ TCLAP::CmdLine command ("Parition a graph based on sparsification", ' '); TCLAP::SwitchArg randomSwitch ("r", "random", "Use a random graph", command, false); TCLAP::SwitchArg debugSwitch ("d", "debug", "Print debug messages", command, false); TCLAP::ValueArg<double> tRatio ("t", "t-ratio", "Tau ratio; how big can Tau be w.r.t N", true, 2.0, "double"); command.add (tRatio); TCLAP::ValueArg<double> sRatio ("s", "s-ratio", "Ratio for num samples to take w.r.t Tau", true, 1.0, "double"); command.add (sRatio); TCLAP::ValueArg<int> kSteps ("k", "k-steps", "The number of B.F.S steps for local graph", true, 2, "int"); command.add (kSteps); TCLAP::ValueArg<int> nParts ("p", "n-parts", "The number of partitions to create", true, 2, "int"); command.add (nParts); TCLAP::ValueArg<int> rSeed ("x", "r-seed", "The seed for the PRNG", false, 0, "int"); command.add (rSeed); TCLAP::ValueArg<bool> isErdos ("g", "r-type", "Is this a Erdos-Renyi graph", false, false, "bool"); command.add (isErdos); TCLAP::ValueArg<int> nVerts ("m", "n-verts", "The number of vertices to generate", false, 10, "int"); command.add (nVerts); TCLAP::ValueArg<int> nEdges ("n", "n-edges", "The number of edges to generate", false, 10*9, "int"); command.add (nEdges); TCLAP::ValueArg<double> minWeight ("l", "min-weight", "Minimum edge weight", false, 1.0, "double"); command.add (minWeight); TCLAP::ValueArg<double> maxWeight ("u", "max-weight", "Maximum edge weight", false, 1.0, "double"); command.add (maxWeight); TCLAP::ValueArg<std::string> fileType ("i", "input-file", "Type of the file to read", false, "MATRIX_MARKET", "string"); command.add (fileType); TCLAP::ValueArg<std::string> fileName ("f", "file-name", "Name of the file to read", false, "", "string"); command.add (fileName); /* Parse the command line arguments */ command.parse (argc, argv); /* Read in the command line arguments into variables */ bool random_graph = randomSwitch.getValue (); bool debug = debugSwitch.getValue (); int k_steps = kSteps.getValue (); double t_ratio = tRatio.getValue (); double s_ratio = sRatio.getValue (); int n_parts = nParts.getValue (); char* file_type; char* file_name; int rand_seed; int num_vertices; int num_edges; double min_weight; double max_weight; FILE* input_fp; FILE* output_fp; AdjacencyListType adjacency_list; if (random_graph) { std::cout << "Running on a random graph" << std::endl; rand_seed = rSeed.getValue (); num_vertices = nVerts.getValue (); num_edges = nEdges.getValue (); min_weight = minWeight.getValue (); max_weight = maxWeight.getValue (); /* Check the number of edges input */ if (num_edges > (num_vertices*(num_vertices-1))) { fprintf (stderr, "A graph with %d vertices cannot have %d edges\n", num_vertices, num_edges); exit (1); } else if (n_parts > (s_ratio*num_vertices*log(num_vertices))) { fprintf (stderr, "Asking for too many partitions\n"); exit (1); } else if (num_edges&0x1) { fprintf (stderr, "Currently, we only deal with even number of edges.\ In other words, we only compute on symmetric graphs without self-loops.\n"); exit (1); } /* Read in the graph */ const bool is_erdos = isErdos.getValue (); if (is_erdos) gen_erdos_renyi (num_vertices, num_edges, rand_seed, false, /* no self-loop */ true, /* symmetric */ min_weight, max_weight, adjacency_list); else gen_rmat (num_vertices, num_edges, rand_seed, false, /* no self-loop */ true, /* symmetric */ min_weight, max_weight, adjacency_list); } else {
void add(TCLAP::CmdLine &cmd) { cmd.add(outputArg); cmd.add(threadsArg); cmd.add(heightArg); cmd.add(widthArg); }
aes128round1 ( TCLAP::CmdLine& cmd, shared_ptr<KeyGenerators::base> _keygen ) : base ( cmd, _keygen ), whichsboxArg ( "b", "sbox", "From which SBOX output should I start to correlate?", false, 0, "0-15" ), sboxnumArg ( "v", "sboxnum", "How many consecutive SBOXes should I consider?", false, 1, "1-8" ) { cmd.add ( whichsboxArg ); cmd.add ( sboxnumArg ); }