A Nearer Take a look at Maxima

The first goal of software program estimation is to not predict a challenge’s end result; it’s to find out whether or not a challenge’s targets are practical sufficient to permit the challenge to be managed to fulfill them. — attributed to Steve McConnell, Software program Estimation: Demystifying the Black Artwork

Introduction

That is third in a sequence of articles beginning with The Scope of Mathematical Programming Tasks. Numerous phrases are outlined exactly and ideas mentioned additional within the second article within the sequence: LAME: A Case Examine in Mathematical Programming. Within the creator’s expertise, it’s common to come across extraordinarily optimistic concepts concerning the scope of mathematical programming tasks, the place mathematical programming refers to arithmetic extra superior than the essential arithmetic utilized in enterprise purposes and different widespread programming tasks. Mathematical programming tasks are more likely to achieve success with practical concepts concerning the scope, price, schedule, efficiency, and threat stage of the challenge.  This text discusses the scope of the software program improvement and mathematical analysis and improvement of the broadly used free open-source Maxima pc algebra system (CAS).

Maxima is a pc algebra system derived from the DOE (United States Division of Vitality) MACSYMA pc algebra system which started improvement on the Massachusetts Institute of Expertise (MIT) within the 1960’s. MACSYMA was one of many first pc algebra programs, a precursor to current day industrial pc algebra programs equivalent to Mathematica and Maple. MACSYMA was developed largely to be used in theoretical physics, therefore the funding by the US Division of Vitality (previously the Atomic Vitality Fee). In response to the Maxima site:

The Maxima department of Macsyma was maintained by William Schelter from 1982 till he handed away in 2001. In 1998 he obtained permission to launch the supply code beneath the GNU Basic Public License (GPL).

Maxima was chosen for this case research for a number of causes. Maxima is a profitable broadly used analysis software with sensible purposes. It’s an instance of an “synthetic intelligence” program that works, performing a variety of capabilities that was carried out solely by human mathematicians: factoring polynomials, simplifying expressions, symbolic differentiation, symbolic integration, and numerous different mathematical duties. Maxima has been hosted by the SourceForge open supply site since 2002. SourceForge maintains a file of downloads and copies of all releases of Maxima from Maxima 5.0 in Might, 2002 to the current model. The strategies developed to evaluate the scope of the  LAME free open supply MP3 audio encoder challenge, which can also be hosted on SourceForge, could be instantly utilized to Maxima.

5.23.2-Home windows 2011-02-04 20,833 downloads
5.23.1-Home windows 2011-01-16 837 downloads
5.23.0-Home windows 2011-01-04 4,171 downloads
5.22.1-Home windows 2010-08-13 216,085 downloads
5.22.0-Home windows 2010-08-04 3,924 downloads
5.21.1-Home windows 2010-04-26 57,666 downloads
5.21.0-Home windows 2010-04-12 10,266 downloads
5.20.1-Home windows 2009-12-14 110,463 downloads
5.20.0-Home windows 2009-12-08 5,179 downloads
5.19.2-Home windows 2009-08-31 56,554 downloads
5.18.1-Home windows 2009-04-20 44,359 downloads
5.17.1-Home windows 2008-12-18 39,358 downloads

Desk 1 Downloads of Current Home windows Variations of Maxima

5.23.2-Linux 2011-01-17 595 downloads
5.23.1-Linux 2011-01-15 24 downloads
5.23.0-Linux 2010-12-24 396 downloads
5.22.1-Linux 2010-08-12 2,805 downloads
5.22.0-Linux 2010-08-01 318 downloads
5.21.1-Linux 2010-04-24 1,723 downloads
5.21.0-Linux 2010-04-14 946 downloads
5.20.1-Linux 2009-12-14 2,814 downloads
5.20.0-Linux 2009-12-07 327 downloads
5.19.2-Linux 2009-08-30 12,637 downloads

Desk 2: Downloads of Current Linux Variations of Maxima

5.23.2-source 2011-01-17 4,385 downloads
5.23.1-source 2011-01-15 69 downloads
5.23.0-source 2010-12-24 806 downloads
5.22.1-source 2010-08-12 5,552 downloads
5.22.0-source 2010-08-01 955 downloads
5.21.1-source 2010-04-24 3,750 downloads
5.21.0-source 2010-04-10 652 downloads
5.20.1-source 2009-12-14 6,578 downloads
5.20.0-source 2009-12-07 2,420 downloads
5.19.2-source 2009-08-30 4,670 downloads
5.17.1-source 2008-12-15 4,272 downloads

