Re: kf in mos1 model

al davis <[email protected]>
Newsgroups gmane.comp.gnu.gnucap.devel
Message-ID <[email protected]>
On Friday 09 May 2014, Felix Salfelder wrote:
> apparently, something causes kf and af to misbehave. which
> compilers did you use?

g++ 2.7.2 recently ..

I think I found the problem.

There are really two problems, the one you noticed and one that 
I found while investigating.

I recall noticing it a while back but there was so much else to 
do that I put it off.

The problem has to do with construction order for what I thought 
was constants.  Apparently g++ treats const (as in constant.h) 
as static objects that need to be constructed, and in this case 
the static instance of MODEL_BUILT_IN_MOS1 happened to get 
constructed before the constant MAXDBL, so NOT_INPUT was zero.

Problem solved by using #define instead.


//#ifdef HAS_NUMERIC_LIMITS
//double const MAXDBL    = std::numeric_limits<double>::max();
//#else
//double const MAXDBL    = DBL_MAX;
//#endif

#define MAXDBL (DBL_MAX)

Now I question all usage of "const" in constant.h .
Should they all revert to #define ?????

In this case, following lines could change to DBL_MAX to 
simplify, but according to C++ docs std::numeric_limits is the 
"preferred" way to do it.


The other issue that surfaced has to do with modelgen, 
particularly code generation when there is inheritance.  When 
the hide_base option is used, parameters in the base that are 
hidden and re-exposed are not properly initialized.  It appears 
to be ok when the value is a number or defaulted, but parameter 
expressions are not properly evaluated.  Missing code in 
precalc_first.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.