Eric's Software Library

Current version: FINAL

I used to work in academia on various topics, including

  • medical image processing
  • mathematical modeling of visual perception of motion, flicker and form

There is a need in this type of work to manage and analyze large data sets, such as the samples in an RGB, MRI, or CT image, or the thousands of observer responses to questions in a psychophysical experiment. During my time doing this work I wrote software to simplify the process of managing these data, for doing experiments to collect the data, and for fitting and evaluating complex, high-dimensional models to the data.

The work that I was doing was supported all or in part by public funds, so the work that I did there should be freely available to the public. Part of that obligation is fullfilled by publications that are freely available. Although not timely, here is a different portion of the fulfullment of that obligation: source code written while and for doing the work. :)

Package Contents

The source code was originally developed in C++ on a McIntosh computer using Metroworks. I have ported the non-Mac-specific code to a PC using Visual C++ and verified that everthing compiles fine. The mac-specific source is the MVL (Mac Video Library). The C++ code is documented using the Doc++ markup methodology. There are two packages available below:

The HTML documentation is available online from this site so that you can determine whether you want to go through the trouble of downloading the source and playing with it. 


Some of the model fitting functions (but not all) rely upon some routines from the ever-useful Numerical Recipies software library. The following routines must be extracted from your licensed copy of the NR library and placed into the file NRCNONDISTRIBUTABLE.CPP in the directory Source\GML 2.0.0

  • float dfridr(float (*func)(float), float x, float h, float *err);
  • void gaussj(float **a, int n, float **b, int m);
  • void lubksb(float **a, int n, int *indx, float b[]);
  • void ludcmp(float **a, int n, int *indx, float *d);
  • float gammq(float a, float x);
  • float gammln(float xx);
  • void gser(float *gamser, float a, float x, float *gln);
  • void gcf(float *gammcf, float a, float x, float *gln);

No Extension or Support

I have no plans to extend or support this software. If someone is interested in extending and expanding this work, contact me.


Files: Library and Docs ZIP, HTML Documentation ZIP, MD5 Hashes, Library and Docs ZIP PGP Sig, HTML Documentation ZIP PGP Sig