octave-maintainers
[Top][All Lists]
Advanced

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

log2 replacement


From: John W. Eaton
Subject: log2 replacement
Date: Tue, 29 Apr 2008 14:19:17 -0400

On 25-Apr-2008, Jaroslav Hajek wrote:

| hello,
| 
| please consider the attached changeset.
| The current log2 behaviour with two outputs (`[f, e] = log2(x)') is
| inconsistent with Matlab in a number of cases, (x = Inf, x = NaN) or
| just plain wrong (x = realmax). Also, on most of the systems the
| 2-output version can be mapped directly to frexp (a C89 function),
| which is probably what Matlab also does. I have implemented the
| single-output log2 as a mapper for octave_value (aka log, log10 etc),
| and the two-output version as an overload in liboctave/lo-mappers.cc
| with a replacement if frexp is not detected. The DEFUN is in
| DLD-FUNCTIONS rather than mappers.cc directly, because it is not a
| simple mapper and thus did not seem to fit "aesthetically" to
| mappers.cc (but that can be easily changed).
| 
| Note that the 2-output version is also extended beyond matlab
| behaviour for complex input - while matlab ignores the imaginary part
| (with a warning), this new version gives the result with f complex,
| satisfying 1/2 <= abs(f) < 1, e integer - because it makes good sense
| also for complex numbers.

With this patch, I see the following error with make check:

  src/DLD-FUNCTIONS/hex2num.cc ........................... PASS    2/2   
  src/DLD-FUNCTIONS/log2.cc .............................. PASS    0/2    FAIL 2
  src/DLD-FUNCTIONS/lookup.cc ............................ PASS   16/16  
  src/DLD-FUNCTIONS/lsode.cc ............................. PASS    5/5   
  src/DLD-FUNCTIONS/luinc.cc ............................. PASS    2/2   
  src/DLD-FUNCTIONS/matrix_type.cc ....................... PASS   51/51  
  src/DLD-FUNCTIONS/max.cc ............................... PASS   12/12  
  src/DLD-FUNCTIONS/qr.cc ................................ PASS   21/21  
  src/DLD-FUNCTIONS/quad.cc .............................. PASS    6/6   
  src/DLD-FUNCTIONS/rand.cc .............................. PASS   57/57  
  src/DLD-FUNCTIONS/regexp.cc ............................ PASS   81/81  
  src/DLD-FUNCTIONS/time.cc .............................. PASS   13/13  
  src/DLD-FUNCTIONS/tsearch.cc ........................... PASS    6/6   
  src/data.cc ............................................ PASS   98/98  
  src/mappers.cc ......................................... PASS    7/7   
  src/ov-fcn-handle.cc ...................................panic: Segmentation 
fault -- stopping myself...
make[2]: *** [check] Segmentation fault
make[2]: Leaving directory `/scratch/jwe/build/octave-tmp/test'
make[1]: *** [check] Error 2
make[1]: Leaving directory `/scratch/jwe/build/octave-tmp'
make: *** [check] Error 2

Does it work properly for you?

jwe


reply via email to

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