Quaternion type: Difference between revisions
Content added Content deleted
(→{{header|Julia}}: condensed code) |
(→{{header|Julia}}: more cleanup) |
||
Line 2,786: | Line 2,786: | ||
q3::T |
q3::T |
||
end |
end |
||
Quaternion{A<:Real,B<:Real,C<:Real,D<:Real}(q0::A,q1::B,q2::C,q3::D) = |
|||
Quaternion(promote(q0,q1,q2,q3)...) |
|||
convert{T}(::Type{Quaternion{T}}, x::Real) = |
convert{T}(::Type{Quaternion{T}}, x::Real) = |
||
Quaternion(convert(T,x), |
Quaternion(convert(T,x), zero(T), zero(T), zero(T)) |
||
convert{T}(::Type{Quaternion{T}}, z::Complex) = |
convert{T}(::Type{Quaternion{T}}, z::Complex) = |
||
Quaternion(convert(T,real(z)), convert(T,imag(z)), |
Quaternion(convert(T,real(z)), convert(T,imag(z)), zero(T), zero(T)) |
||
convert{T}(::Type{Quaternion{T}}, z::Quaternion) = |
convert{T}(::Type{Quaternion{T}}, z::Quaternion) = |
||
Quaternion(convert(T,z.q0), convert(T,z.q1), |
Quaternion(convert(T,z.q0), convert(T,z.q1), convert(T,z.q2), convert(T,z.q3)) |
||
convert(T,z.q2), convert(T,z.q3)) |
|||
promote_rule{T,S}(::Type{Complex{T}}, ::Type{Quaternion{S}}) = |
promote_rule{T,S}(::Type{Complex{T}}, ::Type{Quaternion{S}}) = Quaternion{promote_type(T,S)} |
||
Quaternion{promote_type(T,S)} |
|||
promote_rule{S}(::Type{Bool}, ::Type{Quaternion{S}}) = Quaternion{S} |
promote_rule{S}(::Type{Bool}, ::Type{Quaternion{S}}) = Quaternion{S} |
||
promote_rule{T<:Real,S}(::Type{T}, ::Type{Quaternion{S}}) = |
promote_rule{T<:Real,S}(::Type{T}, ::Type{Quaternion{S}}) = Quaternion{promote_type(T,S)} |
||
promote_rule{T,S}(::Type{Quaternion{T}}, ::Type{Quaternion{S}}) = Quaternion{promote_type(T,S)} |
|||
function show(io::IO, z::Quaternion) |
function show(io::IO, z::Quaternion) |