Skip to content

Releases: BartJongejan/Bracmat

v6.19.2-Makkatti

29 Sep 16:24
1773263
Compare
Choose a tag to compare

Traditional Bracmat with Floating Point capabilities.

A new object type, UFP (Un-I-fancy-fied Floating Point) fulfils a dream I have had for decades: the ability to handle Floating Point calculations in Bracmat. This is not a trivial problem: bignums and C "double"s don't mix well. The current solution solves this problem by ensuring that Bracmat never has to mix floating point numbers and bignums in the same numerical operation. All floating point operations are delegated to UFP objects and UFP objects are only able to handle floating point numbers.

UFP objects execute code that is compiled to a bytecode. UFP operations are much faster than the bignum operations performed by Bracmat.

Source code for UFP objects is parsed as Bracmat code and can be built and modified as any other Bracmat code.

The encapsulation of floating point operations in UFP objects guarantees that old Bracmat code continues to work.

The following files are generated from the source code in this release:

  • bracmat-Windows32.exe, bracmat-Windows64.exe: Windows executables 32 and 64 bit
  • bracmat-Linux: Linux executable, statically linked
  • bracmat-macOS: macOS executable
  • bracmat.html, bracmat.pdf: Documentation created from and by Bracmat script doc/help
  • bracmatJS.html: Bracmat compiled to WebAssembly and embedded in a HTML file. Runs in your browser independently of any server.

Potu

02 May 16:38
Compare
Choose a tag to compare

New built-in function mop$.

If you wanted to iterate over all terms in a sum, all factors in a product, all elements in a comma-separated list, etc., outputting a space separated list with the elements in the same order, the fastest solution required two whl'() loops: One whl' loop to create a space separated list by prepending elements to an initially empty list, and another whl' loop to get the elements in the right order.

{?} 2*a+b*c+d^f:?sum & !sum
{!} 2*a+d^f+b*c

{?} :?INV & whl'(!sum:?%term+?sum & !term !INV:?INV) & :?ANSW & whl'(!INV:?%term ?INV & !term !ANSW:?ANSW) & !ANSW
{!} 2*a d^f b*c

The mop$ function makes this much simpler and faster.

{?} 2*a+b*c+d^f:?sum & !sum
{!} 2*a+d^f+b*c

{?} mop$((=.!arg).!sum.(=+))
{!} 2*a d^f b*c

Holberg

09 Feb 16:11
Compare
Choose a tag to compare

This release contains binaries for Windows (32 and 64 bit) and Linux (64 bit).

bracmat.exe : 32 bit windows version
bracmat64.exe : 64 bit windows version
bracmat: 64 bit Linux version (statically linked)