45 lines
1 KiB
Text
45 lines
1 KiB
Text
100 REM Dot product
|
|
110 DECLARE EXTERNAL FUNCTION DotProduct
|
|
120 OPTION BASE 0
|
|
130 DIM Zero3D(2), X(2), Y(2), Z(2), Q(2), R(2) ! some example vectors
|
|
140 LET Zero3D(0) = 0
|
|
150 LET Zero3D(1) = 0
|
|
160 LET Zero3D(2) = 0
|
|
170 !
|
|
180 LET X(0) = 1
|
|
190 LET X(1) = 0
|
|
200 LET X(2) = 0
|
|
210 !
|
|
220 LET Y(0) = 0
|
|
230 LET Y(1) = 1
|
|
240 LET Y(2) = 0
|
|
250 !
|
|
260 LET Z(0) = 0
|
|
270 LET Z(1) = 0
|
|
280 LET Z(2) = 1
|
|
290 !
|
|
300 LET Q(0) = 1
|
|
310 LET Q(1) = 1
|
|
320 LET Q(2) = 3.14159
|
|
330 !
|
|
340 LET R(0) = -1
|
|
350 LET R(1) = 2.618033989
|
|
360 LET R(2) = 3
|
|
370 !
|
|
380 PRINT " Q dot R ="; DotProduct(Q, R)
|
|
390 PRINT " Zero3D dot X ="; DotProduct(Zero3D, X)
|
|
400 PRINT " Z dot Z ="; DotProduct(Z, Z)
|
|
410 PRINT " Y dot Z ="; DotProduct(Y, Z)
|
|
420 END
|
|
430 !
|
|
440 EXTERNAL FUNCTION DotProduct(A(), B())
|
|
450 IF UBOUND(A) <> UBOUND(B) THEN
|
|
460 PRINT "Sizes of arrays should be equal."
|
|
470 STOP
|
|
480 END IF
|
|
490 LET DP = 0
|
|
500 FOR I = 0 TO UBOUND(A)
|
|
510 LET DP = DP + (A(I) * B(I))
|
|
520 NEXT I
|
|
530 LET DotProduct = DP
|
|
540 END FUNCTION
|