Re:Differentiation for Hackers
by adamnemecek on Saturday June 22, 2019 @04:20PM
(#20251530)
You could similarly say that a computer can't calculate x^1000/x^998 because you can't fit it in 32/64 bits.
[ Parent
| on HN ]
And computers have a hard time with that. Take the following example code:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
double f(const double x) {
return pow(x, 1000) / pow(x, 998);
}
int main(int argc, char* argv[]) {
if(argc != 2) {
fprintf(stderr, "Usage: %s x\n", argv[0]);
exit(1);
}
const double x = atof(argv[1]); // demo code without error checking
printf("x = %g, f(x) = %g\n", x, f(x));
exit(0);
}
compile with gcc -Wall -g -o test test.c -lm
and run it petschge@localhost:~$ ./test 0
x = 0, f(x) = -nan
petschge@localhost:~$ ./test 1
x = 1, f(x) = 1
petschge@localhost:~$ ./test 2
x = 2, f(x) = 4
The fun thing is, when you compile with gcc -Wall -O3 -ffast-math -g -o test2 test.c -lm
you actually get petschge@localhost:~$ ./test2 0
x = 0, f(x) = 0
Re:Differentiation for Hackers
by adamnemecek on Saturday June 22, 2019 @04:31PM
(#20251576)
That's exactly what i'm saying.