F77_IEEE_ENVIRONMENT(3F)

名前
f77_ieee_environment - IEEE 演算用のモード、状態、シグナル処理

形式
#include <f77/f77_floatingpoint.h>

integer*4 function ieee_flags(action,mode,in,out)
character*(*) action, mode, in, out

integer*4 function ieee_handler(action,exception,hdl)
character*(*) action, exception
sigfpe_handler_type hdl

sigfpe_handler_type function sigfpe(code, hdl)
sigfpe_code_type code
sigfpe_handler_type hdl

機能説明
これらは、FORTRAN プログラムで ANSI/IEEE 規格 754-1985 演算を十分に活用する のに必要なモード、および状態を提供する副プログラムです。 これらは、関数 ieee_flags(3M)、 ieee_handler(3M)、 sigfpe(3) と密接に関連しています。

使用法
例 1: ハードウェアが丸め方向モードをサポートしていれば、 丸め方向をゼロ方向の丸めに設定する。

	integer*4 ieeer
	character*1 mode, out, in
	ieeer = ieee_flags('set', 'direction', 'tozero', out)

例 2: 丸め方向をクリアする。デフォルトで、最も近い値に丸めます。

	character*1 out, in
	ieeer = ieee_flags('clear','direction', in, out)

例 3: すべての例外発生ビットをクリアする。

	character*16 out
	ieeer = ieee_flags('clear','exception','all',out)

例 4: 例 3 によってオーバーフロー例外が発生する場合、 次のように例外を検出する。

	character*16 out
	ieeer = ieee_flags('get','exception','overflow', out)
例 5: ユーザー定義のシグナルハンドラとそれを使用する 主プログラム。

	external hand
	real r / 14.2 /,  s / 0.0 /
	i = ieee_handler( 'set', 'division', hand )
	t = r/s
	end
	integer function hand ( sig, sip, uap )
	integer sig, address
	structure /fault/
		integer address
	end structure
	structure /siginfo/
		integer si_signo
		integer si_code
		integer si_errno
		record /fault/ fault
	end structure
	record /siginfo/ sip
	address = sip.fault.address
	write (*,10) address
 10	format('Exception at hex address ', z8 )
	end

ファイル
include/f77/f77_floatingpoint.h
libm.a

関連項目
floatingpoint(5)、 signal(3c)、 sigfpe(3)、 f77_floatingpoint(3F)、 ieee_flags(3M)、 ieee_handler(3M)、 『 数値計算ガイド 』