Skip to content

Commit

Permalink
Merge 0fc5239 into 3d61674
Browse files Browse the repository at this point in the history
  • Loading branch information
wbhart committed Feb 12, 2019
2 parents 3d61674 + 0fc5239 commit 11f2476
Show file tree
Hide file tree
Showing 12 changed files with 249 additions and 482 deletions.
2 changes: 1 addition & 1 deletion REQUIRE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
julia 1.0
AbstractAlgebra 0.3.3
AbstractAlgebra 0.3.3+
Nemo
CxxWrap
2 changes: 0 additions & 2 deletions deps/src/ideals.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -148,8 +148,6 @@ void singular_define_ideals(jlcxx::Module & Singular)

Singular.method("rank", [](ideal m) { return (int)m->rank; });

// Singular.method("p_Copy",[](void o, ring r){ return p_Copy(o,r);});

Singular.method("id_Quotient", [](ideal a, ideal b, bool c, ring d) {
const ring origin = currRing;
rChangeCurrRing(d);
Expand Down
2 changes: 1 addition & 1 deletion deps/src/includes.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,4 @@ template <> struct IsBits<rRingOrder_t> : std::true_type {
};
} // namespace jlcxx

#endif
#endif
7 changes: 7 additions & 0 deletions deps/src/rings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,13 @@ void singular_define_rings(jlcxx::Module & Singular)
Singular.method("p_Divide", [](spolyrec * p, spolyrec * q, ip_sring * r) {
return p_Divide(p, q, r);
});
Singular.method("p_DivRem", [](spolyrec * a, spolyrec * b,
spolyrec * rest, ip_sring * r) {
return p_DivRem(a, b, reinterpret_cast<spolyrec *&>(rest), r);
});
Singular.method("p_Div_nn", [](spolyrec * p, snumber * n, ip_sring * r) {
return p_Div_nn(p, n, r);
});
Singular.method("singclap_gcd",
[](spolyrec * p, spolyrec * q, ip_sring * r) {
return singclap_gcd(p, q, r);
Expand Down
16 changes: 8 additions & 8 deletions docs/src/polynomial.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ T = @PolynomialRing(QQ, "y", 10)
### Basic manipulation

```@docs
ngens(::PolyRing)
nvars(::PolyRing)
```

```@docs
Expand Down Expand Up @@ -236,18 +236,18 @@ AsEquivalentAbstractAlgebraPolynomialRing(R::Singular.PolyRing{Singular.n_unknow

Conversion of generic AbstractAlgebra polynomials to Singular.jl polynomials:

```
```julia
K = Nemo.ZZ
R,(x,y) = AbstractAlgebra.Generic.PolynomialRing(K, ["x","y"]);
Rsing,vars_Rsing = Singular.AsEquivalentSingularPolynomialRing(R);
Rsing(x+y) == Rsing(x) + Rsing(y)
R, (x, y) = AbstractAlgebra.Generic.PolynomialRing(K, ["x", "y"]);
Rsing, vars_Rsing = Singular.AsEquivalentSingularPolynomialRing(R);
Rsing(x + y) == Rsing(x) + Rsing(y)
```

Conversion of Singular.jl polynomials to generic AbstractAlgebra polynomials:

```
```julia
K = Nemo.ZZ
S,(u,v) = Singular.PolynomialRing(K, ["u","v"])
Saa,(uu,vv) = Singular.AsEquivalentAbstractAlgebraPolynomialRing(S)
S, (u, v) = Singular.PolynomialRing(K, ["u", "v"])
Saa, (uu, vv) = Singular.AsEquivalentAbstractAlgebraPolynomialRing(S)
Saa(u) + Saa(v) == Saa(u) + Saa(v)
```
78 changes: 34 additions & 44 deletions src/Singular.jl
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,15 @@ import Statistics: std

import Nemo: add!, addeq!, base_ring, canonical_unit,
characteristic, check_parent, coeff,
coeffs, contains, content, crt, degree, divexact,
elem_type, exponent_vectors, finish, gcdinv,
gens, intersect, isconstant, isnegative, isone,
isgen, iszero, isunit, lead, monomials,
MPolyBuildCtx, mul!, needs_parentheses, nvars, parent_type,
coeffs, contains, content, crt, degree, degrees, divexact,
elem_type, evaluate, exponent_vectors, finish, gcdinv,
gen, gens, intersect, isconstant, isgen, ismonomial, isnegative, isone,
isterm, isunit, iszero, lead, monomials,
MPolyBuildCtx, mul!, needs_parentheses,
nvars, ordering, parent_type,
parent, primpart, promote_rule, push_term!,
reconstruct, show_minus_one, sort_terms!,
terms, zero!, ResidueRing
reconstruct, show_minus_one, sort_terms!, symbols,
terms, total_degree, var_index, zero!, ResidueRing

export base_ring, elem_type, parent_type, parent

Expand Down Expand Up @@ -52,41 +53,40 @@ function __init__()
libSingular.siInit(binSingular)
# set up Singular parents (we cannot do this before Singular is initialised)

ZZ.ptr = get_n_Z()
ZZ.refcount = 1

QQ.ptr = get_n_Q()
QQ.refcount = 1
global ZZ = Integers()
global QQ = Rationals()

# done in __init__ since headers must be included first

global n_Z_2_n_Q = libSingular.n_SetMap(ZZ.ptr, QQ.ptr)
global n_Q_2_n_Z = libSingular.n_SetMap(QQ.ptr, ZZ.ptr)

global ringorder_no = libSingular.ringorder_no
global ringorder_lp = libSingular.ringorder_lp
global ringorder_rp = libSingular.ringorder_rp
global ringorder_dp = libSingular.ringorder_dp
global ringorder_Dp = libSingular.ringorder_Dp
global ringorder_ls = libSingular.ringorder_ls
global ringorder_rs = libSingular.ringorder_rs
global ringorder_ds = libSingular.ringorder_ds
global ringorder_Ds = libSingular.ringorder_Ds
global ringorder_c = libSingular.ringorder_c
global ringorder_C = libSingular.ringorder_C

global sym2ringorder = Dict{Symbol, libSingular.rRingOrder_t}(
:lex => ringorder_lp,
global n_Z_2_n_Q = libSingular.n_SetMap(ZZ.ptr, QQ.ptr)
global n_Q_2_n_Z = libSingular.n_SetMap(QQ.ptr, ZZ.ptr)
ZZ.refcount += 1
QQ.refcount += 1

global ringorder_no = libSingular.ringorder_no
global ringorder_lp = libSingular.ringorder_lp
global ringorder_rp = libSingular.ringorder_rp
global ringorder_dp = libSingular.ringorder_dp
global ringorder_Dp = libSingular.ringorder_Dp
global ringorder_ls = libSingular.ringorder_ls
global ringorder_rs = libSingular.ringorder_rs
global ringorder_ds = libSingular.ringorder_ds
global ringorder_Ds = libSingular.ringorder_Ds
global ringorder_c = libSingular.ringorder_c
global ringorder_C = libSingular.ringorder_C

global sym2ringorder = Dict{Symbol, libSingular.rRingOrder_t}(
:lex => ringorder_lp,
:revlex => ringorder_rp,
:neglex => ringorder_ls,
:neglex => ringorder_ls,
:negrevlex => ringorder_rs,
:degrevlex => ringorder_dp,
:degrevlex => ringorder_dp,
:deglex => ringorder_Dp,
:negdegrevlex => ringorder_ds,
:negdegrevlex => ringorder_ds,
:negdeglex => ringorder_Ds,
:comp1max => ringorder_c,
:comp1max => ringorder_c,
:comp1min => ringorder_C
)
)
end

###############################################################################
Expand All @@ -113,14 +113,4 @@ include("Vector.jl")

include("Resolution.jl")

###############################################################################
#
# Set Singlular ZZ and QQ
#
###############################################################################

ZZ = Integers()

QQ = Rationals()

end # module
Loading

0 comments on commit 11f2476

Please sign in to comment.