C Source Codes


Here are a few C packages.

For each package listed below, if you click on its name, you can see an expanded explanation of its purpose, a list of its contents, and copy the entire source code file, a sample calling program, or the results of running the calling program.

Currently available software includes:

  1. 3ds_read, a program which reads a 3D Studio graphics file;
  2. args, a program which reports the command line arguments with which it was invoked;
  3. asa299, a library which computes the lattice points (integer coordinates) in an M-dimensional simplex; this is Applied Statistics Algorithm 299;
  4. ascii_to_mri, a program which restores MRI data to its original binary format, having been previously converted to an ASCII text file.
  5. bio, a library which manages binary I/O;
  6. blas1, a library of the Level 1 Basic Linear Algebra Subprograms;
  7. blas1_c, a library of the Level 1 Basic Linear Algebra Subprograms, using single precision complex arithmetic;
  8. blas1_d, a library of the Level 1 Basic Linear Algebra Subprograms, using double precision real arithmetic;
  9. blas1_s, a library of the Level 1 Basic Linear Algebra Subprograms, using single precision real arithmetic;
  10. blas1_z, a library of the Level 1 Basic Linear Algebra Subprograms, using double precision complex arithmetic;
  11. brent a library which contains Richard Brent's routines for finding zeroes or minima of functions, without the use of derivative information.
  12. c, examples which illustrate some of the features of the C programming language.
  13. chrpak, a library which can manipulate characters and strings;
  14. csparse, a library which carries out the direct solution of sparse linear systems, by Timothy Davis.
  15. ctangle, a program which reads a CWEB file and creates the corresponding C source code file.
  16. cweave, a program which reads a CWEB file and creates the corresponding TeX documentation file.
  17. dislin, examples which illustrate the use of DISLIN, a scientific graphics package.
  18. drawcgm, a library of FORTRAN and C routines for graphics output in CGM, PostScript or X11 format;
  19. f77split, a program which splits a file containing multiple FORTRAN77 routines into separate files;
  20. f90split, a program which splits a file containing multiple FORTRAN90 routines into separate files;
  21. feynman_kac, a program which demonstrates the use of the Feynman-Kac algorithm for solving certain partial differential equations.
  22. fft_open_mp is a program which demonstrates the computation of a Fast Fourier Transform in parallel, using OpenMP.
  23. fftw3, examples which illustrate the use of FFTW3, a library of routines for Fast Fourier Transforms;
  24. filum, a library which performs various operations with files;
  25. flood_open_gl, a program which uses OpenGL to allow the user to select regions of an image and flood them with color, by Art Wetzel.
  26. gcc_intrinsics, a program which demonstrates or tests some of the intrinsic functions made available by the GCC compiler.
  27. gnuplot_i, a library which allows an executing C or FORTRAN program to interact with the GNUPLOT graphics program.
  28. gprof, examples which illustrate the use of the GPROF program performance monitor;
  29. graphchk, a program, using the METIS library, which can check that a METIS graph file has the proper format;
  30. heat_mpi, a program which demonstrates the use of MPI, by solving the 1D time dependent heat equation.
  31. hodge, a program which implements a 2D cellular automaton, that can be regarded as a model of the spread of an illness, and whose parameters can be tuned to exhibit stability, regular waves, or a variety of chaotic behavior. This is a simplified version of a program by Martin Gerhardt and Heike Schuster
  32. iris_to_pc, a program which runs on an SGI IRIS and receives data sent over a UDP socket from another machine;
  33. kmetis, a program which uses the METIS library to partition the nodes of a graph in a balanced way, useful for parallel processing;
  34. life_open_gl, a program which uses OpenGL to display the evolution of John Conway's "Game of Life", by Simon Green.
  35. linpack_bench, a program which is a version of the LINPACK benchmark program;
  36. machar, a library which dynamically computes the value of various machine characteristic constants;
  37. machine, a library which returns tabulated values of the constants associated with computer arithmetic
  38. makefiles, a directory of example programs which illustrate the use of MAKEFILES for maintaining a software project;
  39. mddisk, a program which simulates a fluid modeled as a collection of soft disks, by Dennis Rapaport;
  40. mesh2dual, a program which used the METIS library to convert a finite element mesh to a dual graph.
  41. mesh2nodal, a program which uses the METIS library to convert a finite element mesh to a nodal graph.
  42. metis, a library which partitions the nodes of a graph or the elements of a mesh, for division among a number of parallel processes, or to reorder the variables in a sparse matrix to minimize fillin;
  43. mgmres, a library which applies the restarted GMRES algorithm to a sparse linear system;
  44. mixed, a directory of example programs which illustrate the use of mixed language programming in which the main routine is written in C;
  45. mpi, examples which illustrate the use of the MPI Message Passing Interface library, for parallel programming;
  46. mpi_condor, a directory of example programs which illustrate the use of CONDOR scripts for submitting MPI jobs to the FSU SCS cluster.
  47. mpi_eclipse, examples which illustrate the use of LoadLeveler scripts for submitting MPI jobs to the ECLIPSE and TERAGOLD IBM SP systems, formerly available at FSU.
  48. mpi_stubs, a library which may be used if a parallel program is to be compiled, loaded and run in a serial machine.
  49. mpi_sysx, examples which illustrate the use of PBS scripts for submitting MPI jobs to System X.
  50. mri_to_ascii, a program which converts the binary data in an MRI file to ASCII text.
  51. mxv, a program which compares the performance of (FOR I, FOR J) loops and (FOR J, FOR I ) loops for computing the product of an MxN matrix A and an N vector X.
  52. mxv_open_mp, a program which compares the performance of the matrix multiplication problem y=A*x, with and without parallelization by OpenMP.
  53. nag, examples which illustrate the use of the Numerical Algorithms Group (NAG) library;
  54. normal, a library which generates pseudorandom normal values;
  55. nsasm, a library which computes the jacobian matrix associated with a finite element approximation of the incompressible steady Navier-Stokes equations in 2D, and to store these as a sparse matrix.
  56. oa, a library which computes orthogonal arrays, by Art Owen;
  57. oa_executables, programs which create, testing, and manipulate orthogonal arrays, by Art Owen;
  58. obj_to_ply, a program which converts a 3D graphics file from OBJ format to PLY format format, by Greg Turk.
  59. ode, a library which implements the Adams-Bashforth-Moulton and Runge-Kutta methods of solving systems of ordinary differential equations, by Steven Moshier.
  60. oemetis, a program which uses the METIS library to reorder the variables in a sparse matrix.
  61. onmetis, a program, using the METIS library, which can reorder the variables in a sparse matrix.
  62. open_gl, examples which illustrate the use of the OpenGL graphics library;
  63. open_mp, examples which illustrate the use of the OpenMP interface for parallel programming shared memory system;
  64. open_mp_sgi, examples which illustrate the use of OpenMP with C programs on the Virginia Tech SGI systems.
  65. open_mp_stubs, a "stub" library, which is a dummy implementation of the OpenMP routines, and can be used to compile, load, and run a program using OpenMP on a system which does not have OpenMP installed.
  66. paranoia, a program which checks the accuracy of the floating point arithmetic on a computer.
  67. partdmesh, a program, using the METIS library, which can partition a finite element mesh after constructing the dual graph.
  68. partnmesh, a program, using the METIS library, which can partition a finite element mesh after constructing the nodal graph.
  69. pc_to_iris, a program which runs on a Windows NT machine, and sends data over a UDP socket to another machine;
  70. pcl_read, a program which reads a PCL file and extracts the numeric data;
  71. petsc, examples which illustrate the use of the Portable Extensible Toolkit for Scientific Computations;
  72. pig_latin, a program which converts its input to Pig Latin, by Don Dodson; a winner of the International Obfuscated C Code Competition in the "Most Humorous" category.
  73. plato_ply a program which writes a PLY graphics file for any Platonic solid, by Greg Turk.
  74. ply_io, a library which reads or writes a 3D graphics file in PLY format, by Greg Turk;
  75. ply_to_iv, a program which converts a 3D graphics file from PLY format to Inventor format, by Greg Turk.
  76. ply_to_obj, a program which converts a 3D graphics file from PLY format to OBJ format.
  77. pmetis, a program which uses the METIS library to partition the nodes of a graph in a balanced way, useful for parallel processing;
  78. power_method a library which carries out the power method for finding a dominant eigenvalue and its eigenvector.
  79. pthreads, examples which illustrate the use of the POSIX thread library to carry out parallel program execution.
  80. quad_mpi, a program which applies a quadrature rule to estimate an integral, working in parallel by using MPI;
  81. quad_open_mp, a program which applies a quadrature rule to estimate an integral, working in parallel by using OpenMP;
  82. qvoronoi, a program which computes the Voronoi diagram of a pointset in M dimensions (part of the QHULL package);
  83. random_mpi, a program which demonstrates one way to generate the same sequence of random numbers for both sequential execution and parallel execution under MPI.
  84. rbox, a program which generates random pointsets for testing computational geometry algorithms;
  85. rgb_io, a library which reads or writes an SGI RGB file.
  86. satisfiability is a program which demonstrates, for a particular circuit, an exhaustive search for solutions of the circuit satisfiability problem.
  87. satisfiability_mpi is a program which demonstrates, for a particular circuit, an exhaustive search for solutions of the circuit satisfiability problem, using MPI to perform the calculation in parallel.
  88. satisfiability_open_mp is a program which demonstrates, for a particular circuit, an exhaustive search for solutions of the circuit satisfiability problem, using OpenMP for parallel execution.
  89. sgefa_open_mp, a program which compares a standard linear algebra solver against a revised version which can be run in parallel with OpenMP.
  90. showme, an program which displays triangulations and meshes, by Jonathan Shewchuk;
  91. smolpack, a library which estimates the integral of a function over a multidimensional hypercube using a sparse grid, by Knut Petras;
  92. subpak, a library which contains many utility routines;
  93. subset, a library which ranks, unranks, and generates random subsets, combinations, permutations, and so on;
  94. super_blas, a library which implements some of the BLAS routines, for particular use by SUPER_LU;
  95. super_lu, a library which implements a very fast direct solver for sparse linear systems;
  96. sweep2, a program which computes Voronoi Diagrams or Delaunay triangulations, by Steve Fortune;
  97. table_io, a library which reads and writes a simple dataset stored as a TABLE file;
  98. test_values, a library which returns a small set of values for a variety of mathematical functions, suitable for a rough test of accuracy for algorithms;
  99. tiff_io, a library which reads or writes a TIFF file (not working).
  100. timer, examples which illustrate how to estimate the CPU time taken by a portion of a program;
  101. timestamp, a library which returns the current YMDHMS date as a timestamp, and performs other chores;
  102. toms178, a library which seeks the minimizer of a function of several variables, using the Hooke-Jeeves direct search method;
    this is a C version of ACM TOMS algorithm 178.
  103. toms179 a library which calculates the incomplete Beta ratio;
    this is a C version of ACM TOMS algorithm 179.
  104. toms322, a library which evaluates the F and Student's T cumulative density functions;
    this is a C version of ACM TOMS algorithm 322.
  105. triangle, a program which generates meshes, Delaunay triangulations, and Voronoi diagrams, by Jonathan Shewchuk;
  106. triangulate, a program which triangulates a polygonal region, by Joseph ORourke;
  107. uniform, a library which generates uniform pseudorandom values;
  108. uudecode, a program which recovers the original file from a UU encoded file;
  109. uuencode, a program which takes an input file, especially a binary file, and creates a UU encoded copy that is a text file, suitable for transmission through mail or other text-only systems.
  110. vitles_to_tec_2d, a program which reads a 2D flow file from the VITLES fluid flow program and writes a corresponding file for use by TECPLOT;
  111. xdr, a library which allows data to be transferred from one computer system to another using an external data representation;
  112. xfires, a program which models the occurrence of fires in a forest, and displays the status of the forest using X Windows.
  113. xged, a program which allows the user to display, edit and animate a mathematical graph within an X Window display.
  114. xising, a program which models the variations in ferromagnetism in a material, displaying the results using X Windows.
  115. xwaves, a program which simulates the behavior of solutions of certain forms of the wave equation, displaying the results using X Windows.
  116. ziggurat, a library which samples the uniform, normal or exponential distributions, using the ziggurat method.

You can go up one level to the main web page.


Last revised on 23 May 2008.