Search Postgresql Archives

Re: Arbitrary precision modulo operation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



/*
** Hopefully, I am not annoying anyone with all of this.
** This is a brief demonstration of how Newton's division algorithm
works:
*/
#include <stdio.h>
double          divide(double x, double y)
{
    unsigned __int64 est;
    double          y1 = 1.0 / y;
    double          y2;
    puts("\nForming reciprocal:");
    est = y1 * 10000;
    y1 = est / 10000.0;         /* make an estimate good to 4 decimal
places... */
    printf("x=%.7f, y=%.7f, y1=%.7f\n", x, y, y1);
    y1 *= (2 - y * y1); /* should be 8 places */
    printf("x=%.14f, y=%.14f, y1=%.14f\n", x, y, y1);
    y1 *= (2 - y * y1); /* In theory ~16 digits */
    printf("x=%.20f, y=%.20f, y1=%.20f\n", x, y, y1);
    y1 *= (2 - y * y1); /* One more is really needed here... */
    printf("x=%.20f, y=%.20f, y1=%.20f\n", x, y, y1);
    puts("\ndividing:");
    printf("result of division is:%f\n", x * y1);
    return 0;
}

int             main(void)
{
    divide(1.0, 2.0);
    divide(1.0, 17.0);
    divide(3.0, 19.0);
    divide(19.0, 3.0);
    return 0;
}

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux