Previous: Supported systems, Up: NGSPICE Compilation


5.5 Platform specific issues

NGSPICE heavily relies on the floating point representation. On the i386 architecture, the floating point implementation can cause problems to numerical software like NGSPICE. Intel i386 and later processors have 80-bit wide floating point registers in their FPU. This width is referred ad extended double precision and all the calculation are done, internally, at that precision. Externally, the result can be used as is or rounded to double precision as defined in the IEEE754 standard for floating point, so there are two modes of operation and the choice is left to the operating system. FreeBSD developers decided that the FPU had to provide results conforming to IEEE745, while Linux ones decided to take advantage of the extended precision.

This different choice lead to slightly different results when running the same simulation on different operating systems. Catastrophic discrepancies arise on badly written software.