Project

General

Profile

Actions

Feature #3067

closed

complex.c : Question: why Complex#~ is disabled? It's in the doc

Added by Eregon (Benoit Daloze) over 14 years ago. Updated about 10 years ago.

Status:
Closed
Target version:
[ruby-core:29167]

Description

=begin
Hi, this is more of a question than a bug, feature or whatever,
but I wonder why Complex#~ has been removed ?

I can read in complex.c:
#if 0
rb_define_method(rb_cComplex, "~", nucomp_conj, 0); /* gcc */
#endif

gcc would have problems with it? why?

Fixnum#~ and Bignum#~ are not commented and work right.

Maybe the method should be added at a higher level, if possible, if it is a compiler issue ?

B.D.
=end

Actions #1

Updated by mame (Yusuke Endoh) over 14 years ago

=begin
Hi,

2010/4/1 Benoit Daloze :

but I wonder why Complex#~ has been removed ?

I can read in complex.c:
#if 0
rb_define_method(rb_cComplex, "~", nucomp_conj, 0); /* gcc */
#endif

The above definition of Complex#~ returns conjugate complex,
while Fixnum#~ and Bignum#~ are bit inversion operators.
I don't know a suitable definition of bit inversion against
Complex.

But I also wonder what the comment /* gcc */ means.

--
Yusuke ENDOH

=end

Actions #2

Updated by Eregon (Benoit Daloze) over 14 years ago

=begin

The above definition of Complex#~ returns conjugate complex,
while Fixnum#~ and Bignum#~ are bit inversion operators.
I don't know a suitable definition of bit inversion against
Complex.

Sure, I just wanted to show #~ is running for other objects.

B.D.

=end

Actions #3

Updated by Eregon (Benoit Daloze) over 14 years ago

=begin
I tried to compile removing the #if 0 and it works:
irb for ruby-1.9.2-r26319

c = 2+3.i
=> (2+3i)
~c
=> (2-3i)

So it is not a problem on OSX 10.6.3

Can someone test on linux and windows? Then I think we could safely enable this method.
=end

Actions #4

Updated by mame (Yusuke Endoh) over 14 years ago

  • Category changed from ext to core
  • Assignee set to matz (Yukihiro Matsumoto)
  • Target version changed from 1.9.2 to 2.0.0

=begin
Hi,

I forgot to change the target of this ticket to 1.9.x.
I'm sorry if I gave you false hope.

Can someone test on linux and windows?
Then I think we could safely enable this method.

This is not implementation problem, but consistency problem.

Fixnum#~ and Bignum#~ do bit inversion.
I guess some people expects Complex#~ to do the same.
They may think it as a bug if Complex#~ returns conjugate
complex.

But I'm not against for your suggestion.
I pass the ball to matz.

--
Yusuke Endoh
=end

Actions #5

Updated by tadf (tadayoshi funaba) over 14 years ago

=begin
i wrote it.
gcc has the feature.
i disabled it for the time being.
i'm not sure whether we should assign it.
we have much time.

=end

Actions #6

Updated by shyouhei (Shyouhei Urabe) about 14 years ago

  • Status changed from Open to Assigned

=begin

=end

Updated by yhara (Yutaka HARA) about 12 years ago

  • Description updated (diff)
  • Target version changed from 2.0.0 to 2.6

Updated by Eregon (Benoit Daloze) about 10 years ago

  • Status changed from Assigned to Closed

I see, it's from https://gcc.gnu.org/onlinedocs/gcc/Complex.html.
As said before, this is potentially confusing so the current behavior of not defining it seems best.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0