㈜컴퓨팅브릿지 bift basic fortran grammarcomputing-bridge.com/edu/02_fortran.pdf · layout...

35
B i F t ㈜컴퓨팅브릿지 Basic For tran grammar (Fortran 77) (Fortran 77) 김정한

Upload: lykiet

Post on 08-May-2018

228 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

B i F t㈜컴퓨팅브릿지

Basic Fortran grammar(Fortran 77)(Fortran 77)

김정한

Page 2: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

목표

-

Page 3: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

INDEX1 Fortran1. Fortran

Page 4: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

01. FortranB a s i c F o r t r a n g r a m m a r

Page 5: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Fortran

FORmula TRANslation

1950년대 후반 IBM에서 개발1950년대 후반 IBM에서 개발 가장 오래된 최초의 고급 언어(high level language)

1966 Fortran V (Fortran77)

국제표준 채택(1980 ISO) FORTRAN 77국제표준 채택(1980, ISO) FORTRAN 77

Fortran 90, Fortran 95, Fortran 2003

Page 6: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Fortran 언어의 특징

상호 호환성 컴퓨터의 기종에 관계없이 공통으로 사용

쉽고 간단한 문법과 명령어 단기간에 활용가능단기간에 활용가능 명령은 문장으로 표현, 문장은 실행문과 비실행문으로 구성

다양한 프로그램 라이브러리 지원다양한 프로그램 라이브러리 지원 많은 공개 소스 (legacy code)

활용 영역 많은 입‧출력을 요구하는 문제보다는 많은 양의 계산이 필요한 공

학 통계학 수학 리 경영과학 등에 널리 사용되 있다학, 통계학 수학, 그리고 경영과학 등에 널리 사용되고 있다

Software Inertia

Page 7: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Layout of FORTRAN program

