mirror of
https://github.com/kalmarek/SmallHyperbolic
synced 2024-07-27 21:10:31 +02:00
formatter
This commit is contained in:
parent
d9bb982c84
commit
b0941d17a8
@ -1,13 +1,13 @@
|
|||||||
Base.hash(a::acb, h::UInt) = h
|
const libarb = Nemo.libarb
|
||||||
|
|
||||||
import Base.reim
|
Base.hash(a::acb, h::UInt) = h
|
||||||
reim(x::Nemo.acb) = reim(convert(ComplexF64, x))
|
Base.reim(x::acb) = reim(convert(ComplexF64, x))
|
||||||
|
|
||||||
function root_of_unity(CC::AcbField, p, k = 1)
|
function root_of_unity(CC::AcbField, p, k = 1)
|
||||||
@assert p > 0
|
@assert p > 0
|
||||||
res = zero(CC)
|
res = zero(CC)
|
||||||
ccall(
|
ccall(
|
||||||
(:acb_unit_root, Nemo.libarb),
|
(:acb_unit_root, libarb),
|
||||||
Cvoid,
|
Cvoid,
|
||||||
(Ref{acb}, Culong, Clong),
|
(Ref{acb}, Culong, Clong),
|
||||||
res,
|
res,
|
||||||
@ -21,7 +21,7 @@ import Base.adjoint
|
|||||||
function Base.adjoint(m::acb_mat)
|
function Base.adjoint(m::acb_mat)
|
||||||
res = zero(m)
|
res = zero(m)
|
||||||
ccall(
|
ccall(
|
||||||
(:acb_mat_conjugate_transpose, Nemo.libarb),
|
(:acb_mat_conjugate_transpose, libarb),
|
||||||
Cvoid,
|
Cvoid,
|
||||||
(Ref{acb_mat}, Ref{acb_mat}),
|
(Ref{acb_mat}, Ref{acb_mat}),
|
||||||
res,
|
res,
|
||||||
@ -38,7 +38,6 @@ rand(rng::AbstractRNG, rs::Random.SamplerTrivial{AcbField}) =
|
|||||||
|
|
||||||
|
|
||||||
import Nemo.acb_struct
|
import Nemo.acb_struct
|
||||||
const libarb = Nemo.libarb
|
|
||||||
|
|
||||||
mutable struct AcbVector <: AbstractVector{acb_struct}
|
mutable struct AcbVector <: AbstractVector{acb_struct}
|
||||||
ptr::Ptr{acb_struct}
|
ptr::Ptr{acb_struct}
|
||||||
@ -49,7 +48,7 @@ mutable struct AcbVector <: AbstractVector{acb_struct}
|
|||||||
v = new(
|
v = new(
|
||||||
ccall((:_acb_vec_init, libarb), Ptr{acb_struct}, (Clong,), n),
|
ccall((:_acb_vec_init, libarb), Ptr{acb_struct}, (Clong,), n),
|
||||||
n,
|
n,
|
||||||
precision
|
precision,
|
||||||
)
|
)
|
||||||
finalizer(clear!, v)
|
finalizer(clear!, v)
|
||||||
return v
|
return v
|
||||||
@ -78,13 +77,13 @@ end
|
|||||||
_get_ptr(acb_v::AcbVector, i::Int = 1) =
|
_get_ptr(acb_v::AcbVector, i::Int = 1) =
|
||||||
acb_v.ptr + (i - 1) * sizeof(acb_struct)
|
acb_v.ptr + (i - 1) * sizeof(acb_struct)
|
||||||
|
|
||||||
function AcbVector(v::AbstractVector{Nemo.acb}, p = prec(parent(first(v))))
|
function AcbVector(v::AbstractVector{acb}, p = prec(parent(first(v))))
|
||||||
acb_v = AcbVector(length(v), p)
|
acb_v = AcbVector(length(v), p)
|
||||||
for (i, val) in zip(eachindex(acb_v), v)
|
for (i, val) in zip(eachindex(acb_v), v)
|
||||||
ccall(
|
ccall(
|
||||||
(:acb_set, libarb),
|
(:acb_set, libarb),
|
||||||
Cvoid,
|
Cvoid,
|
||||||
(Ptr{acb_struct}, Ref{Nemo.acb}),
|
(Ptr{acb_struct}, Ref{acb}),
|
||||||
_get_ptr(acb_v, i),
|
_get_ptr(acb_v, i),
|
||||||
val,
|
val,
|
||||||
)
|
)
|
||||||
@ -94,7 +93,7 @@ end
|
|||||||
|
|
||||||
function approx_eig_qr!(v::AcbVector, R::acb_mat, A::acb_mat)
|
function approx_eig_qr!(v::AcbVector, R::acb_mat, A::acb_mat)
|
||||||
ccall(
|
ccall(
|
||||||
(:acb_mat_approx_eig_qr, Nemo.libarb),
|
(:acb_mat_approx_eig_qr, libarb),
|
||||||
Cint,
|
Cint,
|
||||||
(
|
(
|
||||||
Ptr{acb_struct},
|
Ptr{acb_struct},
|
||||||
@ -122,7 +121,7 @@ function (C::AcbField)(z::acb_struct)
|
|||||||
return res
|
return res
|
||||||
end
|
end
|
||||||
|
|
||||||
function LinearAlgebra.eigvals(A::Nemo.acb_mat)
|
function LinearAlgebra.eigvals(A::acb_mat)
|
||||||
n = nrows(A)
|
n = nrows(A)
|
||||||
CC = base_ring(A)
|
CC = base_ring(A)
|
||||||
p = prec(CC)
|
p = prec(CC)
|
||||||
@ -132,7 +131,7 @@ function LinearAlgebra.eigvals(A::Nemo.acb_mat)
|
|||||||
|
|
||||||
λ = AcbVector(n, p)
|
λ = AcbVector(n, p)
|
||||||
b = ccall(
|
b = ccall(
|
||||||
(:acb_mat_eig_multiple, Nemo.libarb),
|
(:acb_mat_eig_multiple, libarb),
|
||||||
Cint,
|
Cint,
|
||||||
(Ptr{acb_struct}, Ref{acb_mat}, Ptr{acb_struct}, Ref{acb_mat}, Int),
|
(Ptr{acb_struct}, Ref{acb_mat}, Ptr{acb_struct}, Ref{acb_mat}, Int),
|
||||||
λ,
|
λ,
|
||||||
@ -158,5 +157,9 @@ function _count_multiplicites(evs)
|
|||||||
push!(λ_m, (evs[i], m))
|
push!(λ_m, (evs[i], m))
|
||||||
i += m
|
i += m
|
||||||
end
|
end
|
||||||
return sort(λ_m, lt=(a,b)->(real(first(a))<real(first(b))), rev=true)
|
return sort(
|
||||||
|
λ_m,
|
||||||
|
lt = (a, b) -> (real(first(a)) < real(first(b))),
|
||||||
|
rev = true,
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user