Skip to content

Commit d9edc0c

Browse files
committed
Big rewrite
1 parent 85dfd80 commit d9edc0c

31 files changed

+831
-1648
lines changed

.travis.yml

+6-3
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,14 @@ julia:
88
notifications:
99
email: false
1010
# uncomment the following lines to override the default test script
11-
#script:
12-
# - if [[ -a .git/shallow ]]; then git fetch --unshallow; fi
13-
# - julia -e 'Pkg.clone(pwd()); Pkg.build("MultivariatePolynomials"); Pkg.test("MultivariatePolynomials"; coverage=true)'
11+
script:
12+
- if [[ -a .git/shallow ]]; then git fetch --unshallow; fi
13+
- julia -e 'Pkg.clone(pwd()); Pkg.clone("https://github.com/blegat/DynamicPolynomials.jl"); Pkg.build("MultivariatePolynomials"); Pkg.test("MultivariatePolynomials"; coverage=true)'
1414
after_success:
1515
# push coverage results to Coveralls
1616
- julia -e 'cd(Pkg.dir("MultivariatePolynomials")); Pkg.add("Coverage"); using Coverage; Coveralls.submit(Coveralls.process_folder())'
1717
# push coverage results to Codecov
1818
- julia -e 'cd(Pkg.dir("MultivariatePolynomials")); Pkg.add("Coverage"); using Coverage; Codecov.submit(Codecov.process_folder())'
19+
# update doc
20+
- julia -e 'Pkg.add("Documenter")'
21+
- julia -e 'cd(Pkg.dir("MultivariatePolynomials")); include(joinpath("docs", "make.jl"))'

REQUIRE

+2-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
julia 0.6-
1+
julia 0.6
2+
DocStringExtensions

docs/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
build

docs/make.jl

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using Documenter, MultivariatePolynomials
2+
3+
makedocs(
4+
format = :html,
5+
sitename = "MultivariatePolynomials",
6+
pages = [
7+
"Introduction" => "index.md",
8+
"Reference" => "apireference.md",
9+
]
10+
)
11+
12+
deploydocs(
13+
repo = "github.com/blegat/MultivariatePolynomials.jl.git",
14+
target = "build",
15+
osname = "linux",
16+
julia = "0.6",
17+
deps = nothing,
18+
make = nothing,
19+
)

docs/src/apireference.md

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
```@meta
2+
CurrentModule = MultivariatePolynomials
3+
```
4+
5+
# API
6+
7+
## Variables
8+
9+
```@docs
10+
name
11+
```
12+
13+
## Terms
14+
15+
```@docs
16+
term
17+
zeroterm
18+
coefficient
19+
monomial
20+
exponent
21+
deg
22+
isconstant
23+
divides
24+
```
25+
26+
## Polynomials
27+
28+
```@docs
29+
terms
30+
monomials
31+
mindeg
32+
maxdeg
33+
extdeg
34+
leadingterm
35+
leadingcoefficient
36+
leadingmonomial
37+
removeleadingterm
38+
removemonomials
39+
vars
40+
nvars
41+
```
42+
43+
## Monomial Vectors
44+
45+
```@docs
46+
monovec
47+
monovectype
48+
sortmonovec
49+
mergemonovec
50+
```

