ProjectiveVectors.jl

Data structure for elements in products of projective spaces
Author JuliaHomotopyContinuation
Popularity
3 Stars
Updated Last
1 Year Ago
Started In
September 2018

ProjectiveVectors.jl

Documentation Build Status
Build Status
Codecov branch

Data structure for elements in products of projective spaces. This package defines as type PVector{T,N} where T is the element type and N is the number of projective spaces in which the vector lives.

julia> using ProjectiveVectors, LinearAlgebra

# We want to consider the vector [1, 2, 3, 4, 5, 6] as a vector [1:2:3]×[4:5:6] in P²×P²
julia> PVector([1, 2, 3, 4, 5, 6], (2, 2))
[1 : 2 : 3] × [4 : 5 : 6]

# We also can embed an affine vector into a projective space.
# Here we embed [2, 3, 4, 5, 6, 7] into P²×P³×P¹
julia> v = embed([2, 3, 4, 5, 6, 7], (2, 3, 1))
[2 : 3 : 1] × [4 : 5 : 6 : 1] × [7 : 1]

# We support several linear algebra routines. These always return a tuple
julia> norm(v)
(3.7416573867739413, 8.831760866327848, 7.0710678118654755)

julia> w = embed([2, 3, 4])
[2 : 3 : 4 : 1]

julia> norm(w, Inf)
(4.0,)