Last active
August 26, 2024 14:28
-
-
Save mipsparc/5355e8757c9ac1555d84e55a6756420f to your computer and use it in GitHub Desktop.
Fujitsu SPARC64 Xにて、ハードウェア10進浮動小数点演算をテストしたコード。4.8-4.7-0.1 == 0を検証している。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
ここでは、Fujitsu SPARC64 Xにおいてハードウェア10進浮動小数点演算を | |
テストするためのコードを例示する。コンパイル環境は | |
Oracle® Developer Studio 12.5 | |
であり、コンパイルコマンドは | |
$ cc -m64 -xtarget=sparc64x SPARC64_X_Decimal.c | |
であり、参考文献は | |
https://docs.oracle.com/cd/E71939_01/html/E71949/gonog.html | |
にある。 | |
なお、そのままだと dpd_conf.h がSyntax Errorになるので、 | |
バックアップをとった上で当該行を除去すると良い。 | |
コードの内容は、 4.8-4.7-0.1 == 0 の検証である。 | |
*/ | |
#include <dpd_conf.h> | |
#include <stdio.h> | |
int main(void) { | |
_Decimal64 result; | |
_Decimal64 a = __dpd64_convert_from_uint64(48); | |
_Decimal64 b = __dpd64_convert_from_uint64(47); | |
_Decimal64 c = __dpd64_convert_from_uint64(1); | |
_Decimal64 ten = __dpd64_convert_from_uint64(10); | |
a = __dpd64_div(a, ten); | |
b = __dpd64_div(b, ten); | |
c = __dpd64_div(c, ten); | |
result = __dpd64_sub(a, b); | |
result = __dpd64_sub(result, c); | |
double output = __dpd64_convert_to_double(result); | |
int same = (output == (double)0.0); | |
printf("Result: %lf \n Same: %d \n", output, same); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment