
Сообщение от
vva
у F77 деление командой DIVD, у С - DIVF
В FPP команды одинарной и двойной точности имеют один и тот же код. Перед их использованием нужно указать точность с помощью команд SETF или SETD.
- - - Добавлено - - -

Сообщение от
vva
То есть С работает с фортрановским real*4, хотя указан double и резервируется именно 8 байт на переменную.
Как в С включить работу с double я не нашел.
Если вы про DECUS C, то он с FPP работает в режиме двойной точности, в библиотеке она устанавливается командой SETD (170011). При работе с переменными одинарной точности происходит загрузка и сохранение регистров с преобразованием точности. В качестве примера небольшая программка и полученный результат на ассемблере:
Код:
float a1,a2,a3;
double b1,b2,b3;
int main()
{
a1=1; a2=2; a3=a1/a2;
b1=1; b2=2; b3=b1/b2;
}
Код:
.comm _a1,4
.comm _a2,4
.comm _a3,4
.comm _b1,10
.comm _b2,10
.comm _b3,10
.globl _main
.text
_main:
~~main:
jsr r5,csv~
movf $40200,r0
movfo r0,_a1
movf $40400,r0
movfo r0,_a2
movof _a1,r0
movof _a2,r1
divf r1,r0
movfo r0,_a3
movf $40200,r0
movf r0,_b1
movf $40400,r0
movf r0,_b2
movf _b1,r0
divf _b2,r0
movf r0,_b3
jmp cret~
.globl fpin~~
.globl fppr~~
.globl fpem~~