Skip to content

Commit 81c6bc0

Browse files
committed
PolyhedralGeometry: simplified operations with PolyhedralFan
1 parent 9da4d3c commit 81c6bc0

File tree

1 file changed

+8
-17
lines changed

1 file changed

+8
-17
lines changed

Diff for: src/PolyhedralGeometry/PolyhedralFan/standard_constructions.jl

+8-17
Original file line numberDiff line numberDiff line change
@@ -411,35 +411,26 @@ end
411411
## Scalar multiplication
412412
###############################################################################
413413

414-
function multiply_by_nonzero_scalar(u::PointVector{QQFieldElem}, c::QQFieldElem)
415-
return u .* c
416-
end
417-
function multiply_by_nonzero_scalar(u::RayVector{QQFieldElem}, c::QQFieldElem)
418-
return (c<0 ? -u : u)
419-
end
420-
421-
function *(c::QQFieldElem, Sigma::PolyhedralFan)
422-
# if scalar is zero, return polyhedral complex consisting only of the origin
414+
function *(c::scalar_types_extended, Sigma::PolyhedralFan)
415+
# if scalar is zero, return polyhedral fan consisting only of the origin
423416
if iszero(c)
424-
return polyhedral_complex(convex_hull(zero_matrix(QQ,1,ambient_dim(Sigma))))
417+
return polyhedral_fan(positive_hull(zero_matrix(coefficient_field(Sigma),1,ambient_dim(Sigma))))
425418
end
426419

427-
# if scalar is non-zero, multiple all vertices and rays by said scalar
420+
# if scalar is non-zero, multiple all rays by said scalar
428421
SigmaRays = first(rays_modulo_lineality(Sigma))
429422
SigmaLineality = lineality_space(Sigma)
430423
SigmaIncidence = maximal_cones(IncidenceMatrix,Sigma)
431-
return polyhedral_fan(SigmaIncidence, multiply_by_nonzero_scalar.(SigmaRays,c), SigmaLineality)
424+
return polyhedral_fan(coefficient_field(Sigma), SigmaIncidence, SigmaRays .* c, SigmaLineality)
432425
end
433-
*(c::RationalUnion, Sigma::PolyhedralFan) = QQ(c)*Sigma
434-
*(Sigma::PolyhedralFan,c::RationalUnion) = c*Sigma
426+
*(Sigma::PolyhedralFan,c::scalar_types_extended) = c*Sigma
435427

436428
###############################################################################
437429
## Negation
438430
###############################################################################
439431

440432
function -(Sigma::PolyhedralFan)
441-
SigmaRays = first(rays_modulo_lineality(Sigma))
442-
SigmaLineality = lineality_space(Sigma)
433+
SigmaRays, SigmaLineality = first(rays_modulo_lineality(Sigma))
443434
SigmaIncidence = maximal_cones(IncidenceMatrix,Sigma)
444-
return polyhedral_fan(SigmaIncidence, -SigmaRays, SigmaLineality)
435+
return polyhedral_fan(coefficient_field(Sigma), SigmaIncidence, -SigmaRays, SigmaLineality)
445436
end

0 commit comments

Comments
 (0)