Vector products: Difference between revisions

Line 4,305:
a ∙ (b ⨉ c) = 6
a ⨉ (b ⨉ c) = (-267, 204, -3)</pre>
=={{header|Simula}}==
<lang simula>BEGIN
CLASS VECTOR(I,J,K); REAL I,J,K;;
REAL PROCEDURE DOTPRODUCT(A,B); REF(VECTOR) A,B;
DOTPRODUCT := A.I*B.I+A.J*B.J+A.K*B.K;
REF(VECTOR) PROCEDURE CROSSPRODUCT(A,B); REF(VECTOR) A,B;
CROSSPRODUCT :- NEW VECTOR(A.J*B.K - A.K*B.J,
A.K*B.I - A.I*B.K,
A.I*B.J - A.J*B.I);
REAL PROCEDURE SCALARTRIPLEPRODUCT(A,B,C); REF(VECTOR) A,B,C;
SCALARTRIPLEPRODUCT := DOTPRODUCT(A,CROSSPRODUCT(B,C));
REF(VECTOR) PROCEDURE VECTORTRIPLEPRODUCT(A,B,C); REF(VECTOR) A,B,C;
VECTORTRIPLEPRODUCT :- CROSSPRODUCT(A,CROSSPRODUCT(B,C));
PROCEDURE OUTR(X); REAL X;
OUTFIX(X,6,0);
 
PROCEDURE OUTVECTOR(A); REF(VECTOR) A;
BEGIN
OUTTEXT("("); OUTR(A.I);
OUTTEXT(", "); OUTR(A.J);
OUTTEXT(", "); OUTR(A.K); OUTTEXT(")");
END;
BEGIN
REF(VECTOR) A,B,C;
 
A :- NEW VECTOR(3, 4, 5);
B :- NEW VECTOR(4, 3, 5);
C :- NEW VECTOR(-5, -12, -13);
OUTTEXT("A = "); OUTVECTOR(A);
OUTIMAGE;
OUTTEXT("B = "); OUTVECTOR(B);
OUTIMAGE;
OUTTEXT("C = "); OUTVECTOR(C);
OUTIMAGE;
OUTTEXT("A . B = "); OUTR(DOTPRODUCT(A,B));
OUTIMAGE;
OUTTEXT("A X B = "); OUTVECTOR(CROSSPRODUCT(A,B));
OUTIMAGE;
OUTTEXT("A . (B X C) = "); OUTR(SCALARTRIPLEPRODUCT(A,B,C));
OUTIMAGE;
OUTTEXT("A X (B X C) = "); OUTVECTOR(VECTORTRIPLEPRODUCT(A,B,C));
OUTIMAGE;
END;
END;</lang>
{{out}}
<pre>A = (3.000000, 4.000000, 5.000000)
B = (4.000000, 3.000000, 5.000000)
C = (-5.000000, -12.000000, -13.000000)
A . B = 49.000000
A X B = (5.000000, 5.000000, -7.000000)
A . (B X C) = 6.000000
A X (B X C) = (-267.000000, 204.000000, -3.000000)
</pre>
 
=={{header|Stata}}==
Anonymous user