home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-src.tgz / tar.out / fsf / octave / scripts / miscellaneous / etime.m < prev    next >
Text File  |  1996-09-28  |  2KB  |  61 lines

  1. # Copyright (C) 1994, 1995 John W. Eaton
  2. #
  3. # This file is part of Octave.
  4. #
  5. # Octave is free software; you can redistribute it and/or modify it
  6. # under the terms of the GNU General Public License as published by the
  7. # Free Software Foundation; either version 2, or (at your option) any
  8. # later version.
  9. #
  10. # Octave is distributed in the hope that it will be useful, but WITHOUT
  11. # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12. # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  13. # for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with Octave; see the file COPYING.  If not, write to the Free
  17. # Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  
  19. function secs = etime (t1, t0)
  20.  
  21. # usage: etime (t1, t0)
  22. #
  23. # Return the difference between t1 and t0 in seconds.  The arguments
  24. # are expected to be vectors in the form returned by clock ().
  25. #
  26. # See also: tic, toc, clock, cputime
  27.  
  28.   if (nargin != 2)
  29.     usage ("etime (t1, t0)");
  30.   endif
  31.  
  32.   if (is_vector (t1) && length (t1) == 6 && is_vector (t0) && length (t0) == 6)
  33.  
  34.     if (t1 (1) != t0 (1))
  35.       error ("etime: can't handle timings over year boundaries yet")
  36.     endif
  37.  
  38. # XXX FIXME XXX -- could check here to ensure that t1 and t0 really do
  39. # make sense as vectors returned from clock().
  40.  
  41.     days_in_months = [31, 28, 31, 30, 31, 30 31, 31, 30, 31, 30, 31];
  42.  
  43.     if (is_leap_year (t1 (1)))
  44.       days_in_months (2) = days_in_months (2) + 1;
  45.     endif
  46.  
  47.     d1 = sum (days_in_months (1:(t1 (2) - 1))) + t1 (3);
  48.     d0 = sum (days_in_months (1:(t0 (2) - 1))) + t0 (3);
  49.  
  50.     s1 = 86400 * d1 + 3600 * t1 (4) + 60 * t1 (5) + t1 (6);
  51.     s0 = 86400 * d0 + 3600 * t0 (4) + 60 * t0 (5) + t0 (6);
  52.  
  53.     secs = s1 - s0;
  54.  
  55.   else
  56.     error ("etime: args are not 6-element vectors");
  57.   endif
  58.  
  59.  
  60. endfunction
  61.