The layout of FORTRAN program dates back to old 80 column punched cards, which were used for program input Comment field(c/*)

S b fi ld 1 5 l (1 99999) Statement number field : 1~5 column (1~99999) Continuation field (except 0/blank), Statement field Identification field : 73~80 columnIdentification field : 73 80 column

• No translation, memo/references …

1 2-5 6 7-72 73-80

Total=x_value+y_value

& +z_value

C Comment line.

9 9999 FORMAT(‘Answer =‘,I4)

Page 8: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Variable names

Must be at least one alphabetic character long, up to a maximum of 6 alphanumeric characters

M i h l h b i h Must start with an alphabetic character

Alphanumeric characters are : a-z,0-9 and the underscore ( ).

C i l l d h l l Capital letters are treated the same way as lower-case letters

Valid names Invalid names

X

THEDAY

X*Z

THE TIME

Min_cur

Time28

7YEARS

_no_way$

Page 9: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Basic data types

Type statement:<Data Type> <variable> [,<variable(s)>] integer age,grade …

Implicit statement Implicit double precision(a-h,o-z)

Implicit real (I,x-z)

Default Implicit variables. I to N integers!!

Types e.g.yp g

Real

Integer

X=5.0, y=3.0e2

i=20, j=-1

Complex

Logical

character

Z=(1.4,3.2) >>> 1.4+3.2i

Test=.TRUE. Tag=.False.

Char1=‘Hello’character Char1= Hello

Page 10: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Parameters

Parameters are constants, their value, once defined, can not be changed

Executable statement 보다 앞에 위치

REAL gamma,piINTEGER days

paraemter(days=365)parameter(gamma=1.4, pi=3.14)p g p

Page 11: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Assignment

<variable> = <value> | <variable>| <expression> Expressions follow the BODMAS precedence rule

d Operators +-,*,/ and ** Only round bracket

radius=2.5

y=z

test=value+loop-temp

l (4 0* i* di **3 0)/3 0volume=(4.0*pi*radius**3.0)/3.0

Page 12: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Relational expression

Logical return with True or False value Left to right order

Operator Math Meaning e.g.

LT < Less than A LTB.LT. < Less than A.LT.B

.LE. ≤ Less than or equal to A.LE.B

.EQ. = Equal to A.EQ.B

.NE. ≠ Not Equal to A.NE.B

.GT. > Greater than A.GT.B

GE ≥ Greater than or equal to A GE B.GE. ≥ Greater than or equal to A.GE.B

Page 13: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Logical expression

Complex conditions Order : .NOT. .AND. .OR. .EQV. .NEQV.

d 값만 가 .TRUE. and .FALSE. 값만 가능

Operator Meaning e.g. Results

.NOT. 부정 .NOT.A A가 참아면 거짓, 거짓이면 참

AND 논리곱 A AND B A B가 모두 참일때만 참 그 이외는 거짓.AND. 논리곱 A.AND.B A,B가 모두 참일때만 참, 그 이외는 거짓

.OR. 논리합 A.OR.B A,B가 모두 거짓일때만 거짓, 그 이외는 참

.EQV. 논리등가 A.EQV.B A,B가 모두 거짓이거나 모두 참일때 참

.NEQV. 논리비등가 A.NEQV.B A,B가 모두 참이거나 모두 거짓일때 거짓

Page 14: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Library function (1/2)

Name Meaning e.g.Mathematical expression

Si iSIN, COS, TAN

Sine,cosine,

tangentY=SIN(X)

SQRT 제곱근 Y SQRT(X)

xy sin

SQRT 제곱근 Y=SQRT(X)

EXP 지수 Y=EXP(X)

xy xey

ABS,IABS 절대값 Y=ABS(X) xy

ALOG 자연대수 Y=ALOG(X)

ALOG10 상용대수 Y=ALOG10(X)

xy ln

xy log상용대수 ( ) y g

Page 15: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Library function (2/2)

Name Meaning e.g. Mathematical expression

INT 실수 -> 정수 K=INT(X) 실수 X를 정수로 변환INT 실수 > 정수 K INT(X) 실수 X를 정수로 변환

REAL 정수 -> 실수 Y=REAL(J) 정수 J를 실수로 변환

FLOAT 정수 -> 실수 Y=FLOAT(J) 정수 J를 실수로 변환

DBLE 정수 -> 실수 Y=DLBE(J) 정수 J를 실수로 변환DBLE 정수 > 실수 Y DLBE(J) 정수 J를 실수로 변환

ICHAR 문자 -> 정수 K=ICHAR(C) 문자 C를 정수로 변환

CHAR 정수 -> 문자 C=CHAR(K) 정수 K를 문자로 변환

MOD 나머지 Y=MOD(X,Y) X를 Y로 나눈 나머지MOD 나머지 Y MOD(X,Y) X를 Y로 나눈 나머지

MAX (MIN) 최대(최소) j=MAX(i1,i2,i3) i1,i2,i3 중 최대값( 최소값)

Page 16: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Control structure

제어문을 사용한 제어 구조 분기구조(branches structure)

지정된 문번호로 실행을 이동• 지정된 문번호로 실행을 이동• 조건식의 결과에 따라 프로그램을 선택적으로 수행• IF문, GOTO문

순환구조(loops structure)• 프로그램의 일부분을 반복 실행하는 명령문

DO CONTINUE문 GOTO문과 IF문을 사용한 구조• DO~CONTINUE문, GOTO문과 IF문을 사용한 구조

기타 제어문STOP 주 프로그램에서 실행을 종료• STOP : 주 프로그램에서 실행을 종료

• CALL : 서브루틴 프로그램의 호출• RETURN : 서브루틴 실행을 종료

END 하나의 프로 램이나 서브루틴 프로 램을 끝냄• END : 하나의 프로그램이나 서브루틴 프로그램을 끝냄

Page 17: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

IF STATEMENT (1/2)

Block IF statement

IF(expression1) THEN{block1}

ELSE IF(expression2) THEN{block2}{block2}

ELSE{block3}

Logical IF statement

END IF

Logical IF statement

IF(expression) statementIF(expression) statement

Page 18: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

DO-loops

반복적으로 수행되는 문장 블록 제어

DO l b l i bl 1 2 3DO label,variable=e1,e2,e3{block of statement}

label CONTINUE

Label : 문장번호

label CONTINUE

Variable : 제어변수명(정수형변수나 실수형변수) e1:초기값, e2:최종값 (정수형,실수형 변수,상수,산술식 등)

값 양 나 e3:증분값 (양수나 음수)

Page 19: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Computed GO TO statement

여러방향의 선택

GO TO (label 1 , label 2 , … , label n) integer-expression

label 1, label2: 분기될 명령문의 문장번호 integer-expression : 정수형 수식 또는 정수변수g p

• integer-expression=1 이면 label1실행 (goto label1) • integer-expression=2 이면 label1실행 (goto label2)• integer expression 이 범위를 벗어나면 GOTO문의 다음문을 실행• integer-expression 이 범위를 벗어나면 GOTO문의 다음문을 실행

Page 20: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Array

FORTRAN의 배열

l breal a,b,cdimension a(100), b(10,10), c(2,3,4) oror real a(100), b(10,10),c(2,3,4)

배열을 구성하는 변수명의 하한값은 default가 1• V(c1:c2)로 선언가능 : c1은 차원의 하한값, c2는 차원의 상한값

Multi-dimensional array 7D까지 가능 C언어와의 배열구조 차이를 이해하는 것이 중요

Page 21: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

DATA 문 (1/2)

변수나 배열요소에 초기치 부여 지정문과 같은 효과를 가지며 다수의 초기치를 한줄로 부여

DATA nlist /clist/, nlist /clist/ …..

nlist : 변수명,배열명, clist : nlist에 기억시킬 숫자나 문자, 논리 상수 리스트

DATA문 사용의 규칙 DATA문은 선언문 뒤에, 최초의 실행문 보다 앞에 와야한다.DATA문은 선언문 뒤에, 최초의 실행문 보다 앞에 와야한다. nlist의 항목수는 clist의 항목수와 일치 : 일대일 대응

• clist의 type은 nlist항목의 type형태로 변환되어 입력된다. • nlist중의 어떤 항목의 형이 문자형이나 논리형인 경우는 clist도 같은

형이어야 한다.

Page 22: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

DATA 문 (2/2)

예제

A=10 5A=10.5B=21.3C=‘IN’DATA A/10 5/ B/21 3/ C/’IN’/ orDATA A/10.5/, B/21.3/, C/ IN / orDATA A,B,C/10.5, 21.3, ’IN’/

DIMENSION a(5)

DIMENSION b(10)

DIMENSION a(5)DATA a/1.0, 2.0, 3.0, 4.0, 5.0/

DIMENSION b(10)DATA b/5*12.0, 5*21.0/

DIMENSION d(5)DIMENSION d(5)DATA d(2), d(3), (d(i),i=4,5)/11.0, 22.0, 33.0, 44.0/

Page 23: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

부 프로그램(subprogram) (1/3)

Subprogram 반복되는 동일한 명령문들의 집단

별개의 프로그램 유닛으로 작성하여 호출

• 전체 프로그램의 간략화

다른 프로그램에서 공동으로 사용 가능• 다른 프로그램에서 공동으로 사용 가능

• 독립적 컴파일에 따른 에러의 수정이 쉽다

• 대규모 프로젝트에 적합(여러 사람의 참여 가능)대규모 프로젝트에 적합(여러 사람의 참여 가능)

• 무리한 subprogram의 사용은 코드의 성능저하를 가져올 수 있다.

subprogramsubroutine

function

library function

statement function

User defined function

function

Page 24: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

부 프로그램(subprogram) (2/3)

Subroutine & function

Subroutine FunctionSubroutine Function

호출 호출문(call) Function명에 의해 호출

인수 필요한 경우 사용 한개 이상의 인수 반드시 필요

처리된여러 인 에 실어

function명에 실어 단 한 개만을처리된결과

여러 인수에 실어 returnfunction명에 실어 단 한 개만을return

서브루틴명은 수식에 사용프로그램의 수식에서 변수처럼 사용

기타 불가 변수와 같이 이용할

수 없음

프로그램의 수식에서 변수처럼 사용가능

Page 25: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

부 프로그램(subprogram) (3/3)

문함수(statement function) 비교적 간단한 함수를 1개의 문장을 이용해서 정의

두개 이상의 문장으로 표현 불가

• 한 개의 단위 프로그램내에서만 사용가능

최초의 실행문 앞에 선언문보다는 뒤에 위치한다• 최초의 실행문 앞에, 선언문보다는 뒤에 위치한다.

• 문함수명을 변수나 배열로 사용 불가

• 비실행문으로 문번호를 가질 수 없음• 비실행문으로 문번호를 가질 수 없음

NAME(d1, d2, ….., dn) = expression …

Variable = NAME(a1, a2, …., an) 호출문

Page 26: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

COMMON 문 (1/2)

전역변수 자료전달 많은 개수의 인수목록을 단순화 할 수 있음

최초의 실행문보다 앞에 위치

Dimension문 대신에 배열을 선언할 수 있다.

Bl k( l b l d) 와 N d(l b l d) 문 Blank(unlabeled) 와 Named(labeled) common문

COMMON variable list CO O a ab e s

COMMON /common block name/ variable listCOMMON /common block name/ variable list

Page 27: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

COMMON 문 (2/2)

Blank common문 부프로그램에서 사용되는 가인수 사용불가

가변 기 배열 사용불가 가변크기 배열은 사용불가

Subroutine SUB(X,N,IM)

Named common문

COMMON A, B, N(10) , Z(IM)

Named common문 DATA문으로 초기치를 부여할 수 있다 문자형 데이터와 문자형 이외의 데이터는 하나의 공통블럭 안에서문자형 데이터와 문자형 이외의 데이터는 하나의 공통블럭 안에서

함께 사용 불가

REAL A BREAL A,BCHARACTER*10 WORDCOMMON /A1/A,B,WORD COMMON /A1/A,B /A2/WORD

Page 28: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

입/출력문 (1/4)

OPEN 파일 열기

OPEN(UNIT=n, FlLE=fname, FORM=frm, ACCESS=acc, STATUS=sta, RECL=rl, IOSTAT=ios, ERR=err)

• UNIT = 정수형 : 특정 장치에 의한 입/출력 (1~99)• FILE = 파일이름• FORM = Formatted, Unformatted(default)

• ACCESS = Sequential(default), DirectSTATUS New Old Scratch Unknown• STATUS = New, Old, Scratch, Unknown

• RECL = 각 레코드의 길이 (access = 'Direct')• IOSTAT = 에러코드 받는 변수OS 에러코드 받는 변수• ERR = 에러가 발생했을 때 수행할 line number

파일 닫기 : Close(UNIT=n) 파일 닫기 : Close(UNIT=n)

Page 29: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

입/출력문 (2/4)

I/O statements Line단위의 입출력

READ(UNIT=n,FMT=f,END=label,ERR=label) input data-list WRITE(UNIT=n,FMT=f,END=label,ERR=label) output data-list

• UNIT = 정수형 : 특정 장치에 의한 입/출력* : 컴파일러 지정 표준장치(키보드(5)/모니터(6))– * : 컴파일러 지정 표준장치(키보드(5)/모니터(6))

• FMT = 출력 형식– * : 자유형식에 의한 입/출력 데이터 사이 구분을 위해 컴마나 빈칸 : 자유형식에 의한 입/출력, 데이터 사이 구분을 위해 컴마나 빈칸

• Error및 파일끝부호(생략가능) – ERR : 실행중 오류발생시 지정된 문번호르 실행 이동실행중 류발생시 지정된 문번호 실행 이동– END : 입력파일의 마지막까지 다 읽은 경우 지정된 문번호로 이동

Page 30: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

입/출력문 (3/4)

Format (FMT)

Purpose Description

Integer Iw, Iw.m

RealDecimal Form Fw.d

E ti l F E dExponential Form Ew.d

Logical Lw

Character A AwCharacter A, Aw

Positioning

Horizontal nX

Tabbing Tc

Vertical /

Other Grouping r(...)

WRITE(*, '(I2, x, F5.2)') I, A

Page 31: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

입/출력문 (4/4)

Example

READ(*,*) A,B,C

READ(UNIT=5,FMT=*,ERR=50,END=70)A,B,C

READ * A B CREAD *, A,B,C

READ(5,10) A,B,C

10 FORMAT(1X 3I4)10 FORMAT(1X,3I4)

READ(5,’(1X,3I4)’) A,B,C

WRITE(*,*) A,B,C

WRITE(6,30) A+X,B+Y,C+Z

WRITE(6,*) ‘THE VALUE OF THE OUTPUT’, A,B,C

Page 32: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

FORMAT문 (1/2)

READ/WRITE와 함께 사용할 수 있는 비실행문

DATA ii /1 2 3 4/DATA ii /1, 2, 3, 4/

i1 = -10

i2 = 999i2 999

i3 = 111

a1 = 100.0

a2 = -9.99

a3 = 1.23e9

write(* 100) i1 i2 i3 (ii( j) j=1 4)write( ,100) i1,i2,i3,(ii( j),j=1,4)

100 format(i4,1x,i2,1x,i10.5,1x,4(i2,1x))

write(*,200) a1,a2,a3

200 format(f7.2,1x,f7.1,1x,e7.2)

Page 33: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

FORMAT문 (2/2)

문자형 변수 출력

character*20 A

A =‘format test’

write(*,100) A

100 format(a20)

줄바꿈 표시’/’ : 입/출력시 다음줄로 이동

100 format(a20)

줄바꿈 표시 / : 입/출력시 다음줄로 이동

write(*,400) (ii( j),j=1,4)

400 format(4(i2 /))

한칸 이동 ‘x’

400 format(4(i2,/))

한칸 이동

Page 34: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Using Library(1/2)

Library? 하나 이상의 Subroutine, Function들이 저장된 모음

다른 프로그램들과 링크

특정 계산에 최적화된 루틴

Libraries BLAS, GotoBLAS, ATLAS

LAPACK, FFTW

MKL, ACML, ESSL : (Vendor Library - BLAS, LAPACK, FFT)

LinkingLinking

Page 35: ㈜컴퓨팅브릿지 BiFt Basic Fortran grammarcomputing-bridge.com/edu/02_Fortran.pdf · Layout of FORTRAN program The layout of FORTRAN program dates back to old 80 column punched

Using Library(2/2)

Inverse Matrix (LAPACK)PROGRAM Inverse_Matrix

IMPLICIT NONE

INTEGER i,j,k,n,INFO

PARAMETER (n=2)

INTEGER IPIVOT(n)

DOUBLE PRECISION A(n,n), P(n,n), WORK(n)

A(1,1)=1.0d0;A(1,2)=1.0d0;A(2,1)=2.0d0;A(2,2)=3.0d0

P(1,1)=1.0d0;P(1,2)=0.0d0;P(2,1)=0.0d0;P(2,2)=1.0d0

PRINT *, 'Initial A ='

DO i=1,n

PRINT '(F4.1,x,F4.1)', (A(i,j), j=1,n)

ENDDO

! Factorization

CALL DGETRF(n, n, A, n, IPIVOT, INFO)

! Solve A^{-1}

CALL DGETRI(n, A, n, IPIVOT, WORK, n, INFO)

PRINT *, 'Inverse of A = '

DO i=1,n

PRINT '(F4.1,x,F4.1)', (A(i,j), j=1,n)

ENDDO

STOP

END