@comment $OpenXM: OpenXM/src/asir-doc/int-parts/datatype/float.texi,v 1.1 2001/04/23 05:45:36 noro Exp $ @section 倍精度浮動小数 @example struct oReal @{ 倍精度浮動小数 short id; 識別子 (= O_N) char nid; 数識別子 (= N_R) char pad; double body; 倍精度浮動小数 @}; typedef struct oReal *Real; @end example @subsection 倍精度浮動小数の生成, 変換 @example #include "ca.h" MKReal(a,b) (macro; double a; Real b) body が a である倍精度浮動小数 b を生成する. double RatnToReal(Q a) 有理数 a を倍精度浮動小数に変換する. @end example @noindent マクロで必要な領域はマクロ内で確保される. @subsection 四則 @noindent いずれも, 浮動小数, 有理数両方を入力にとれる. 結果はすべて浮動小数となる. @example #include "ca.h" addreal(Num a,Num b,Real *rp) *rp = a + b subreal(Num a,Num b,Real *rp) *rp = a - b mulreal(Num a,Num b,Real *rp) *rp = a * b divreal(Num a,Num b,Real *rp) *rp = a / b pwrreal(Num a,Num e,Real *rp) *rp = a ^ e int cmpreal(Num a,Num b) sgn(a-b) @end example