#How does this become zero just by adding long double

6 messages · Page 1 of 1 (latest)

civic burrow
#

#include <stdio.h> int main() { double sum = 1; double term = 1; int k = 0; for(; k < 10000; ++k) { term = term*2*(k+1)*(k+1)/((2*k+2)*(2*k+3)); sum = (long double) sum+term; } sum *= 2; printf("%Lf", (long double) sum); return 0; }
So if i remvoe the (long doubles) the value will be as expected, but long double turns it to 0.000 for some reason?

iron rapidsBOT
#

When your question is answered use !solved to mark the question as resolved.

Remember to ask specific questions, provide necessary details, and reduce your question to its simplest form. For tips on how to ask a good question use !howto ask.

hollow basalt
#

;compile

#include <stdio.h>
int main() {
    double sum = 1;
    double term = 1;
    int k = 0;
    for (; k < 10000; ++k) {
        term = term * 2 * (k + 1) * (k + 1) / ((2 * k + 2) * (2 * k + 3));
        sum = (long double)sum + term;
    }
    sum *= 2;
    printf("%Lf", (long double)sum);
    return 0;
}
mint minnowBOT
#
Program Output
3.141593
hollow basalt
#

unable to reproduce

plucky viper
#

because long double is broken on windows