Re: [eigen] port of (c)minpack to eigen : status |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] port of (c)minpack to eigen : status
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Fri, 25 Sep 2009 07:17:36 -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; bh=9sL+02Wq2DKmp4L2I1uXQcBjCDjfdbEeqnvY4eXJoF4=; b=ovxHaQDO9V8ysI7G6wZXgxFDYXrF0Xov+2AeZwZnL2HMcEiYeDGARsPod8fOdfjwbf YgF85q7JlvU1D4nPrqmHzARe1UMJjdBG2YpGv3jXBYRbFKvZl8fQFmVKo/po+bFMVuGv HSAjxSx+33oRbMvYiz/tTPm+09SZQCAt1qRCM=
- 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; b=jgVdzNg1PbSlmW0Ze0zeJKaVtouq1k36zZePvVTQe0wVWV5hr+QgGrvQuea4l80eYm BSNtFZuNL+4yR+Df4ZmeLDhDI965zqJMF3RPRuxBH9Psf2c4LK8AUveKGqyou0ihjWzs VFM3Z1F0w54adD9MJeOjC64G8Uvbl7McBBaJY=
2009/9/25 Gael Guennebaud <gael.guennebaud@xxxxxxxxx>:
> Thomas:
>
> about the Functor discussion, actually the static versus dynamic
> polymorphism is up to the user. Indeed, in any case the functor type
> must be a template parameter which will also specify the scalar type
> and the sizes of the problem (which ideally could be be compile time
> sizes).
But just because the scalar type and sizes need to be template
parameters, doesn't have to mean that the functor type must too.
Currently, Thomas already passes the scalar type as a separate
template parameter. If there's a need to also pass sizes, then perhaps
what is really wanted is to pass a MatrixType instead as template
parameter? This would carry at compile time, the information of the
scalar type and size.
I'm not saying that things should be made a certain way, i'm just
suggesting that so far, i don't see anything that requires knowing the
functor type at compile time :)
Speaking with Thomas on IRC yesterday, there was also a separate issue
where he was considering factoring code: the minimizeOneStep and
minimizeNumericalDiffOneStep are almost the same, the diff is just:
- if (functor.df(x, fjac) < 0)
+ if ( ei_fdjac2(functor, x, fvec, fjac, parameters.epsfcn) < 0)
return UserAsked;
- ++njev;
+ nfev += n;
so it's just a different functor call, and that call is made only once
in an otherwise complicated function. So this seems like a perfect
candidate for factoring code out by making the functor type resolved
at runtime via virtual inheritance.
Benoit