@@ -5,6 +5,10 @@ struct DefaultAlgebraicSetLibrary{S<:AbstractAlgebraicSolver}
55 solver:: S
66end
77
8+ function default_gröbner_basis_algorithm (p, lib:: DefaultAlgebraicSetLibrary )
9+ return default_gröbner_basis_algorithm (p, lib. solver)
10+ end
11+
812function default_algebraic_set_library (
913 :: Vector{<:APL} ,
1014 solver:: AbstractAlgebraicSolver ,
@@ -34,7 +38,7 @@ function AlgebraicSet{T,PT,A,S,U}(
3438 return AlgebraicSet {T,PT,A,S,U} (I, false , Vector{U}[], false , false , solver)
3539end
3640function AlgebraicSet (I:: PolynomialIdeal{T,PT,A} , solver:: S ) where {T,PT,A,S}
37- return AlgebraicSet {T,PT,A,S,float(T )} (I, solver)
41+ return AlgebraicSet {T,PT,A,S,promote_for(T, S )} (I, solver)
3842end
3943function AlgebraicSet {T,PT} () where {T,PT}
4044 return AlgebraicSet (PolynomialIdeal {T,PT} (), default_algebraic_solver (T))
@@ -69,52 +73,46 @@ function Base.convert(
6973 )
7074end
7175
72- function algebraic_set (p:: Vector , lib:: DefaultAlgebraicSetLibrary )
73- return AlgebraicSet (p, default_gröbner_basis_algorithm (p), lib. solver)
74- end
7576function algebraic_set (
7677 p:: Vector ,
7778 algo:: AbstractGr öbnerBasisAlgorithm = default_gröbner_basis_algorithm (p),
78- lib:: DefaultAlgebraicSetLibrary = default_algebraic_set_library (p),
79+ lib:: DefaultAlgebraicSetLibrary = default_algebraic_set_library (p, algo);
80+ projective:: Bool = false ,
7981)
80- return AlgebraicSet (p, algo, lib. solver)
81- end
82- function algebraic_set (p:: Vector , solver)
83- return algebraic_set (p, default_algebraic_set_library (p, solver))
84- end
85- function algebraic_set (p:: Vector , algo:: AbstractGr öbnerBasisAlgorithm, solver)
86- return algebraic_set (p, algo, default_algebraic_set_library (p, solver))
82+ set = AlgebraicSet (p, algo, lib. solver)
83+ set. projective = projective
84+ return set
8785end
8886
89- function projective_algebraic_set (p:: Vector , lib:: DefaultAlgebraicSetLibrary )
90- return projective_algebraic_set (
87+ function algebraic_set (p:: Vector , lib:: DefaultAlgebraicSetLibrary ; kws ... )
88+ return algebraic_set (
9189 p,
92- default_gröbner_basis_algorithm (p),
93- lib. solver,
90+ default_gröbner_basis_algorithm (p, lib),
91+ lib. solver;
92+ kws... ,
9493 )
9594end
96- function projective_algebraic_set (
95+
96+ function algebraic_set (p:: Vector , solver; kws... )
97+ return algebraic_set (p, default_algebraic_set_library (p, solver); kws... )
98+ end
99+
100+ function algebraic_set (
97101 p:: Vector ,
98- algo:: AbstractGr öbnerBasisAlgorithm = default_gröbner_basis_algorithm (p),
99- lib:: DefaultAlgebraicSetLibrary = default_algebraic_set_library (p),
102+ algo:: AbstractGr öbnerBasisAlgorithm,
103+ solver;
104+ kws... ,
100105)
101- V = AlgebraicSet (p, algo, lib. solver)
102- V. projective = true
103- return V
104- end
105- function projective_algebraic_set (p:: Vector , algo, solver)
106- return projective_algebraic_set (
106+ return algebraic_set (
107107 p,
108108 algo,
109- default_algebraic_set_library (p, solver),
109+ default_algebraic_set_library (p, solver);
110+ kws... ,
110111 )
111112end
112- function projective_algebraic_set (p:: Vector , solver)
113- return projective_algebraic_set (
114- p,
115- default_gröbner_basis_algorithm (p),
116- default_algebraic_set_library (p, solver),
117- )
113+
114+ function projective_algebraic_set (p:: Vector , args... )
115+ return algebraic_set (p, args... ; projective = true )
118116end
119117
120118ideal (V:: AlgebraicSet ) = V. I
0 commit comments