Boost logo

Boost :

From: Andy Little (andy_at_[hidden])
Date: 2006-01-08 09:37:05


"Andy Little" wrote

> Unfortunately I have now come upon an intractable problem. In debug mode on
> small examples I am getting
>
> " fatal error C1067: compiler limit : debug information module size exceeded".
> (compiles ok in release mode)

Hi Cromwell,

 I am concerned that "rational.hpp" depends on mpl::big_integral and
mpl::double as well
as some of their operations, which are huge anounts of header material

It is simple to solve this by removing the numeric_casts for big_integral and
double, from rational.hpp. I am sure they can be put in the numeric stuff for
these types.

then deleting

 <boost/mpl/math/double_/aux_/to_simplified_rational.hpp>
 <boost/mpl/math/double_tag.hpp>

 <boost/mpl/math/unsigned_big_integral_tag.hpp>
 <boost/mpl/math/big_integral_tag.hpp>
 <boost/mpl/math/double_tag.hpp>

#includes

that removes a large number of IMO unnecessary dependencies.

---------------

As far as my other problems are concerned it appears that the gcd header is the
culprit in producing a template too long for VC7.1 to hold in its debug
database.

I seem to remember that using a recursive algorithm that the maximum number of
recursions for a 32 bit int is around 45.
However your version of gcd actually uses more typedefs than this AFAICS, so I
am pretty sure that it is Less efficient even in worst case which is rare
anyway, while in usual case it is definitely less efficient for 32 bit integes
anyway. (I think even 64 bit ints will converge reasonably fast). It might be
worth
trying a comparison ....

Anyway changing the gcd algorithm to a recursive one wrapping
boost::math::static_gcd (attached) in "boost/math/commn_factor.hpp" cures the
above problem of compiler running out of keys and similar issues for me.

---------------

As previously mentioned I also reckon that it would be best to make typeof
registration separate.

regards
Andy Little

begin 666 gcd.hpp
M+R\@0V]P>7)I9VAT("A#*2 R,# U+3(P,#8_at_0W)O;7=E;&P_at_1"X_at_16YA9V4-
M"B\O($1I<W1R:6)U=&5D('5N9&5R('1H92!";V]S="!3;V9T=V%R92!,:6-E
M;G-E+"!697)S:6]N(#$N,"X-"B\O("A3964_at_86-C;VUP86YY:6YG(&9I;&4@
M3$E#14Y315\Q7S N='AT(&]R(&-O<'D_at_870-"B\O(&AT=' Z+R]W=W<N8F]O
M<W0N;W)G+TQ)0T5.4T5?,5\P+G1X="D-"@T*(VEF;F1E9B!"3T]35%]-4$Q?
M34%42%]'0T1?2%!07TE.0TQ51$5$#0HC9&5F:6YE($)/3U-47TU03%]-051(
M7T=#1%](4%!?24Y#3%5$140-"B-I;F-L=61E(#QB;V]S="]M871H+V-O;6UO
M;E]F86-T;W)?8W0N:'!P/@T*(VEN8VQU9&4@/&)O;W-T+VUP;"]I;G1E9W)A
M;%]C+FAP<#X-"B-I;F-L=61E(#QB;V]S="]M<&PO:6YT96=R86Q?8U]T86<N
M:'!P/@T*#0IN86UE<W!A8V4_at_8F]O<W0@>R!N86UE<W!A8V4@;7!L('L@;F%M
M97-P86-E(&UA=&@@>PT*#0H@(" @=&5M<&QA=&4@/'1Y<&5N86UE($YU;65R
M:6-486<Q+"!T>7!E;F%M92!.=6UE<FEC5&%G,CX-"B @("!S=')U8W0_at_9V-D
M7VEM<&P[#0H-"B @("!T96UP;&%T92 \/@T*(" @('-T<G5C="!G8V1?:6UP
M;#P@#0H@(" @(" @(&)O;W-T.CIM<&PZ.FEN=&5G<F%L7V-?=&%G+" -"B @
M(" @(" @8F]O<W0Z.FUP;#HZ:6YT96=R86Q?8U]T86<-"B @(" ^>PT*(" @
M(" @("!T96UP;&%T92 \#0H@(" @(" @(" @("!T>7!E;F%M92!.,2P@#0H@
M(" @(" @(" @("!T>7!E;F%M92!.,@T*(" @(" @(" ^#0H@(" @(" @('-T
M<G5C="!A<'!L>2 Z(&)O;W-T.CIM<&PZ.FEN=&5G<F%L7V,\#0H@(" @(" @
M(" @("!U;G-I9VYE9"!L;VYG+ T*(" @(" @(" @(" @8F]O<W0Z.FUA=&@Z
M.G-T871I8U]G8V0\#0H@(" @(" @(" @(" @(" @3C$Z.G9A;'5E+"!.,CHZ
M=F%L=64-"B @(" @(" @(" @(#XZ.G9A;'5E#0H@(" @(" @(#Y[?3L-"B @
M("!].PT*(" @( T*(" @#0H-"B @("!T96UP;&%T92 \='EP96YA;64_at_3C$L
M('1Y<&5N86UE($XR/@T*(" @('-T<G5C="!G8V0_at_.B!G8V1?:6UP;#P-"B @
M(" @(" @(" @('1Y<&5N86UE($XQ.CIT86<-"B @(" @(" @(" L('1Y<&5N
M86UE($XR.CIT86<-"B @(" @(" @/CHZ=&5M<&QA=&4_at_87!P;'D\3C$L3C(^
M.CIT>7!E>WT[#0H-"GU]?2 @+R\@;F%M97-P86-E(&)O;W-T.CIM<&PZ.FUA
M=&@-"@T*(V5N9&EF(" O+R!"3T]35%]-4$Q?34%42%]'0T1?2%!07TE.0TQ5
%1$5$#0H`
`
end


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk