Skip to content
@formulae-org

Fōrmulæ

The Fōrmulæ programming language

👋 Welcome

Fōrmulæ is a free, open source, symbolic, visual, homoiconic, high-level, multi-paradigm, arbitrary-precision programming language for scripting in academic and research environments.

The main objectives of the Fōrmulæ language are:

  • To create programs with a notation closer to algorithms and mathematics
  • To minimize the requirements for the programmer (only a web browser is needed)
  • To have modularity of the language, packages incorporating new elements to the language can be created and dynamically/selectively added.

If you want to know more about Fōrmulæ, please refer to its website formulae.org.

The base program

In the repository formulae-js you can find the source code for the Fōrmulæ web application, written in JavaScript.

The packages

With Fōrmulæ, you can create code to visualize, edit or manipulate expressions from many fields. The code is grouped in units called packages. The code for every package is hosted in the following repositories:

Base packages

The folowing are fundamental packages

Package Repository Brief description
Arithmetics package-arithmetic-js Integer, decimal and rational numbers. Basic arithmetic, transcendental, trigonometric, hyperbolic operations with arbitrary precision integers and decimals. Rounding modes.
Algebra package-algebra-js Basic expression simplifications based on algebra rules.
Complex package-complex-js Complex arithmetic. Imaginary unit, complex conjugate.
Relation package-relation-js Basic comparison operations, three-way comparison, minimum, maximum, membership.
Logic package-logic-js Logic literals, basic logic operations (negation, conjunction, disjunction, conditional, equivalence, exclusive disjunction).
Expression package-expression-js Common operations to expressions and reflection, such as cardinality, subexpression, insertion and deletion of subexpressions, serialization/deserialization, programatic creation of expressions.
List package-list-js List manipulation, list and table creation, mathematical operations with lists and matrices
Symbolic package-symbolic-js Definition and referecing of local and global symbols and functions, lambda expressions.
Strings package-string-js Creation and operations with strings, text, and regular expressions, Unicode support.
Color package-color-js Creation and operations on colors, visual representation of colors.
Programming package-programming-js Structured programming structures, such as sequences (blocks), selections and iterations. Visualizacion as either flowchart or indented code.
Raster graphics package-graphic-raster-js Creation of graphics, pixel operations, outline and filling of geometric primitives (lines, rectangles, ellipses, arcs), inclusion of other graphics, text, turtle graphics, primitives on coordinates (translations, rotating, scaling).
Charts package-chart-js Creation of charts from data. Bar, line, area, dot, step, and pie types.
Diagramming package-diagramming-js Diagrams, tree structures (for now).
Typesetting package-typesetting-js Typesetting (see below).
Visualization package-visualization-js Changing the look of expressions, font color, size and attributes (bold, italic), crossing out, arrangement of expressions.
Bitwise package-bitwise-js Bitwise (and, or, not, xor), bit length, bit count, shifts, bit (set, get, clear, flip) operation on arbitrary length integers.
Time package-time-js Time datatype and operations, Gregorian calendar part management

Specialized packages

The following packages are intended for specialized users

Package Repository Brief description
Chemistry package-chemistry-js Chemical elements, homonuclear & heteronuclear compounds
Quantum programming package-quantum-js Kets, quantum circuits, quantum gates, execution of quantum circuitss, unitary matrix of a quantum circuit

Packages in development

The followng packages are in early stages of development

Package Repository Brief description
Plot package-plot-js Mathematical plots. 2D function plot, 2D parametric plot, 2D polar curve, 3D parametric curve, 3D function surface, 3D parametric surface, surface map, surface contour.

Packages planned for future development

Name Brief description
Statistics Statistical computing
Database access Connection to a SQL database, execution of SQL statements

The content of website

Moreover, with Fōrmulæ you can create formatted content (text with styles, use of images, paragraphs, bulleted list, alignment, etc.) (typesetting). All the content of its website —tutorials, reference, examples, etc.— is written in Fōrmulæ itself. This content is also hosted in the web-content repository.

Image gallery

Visit this Pinterest galley of images created with Fōrmulæ.

Pinned

  1. formulae formulae Public

    1

  2. formulae-js formulae-js Public

    Fōrmulæ web application

    JavaScript 4

  3. web-content web-content Public

    The official set of Fōrmulæ files that encompasses the Fōrmulæ website.

    3 1

Repositories

Showing 10 of 25 repositories

Top languages

Loading…

Most used topics

Loading…