Closed
Description
Julia Version 1.9.0-rc1
Commit 3b2e0d8 (2023-03-07 07:51 UTC)
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 12 × Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-14.0.6 (ORCJIT, skylake)
Threads: 8 on 12 virtual cores
Environment:
LD_LIBRARY_PATH =
JULIA_NUM_THREADS = 8
using StaticArrays
abstract type VgtkNum end
struct VgtkInt{T <: Integer} <: VgtkNum
int::T
end
VgtkInt(::Val{N}) where N <: Integer = VgtkInt(N)
VgtkInt(x::AbstractFloat) = VgtkInt(trunc(Int, x))
struct VgtkFloat{T <: AbstractFloat} <: VgtkNum
float::T
end
VgtkFloat(x::Integer) = VgtkFloat(float(x))
value(x::VgtkInt) = x.int
value(x::VgtkFloat) = x.float
Base.:(+)(a::VgtkInt, b::VgtkInt) = VgtkInt(a.int + b.int)
Base.:(+)(a::VgtkFloat, b::VgtkFloat) = VgtkFloat(a.float + b.float)
Base.:(+)(a::VgtkNum, b::VgtkNum) = VgtkFloat(value(a) + value(b))
neltype(x) = neltype(typeof(x))
neltype(::Type{T}) where T <: AbstractArray = neltype(eltype(T))
neltype(::Type{T}) where T = T
const PointRpN{N, T <: AbstractFloat} = SVector{value(VgtkInt(Val(N))+VgtkInt(1)), T}
const PointRp2{T <: AbstractFloat} = PointRpN{2, T}
const LineRp2{T <: AbstractFloat} = SVector{3, T}
Metadata
Metadata
Assignees
Labels
No labels