Desk 3: Downloads of Current Supply Code for Maxima

5.21.1-MacOS 2010-05-25 11,819 downloads
5.19.2-MacOS 2009-09-01 19,049 downloads
5.19.1-MacOS 2009-08-17 827 downloads
5.18.1-MacOS 2009-04-19 4,297 downloads

Desk 4: Downloads of Current MacOS Variations of Maxima

5.15.0-Linux 2009-07-17
5.17.0-Home windows 2008-12-04 82,588 downloads
5.17.0-Linux 2008-12-04 3,658 downloads
5.17.0-source 2008-12-04 3,503 downloads
5.16.3-Home windows 2008-08-25 106,713 downloads
5.16.3-source 2008-08-24 10,946 downloads
5.16.3-Linux 2008-08-24 6,247 downloads
5.16.2-Home windows 2008-08-18 16,353 downloads
5.16.2-source 2008-08-17 679 downloads
5.16.2-Linux 2008-08-17 1,277 downloads
5.15.0-Home windows 2008-04-20 54,046 downloads
5.15.0-source 2008-04-20 5,674 downloads
5.14.0-Home windows 2007-12-27 44,019 downloads
5.14.0-source 2007-12-22 28,884 downloads
5.13.0-Home windows 2007-09-10 50,353 downloads
5.13.0-source 2007-08-25 6,908 downloads
5.12.0-Home windows 2007-06-08 24,356 downloads
5.12.0-source 2007-05-03 6,828 downloads
5.11.0-Home windows 2007-02-11 27,251 downloads
5.11.0-source 2006-12-21 6,466 downloads
5.10.0-Home windows 2006-10-24 26,853 downloads
5.10.0-source 2006-09-21 5,636 downloads
5.9.3-Home windows 2006-06-07 40,848 downloads
5.9.3-source 2006-03-19 7,154 downloads
5.9.3-Linux 2006-03-19 6,038 downloads
5.9.2 2006-01-30 47,706 downloads
5.9.1 2004-09-24 102,642 downloads
5.9.0 2003-02-10 78,537 downloads
historic 2002-05-13 3,056 downloads

Desk 5: Downloads of Variations of Maxima from 2002 to 2009

maxima-5.4-beta.tar.gz 2002-05-13 2.8 MB 187 downloads
maxima-5.6.tar.gz 2002-05-13 3.3 MB 1,054 downloads
maxima-5.5-beta3.tar.gz 2002-05-13 3.0 MB 205 downloads
maxima-5.5-beta.tar.gz 2002-05-13 3.1 MB 221 downloads
maxima-5.4.tar.gz 2002-05-13 2.8 MB 229 downloads
maxima-5.4-beta-2.tar.gz 2002-05-13 2.5 MB 186 downloads
maxima-5.2a-beta.tar.gz 2002-05-13 2.6 MB 175 downloads
maxima-5.2.tar.gz 2002-05-13 2.5 MB 225 downloads
maxima-5.1-beta.tar.gz 2002-05-13 2.7 MB 176 downloads
maxima-5.0.tar.gz 2002-05-13 2.5 MB 398 downloads

Desk 6: Downloads of Variations of Maxima in 2002

NOTE: The info for these tables was acquired by deciding on the tables displayed by the SourceForge net pages (comply with the hyperlinks within the desk captions) with a mouse in Mozilla Firefox 3.6.13 on a Microsoft Home windows XP Service Pack 2 PC, copying, and pasting the choice into the Notepad++ Model 5.2 textual content and code editor on Saturday, February 15, 2011. This process offers the cumulative downloads thus far within the desk within the pasted textual content. The textual content was then transformed to an HTML desk utilizing the free open-source Kompozer HTML/net web page editor. This identical trick doesn’t seem to work within the Safari net browser on the Macintosh; the pasted textual content doesn’t embody the full variety of downloads. The variety of downloads could be accessed by clicking on the graphic within the remaining column of the net web page desk.

Contributors

In contrast to many free open-source tasks, Maxima doesn’t have a distinguished listing of contributors on the internet web site or within the supply code apart from frequent point out of William Schelter. As might be mentioned futher beneath, there was in depth work on Maxima since 2001. A partial listing of contributors was collected by utilizing the DOS FIND command to go looking the recordsdata in Maxima for Copyright notices. For instance:

C:Paperwork and SettingsJohn F. McGowanDesktopmaxima-5.23.2sharevector>discover "Copyright" *
---------- RTEST_VECT.MAC
---------- VECT.DEM
---------- VECT.MAC
---------- VECT.USG
---------- VECTOR.DEM
---------- VECTOR.MAC
---------- VECTOR.USG
---------- VECTOR_REBUILD.LISP
;; Copyright (C)  Nov. 2008  Volker van Nek
---------- VECTOR_REBUILD.MAC
  Copyright (C)  Nov. 2008  Volker van Nek
---------- VECTOR_REBUILD.USG
Copyright (C)  Nov. 2008  Volker van Nek (van dot nek at arcor dot de)
---------- VECT_TRANSFORM.MAC

The next contributors have been listed in copyright notices in recordsdata within the src folder of Maxima 5.23.2

Copyright Holders Listed in *.lisp recordsdata in src folder (not numeric subfolder which seems to include the slatec numerical library)


"MIT"

William Schelter

J. Villate  (Jaime E. Villate)  https://villate.org/

Barton Willis                 https://www.unk.edu/facultyandstaff.aspx?id=669

Paul Foley

Andrej Vodopivec

Volker van Nek

Kevin M. Rosenberg

Dieter Kaiser
 Raymond Toy

James F. Amundson (Maxima challenge chief for a number of years)

David Billinghurst

The share folder comprises far more of the supply code for Maxima. The next further contributors have been recognized from the recordsdata within the share folder: Numerous the contributors listed above additionally contributed to recordsdata within the share folder.

share/tensor

Viktor T. Toth

Valerij Pipin

share/simplification

Wolfgang Jenkner

share/numeric

Mario Rodriguez Riotorto

share/libfgs

Robert Dodier

share/draw

Mark H. Weaver

share/contrib

Edmond Orignac

Martin Rubey

Thomas Baruchel

Dan Stanger

Salvador Bosch Perez

This isn’t an exhaustive listing of copyright holders (presumably contributors). Maxima is sort of massive and, for instance, the share/contrib folder comprises many sub-folders that weren’t searched as a result of time constraints.

That is twenty-two (22) people together with William Schelter and never together with whomever “MIT” could, in reality, confer with, presumably the unique builders of MACSYMA. A considerable quantity of labor clearly happened earlier than William Schelter grew to become concerned within the early 1980’s. Many, many recordsdata include a copyright discover of the shape:

;;;  Copyright (c) 1984,1987 by William Schelter,College of Texas   ;;;;;
;;;     (c) Copyright 1981 Massachusetts Institute of Expertise         ;;;
 variously MIT copyrights are 1980, 1981, 1982

The Scope of the Maxima Venture

Maxima is written largely within the LISP programming language, one of many oldest programming languages and a favourite of synthetic intelligence analysis. There may be some FORTRAN and a tiny quantity of different languages (TCL, Bourne Shell, a couple of others). Maxima was expanded extensively between 2006 and 2008. Newer work has been in including documentation.

Launch Date Strains of Code Legendary Man Months Notional Price
maxima 5.23.2 2011-01-17 467,915 1,527.17 $12,217,336.75
maxima 5.20.1 2009-12-14 453,151 1,476.61 $11,812,894.32
maxima 5.16.3 2008-08-24 404,486 1,310.57 $10,484,552.48
maxima 5.9.2 2006-01-30 233,394 735.71 $5,885,663.12
maxima 5.6 2002-05-13 138,037 423.84 $3,390,755.82
maxima 5.0 2002-05-13 114,453 348.15 $2,785,221.69

Desk 7: Scope of Chosen Releases of Maxima (from 2002 to Feb. 15, 2011) The variety of strains of code have been decided by utilizing the free open-source CLOC (Rely Strains of Code) utility run from a DOS batch file:

