From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=BAYES_00,MAILING_LIST_MULTI autolearn=unavailable autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,a00006d3c4735d70 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2004-01-27 12:56:38 PST Path: archiver1.google.com!news2.google.com!news.maxwell.syr.edu!news.tele.dk!news.tele.dk!small.news.tele.dk!proxad.net!usenet-fr.net!enst.fr!melchior!cuivre.fr.eu.org!melchior.frmug.org!not-for-mail From: "Alexandre E. Kopilovitch" Newsgroups: comp.lang.ada Subject: Re: In-Out Parameters for functions Date: Tue, 27 Jan 2004 23:48:58 +0300 (MSK) Organization: Cuivre, Argent, Or Message-ID: References: NNTP-Posting-Host: lovelace.ada-france.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: melchior.cuivre.fr.eu.org 1075236553 32785 80.67.180.195 (27 Jan 2004 20:49:13 GMT) X-Complaints-To: usenet@melchior.cuivre.fr.eu.org NNTP-Posting-Date: Tue, 27 Jan 2004 20:49:13 +0000 (UTC) To: comp.lang.ada@ada-france.org Return-Path: In-Reply-To: ; from Stephen Leake at 27 Jan 2004 02:34:06 -0500 X-Mailer: Mail/@ [v2.44 MSDOS] X-Virus-Scanned: by amavisd-new-20030616-p5 (Debian) at ada-france.org X-BeenThere: comp.lang.ada@ada-france.org X-Mailman-Version: 2.1.3 Precedence: list List-Id: Gateway to the comp.lang.ada Usenet newsgroup List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Xref: archiver1.google.com comp.lang.ada:4934 Date: 2004-01-27T23:48:58+03:00 Stephen Leake wrote: > > Look at this formulae: > > > > F(A) + G(A); > > > > If F is permitted to change value of A then the result of the formulae may > > depend on order of computation. And this is obviously dangerous, because the > > formulae looks as typical mathematical expression, where this effect usually > > is not anticipated. > > Hmm. Let F be Sqrt (Ada.Numerics.Float_Random.Random), and G be > Ada.Numerics.Float_Random.Random. Then we see that Ada _requires_ the > behavior you are describing. So it's clearly a Good Thing :). "Random" is very special case, in which an intention is quite opposite to what is common in normal "regular" circumstances. In "regular" circumstances we want the same result for the same input data and we are in trouble when this does not happen for any reason (for example, after moving to another compiler). But when we use Random we want and expect some diversity of the results (perhaps intermediate results), and the changes produced by the effect mentioned above not necessary will defeat our purpose. Anyway, if you use Random for some stable results you should always be very careful with all computations as well as with mathematical background for them; so in such a case this effect is just a minor (and easy) detail among various issues. Alexander Kopilovitch aek@vib.usr.pu.ru Saint-Petersburg Russia