Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/18/84; site lsuc.UUCP
Path: utzoo!lsuc!msb
From: msb@lsuc.UUCP (Mark Brader)
Newsgroups: net.unix-wizards,net.lang
Subject: Re:  smart compilers
Message-ID: <230@lsuc.UUCP>
Date: Wed, 26-Dec-84 02:51:12 EST
Article-I.D.: lsuc.230
Posted: Wed Dec 26 02:51:12 1984
Date-Received: Wed, 26-Dec-84 03:52:09 EST
References: <6599@brl-tgr.ARPA> <979@opus.UUCP> <1146@ut-ngp.UUCP> <18397@lanl.ARPA> <2061@umcp-cs.UUCP>
Reply-To: msb@lsuc.UUCP (Mark Brader)
Organization: Law Society of Upper Canada, Toronto
Lines: 22
Summary: All examples given so far for that DO optimization are wrong

Ho hum, all of you are wrong.  The CORRECT optimization for:

	DO 100 I = 1 TO 10
	IF (Y .GT. 0) X(I) = SQRT(Y)
	100 CONTINUE

Is, in Ratfor syntax:

	IF (Y > 0) {
		TEMP = SQRT(Y)
		DO I = 1,10
			X(I) = TEMP
	}
	ELSE
		I = 11

(In some implementations the number 11 will be something else, most
likely 10, but leaving I unchanged is clearly wrong!)

Moral:  This is not only trickier than it looks, it's trickier than that!

Mark Brader