3 ms·
> I don't see a problem with simplifying the exponents first. Sure, we call that computer algebra. As soon as you start doing that, you aren't doing automatic
by tntn 7y ago
> I don't see a problem with simplifying the exponents first.
Sure, we call that computer algebra. As soon as you start doing that, you aren't doing automatic differentiation, you are doing (at least in part) symbolic differentiation.
- adamnemecek 7y agoYou could similarly say that a computer can't calculate x^1000/x^998 because you can't fit it in 32/64 bits.
- petschge 7y agoAnd 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
- adamnemecek 7y agoThat's exactly what i'm saying.