# HG changeset patch # User Jaroslav Hajek # Date 1239189383 -7200 # Node ID e0250e2b60ed4af469e0f4a11158dd9cc1230336 # Parent 10bed8fbec991f98fb540baaa3da3e6995d5edde optimize vander diff --git a/scripts/ChangeLog b/scripts/ChangeLog --- a/scripts/ChangeLog +++ b/scripts/ChangeLog @@ -1,3 +1,7 @@ +2009-04-08 Jaroslav Hajek + + * special-matrix/vander.m: Optimize. + 2009-04-07 Ben Abbott * plot/Makefile.in: Remove __gnuplot_default_font__.m from SOURCES. diff --git a/scripts/special-matrix/vander.m b/scripts/special-matrix/vander.m --- a/scripts/special-matrix/vander.m +++ b/scripts/special-matrix/vander.m @@ -1,5 +1,6 @@ ## Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, ## 2004, 2005, 2006, 2007, 2008, 2009 John W. Eaton +## Copyright (C) 2009 VZLU Prague ## ## This file is part of Octave. ## @@ -58,7 +59,14 @@ if (isvector (c)) n = length (c); - retval = (c(:) * ones (1, n)) .^ (ones (n, 1) * (n-1:-1:0)); + retval = zeros (n, n, class (c)); + ## avoiding many ^s appears to be faster for n >= 100. + d = 1; + c = c(:); + for i = n:-1:1 + retval(:,i) = d; + d = c .* d; + endfor else error ("vander: argument must be a vector"); endif