Математические сопроцессоры процессоров х86 поддерживают математические операции с плавающей точкой для 80-битных величин, существует ли для компилятора gcc какая-нибудь прагма, позволяющая использовать эту возможность платформы? (например, чтоб тип double становился десятибайтовым)
http://en.wikipedia.org/wiki/Long_double ?$ uname -s -m
Linux x86_64
$ gcc --version
gcc (Debian 4.3.1-2) 4.3.1
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.$ cat t.c
#include <stdio.h>int main()
{
printf("%u\n", sizeof(long double));
return 0;
}$ gcc t.c
$ ./a.out
16----------8<----------8<----------8<----------8<----------
$ uname -s -m
Linux i686
$ gcc --version
gcc (Debian 4.3.1-2) 4.3.1
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.$ gcc t.c
$ ./a.out
12
Спасибо, это оно и есть, long double - как всё просто, своё fldt увидел... Жаль, что он в самом деле не двенадцатибайтовый...Только как его теперь печатать?
int main(){
long double var;
var=Something();
printf("result: %lf\n",var);
return(0);
}warning: double format, long double arg (arg 2)
$ cat t.c
#include <stdio.h>int main()
{
long double x = 1.0;
printf("%Lf\n", x);
return 0;
}$ gcc -W -Wall t.c
$ ./a.out
1.000000man 3 printf ;)