help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: comparing the magnitude order


From: Bård Skaflestad
Subject: Re: comparing the magnitude order
Date: Fri, 9 Sep 2011 12:02:07 +0200

On Fri, 2011-09-09 at 11:24 +0200, CdeMills wrote:
> Hello,
> 
> I would like to compare if two numbers are of the same order of magnitude. I
> implement this as
> magn =@(x, y) max (x, y)/min (x, y);
> 
> But there are redundancies: if x is > y, then the expression becomes x/y,
> else y/x. Is it possible to introduce tests inside function handle ?
> magn=@(x, y) if (x > y) x/y else y/x endif
> is accepted but doesn't return anything.

You can't (directly) have branches or assignments or other things that
affect flow of control or memory in an anonymous function constructed as
a single statement.  You can, however, achieve the desired effect by
some creative use of function handles.

For example you can, if you're inspired by functional languages, do
something like this

        f = { (@(x,y) x./y), (@(x,y) y./x) }
        magn = @(x,y) f{2 - (x > y)}(x, y)

Whether or not this is a good idea, readable or maintainable is largely
in the eye of the beholder.  Personally, I think I would just use your
original max()/min() expression.


Sincerely,
-- 
Bård Skaflestad <address@hidden>
SINTEF ICT, Applied Mathematics



reply via email to

[Prev in Thread] Current Thread [Next in Thread]