cloc --exclude-lang=HTML --force-lang="Lisp",lisp  --force-lang="Lisp",mac --force-lang="Lisp",dem -csv maxima-5.23.2 > maxima-5.23.2.csv
cloc --exclude-lang=HTML --force-lang="Lisp",lisp  --force-lang="Lisp",mac --force-lang="Lisp",dem -csv maxima-5.20.1 > maxima-5.20.1.csv
cloc --exclude-lang=HTML --force-lang="Lisp",lisp  --force-lang="Lisp",mac --force-lang="Lisp",dem -csv maxima-5.16.3 > maxima-5.16.3.csv
cloc --exclude-lang=HTML --force-lang="Lisp",lisp  --force-lang="Lisp",mac --force-lang="Lisp",dem -csv maxima-5.9.2 > maxima-5.9.2.csv
cloc --exclude-lang=HTML --force-lang="Lisp",lisp  --force-lang="Lisp",mac --force-lang="Lisp",dem -csv maxima-5.6 > maxima-5.6.csv
cloc --exclude-lang=HTML --force-lang="Lisp",lisp  --force-lang="Lisp",mac --force-lang="Lisp",dem -csv maxima-5.0 > maxima-5.0.csv

Maxima is written within the LISP programming language. By default, CLOC expects LISP recordsdata to have the extension lsp. The LISP recordsdata within the maxima supply have the extensions lisp, mac, and dem. The HTML documentation is excluded from the depend of the strains of code. The variety of man-months, the precise effort that will have been expended is estimated utilizing the “natural” model of the Fundamental Constructive Price Mannequin (COCOMO) from Barry Boehm’s Software program Engineering Economics. It is a very tough estimate and shouldn’t be taken too critically; the purpose is to get a ball park estimate of the dimensions of the challenge. The estimated man-months and notional price are cumulative numbers for the reason that begin of the Maxima/MACSYMA challenge within the 1960’s. Maxima contains at the least one third occasion library in supply code type, the slatec numerical FORTRAN library, which can also be subsequently included within the estimate.

The comma separated values (CSV) recordsdata of outcomes generated by the cloc utility have been analyzed utilizing an Octave script:. Octave is a free open-source numerical programming software that’s largely appropriate with MATLAB.

% analyze maxima strains of code knowledge
%
max5p23p2 = csvread('maxima-5.23.2.csv');
max5p20p1 = csvread('maxima-5.20.1.csv');
max5p16p3 = csvread('maxima-5.16.3.csv');
max5p9p2 = csvread('maxima-5.9.2.csv');
max5p6 = csvread('maxima-5.6.csv');
max5p0 = csvread('maxima-5.0.csv');
index = 5;
sum5p23p2 = sum(max5p23p2(index:finish, 5));
sum5p20p1 = sum(max5p20p1(index:finish, 5));
sum5p16p3 = sum(max5p16p3(index:finish, 5));
sum5p9p2 = sum(max5p9p2(index:finish, 5));
sum5p6 = sum(max5p6(index:finish, 5));
sum5p0 = sum(max5p0(index:finish, 5));
% generate desk of outcomes
printf("ReleasetLines of CodetMythical Man MonthstNotional Costn");
fflush(stdout);
[man_months, people, time, cost] = cocomo(sum5p23p2/1000.0);
printf("maxima 5.23.2tpercentdtpercent6.2ft% 9.2fn", sum5p23p2, man_months, price);
fflush(stdout);
[man_months, people, time, cost] = cocomo(sum5p20p1/1000.0);
printf("maxima 5.20.1tpercentdtpercent6.2ft% 9.2fn", sum5p20p1, man_months, price);
fflush(stdout);
[man_months, people, time, cost] = cocomo(sum5p16p3/1000.0);
printf("maxima 5.16.3tpercentdtpercent6.2ft% 9.2fn", sum5p16p3, man_months, price);
fflush(stdout);
[man_months, people, time, cost] = cocomo(sum5p9p2/1000.0);
printf("maxima 5.9.2tpercentdtpercent6.2ft% 9.2fn", sum5p9p2, man_months, price);
fflush(stdout);
[man_months, people, time, cost] = cocomo(sum5p6/1000.0);
printf("maxima 5.6tpercentdtpercent6.2ft% 9.2fn", sum5p6, man_months, price);
fflush(stdout);
[man_months, people, time, cost] = cocomo(sum5p0/1000.0);
printf("maxima 5.0tpercentdtpercent6.2ft% 9.2fn", sum5p0, man_months, price);
fflush(stdout);
disp('ALL DONE');

