PROGRAM GRAM_SCHMIDT
IMPLICIT NONE
INTEGER, PARAMETER :: N = 3
DOUBLE PRECISION :: A(N,N), Q(N,N), R(N,N)
INTEGER :: I, J, K
! Initialize the given vectors a1, a2, a3
DATA A /1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0/
! Gram-Schmidt process
DO K = 1, N
Q(:,K) = A(:,K)
DO I = 1, K-1
R(I,K) = DOT_PRODUCT(Q(:,I), A(:,K))
Q(:,K) = Q(:,K) - R(I,K) * Q(:,I)
END DO
R(K,K) = SQRT(DOT_PRODUCT(Q(:,K), Q(:,K)))
Q(:,K) = Q(:,K) / R(K,K)
END DO
! Output the orthonormal vectors
PRINT *, 'Orthonormal vectors:'
DO I = 1, N
PRINT *, 'q', I, ':', Q(:,I)
END DO
END PROGRAM GRAM_SCHMIDT
UFJPR1JBTSBHUkFNX1NDSE1JRFQKICAgICAgSU1QTElDSVQgTk9ORQogICAgICBJTlRFR0VSLCBQQVJBTUVURVIgOjogTiA9IDMKICAgICAgRE9VQkxFIFBSRUNJU0lPTiA6OiBBKE4sTiksIFEoTixOKSwgUihOLE4pCiAgICAgIElOVEVHRVIgOjogSSwgSiwgSwogICAgICAKICAgICAgISBJbml0aWFsaXplIHRoZSBnaXZlbiB2ZWN0b3JzIGExLCBhMiwgYTMKICAgICAgREFUQSBBIC8xLjAsIDEuMCwgMS4wLCAxLjAsIDEuMCwgMC4wLCAxLjAsIDAuMCwgMS4wLwogICAgICAKICAgICAgISBHcmFtLVNjaG1pZHQgcHJvY2VzcwogICAgICBETyBLID0gMSwgTgogICAgICAgICAgUSg6LEspID0gQSg6LEspCiAgICAgICAgICBETyBJID0gMSwgSy0xCiAgICAgICAgICAgICAgUihJLEspID0gRE9UX1BST0RVQ1QoUSg6LEkpLCBBKDosSykpCiAgICAgICAgICAgICAgUSg6LEspID0gUSg6LEspIC0gUihJLEspICogUSg6LEkpCiAgICAgICAgICBFTkQgRE8KICAgICAgICAgIFIoSyxLKSA9IFNRUlQoRE9UX1BST0RVQ1QoUSg6LEspLCBRKDosSykpKQogICAgICAgICAgUSg6LEspID0gUSg6LEspIC8gUihLLEspCiAgICAgIEVORCBETwogICAgICAKICAgICAgISBPdXRwdXQgdGhlIG9ydGhvbm9ybWFsIHZlY3RvcnMKICAgICAgUFJJTlQgKiwgJ09ydGhvbm9ybWFsIHZlY3RvcnM6JwogICAgICBETyBJID0gMSwgTgogICAgICAgICAgUFJJTlQgKiwgJ3EnLCBJLCAnOicsIFEoOixJKQogICAgICBFTkQgRE8KICAgICAgCiAgICAgIEVORCBQUk9HUkFNIEdSQU1fU0NITUlEVCA=