X-Received: by 10.43.69.18 with SMTP id ya18mr3012547icb.0.1413032759785; Sat, 11 Oct 2014 06:05:59 -0700 (PDT) X-Received: by 10.140.94.10 with SMTP id f10mr18581qge.11.1413032759644; Sat, 11 Oct 2014 06:05:59 -0700 (PDT) Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.glorb.com!h18no4621282igc.0!news-out.google.com!i10ni82qaf.0!nntp.google.com!dc16no2072290qab.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.arch.arithmetic Date: Sat, 11 Oct 2014 06:05:59 -0700 (PDT) In-Reply-To: <74d951ee-6fd2-43ad-8f0a-2852a031bd2c@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=5.55.57.237; posting-account=lD5X3AoAAAB2_KDReA0WuoP_A_fBgycC NNTP-Posting-Host: 5.55.57.237 References: <74d951ee-6fd2-43ad-8f0a-2852a031bd2c@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: Subject: Re: New appromixation for integer division by 63 or 127 From: nikolaos.kavvadias@gmail.com Injection-Date: Sat, 11 Oct 2014 13:05:59 +0000 Content-Type: text/plain; charset=ISO-8859-1 Xref: csiph.com comp.arch.arithmetic:77 I have updated my claims for the algorithm. It works for all tested constant divisors (n=2 to n=16), and given the following assumption: the range for x is [0,2^(2*n)-2], i.e. for n = 6, the range indeed is 0:4094. And a test program: [code] #include #include #include /* main: */ int main(void) { int qapprox, qexact; int i, j, k; for (i = 2; i < 8; i++) { for (j = 1; j < (1<>i)+j+((1<>i)-1; qexact = j / k; if (qapprox != qexact) { fprintf(stderr, "qapprox = (%d/%d) = %d\tqexact = (%d/%d) = %d\n", j, k, qapprox, j, k, qexact); } } } return 0; } [/code]