Software:ALTRAN

From HandWiki
Short description: Variant of the FORTRAN programming language
ALTRAN
Designed byW. Stanley Brown[1]
DeveloperBell Telephone Laboratories
First appeared1965
Influenced by
FORTRAN, PL/I[1]

ALTRAN (ALgebraic TRANslator) is a programming language for the formal manipulation of rational functions of several variables with integer coefficients. It was developed at Bell Labs in 1960s.[1] ALTRAN is a FORTRAN version of ALPAK rational algebra package,[2] and “can be thought of as a variant of FORTRAN with the addition of an extra declaration, the ‘algebraic’ type declaration.”[3]

Although ALTRAN is written in ANSI FORTRAN, nevertheless there exist differences in FORTRAN implementations. ALTRAN handles machine dependencies through the use of a macro processor called M6.[1][4]

ALTRAN should not be confused with the ALGOL to FORTRAN Translator, called Altran, that "converts Extended Algol programs into Fortran IV."[5]

History

ALPAK, written in 1964, originally consisted of a set of subroutines for FORTRAN written in assembly language. These subroutines were themselves rewritten in FORTRAN for ALTRAN.[6]

An early version of ALTRAN was developed by M. Douglas McIlroy and W. Stanley Brown in the middle 1960s.[1] However, soon after the completion of their ALTRAN translator, the IBM 7094 computers, on which ALPAK and ALTRAN were reliant, began to be phased out in favor of newer machines. This led to development of a more advanced ALTRAN language and implementation developed by Brown, Andrew D. Hall, Stephen C. Johnson, Dennis M. Ritchie, and Stuart I. Feldman, which was highly portable.[7][8] The translator was implemented by Ritchie, the interpreter by Hall, the run-time rational function and polynomial routines by Feldman, Hall, and Johnson, and the I/O routines by Johnson.[1]

Later, Feldman and Julia Ho added a rational expression evaluation package that generated accurate and efficient FORTRAN subroutines for the numerical evaluation of symbolic expressions produced by ALTRAN.[7]

In 1979, ALTRAN was ported to the Control Data Corporation 6600 and Cyber 176 computers at the Air Force Weapons Laboratory. They found that "ALTRAN is about 15 times faster than FORMAC in a PL/I environment, and it is at least 12 times faster than REDUCE." It was also observed that ALTRAN was able to quickly solve problems which neither FORMAC nor REDUCE could handle on the given hardware or in reasonable time.[9]

Sample program

PROCEDURE MAIN # SIMPLE EXAMPLE OF USE OF FTNOUT
     LONG ALGEBRAIC (X:10,Y:10) F
     ALTRAN FTNOUT
     OPTS(201,72) # FTNOUT REQUIRES A LINE LENGTH OF 72
     F = EXPAND( (X+2*Y+1000000)**3 )
     WRITE F # PRINT F
     WRITE (25) " FUNCTION F(X,Y)"
                "C EXAMPLE PROG WRITTEN WITH FTNOUT." ,
                F ,
                " RETURN"™,       " END"
# WE HAVE WRITTEN A SIMPLE PROGRAM ON UNIT 25, NOW WE INVOKE FTNOUT TO
# THIS ALTRAN OUTPUT TO LEGAL FORTRAN.
     FTNOUT
     END

Operations

Elementary operations in ALTRAN[2]
Operation ALTRAN syntax Example on polynomials
Addition C = A+B [math]\displaystyle{ (x+y)+(x-y) = 2x }[/math]
Subtraction C = A-B [math]\displaystyle{ (x+y)-(x-y) = 2y }[/math]
Multiplication C = A*B [math]\displaystyle{ (x+y)(x-y) = x^2 - y^2 }[/math]
Division D = A/B [math]\displaystyle{ (x^2 - y^2) \div (x+y)= x - y }[/math]
Integral exponentiation D = A**K [math]\displaystyle{ (x+y)^3 = x^3 + 3 x^2 y + 3 x y^2 + y^3 }[/math]
Substitution G = F(X = P, Y = Q) [math]\displaystyle{ \begin{cases} \begin{align} f(x,y,z) & = x y + z \\ p & = x + y \\ q & = x - y \\ r & = x^2 + y^2 \\ f (p, q, r) &= p q + r \\ &= (x + y) (x - y ) + x^2 + y^2 \\ &= (x^2 - y^2) + x^2 + y^2 \\ &= 2 x^2 \end{align} \end{cases} }[/math]
Differentiation G = DIFF(F, Y) [math]\displaystyle{ \frac{\partial}{\partial y} (2x + 5x y^2 - 3 y^3) = 10 x y - 9 y^2 }[/math]
Greatest Common Divisor D = GCD(A, B) [math]\displaystyle{ \mathrm{GCD}(x^2 - y^2, x^2 + 2xy +y^2) = x + y }[/math]

