URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7493
[ Назад ]

Исходное сообщение
"80-битный тип с плавающей точкой"

Отправлено ElVovan _ , 21-Июл-08 11:22 
Математические сопроцессоры процессоров х86 поддерживают математические операции с плавающей точкой для 80-битных величин, существует ли для компилятора gcc какая-нибудь прагма, позволяющая использовать эту возможность платформы? (например, чтоб тип double становился десятибайтовым)

Содержание

Сообщения в этом обсуждении
"80-битный тип с плавающей точкой"
Отправлено anonymous , 21-Июл-08 23:07 
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


"80-битный тип с плавающей точкой"
Отправлено ElVovan _ , 23-Июл-08 10:45 
Спасибо, это оно и есть, 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)


"80-битный тип с плавающей точкой"
Отправлено anonymous , 24-Июл-08 23:58 
$ 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.000000

man 3 printf ;)