From owner-bug-octave at bevo dot che dot wisc dot edu Wed Dec 18 21:35:39 1996 Subject: octave-2.0 bug: (unary -) vector From: "John W. Eaton" To: jcardoso at inescn dot pt Cc: bug-octave at bevo dot che dot wisc dot edu Date: Wed, 18 Dec 1996 21:34:56 -0600 On 18-Dec-1996, Joao Cardoso wrote: : Perhaps the subject title is not well choosen, but the example is: : : Octave, version 2.0 (i486-pc-sco3.2v4.0). : Copyright (C) 1996 John W. Eaton. : This is free software with ABSOLUTELY NO WARRANTY. : For details, type `warranty'. : : octave:1> x=-5:5 : x = : : -5 -4 -3 -2 -1 0 1 2 3 4 5 : : octave:2> -x : error: octave_base_value::uminus(): wrong type argument `string' : error: evaluating unary operator `-' near line 2, column 1 : error: evaluating assignment expression near line 2, column 1 Please try the following patch. It also fixes a similar problem for `operator !'. Thanks, jwe Index: liboctave/Range.h =================================================================== RCS file: /home/jwe/src/master/octave/liboctave/Range.h,v retrieving revision 1.14 diff -c -r1.14 Range.h *** Range.h 1996/10/12 17:52:55 1.14 --- Range.h 1996/12/19 03:31:37 *************** *** 85,90 **** --- 85,92 ---- int nelem_internal (void) const; }; + extern Range operator - (const Range& r); + #endif /* Index: liboctave/Range.cc =================================================================== RCS file: /home/jwe/src/master/octave/liboctave/Range.cc,v retrieving revision 1.19 diff -c -r1.19 Range.cc *** Range.cc 1996/10/12 17:52:55 1.19 --- Range.cc 1996/12/19 03:33:05 *************** *** 150,155 **** --- 150,161 ---- return is; } + Range + operator - (const Range& r) + { + return Range (-r.base (), -r.limit (), -r.inc ()); + } + // C See Knuth, Art Of Computer Programming, Vol. 1, Problem 1.2.4-5. // C // C===Tolerant FLOOR function. Index: src/ov-range.h =================================================================== RCS file: /home/jwe/src/master/octave/src/ov-range.h,v retrieving revision 1.6 diff -c -r1.6 ov-range.h *** ov-range.h 1996/11/07 16:47:01 1.6 --- ov-range.h 1996/12/19 02:31:43 *************** *** 137,142 **** --- 137,146 ---- Range range_value (void) const { return range; } + octave_value not (void) const; + + octave_value uminus (void) const { return octave_value (- range); } + octave_value transpose (void) const; octave_value hermitian (void) const; Index: src/ov-range.cc =================================================================== RCS file: /home/jwe/src/master/octave/src/ov-range.cc,v retrieving revision 1.8 diff -c -r1.8 ov-range.cc *** ov-range.cc 1996/11/07 16:47:01 1.8 --- ov-range.cc 1996/12/19 03:05:37 *************** *** 174,179 **** --- 174,186 ---- } octave_value + octave_range::not (void) const + { + Matrix tmp (range.matrix_value ()); + return (! tmp); + } + + octave_value octave_range::transpose (void) const { Matrix tmp (range.matrix_value ());