References

  1. 1.0 1.1 1.2 1.3 1.4 1.5 Hall, A.D., "The ALTRAN System for Rational Function Manipulation — A Survey". Communications of the ACM, 14(8):517–521 (August 1971).
  2. 2.0 2.1 Tapley, B.D.; Szebehely, V.G. (2012). Recent Advances in Dynamical Astronomy. Springer Science & Business Media. p. 364. ISBN 978-94-010-2611-6. https://books.google.com/books?id=GNruCAAAQBAJ&pg=PA364. Retrieved Sep 3, 2019. 
  3. Geddes, Keith O.; Czapor, Stephen R.; Labahn, George (2007). Algorithms for Computer Algebra. Springer Science & Business Media. p. 4. ISBN 0-7923-9259-0. https://books.google.com/books?id=9fOUwkkRxT4C&pg=PA4. Retrieved Sep 3, 2019. 
  4. Software Portability. Cambridge University Press. 1977. p. 21. ISBN 0-521-29725-7. https://books.google.com/books?id=5Ic6AAAAIAAJ&pg=PA21. Retrieved Sep 3, 2019. 
  5. Wilner, Wayne T.. "ALGOL TO FORTRAN TRANSLATOR". https://www.slac.stanford.edu/vault/collvault/greylit/cgtm/CGTM15.pdf. Retrieved Sep 3, 2019. 
  6. Lamagna, Edmund A. (2019). Computer Algebra: Concepts and Techniques. CRC Press. p. 12. ISBN 9781138093140. https://books.google.com/books?id=8PSDDwAAQBAJ&pg=PA12. Retrieved Sep 3, 2019. 
  7. 7.0 7.1 Holbrook, Bernard D.; Brown, W. Stanley. "Computing Science Technical Report No. 99 – A History of Computing Research at Bell Laboratories (1937–1975)". Bell Labs. http://cm.bell-labs.com/cm/cs/cstr/99.html. Retrieved February 2, 2020. 
  8. "Unix Portability". 1976. https://www.landley.net/history/mirror/unix/dmr/firstport.html. "It is clear that the degree of portability promised [of Unix in C] cannot approach that of ALTRAN, for example, which can be brought up with a fortnight of effort by someone skilled in local conditions but ignorant of ALTRAN itself." 
  9. Rhoades, Jr., Cecil E.. "AFWL Implementation of ALTRAN". https://apps.dtic.mil/dtic/tr/fulltext/u2/a073769.pdf. Retrieved Sep 3, 2019. 
  • W.S. Brown, "A language and system for symbolic algebra on a digital computer", SYMSAC '66 Proceedings of the first ACM symposium on Symbolic and algebraic manipulation, p. 501- 540, January 1966.
  • W.S. Brown, ALTRAN User's Manual (2nd ed.), Bell Laboratories, Murray Hill, N.J., 1972.
  • W.S. Brown, ALTRAN User's Manual (3rd ed.), Bell Laboratories, Murray Hill, N.J., 1973.
  • Stuart I. Feldman, "A brief description of Altran", ACM SIGSAM Bulletin, Volume 9 Issue 4, November 1975, p. 12 - 20.
  • A.D. Hall and S.C. Johnson, "ALTRAN programs for SIGSAM problem #6", ACM SIGSAM Bulletin, Volume 8 Issue 2, May 1974, p. 12 - 36.
  • Mansour Farah, "A FORMAL DESCRIPTION OF ALTRAN USING LINKED FOREST MANIPULATION SYSTEMS", Technical Report CS-73-08, University of Waterloo, April, 1973.