octave-bug-tracker
[Top][All Lists]
Advanced

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

[Octave-bug-tracker] [bug #31974] Interpreter fails to create complex nu


From: David Bateman
Subject: [Octave-bug-tracker] [bug #31974] Interpreter fails to create complex numbers with Inf complex parts
Date: Wed, 29 Dec 2010 23:11:29 +0000
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/2009091010 Iceweasel/3.0.14 (Debian-3.0.14-1)

Follow-up Comment #8, bug #31974 (project octave):

I had a look at coding this as it seemed to me that everything could be
treated in the function

oct-parse.yy (static tree_expression * fold (tree_binary_expression *))

but the problem is harder than I thought.. We need to treat not just "Inf *
j" but also "Inf * 1j" as the parser treats the first as two identifiers and
the second as an identifier times a constant. However identifier can be
overloaded by user functions and variables, so

Inf = pi;
Inf * j

should return "0 + pi * j" so a simple test of the identifier in the parser
can work. A solution for the above I looked at however is stymied by the case

for i = 1 : 10
  d(i) = Inf * j;
  Inf = pi;'t
endfor

as d(1) should be "0 + Inf * j" but d(2:10) should be "0 + pi * j".

Also another test case for matlab is

x = Inf;
x * j

Does this return "0 + j"  or "NaN + j"? And what about

j = Complex (0, 1);
Inf * j

does it return "0 + j" or "NaN + j"? And finally what about if you create a
user function

function y = fcn ()
  y = Inf;
end

and then run

fcn * j

does it return "0 + j" or "NaN + j"? If the above three cases all return "0 +
j" then the problem should be treated in ov.cc (do_binary_op) rather then in
the parser and the problems above would go away.

D.


    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?31974>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/




reply via email to

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