VFX Floating Point organisation

Introduction

64 bit VFX Forth systems for AMD64/Intel64 processors released from January 2023 onwards can use one of several floating point packages. The Extern: interface is adjusted so that FP doubles and FP floats are converted to the form required by the native ABI. Locals are also according to the selection. You, the user must make this selection. There are are three choices.

0 value FpSystem        \ -- n
The value FPSYSTEM defines which floating point pack is installed and active. See the Floating Point chapters for further details. Each floating point pack defines its own type as follows:

When FPSystem changes, the following files that use FPSystem are affected:

  Extern*.fth  kernel64.fth  Tokeniser.fth
  Lib/x64/Ndpx64.fth  Lib/Hfpx64  Lib/x64/FPSSE64.fth

At present, only 0, 1, 2 and 4 are valid values of FPSystem in 64 systems.

Extern: and CallDef: interfaces

The EXTERN: interfaces use FPSYSTEM to show how floats and doubles are generated. The float is taken from its stack, converted as required and placed in the register of memory location required by the call. On return, the return result is converted back as required by FPSYSTEM.

FP locals

FP locals are held in memory in the form defined by FPSYSTEM.

Only one FP package

Only one float pack can be installed. This is checked at compile time. To replace the floating point pack use:


integers
remove-FP-pack
include <sourcefile>

By default, x64 systems come with Lib/x64/Ndpx64.fth compiled. At present this offers the best options for precision and speed.