which calls an Octave operate cocomo.m that implements the Fundamental COCOMO mannequin and estimates the fee by assuming an hourly fee of $50 per hour and {that a} man-month is 160 hours: That is an up to date model of the cocomo operate launched within the first article on this sequence.

operate [man_months, dev_time, people_required, cost] = cocomo(kloc, sort, hourly_rate)
% [man_months, dev_time, people_required, cost] = cocomo(kloc [, type, hourly_rate])
%
% kloc (1000's of strains of code)
% sort (sort of challenge: natural, semi-detached, embedded)
% hourly_rate  (charges in USD per hour used to calculate challenge price)
%
% Implements Fundamental COCOMO (Constructive Price Mannequin), also referred to as COCOMO 81, from
% Software program Engineering Economics by Barry Boehm
%
if nargin < 2
    sort="natural";
finish
if nargin < 3
    hourly_rate = 50.0;  % $50/hour
finish
c = 2.5;
if strcmp(sort, 'natural')
    a = 2.4;
    b = 1.05;
    d = 0.38;
finish
if strcmp(sort, 'semi')  % semi indifferent
    a = 3.0;
    b = 1.12;
    d = 0.35;
finish
if strcmp(sort, 'embedded')
    a = 3.6;
    b = 1.2;
    d = 0.32;
finish
man_months = a*(kloc)^b;
dev_time = c*(man_months)^d;
people_required = man_months / dev_time;
price = man_months * 160 * hourly_rate;
finish

The output of the maxima_anal.m Octave script was pasted into this text utilizing the Kompozer HTML editor. Kompozer has a function to transform textual content tables to HTML tables. The “Date” column was then added manually utilizing the desk enhancing options of Kompozer.

Conclusion

Maxima is clearly a considerable challenge, protecting a calendar interval from the 1960’s to the current. It in all probability included each algorithm analysis and improvement in addition to the implementation of recognized algorithms, particularly through the 1960’s when it was one of many first pc algebra programs, a topic of intense analysis on the time.

There are numerous urgent issues starting from speech recognition for cell and different gadgets to most cancers to vitality shortages that will fall to mathematical analysis and improvement and mathematical programming mixed with the large energy of recent computer systems. As could be seen from Maxima, the greenback price of such tasks is just not particularly massive. The guesstimated $12 million price of Maxima is sort of small in comparison with many publicly and privately funded actions. Nonetheless, the calendar time of such tasks is substantial, on this case over forty years. Only a few mathematical programming tasks could be accomplished in a calendar quarter (a couple of can). Usually, such tasks take between six months and several other years. Profitable real analysis tasks usually take years; Maxima/MACSYMA is an instance, being a uncommon instance of a profitable synthetic intelligence analysis and improvement challenge. Profitable mathematical programming tasks are more likely with practical targets and plans primarily based on historic expertise and knowledge.

References/Recommended Studying

Software program Engineering Economics
Barry W. Boehm
Prentice Corridor (November 1, 1981)

Software program Estimation: Demystifying the Black Artwork
Steve McConnell
Microsoft Press; 1 version (March 1, 2006)

© 2011 John F. McGowan

Concerning the Creator

John F. McGowan, Ph.D. is a software program developer, analysis scientist, and marketing consultant. He works primarily within the space of complicated algorithms that embody superior mathematical and logical ideas, together with speech recognition and video compression applied sciences. He has in depth expertise creating software program in C, C++, Visible Fundamental, Mathematica, MATLAB, and plenty of different programming languages. He’s in all probability finest recognized for his AVI Overview, an Web FAQ (Steadily Requested Questions) on the Microsoft AVI (Audio Video Interleave) file format. He has labored as a contractor at NASA Ames Analysis Heart concerned within the analysis and improvement of picture and video processing algorithms and expertise. He has revealed articles on the origin and evolution of life, the exploration of Mars (anticipating the invention of methane on Mars), and low cost entry to area. He has a Ph.D. in physics from the College of Illinois at Urbana-Champaign and a B.S. in physics from the California Institute of Expertise (Caltech). He could be reached at [email protected].

Sponsor’s message: Math Higher Defined is an insightful e book and screencast sequence that may show you how to deeply perceive basic mathematical ideas, and see math in a brand new gentle. Get it right here.