Re: [eigen] conservative resize ... |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] conservative resize ...
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Fri, 4 Sep 2009 15:35:04 -0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=1H0IWZjFayOVFAaGdv+ncKf3cX4DK72faqkLM20GSzo=; b=Vm/r+sn2Y82BB7wOIgWhDP5eeqAVH0uvlVEfU3iEi7/RDQCNHENZO1U/pssLDXcq3U ZF829AtfAtDba01shr/AenXQaaGI8Q8k55cvmoVWfZxQd0BIXEeRVH3QkaAWsPxo8wpU A60RbrDF4bwmx5EoNbdB9WOgGR83o7lNMLb6A=
- 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=Giov4u91Jatt2R+0t1CHEdTejYDg25LqUBuaKcpVUhxTrrg5BTAIuEHhAtSlPJT2XY 3SqjN5RGcY+i9wlB8Q1Pizh7WR+MypDJUx5ryuHchp3uK2eq61c0JLMCA5ykZkBpsFPB ilak3G2ex4LUYvIzb2tBjEWW+CdVpFuU+mrbY=
Are these examples specifically for conservativeResize() ?
For initializing a matrix with arbitrary value, we already have
matrix = MatrixXd::Constant(rows,cols,value);
Is it important to allow arbitrary value also in conservativeResize ?
Benoit
2009/9/4 Márton Danóczy <marton78@xxxxxxxxx>:
> Hi,
>
> I do think there is a use case to init memory with something else than
> zero: for cumulative products with 1, for finding maxima with
> -infinity, for finding minima with +infinity. And to give an example
> for an arbitrary value, let's take repeated (=parallel) integrations
> of a stochastic differential equation with the same initial value.
> Therefore I prefer Hauke's original API.
>
> Marton
>
> 2009/9/4 Benoit Jacob <jacob.benoit.1@xxxxxxxxx>:
>> Hi,
>>
>> In your initial interface, allowing to extend by any arbitrary value,
>> I don't think there was much of a use case for extending by a value
>> other than zero. So I don't think it's a loss at all, not to have this
>> feature. I like your current API,
>>
>> void conservativeResize(int rows, int cols, bool init_with_zero = false)
>>
>> How about defining a constant like
>>
>> const bool ExtendByZero = true;
>>
>> so that the user's code looks more explicit?
>>
>> Also, I don't know if the performance difference matters here, but if
>> you want to get rid of the "if" you can always do a trick like
>> NoChange_t. The drawback though is that it means even more overloads
>> of conservativeResize.
>>
>> Benoit
>>
>> 2009/9/3 Hauke Heibel <hauke.heibel@xxxxxxxxxxxxxx>:
>>> Hi,
>>>
>>> just a short question regarding my recent commit for conservative
>>> resizing. I added an option to allow the user to set the part by which
>>> a matrix might be extended to zero - currently via a boolean.
>>> Initially I wanted to offer the ability to pass the scalar value
>>> explicity which lead to problems, in particular for integer matrices.
>>>
>>> My initial intended interface was somethink like:
>>>
>>> void conservativeResize(int,int) // matrices with uninitialized memory
>>> void conservativeResize(int,int,Scalar value) // matrices with new
>>> memory set to value
>>> void conservativeResize(int) // vectors with uninitialized memory
>>> void conservativeResize(int,Scalar value) // vectors with new memory set to zero
>>>
>>> Here, the last and first definitions obviously clash when Scalar is int..
>>>
>>> Do you have any proposal how to circumvent this problem. Do we need
>>> the uninitialized version at all for conservativeResizing? Any use
>>> case for this?
>>>
>>> - Hauke
>>>
>>>
>>>
>>
>>
>>
>
>
>