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=0.2 required=5.0 tests=BAYES_00,INVALID_MSGID, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,bcdac28207102750 X-Google-Attributes: gid103376,public From: "Clifford J. Nelson" Subject: Re: Ada95 speed Date: 1999/06/05 Message-ID: <37597BDA.9DA4D189@gte.net>#1/1 X-Deja-AN: 486086493 Distribution: world Content-Transfer-Encoding: 7bit References: <7jafeo$6ps@lotho.delphi.com> <7jb2b4$6eq$1@nnrp1.deja.com> X-Accept-Language: en Content-Type: text/plain; charset=us-ascii; x-mac-type="54455854"; x-mac-creator="4D4F5353" X-Abuse-Info: Otherwise we will be unable to process your complaint properly X-Complaints-To: abuse@gte.net X-Trace: /K4o4IjBssytS3B4f+vQVwPwWinRx84/d1gLBOdeAjUnGuA6A0a//ZPiZ5+2SKP/eeC+Y2Zvau3Y!BknQUXqy1XCHvmJUrrzgexF0wl5bPkNfERrQV+8KxqpbhbNcze+Cdy2H MIME-Version: 1.0 NNTP-Posting-Date: Sat, 05 Jun 1999 18:41:53 GMT Reply-To: cnelson9@gte.net Newsgroups: comp.lang.ada Date: 1999-06-05T00:00:00+00:00 List-Id: I could have answered my own questions if I had had the patience. a) Is Ada95 slow in order to be safe? No. It's fast even when it tries to be safe. b) Is GNAT-for-the-Mac slow? CodeBuilder 1.1? No. It's fast. But, the operating systems for low end computers in 1999 are awkward to program in. More so than fifteen years ago, especially for graphics. Here are timing tests in Mathematica and Ada95. Mma Version 3.0.1 gives 0.1 seconds. GNAT Ada95 gives 0.066 seconds. See: http://forum.swarthmore.edu/epigone/geometry-research/brydilyum In[1]:= < len then T := T + X(XJ - len ) * Y(J); else T := T + X(XJ) * Y(J); end if; end loop; T := T / D; Z(I) := T; TT := TT + T; end loop; Z(len) := -TT; return Z; end "*"; pragma inline("*"); function "/" (X : bnumber; Y : bnumber) return bnumber is T : real := 0.0; len : constant integer := X'length; TL : constant real := real(-len); Z,W : bnumber(1..len); begin for I in 1 .. len - 1 loop Z(I) := Y((2 * I) mod len); end loop; Z(len) := Y(len); if (len > 3) then W(len) := Y(len); for I in 3..len-1 loop for J in 1.. len-1 loop W(J) := Y((J * I) mod len); end loop; Z := W * Z; end loop; end if; for J in 1..len loop T := T + Y((len) + 1 - J) * Z(J) ; end loop; for I in 1..len loop Z(I) := TL * Z(I) / T; end loop; Z := X * Z; return Z; end "/"; pragma inline("/"); function "abs" (X : bnumber) return real is T : real := 0.0; begin for I in X'range loop T := X(I)*X(I) +T; end loop; return sqrt(T/2.0); end "abs"; function abssq (X : bnumber) return real is T : real := 0.0; begin for I in X'range loop T := X(I)*X(I) +T; end loop; return T/2.0; end abssq; function vectordistance (X : bnumber) return real is T : real := 0.0; begin for I in X'range loop T := (abs(X(I))) +T; end loop; return (T/2.0); end vectordistance; function uni(val : real; ival,length : integer) return bnumber is Y : bnumber(1..length); begin for I in 1..ival-1 loop Y(I) := val; end loop; Y(ival) := real(- (ival - 1)) * val; for I in ival+1..length loop Y(I) := 0.0; end loop; return Y; end uni; pragma inline(uni); function tri(x : integer) return real is begin return sqrt(real((x * (x - 1))/2)); end tri; pragma inline(tri); function ptos(X : coords) return bnumber is L : constant integer := X'length +1; T : bnumber(1..L); begin T := uni(X(1),2,L); for I in 3..L loop T := T + uni(X(I-1)/tri(I),I,L); end loop; return T; end ptos; pragma inline("abs"); pragma inline(vectordistance); pragma inline(ptos); end bnumbers; with Ada.Numerics.Generic_Elementary_Functions; with bnumbers; package realfunctions is new Ada.Numerics.Generic_Elementary_Functions (bnumbers.real);