[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: problem with changeset fa917f1f0faf
From: |
Ben Abbott |
Subject: |
Re: problem with changeset fa917f1f0faf |
Date: |
Thu, 11 Aug 2016 11:03:44 -0400 |
> On Aug 10, 2016, at 21:29, Carnë Draug <address@hidden> wrote:
>
> On 11 August 2016 at 01:51, Ben Abbott <address@hidden> wrote:
>>> On Aug 10, 2016, at 8:37 PM, Carnë Draug <address@hidden> wrote:
>>>
>>>> On 11 August 2016 at 00:47, Ben Abbott <address@hidden> wrote:
>>>> Carne,
>>>>
>>>> I think I’m seeing an error associated with the change below.
>>>>
>>>> http://hg.savannah.gnu.org/hgweb/octave/rev/fa917f1f0faf
>>>>
>>>> [...]
>>>>
>>>> liboctave/array/MatrixType.cc:530:23: error: assigning to 'double' from
>>>> incompatible type 'complex<double>'
>>>> d = std::conj (d);
>>>> ^ ~~~~~~~~~~~~~
>>>
>>> How does your compiler handles this?
>>>
>>> #include <iostream>
>>> #include <complex>
>>> #include <typeinfo>
>>>
>>> int main()
>>> {
>>> std::cout << typeid (std::conj (double (5.0))).name() << std::endl;
>>> }
>>>
>>> If you get back a complex number, the issue is discussed on DR 1137 [1].
>>> You should get back d for double. I only found this DR number because
>>> it's refered on the GCC implementation of conj.
>>>
>>> Carnë
>>>
>>> [1] https://lwg.github.io/issues/lwg-defects.html#1137
>>
>> I’m out of my element … I placed those lines in foo.cc and compiled using
>> Apple’s clang
>
> This is what I get:
>
> $ cat foo.cc
> #include <iostream>
> #include <complex>
> #include <typeinfo>
> int main()
> {
> std::cout << typeid (std::conj (double (5.0))).name() << std::endl;
> }
> $ g++ --std=c++11 foo.cc -o foo
> $ ./foo
> d
>
>> On 11 August 2016 at 02:07, Mike Miller <address@hidden> wrote:
>> [...]
>> I took the liberty of testing with clang 3.8 on Debian.
>>
>> With clang and llvm libc++, I get similar errors about streams and
>> char_traits.
>>
>> With clang and gcc libstdc++, I get the following:
>>
>> address@hidden:~/src$ clang-3.8 -o foo foo.cc
>> foo.cc:7:24: error: no matching function for call to 'conj'
>> std::cout << typeid (std::conj (double (5.0))).name() << std::endl;
>> ^~~~~~~~~
>>
>> /usr/bin/../lib/gcc/x86_64-linux-gnu/6.1.1/../../../../include/c++/6.1.1/complex:677:5:
>> note: candidate template ignored: could not match
>> 'complex<type-parameter-0-0>' against 'double'
>> conj(const complex<_Tp>& __z)
>> ^
>> 1 error generated.
>
> I think this is the issue and it should be resolving to something like this
>
>
> https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/complex#L1930
>
> I will guess that replacing std::conj with octave::numeric::conj will also
> trigger this issue. Octave's conj() is now just imported from std [2].
> If my guess is right, then I guess this means that octave::numeric::conj
> is never used in Octave for real types.
>
> Carnë
>
> [2]
> http://hg.savannah.gnu.org/hgweb/octave/file/e43d83253e28/liboctave/numeric/lo-mappers.h#l64
I assume this traced back to changeset 9c3a3d252e80?
Ben
- problem with changeset fa917f1f0faf, Ben Abbott, 2016/08/10
- Re: problem with changeset fa917f1f0faf, Carnë Draug, 2016/08/10
- Re: problem with changeset fa917f1f0faf, Ben Abbott, 2016/08/10
- Re: problem with changeset fa917f1f0faf, Mike Miller, 2016/08/10
- Re: problem with changeset fa917f1f0faf, Carnë Draug, 2016/08/10
- Re: problem with changeset fa917f1f0faf,
Ben Abbott <=
- Re: problem with changeset fa917f1f0faf, Carnë Draug, 2016/08/11
- Re: problem with changeset fa917f1f0faf, Ben Abbott, 2016/08/11
- Re: problem with changeset fa917f1f0faf, Ben Abbott, 2016/08/11
- Re: problem with changeset fa917f1f0faf, Sebastian Schöps, 2016/08/11
- Re: problem with changeset fa917f1f0faf, John W. Eaton, 2016/08/11
- Re: problem with changeset fa917f1f0faf, John W. Eaton, 2016/08/11
- Re: problem with changeset fa917f1f0faf, Ben Abbott, 2016/08/11
- Re: problem with changeset fa917f1f0faf, Sebastian, 2016/08/12
- Re: problem with changeset fa917f1f0faf, Carnë Draug, 2016/08/11