Skip to main content

Towards an Implementation of a Computer Algebra System in a Functional Language

  • Conference paper
Intelligent Computer Mathematics (CICM 2008)

Part of the book series: Lecture Notes in Computer Science ((LNAI,volume 5144))

Included in the following conference series:

Abstract

This paper discusses the pros and cons of using a functional language for implementing a computer algebra system. The contributions of the paper are twofold. Firstly, we discuss some language–centered design aspects of a computer algebra system — the “language unity” concept. Secondly, we provide an implementation of a fast polynomial multiplication algorithm, which is one of the core elements of a computer algebra system. The goal of the paper is to test the feasibility of an implementation of (some elements of) a computer algebra system in a modern functional language.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Amos, D.: Haskell for Math program, http://www.polyomino.f2s.com/david/haskell/codeindex.html

  2. Armstrong, J.: Programming Erlang. In: The Pragmatic Programmers, LLC (2007)

    Google Scholar 

  3. Barclay, K., Savage, J.: Groovy Programming: An Introduction for Java Developers. Morgan Kaufmann Publishers Inc, San Francisco (2006)

    Google Scholar 

  4. Bauer, C., Frink, A., Kreckel, R.: Introduction to the GiNaC Framework for Symbolic Computation within the C++ Programming Language. J. of Symbolic Computation 33, 1–12 (2002)

    Article  MATH  MathSciNet  Google Scholar 

  5. Benouamer, M.O., Michelucci, D., Peroche, B.: Error-free boundary evaluation based on a lazy rational arithmetic: a detailed implementation. Computer Aided Design 26(6), 403–416 (1994)

    Article  Google Scholar 

  6. Bird, R.S., Jones, G., De Moor, O.: More haste, less speed: lazy versus eager evaluation. J. of Functional Programming 7(5), 541–547 (1997)

    Article  Google Scholar 

  7. Bronstein, M., Davenport, J., Fortenbacher, A., et al.: AXIOM – the 30 year horizon (2003), http://portal.axiom-developer.org/public/book2.pdf

  8. Capani, A., Niesi, G.: CoCoA 3.0 User’s Manual. Dipartimento di Matematica, Università di Genova, Via Dodecaneso, Genova (Italy), vol. 35, I-16146 (1995)

    Google Scholar 

  9. Cint, the C/C++ interpreter, version 5.16.19, http://root.cern.ch/root/Cint.html

  10. Flanagan, D., Matsumoto, Y.: The Ruby Programming Language. O’Reilly, Sebastopol (2008)

    Google Scholar 

  11. The GAP Group. GAP – Groups, Algorithms, and Programming, Version 4.4.10 (2008)

    Google Scholar 

  12. The Glorious Glasgow Haskell Compilation System User’s Guide (February 2008), http://www.haskell.org/ghc/docs/latest/users_guide.pdf

  13. GiNaC program, http://www.ginac.de

  14. HPC-Grid for Maple program, http://www.maplesoft.com/products/toolboxes/HPCgrid/index.aspx

  15. gridmathematica2 program, http://www.wolfram.com/products/gridmathematica/

  16. Haible, B., Kreckel, R.: CLN, a class library for numbers manual (2005), http://www.ginac.de/CLN/cln.ps

  17. Hall, C., Hammond, K., Jones, S.P., Wadler, P.: European Symposium On Programming. In: Sannella, D. (ed.) ESOP 1994. LNCS, vol. 788, pp. 241–256. Springer, Heidelberg (1994)

    Google Scholar 

  18. Hammond, K., Al Zain, A., Cooperman, G., Petcu, D., Trinder, P.: Symgrid: a framework for symbolic computation on the grid. In: Kermarrec, A.-M., Bougé, L., Priol, T. (eds.) Euro-Par 2007. LNCS, vol. 4641, Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  19. Herrmann, C.A., Lengauer, C.: HDC: A Higher–Order Language for Divide–and-Conquer. Parallel Processing Letters 10(22), 239–250 (2000)

    Article  Google Scholar 

  20. Karatsuba, A., Ofman, Y.: Multiplication of many-digital numbers by automatic computers. Doklady Akad. Nauk SSSR 145, 293–294 (1962); Translation in Physics–Doklady 7, 595–596 (1963)

    Google Scholar 

  21. Karczmarczuk, J.: The most unreliable technique in the world to compute pi (1998)

    Google Scholar 

  22. Karczmarczuk, J.: Scientific computation and functional programming. Computing in Science & Engineering 1(3), 64–72 (1999)

    Article  Google Scholar 

  23. Karczmarczuk, J.: Functional differentiation of computer programs. Higher–Order and Symbolic Computation 14(1), 35–57 (2001)

    Article  MATH  Google Scholar 

  24. Knuth, D.E.: The Art of Computer Programming, 3rd edn., vol. 2. Addison–Wesley (1998)

    Google Scholar 

  25. Loogen, R., Ortega-Mallén, Y., Peña-Marí, R.: Parallel Functional Programming in Eden. Journal of Functional Programming 15(3), 431–475 (2005)

    Article  MATH  Google Scholar 

  26. Mechveliani, S.D.: Haskell and computer algebra. Pereslavl-Zalessky, Russia (manuscript, 2000)

    Google Scholar 

  27. Mechveliani, S.D.: DoCon. The Algebraic Domain Constructor Manual. Program Systems Institute, Pereslavl–Zalessky, Russia, Version 2.11 (2007)

    Google Scholar 

  28. Milmeister, G.: Functional kernels with modules. Master’s thesis, ETH Zürich (1995)

    Google Scholar 

  29. Nikhil, R.S., Arvind, L.A., Hicks, J., Aditya, S., Augustsson, L., Maessen, J., Zhou, Y.: pH Language Reference Manual, Version 1.0. Massachusetts Institute of Technology, Computation Structures Group Memo No. 396 (1995)

    Google Scholar 

  30. Nussbaumer, H.J.: Fast Fourier Transform and Convolution Algorithms. Springer, Berlin (1981)

    MATH  Google Scholar 

  31. Okasaki, C.: Purely Functional Data Structures. Cambridge University Press, Cambridge (1998)

    Google Scholar 

  32. Jones, M.P., Hudak, P.: Haskell vs. Ada vs. C++ vs. awk vs.... An experiment in software prototyping productivity, Yale University, Department of Computer Science (July 1994)

    Google Scholar 

  33. Jones, S.P. (ed.): Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, Cambridge (2003)

    Google Scholar 

  34. Redfern, D.: The Maple Handbook: Maple V Release 4. Springer, Heidelberg (1995)

    MATH  Google Scholar 

  35. Van Roy, P. (ed.): MOZ 2004. LNCS, vol. 3389. Springer, Heidelberg (2005)

    Google Scholar 

  36. Schaller, C.: Elimination von Funktionen höherer Ordnung in Haskell–Programmen. Master’s thesis, Universität Passau (September 1998)

    Google Scholar 

  37. Schönhage, A.: Asymptotically fast algorithms for the numerical multiplication and division of polynomials with complex coefficients. In: Calmet, J. (ed.) ISSAC 1982 and EUROCAM 1982. LNCS, vol. 144, pp. 3–15. Springer, Heidelberg (1982)

    Google Scholar 

  38. Schönhage, A., Strassen, V.: Schnelle Multiplikation großer Zahlen. Computing 7(3–4), 281–292 (1971)

    Article  MATH  Google Scholar 

  39. Symbolic Computation Infrastructure for Europe project, http://www.symbolic-computation.org/

  40. Stein, W.: Sage: Open Source Mathematical Software (Version 2.10.2) The Sage Group (2008), http://www.sagemath.org

  41. Thurston, D., Thielemann, H.: Haskell Numeric Prelude program, http://darcs.haskell.org/numericprelude/

  42. Trinder, P.W., Barry Jr., E., Davis, M.K., Hammond, K., Junaidu, S.B., Klusik, U., Loidl, H.-W., Jones, S.L.P.: GpH: An Architecture–Independent Functional Language. In: Glasgow Functional Programming Workshop, Pitlochry, Scotland (September 1998)

    Google Scholar 

  43. van Rossum, G.: The Python Language Reference Manual. Network Theory Ltd. (2006)

    Google Scholar 

  44. von zur Gathen, J., Gerhard, J.: Modern Computer Algebra, 2nd edn. Cambridge University Press, Cambridge (2003)

    MATH  Google Scholar 

  45. Wilkinson, J.H.: Rounding Errors in Algebraic Processes. Prentice Hall, Englewood Cliffs (1963)

    MATH  Google Scholar 

  46. Wilkinson, J.H.: The perfidious polynomial. In: Golub, G.H. (ed.) Studies in Numerical Analysis, Mathematical Association of America, Washington, D.C, vol. 24, pp. 1–28 (1984)

    Google Scholar 

  47. Wolfram, S.: Mathematica: a system for doing mathematics by computer. Wolfram Research, Inc. (1991)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Serge Autexier John Campbell Julio Rubio Volker Sorge Masakazu Suzuki Freek Wiedijk

Rights and permissions

Reprints and permissions

Copyright information

© 2008 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Lobachev, O., Loogen, R. (2008). Towards an Implementation of a Computer Algebra System in a Functional Language. In: Autexier, S., Campbell, J., Rubio, J., Sorge, V., Suzuki, M., Wiedijk, F. (eds) Intelligent Computer Mathematics. CICM 2008. Lecture Notes in Computer Science(), vol 5144. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-85110-3_12

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-85110-3_12

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-85109-7

  • Online ISBN: 978-3-540-85110-3

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics