comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Does Ada need elemental functions to make it suitable for scientific work?
Date: Tue, 10 Jul 2012 11:50:38 +0200
Date: 2012-07-10T11:50:38+02:00	[thread overview]
Message-ID: <jrbwa0ls424r.1vu7ibic7olo4$.dlg@40tude.net> (raw)
In-Reply-To: jtgs6g$833$1@speranza.aioe.org

On Tue, 10 Jul 2012 04:21:17 -0500, Nasser M. Abbasi wrote:

> On 7/10/2012 4:07 AM, Dmitry A. Kazakov wrote:
>> On Tue, 10 Jul 2012 03:39:58 -0500, Nasser M. Abbasi wrote:
>>
>>> That is a start. But not enough by any means. All functions should be
>>> vectorized.
>>
>> It is ill-defined. E.g. exp(A), where A is a matrix. Is exp(A) a matrix of
>> exponents or exponent matrix?

[...]

> Just like when I read a paper, I first look for the definitions
> of symbols and terms used by the author.

Exactly. This is how you define it, it is not how LaTeX or TeX does. Since
there is no unambiguous semantics of f(), the language shall not introduce
them.

If you want scalar f() to apply to a matrix in some certain way, just
define that in Ada. You can even do it in generic way:

1. Using generics:

generic
   with function Scalar_F (X : Float) return Float;
function Generic_Vector_F (X : Vector) return Vector;

function Generic_Vector_F (X : Vector) return Vector is
begin
   return Result : Vector (X'Range) do
      for I in X'Range loop
         Result (I) := Scalar_F (X (I));
      end loop;
   end return;
end Generic_Vector_F;
 
function Sin is new Generic_Vector_F (Sin);
function Cos is new Generic_Vector_F (Cos);
...
-------------------------------------------------------------
2. Using functional composition:

function "*"
   (  F : not null access function (X : Float) return Float;
      X : Vector
   )  return Vector is
begin
   return Result : Vector (X'Range) do
      for I in X'Range loop
         Result (I) := F (X (I));
      end loop;
   end return;
end "*";

Used as:

sin'Access * V  -- Applies sin to V

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  parent reply	other threads:[~2012-07-10  9:50 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-09 23:27 Does Ada need elemental functions to make it suitable for scientific work? Nasser M. Abbasi
     [not found] ` <d78nv7dhf88bqv7hrd9eft231a4h2scs10@invalid.netcom.com>
2012-07-10  4:22   ` Nasser M. Abbasi
2012-07-10 14:26     ` Marco
2012-07-10  4:24 ` gautier_niouzes
2012-07-10  5:22   ` Ada novice
2012-07-10  7:27     ` Dmitry A. Kazakov
2012-07-10  8:06     ` gautier_niouzes
     [not found]     ` <637de084-0e71-4077-a1c5-fc4200cad3cf@googlegroups.com>
2012-07-10  8:39       ` Nasser M. Abbasi
2012-07-10  8:58         ` Ada novice
2012-07-10  9:07         ` Dmitry A. Kazakov
2012-07-10  9:21           ` Nasser M. Abbasi
2012-07-10  9:26             ` Nasser M. Abbasi
2012-07-10  9:50             ` Dmitry A. Kazakov [this message]
2012-07-20  1:56             ` Randy Brukardt
2012-07-20 21:49               ` Adam Beneschan
2012-07-12  0:31           ` robin.vowels
2012-07-12  7:12             ` Dmitry A. Kazakov
2012-07-29 13:39               ` Robin Vowels
2012-07-29 14:22                 ` Dmitry A. Kazakov
2012-07-29 20:54                   ` glen herrmannsfeldt
     [not found]                     ` <apib1897s56dkultqmfl3emvk1os3tfdak@invalid.netcom.com>
2012-07-30  4:15                       ` glen herrmannsfeldt
     [not found]                         ` <nfhd181tv9u87mcqfb7rgd8lm48ihr9f4r@invalid.netcom.com>
2012-07-31  8:53                           ` MATRIX MULTIPLICATION Robin Vowels
2012-07-31  9:05                             ` Robin Vowels
2012-07-30  0:49                   ` Does Ada need elemental functions to make it suitable for scientific work? Robin Vowels
2012-07-12  0:22         ` robin.vowels
2012-07-20  1:51         ` Randy Brukardt
2012-07-29 13:53           ` Robin Vowels
2012-07-29 15:51             ` J-P. Rosen
2012-07-29 16:07               ` Dmitry A. Kazakov
2012-07-29 20:30                 ` Simon Wright
2012-07-29 20:59                   ` glen herrmannsfeldt
2012-07-29 21:44                   ` J-P. Rosen
2012-07-29 22:54                     ` Simon Wright
2012-07-30  0:53               ` Robin Vowels
2012-07-30  2:20               ` Shmuel Metz
2012-07-10 12:46       ` Brian Drummond
2012-07-10 11:06 ` Simon Wright
2012-07-10 11:59 ` Georg Bauhaus
2012-07-10 12:20 ` Brian Drummond
2012-07-10 19:52 ` Ada novice
2012-07-11  8:41   ` gautier_niouzes
2012-07-11  9:42     ` Ken Thomas
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox