Quaternion type: Difference between revisions
Content added Content deleted
(→{{header|Julia}}: condensed code) |
|||
Line 2,789: | Line 2,789: | ||
convert{T}(::Type{Quaternion{T}}, x::Real) = |
convert{T}(::Type{Quaternion{T}}, x::Real) = |
||
Quaternion(convert(T,x), convert(T,0), convert(T,0), convert(T,0)) |
Quaternion(convert(T,x), convert(T,0), convert(T,0), convert(T,0)) |
||
convert{T}(::Type{Quaternion{T}}, z::Complex) = |
convert{T}(::Type{Quaternion{T}}, z::Complex) = |
||
Quaternion(convert(T,real(z)), convert(T,imag(z)), convert(T,0), convert(T,0)) |
Quaternion(convert(T,real(z)), convert(T,imag(z)), convert(T,0), convert(T,0)) |
||
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), |
||
Line 2,804: | Line 2,802: | ||
function show(io::IO, z::Quaternion) |
function show(io::IO, z::Quaternion) |
||
pm(x) = x < 0 ? " - $(-x)" : " + $x" |
|||
show(io, z.q0) |
|||
print(io, z.q0, pm(z.q1), "i", pm(z.q2), "j", pm(z.q3), "k") |
|||
i = z.q1 |
|||
if sign(i) == -1 |
|||
i = -i |
|||
print(io, " - ") |
|||
else |
|||
print(io, " + ") |
|||
end |
|||
show(io, i) |
|||
print(io, "i") |
|||
j = z.q2 |
|||
if sign(j) == -1 |
|||
j = -j |
|||
print(io, " - ") |
|||
else |
|||
print(io, " + ") |
|||
end |
|||
show(io, j) |
|||
print(io, "j") |
|||
k = z.q3 |
|||
if sign(k) == -1 |
|||
k = -k |
|||
print(io, " - ") |
|||
else |
|||
print(io, " + ") |
|||
end |
|||
show(io, k) |
|||
print(io, "k") |
|||
end |
end |
||