Giter Site home page Giter Site logo

reduce-algebra / homebrew-reduce-algebra Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 330 KB

A macOS Homebrew tap for REDUCE, the portable general-purpose computer algebra system.

Home Page: https://github.com/reduce-algebra/

License: BSD 2-Clause "Simplified" License

homebrew-tap lisp reduce reduce-algebra homebrew cas computer-algebra-system csl homebrew-formulae psl

homebrew-reduce-algebra's Introduction

REDUCE

A portable general-purpose computer algebra system


Introduction

REDUCE is a freely available open-source interactive system for general algebraic computations, of interest to mathematicians, scientists, and engineers.

It can be used interactively for simple calculations, but also provides a flexible and expressive user programming language.

The development of the REDUCE computer algebra system was started in the 1960's by Anthony C. Hearn and further developed by Arthur C. Norman and others. Since then, many scientists from all over the world have contributed to its development.

REDUCE has a long and distinguished place in the history of computer algebra systems.

Other systems that address some of the same issues, but sometimes with rather different emphasis, are Axiom, Derive, Macsyma/Maxima, Maple, Mathematica, and MuPAD.

REDUCE is implemented in Standard Lisp. It primarily runs on either Portable Standard Lisp, which compiles to native machine code, or Codemist Standard Lisp, which compiles to optimized byte-code. It can also run on Visible Standard Lisp, an extremely minimal and highly portable Standard Lisp interpreter. PSL, CSL, and VSL are all included in the REDUCE distribution.

By modern standards, REDUCE is a surprisingly small and compact application, and runs well on all major platforms and operating systems โ€• including Android and iOS.


Features

  • Arbitrary precision integer and rational arithmetic
  • Algorithms for polynomials and rational functions
  • Facilities for the solution of a variety of algebraic equations
  • Automatic and user controlled simplification of expressions
  • Substitutions and pattern matching in a wide variety of forms
  • Analytic differentiation and integration
  • Computations with a wide variety of special functions
  • Dirac matrix calculations of interest to high energy physicists
  • Quantifier elimination and decision for interpreted first-order logic
  • Powerful intuitive user-level programming language

Availability


News and Announcements


Issue Tracking


Discussions


Authors and Developers


Additional Packages and Related Software


Homepage


homebrew-reduce-algebra's People

Contributors

johnsonjh avatar

Stargazers

 avatar

Watchers

 avatar  avatar

homebrew-reduce-algebra's Issues

Disk image (DMG) speed

Bzip2 DMG is very slow.

I did a quick test:

160M Reduce_6547.dmg (as distributed upstream)
80M Reduce_6547-x86_64-mac_13_ventura-darwin22.3.0-zlib.dmg
59M Reduce_6547-x86_64-mac_13_ventura-darwin22.3.0-lzfse.dmg
55M Reduce_6547-x86_64-mac_13_ventura-darwin22.3.0-bzip2.dmg
49M Reduce_6547-x86_64-mac_13_ventura-darwin22.3.0-lzma.dmg

LZMA is small and fast but is only supported on macOS 10.15+ which is too new, as long as Homebrew should still work on 10.11 systems.

LZFSE is very fast, and only marginally larger than bzip2 and is supported on 10.11 systems.

The bzip2 method is also marked as deprecated, so it likely makes sense to switch to LZFSE.

Create "static" build formulae?

I'm considering creating a way to create "static" builds, which would be similar to what the upstream produces - I've not yet worked out the details for this yet, but in general ...

A hypothetical "static" build will statically link all dependencies, so the resulting REDUCE could be archived and transported to another system. It would "just work" without needing Homebrew installed. A script would be bundled to create such an archive (preferably as a DMG) that could be run after installation installation via a "static" formula.

This would essentially reproduce the upstream release process - except it would be using Homebrew - and hopefully be a lot easier for anyone to do at any time, since it would fully isolate and automate all steps.

At the time of this writing, a non-exhaustive list of the dependencies that would be static linked would be bzip2, expat, ncurses, brotli, freetype, fontconfig, gettext, iconv, libffi, libpng, libx11, libxau, libxcb, libxcursor, libxdmcp, libxext, libxfixes, libxft, libxi, libxrandr, libxrender, zlib - this is more exhaustive than the current upstream distribution. The only libraries that would be using dynamic linkage would required system interfaces, i.e. libSystem, libc++, and Frameworks.

Since Homebrew always uses native dependencies , an Apple Silicon system would be required to build ARM64, and an Intel system would be required to build x86_64; any hypothetical static package would not be able to be cross-compiled (so no Universal builds).

While it's actually possible to have multiple Homebrew installs on an M1 machine (both an ARM64 tree and an x86_64 tree), this is something that is wildly unsupported and not feasible to support in a formula.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.