
Le jeudi 21 juillet 2005 à 11:35 +0200, Erwin a écrit :
Hello,
I would like to use the numeric::interval library on an Alpha EV 6.8 processor under the OSF1 operating system. My program runs fine under Linux on a Pentium 4, but on the Alpha machine, g++ tells me:
boost/numeric/interval/hw_rounding.hpp:26:4: #error Boost.Numeric.Interval: Please specify rounding control mechanism.
What has to be done? Where do I have to specifiy the rounding controls, how much do I need to know about processor internals etc? Which tests can and have to be done afterwards?
I unfortunately never had access to an Alpha computer, so I didn't get to write the rounding routines for this processor (EV6.8 is a 21264, right?). If you want to add support for it, you could first try to create a new rounding detail file. It would be almost identical to boost/numeric/interval/detail/ppc_rounding_control.hpp. It has to be referenced from the file boost/numeric/interval/hw_rounding.hpp. This is only a matter of adding a few preprocessor directives. In this new file, the asm instructions mtfsf and mfss of the PowerPC have to be replaced by accesses (mf_fcpr and mt_fcpr?) to the fpcr register of the Alpha processor. The rounding mode constants also have to be changed accordingly. This is the stage that requires to know a bit about the processor internals. Then your programs would probably have to be compiled with these GCC options in order for these changes to have effect: -mieee -mfp-rounding-mode=d -mfloat-ieee The tests are in libs/numeric/interval/test. Best regards, Guillaume PS: Do not hesitate to contact me privately, if you want to add support for your processor. I would be glad to help you and then commit the modifications to the Boost library.