skip to content


The Microwave Anisotropy Dataset Computational Software

MADCOW is a set of parallelised programs written in ANSI C and Fortran 77 that perform a maximum likelihood analysis of visibility data from interferometers observing the cosmic microwave background (CMB) radiation. This software has been used to produce power spectra of the CMB with the Very Small Array (VSA) telescope. A full description of the algorithms used in the progams is given in the paper Hobson & Maisinger (2002), astro-ph/0201438.


  • You can download MADCOW here. Installation tips and some explanations are included in the archive. Documentation can be found in the doc/ directory.
  • To compile MADCOW, you may also need to download the following software packages:

    Some of the provided plotting utilities also require

    However, it should be sufficient simply to disable the NAG calls in the calling programs if the library is not available and you do not need the marginalisation options.

  • The mock data files (1.8 MB) and scripts used in the simulations presented in astro-ph/0201438.


version 2.0 (14 Nov 2002)

  • Unevenly spaced bins
  • Simultaneous analysis of independent fields
  • Integrals can be saved in compressed storage using zlib
  • Removed several redundant options from the user interface
  • Various minor fixes

version 1.6 (22 May 2002)

  • a few minor fixes to the I/O routines; in particular, input to maxlike now works in MPI version too; more logging of output of maxlike and errors

version 1.5 (28 Jan 2002)

  • renamed programs to conform to astro-ph/0201438: vsaeigen –> eigenlike, vsalfcn –> redlike, vsalike –> maxlike, errors
  • added “fastlike” to the MADCOW collection
  • only minor fixes in the rest, e.g. makefile fixes and new distribution logic for MPI version contributed by Anze

version 1.4 (18 Jan 2002)

  • BUGFIX: Some nasty memory corruption bug has been fixed that used to strike randomly after several hours of computation time in the distributed version (single processor version and shared memory multi-processor not affected). Thanks to Anze and Charlie for tracking this one down.
  • BUGFIX: Choosing the lowest l too close to the lowest baseline could cause segmentation faults. Credits to Richard Savage for spotting this one. (This bug must have been in the code for ages…)
  • vsalike and vsalfcn now have ScaLAPACK versions as well. Unfortunately the scaling seems to be worse than for vsaeigen.

version 1.3 (5 Dec 2001)

  • It can run on distributed memory architectures, such as Linux Beowulf clusters or Cray T3Es (not that we have any of the latter). It requires MPI and ScaLAPACK to be installed – read the INSTALL file in the distribution about how to install these. Tests indicate that the scaling is quite excellent at least up to eight nodes (I haven’t tried more). (Also read the file GUIDE_optimise about spurious error messages…)
  • the input parameters can be read from a parameter file instead of interactive usage – for a sample file see the doc directory. The parameter file is given as a command line argument at startup.
  • Being interrupted or killed, the program resume computations in its previous state. Restart using the option “2” where you are asked whether you want to use the default parameters. There is one small caveat: If the program was terminated at a later stage of an iteration, the algorithm for the automatic check of convergence may be fooled into premature termination.
  • slightly reduced memory requirements…