Detta fungerar bättre:
#include <stdio.h>
#include <stdlib.h>
#include <arm_fp16.h>
int main(int argc, char *argv[])
{
int a, b;
float f1;
double f2;
__fp16 f3, f4;
if (argc < 3) exit(1);
b = atoi(argv[--argc]);
if (b == 0) exit(2);
a = atoi(argv[--argc]);
f1 = (float) a/b;
f2 = (double) a/b;
f3 = (__fp16) a/b;
printf("a+b = %d\n", a+b);
printf("a-b = %d\n", a-b);
printf("a*b = %d\n", a*b);
printf("a/b = %d\n", a/b); /* truncates towards 0 (in C99) */
printf("a%%b = %d\n", a%b); /* same sign as first operand (in C99) */
printf("f1 = %5.15f\n", f1);
printf("f2 = %5.15f\n", f2);
printf("f3 = %5.15f\n", f3);
return 0;
}
Än ser jag dock ingen skillnad på =ieee och =alternative
Den sista ska klara ett max på 131008 men jag får inf precis som med ieee.