docs/src/index.md

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# MultivariatePolynomials
2+
3+
[MultivariatePolynomials.jl](https://github.com/blegat/MultivariatePolynomials.jl) is an implementation independent library for manipulating multivariate polynomials.
4+
It defines abstract types and an API for multivariate monomials, terms, polynomials, moments and measures and gives default implementation for common operations on them using the API.
5+
If you want to manipulate multivariate polynomials easily and efficiently while being able to easily switch between different implementations, this library is exactly what you are looking for.
6+
7+
Supported operations are : basic arithmetic, rational polynomials, differentiation and evaluation/substitution, division and duality operations between polynomials and moments.
8+
There is also support for solving systems of equations (soon!) and building (semi)algebraic sets.
9+
10+
Currently, the following implementations are available:
11+
12+
* [TypedPolynomials](https://github.com/rdeits/TypedPolynomials.jl)
13+
* [DynamicPolynomials](https://github.com/blegat/DynamicPolynomials.jl)
14+
15+
```@contents
16+
Pages = ["apireference.md"]
17+
Depth = 3
18+
```

src/MultivariatePolynomials.jl

+22-5
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,45 @@ __precompile__()
22

33
module MultivariatePolynomials
44

5+
using DocStringExtensions
6+
57
import Base: *, +, -, /, ^, ==,
68
promote_rule, convert, show, isless, size, getindex,
79
one, zero, transpose, isapprox, @pure, dot, copy
810

11+
export AbstractPolynomialLike, AbstractTermLike, AbstractMonomialLike
912
abstract type AbstractPolynomialLike{T} end
1013
abstract type AbstractTermLike{T} <: AbstractPolynomialLike{T} end
1114
abstract type AbstractMonomialLike <: AbstractTermLike{Int} end
1215

16+
export AbstractVariable, AbstractMonomial, AbstractTerm, AbstractPolynomial
1317
abstract type AbstractVariable <: AbstractMonomialLike end
1418
abstract type AbstractMonomial <: AbstractMonomialLike end
1519
abstract type AbstractTerm{T} <: AbstractTermLike{T} end
1620
abstract type AbstractPolynomial{T} <: AbstractPolynomialLike{T} end
1721

1822
const APL{T} = AbstractPolynomialLike{T}
1923

24+
include("mono.jl")
25+
include("term.jl")
26+
include("poly.jl")
27+
28+
include("rational.jl")
29+
30+
#include("promote.jl")
31+
2032
include("measure.jl")
2133
include("exp.jl")
34+
include("matpoly.jl")
35+
36+
include("operators.jl")
37+
include("comp.jl")
38+
39+
include("diff.jl")
40+
include("div.jl")
41+
42+
include("algebraicset.jl")
2243

23-
#include("utils.jl")
24-
#include("types.jl")
25-
#include("operators.jl")
26-
#include("show.jl")
27-
#include("substitution.jl")
44+
include("show.jl")
2845

2946
end # module

src/alg.jl

-27
This file was deleted.

src/algebraicset.jl

+9-9
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,22 @@ addinequality!(S::AbstractAlgebraicSet, p) = throw(ArgumentError("Cannot add ine
1111
immutable FullSpace <: AbstractAlgebraicSet
1212
end
1313

14-
type AlgebraicSet <: AbstractAlgebraicSet
15-
p::Vector
14+
type AlgebraicSet{T, PT<:APL{T}} <: AbstractAlgebraicSet
15+
p::Vector{PT}
1616
end
17-
function (::Type{AlgebraicSet})()
18-
AlgebraicSet(Any[])
17+
function AlgebraicSet{T, PT}() where {T, PT<:APL{T}}
18+
AlgebraicSet(PT[])
1919
end
2020

2121
addequality!(V::AlgebraicSet, p) = push!(V.p, p)
2222
Base.intersect(S::AlgebraicSet, T::AlgebraicSet) = AlgebraicSet([S.p; T.p])
2323

24-
type BasicSemialgebraicSet <: AbstractBasicSemialgebraicSet
25-
V::AlgebraicSet
26-
p::Vector
24+
type BasicSemialgebraicSet{T, PT<:APL{T}} <: AbstractBasicSemialgebraicSet
25+
V::AlgebraicSet{T, PT}
26+
p::Vector{PT}
2727
end
28-
function (::Type{BasicSemialgebraicSet})()
29-
BasicSemialgebraicSet(AlgebraicSet(), Any[])
28+
function BasicSemialgebraicSet{T, PT}() where {T, PT<:APL{T}}
29+
BasicSemialgebraicSet(AlgebraicSet{T, PT}(), PT[])
3030
end
3131

3232
addequality!(S::BasicSemialgebraicSet, p) = addequality!(S.V, p)

0 commit comments

Comments
 (0)