Octave and Freemat
Ben Abbott
bpabbott at mac.com
Wed Mar 5 03:11:26 CST 2008
On Mar 4, 2008, at 9:36 PM, Ben Abbott wrote:
>
> On Mar 4, 2008, at 8:27 PM, Ben Abbott wrote:
>
>>
>> On Mar 4, 2008, at 6:46 PM, Sebastien Loisel wrote:
>>
>>> Dear David,
>>>
>>> Thank you for your email.
>>>
>>> On Tue, Mar 4, 2008 at 5:44 PM, David Bateman <David.Bateman at motorola.com
>>> > wrote:
>>> f = find (p ./ max(p));
>>> p = p (f(1):end);
>>>
>>> Are you missing an abs maybe? Also, I hope you did your checking
>>> for nans and infs before you got there.
>>>
>>> --
>>> Sébastien Loisel
>>
>>
>> To respect Matlab an error should result when NaNs or Infs are
>> present.
>>
>> The abs shouldn't be necessary. In fact, if NaNs and Infs have
>> already be handled, why not
>>
>> f = find (p);
>> p = p(f(1):end);
>> n = numel (p)-1;
>> A = diag (ones (n-1, 1), -1);
>> A(1,:) = -p(2:n+1) ./ p(1);
>> z = eig (A);
>>
>> Ben
>
> ok, nix the simple solution.
>
> I checked Matlab, they apparently remove have some special handling
> of trailing zeros.
>
> >> p = [poly([3 3 3 3]), 0 0 0 0];
>
> >> abs(roots(p)-[0; 0; 0; 0; 3; 3; 3; 3])
>
> ans =
>
> 0
> 0
> 0
> 0
> 0.00051228
> 0.00051228
> 0.00051223
> 0.00051223
>
> >>
>
> What should be included is the check for Infs and NaNs. Beyond that
> we might add some tests for consistency with Matlab.
>
> How about the attached?
>
> <changeset-roots.txt>
>
I'm a bit slow, and missed to motive :-( ... I suppose the part below
is to catch something like roots ([realmin, realmax, realmax]) ?
> f = find (p ./ max(p));
> p = p (f(1):end);
Ben
More information about the Octave-maintainers
mailing list