tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
16
Task/Quaternion-type/Ada/quaternion-type-1.ada
Normal file
16
Task/Quaternion-type/Ada/quaternion-type-1.ada
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
generic
|
||||
type Real is digits <>;
|
||||
package Quaternions is
|
||||
type Quaternion is record
|
||||
A, B, C, D : Real;
|
||||
end record;
|
||||
function "abs" (Left : Quaternion) return Real;
|
||||
function Conj (Left : Quaternion) return Quaternion;
|
||||
function "-" (Left : Quaternion) return Quaternion;
|
||||
function "+" (Left, Right : Quaternion) return Quaternion;
|
||||
function "-" (Left, Right : Quaternion) return Quaternion;
|
||||
function "*" (Left : Quaternion; Right : Real) return Quaternion;
|
||||
function "*" (Left : Real; Right : Quaternion) return Quaternion;
|
||||
function "*" (Left, Right : Quaternion) return Quaternion;
|
||||
function Image (Left : Quaternion) return String;
|
||||
end Quaternions;
|
||||
59
Task/Quaternion-type/Ada/quaternion-type-2.ada
Normal file
59
Task/Quaternion-type/Ada/quaternion-type-2.ada
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
with Ada.Numerics.Generic_Elementary_Functions;
|
||||
package body Quaternions is
|
||||
package Elementary_Functions is
|
||||
new Ada.Numerics.Generic_Elementary_Functions (Real);
|
||||
use Elementary_Functions;
|
||||
function "abs" (Left : Quaternion) return Real is
|
||||
begin
|
||||
return Sqrt (Left.A**2 + Left.B**2 + Left.C**2 + Left.D**2);
|
||||
end "abs";
|
||||
function Conj (Left : Quaternion) return Quaternion is
|
||||
begin
|
||||
return (A => Left.A, B => -Left.B, C => -Left.C, D => -Left.D);
|
||||
end Conj;
|
||||
function "-" (Left : Quaternion) return Quaternion is
|
||||
begin
|
||||
return (A => -Left.A, B => -Left.B, C => -Left.C, D => -Left.D);
|
||||
end "-";
|
||||
function "+" (Left, Right : Quaternion) return Quaternion is
|
||||
begin
|
||||
return
|
||||
( A => Left.A + Right.A, B => Left.B + Right.B,
|
||||
C => Left.C + Right.C, D => Left.D + Right.D
|
||||
);
|
||||
end "+";
|
||||
function "-" (Left, Right : Quaternion) return Quaternion is
|
||||
begin
|
||||
return
|
||||
( A => Left.A - Right.A, B => Left.B - Right.B,
|
||||
C => Left.C - Right.C, D => Left.D - Right.D
|
||||
);
|
||||
end "-";
|
||||
function "*" (Left : Quaternion; Right : Real) return Quaternion is
|
||||
begin
|
||||
return
|
||||
( A => Left.A * Right, B => Left.B * Right,
|
||||
C => Left.C * Right, D => Left.D * Right
|
||||
);
|
||||
end "*";
|
||||
function "*" (Left : Real; Right : Quaternion) return Quaternion is
|
||||
begin
|
||||
return Right * Left;
|
||||
end "*";
|
||||
function "*" (Left, Right : Quaternion) return Quaternion is
|
||||
begin
|
||||
return
|
||||
( A => Left.A * Right.A - Left.B * Right.B - Left.C * Right.C - Left.D * Right.D,
|
||||
B => Left.A * Right.B + Left.B * Right.A + Left.C * Right.D - Left.D * Right.C,
|
||||
C => Left.A * Right.C - Left.B * Right.D + Left.C * Right.A + Left.D * Right.B,
|
||||
D => Left.A * Right.D + Left.B * Right.C - Left.C * Right.B + Left.D * Right.A
|
||||
);
|
||||
end "*";
|
||||
function Image (Left : Quaternion) return String is
|
||||
begin
|
||||
return Real'Image (Left.A) & " +" &
|
||||
Real'Image (Left.B) & "i +" &
|
||||
Real'Image (Left.C) & "j +" &
|
||||
Real'Image (Left.D) & "k";
|
||||
end Image;
|
||||
end Quaternions;
|
||||
26
Task/Quaternion-type/Ada/quaternion-type-3.ada
Normal file
26
Task/Quaternion-type/Ada/quaternion-type-3.ada
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
with Quaternions;
|
||||
procedure Test_Quaternion is
|
||||
package Float_Quaternion is new Quaternions (Float);
|
||||
use Float_Quaternion;
|
||||
q : Quaternion := (1.0, 2.0, 3.0, 4.0);
|
||||
q1 : Quaternion := (2.0, 3.0, 4.0, 5.0);
|
||||
q2 : Quaternion := (3.0, 4.0, 5.0, 6.0);
|
||||
r : Float := 7.0;
|
||||
begin
|
||||
Put_Line ("q = " & Image (q));
|
||||
Put_Line ("q1 = " & Image (q1));
|
||||
Put_Line ("q2 = " & Image (q2));
|
||||
Put_Line ("r =" & Float'Image (r));
|
||||
Put_Line ("abs q =" & Float'Image (abs q));
|
||||
Put_Line ("abs q1 =" & Float' Image (abs q1));
|
||||
Put_Line ("abs q2 =" & Float' Image (abs q2));
|
||||
Put_Line ("-q = " & Image (-q));
|
||||
Put_Line ("conj q = " & Image (Conj (q)));
|
||||
Put_Line ("q1 + q2 = " & Image (q1 + q2));
|
||||
Put_Line ("q2 + q1 = " & Image (q2 + q1));
|
||||
Put_Line ("q * r = " & Image (q * r));
|
||||
Put_Line ("r * q = " & Image (r * q));
|
||||
Put_Line ("q1 * q2 = " & Image (q1 * q2));
|
||||
Put_Line ("q2 * q1 = " & Image (q2 * q1));
|
||||
end Test_Quaternion;
|
||||
Loading…
Add table
Add a link
Reference in a new issue