Re: [eigen] HouseholderQR bug?? |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] HouseholderQR bug??
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Mon, 26 Apr 2010 08:10:43 -0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=oIug395KLfYW5rcMmAMcNQ3OxMEh5hnAcaCHvrdFsXo=; b=jNQlDWo4qF2VNciqfE881k2rg+2sAku+Bl+44VKVRDTanByhbzhfNPszrjhQlhU50u Gngs9GQSYij9v5a4t3uONJLZpVnrX4cdqk4eNrP5GxF63XePdrPoeo8GeHufzE2meOfw HYyScp021zQUZDKsrJERM3O1nJzKyCmPBkXW0=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=W1HPsXYRLS5ioUgsgm7jc8XI5iNh6lONxdb0p42mTyfIwQ3aaS1PMZ3VP2uF1cZjzQ WJct7Gq8jM6hZR3lnTD/zZS9MN8cvT/qNWJh9/XICQR653UlOT81481walfbw/s9er5b ca+MHHSqmTIKFW1Kq9LLyTdVu4dYHEbzkHdcE=
ei_assert( ((!(ei_traits<Derived>::Flags&AlignedBit))
|| ((size_t(m_data)&0xf)==0)) && "data is not aligned");
Note the ! here
By the way, we should rewrite this using EIGEN_IMPLIES...
So what error exactly do you get? For me, this program works:
#include <Eigen/Core>
#include <iostream>
using namespace Eigen;
using namespace std;
int main()
{
double *array;
typedef Matrix<double,1,Dynamic,1,1,Dynamic> T;
Map<T> m0(array, 1024);
Map<T> m1(array+1, 1024);
}
Benoit
2010/4/26 Hauke Heibel <hauke.heibel@xxxxxxxxxxxxxx>:
> For me
>
> MapBase< Map< Matrix<double,1,Dynamic,1,1,Dynamic>,0, Stride<0,0> >
>>::checkSanity()
>
> is failing and there it seems as if alignment is required.
>
> - Hauke
>
> On Mon, Apr 26, 2010 at 1:48 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote:
>> Map does not assume aligned by default. Unless you pass the Aligned
>> option, the pointer is not required to be aligned.
>>
>> Benoit
>>
>> 2010/4/26 Hauke Heibel <hauke.heibel@xxxxxxxxxxxxxx>:
>>> Hi,
>>>
>>> I am trying to trace down the std::vector issue and stumbled over the following.
>>>
>>> In HouseholderQR line 220, applyHouseholderOnTheLeft(...) is called
>>> with this raw pointer
>>>
>>> &m_temp.coeffRef(k+1)
>>>
>>> which is mapped as
>>>
>>> Map<typename ei_plain_row_type<PlainObject>::type> tmp(workspace,cols());
>>>
>>> and results in unaligned data because even if m_temp is aligned,
>>> m_temp.getData()+1 is not necessarily.
>>>
>>> How do we fix this? This does not help - I always thought it were
>>> affecting the Flags property
>>>
>>> Map<typename ei_plain_row_type<PlainObject>::type, Unaligned>
>>> tmp(workspace,cols());
>>>
>>> - Hauke
>>>
>>>
>>>
>>
>>
>>
>
>
>