RosettaCodeData/Task/Dot-product/ANSI-BASIC/dot-product.basic
2026-04-30 12:34:36 -04:00

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