Popularity
5.6
Growing
Activity
0.0
Stable
11
3
1

Monthly Downloads: 10
Programming language: Haskell
License: MIT License
Tags: Math     Numeric    
Latest version: v0.1.0

th-cas alternatives and similar packages

Based on the "Math" category.
Alternatively, view th-cas alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of th-cas or a related project?

Add another 'Math' Package

README

th-cas : Compile-time CAS(Computer Algebra System)

Hackage version Build Status

CAS(Computer Algebra System) operations like diff are done at compile-time. Compile time operations is done in TemplateHaskell.

Interactive Usage

th-cas supports interactive usage like mathematica. To start repl, type "stack ghci".

Variables are defined by V of data-constructor.

A example of intertative usage is below.

$ stack ghci
...
*Algebra.CAS> 
*Algebra.CAS> let x = V "x" 
*Algebra.CAS> let y = V "y" 
*Algebra.CAS> x^2 + 2*x + x^2
2*x + 2*(x^2)
*Algebra.CAS> diff (x^2 + 2*x + x^2) x
2 + 4*x
*Algebra.CAS> linsolve [x+y=:2,x-y=:3]
Just [(x,5/2),(y,-1/2)]
*Algebra.CAS> subst [(x,1)] $ diff (x^2 + 2*x + x^2) x
6

Usage at compile time

Write diff function var with Quotes of TemplateHaskell. diff makes a diffirential of the function at compile-time. So there is no overhead at execution-time.

A example is below.

Write following code with quotes.

import Algebra.CAS.TH

myfunc :: Int -> Int
myfunc x = $(diff [|x*x+2*x+1|] [|x|])

At compile time, the quotes is translated to 2*x+2.

import Algebra.CAS.TH

myfunc :: Int -> Int
myfunc x = 2*x+2