From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/17525 Path: main.gmane.org!not-for-mail From: Hans Hagen Newsgroups: gmane.comp.tex.context Subject: Re: Division bug in \doMPconcat (supp-pdf.tex) Date: Wed, 15 Dec 2004 10:39:30 +0100 Message-ID: <41C00652.8030903@wxs.nl> References: <6.2.0.14.0.20041214155229.01c42e98@mail.uark.edu> Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------010605050001090406060108" X-Trace: sea.gmane.org 1103103586 26060 80.91.229.6 (15 Dec 2004 09:39:46 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Wed, 15 Dec 2004 09:39:46 +0000 (UTC) Original-X-From: ntg-context-bounces@ntg.nl Wed Dec 15 10:39:37 2004 Return-path: Original-Received: from ronja.vet.uu.nl ([131.211.172.88] helo=ronja.ntg.nl) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1CeVdB-0003yI-00 for ; Wed, 15 Dec 2004 10:39:37 +0100 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 256B41279A; Wed, 15 Dec 2004 10:39:37 +0100 (CET) Original-Received: from ronja.ntg.nl ([127.0.0.1]) by localhost (ronja.vet.uu.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 10855-06; Wed, 15 Dec 2004 10:39:33 +0100 (CET) Original-Received: from ronja.vet.uu.nl (localhost.localdomain [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id DAAD212797; Wed, 15 Dec 2004 10:39:33 +0100 (CET) Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 3FC2212797 for ; Wed, 15 Dec 2004 10:39:33 +0100 (CET) Original-Received: from ronja.ntg.nl ([127.0.0.1]) by localhost (ronja.vet.uu.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 10974-04 for ; Wed, 15 Dec 2004 10:39:32 +0100 (CET) Original-Received: from mailrelay01.solcon.nl (unknown [212.45.32.200]) by ronja.ntg.nl (Postfix) with ESMTP id 650E612793 for ; Wed, 15 Dec 2004 10:39:32 +0100 (CET) Original-Received: from server-1.pragma-net.nl (dsl-212-84-128-085.solcon.nl [212.84.128.85]) by mailrelay01.solcon.nl (8.12.11/SQL-8.12.11-5/8.12.11) with ESMTP id iBF9dUEv016201 for ; Wed, 15 Dec 2004 10:39:30 +0100 Original-Received: by server-1.pragma-net.nl (Postfix, from userid 65534) id 2320F17C1A; Wed, 15 Dec 2004 10:39:20 +0100 (CET) Original-Received: from [10.100.1.191] (unknown [10.100.1.191]) by server-1.pragma-net.nl (Postfix) with ESMTP id 14639F6E1 for ; Wed, 15 Dec 2004 09:39:19 +0000 (UTC) User-Agent: Mozilla Thunderbird 0.8 (Windows/20040913) X-Accept-Language: en-us, en Original-To: mailing list for ConTeXt users In-Reply-To: <6.2.0.14.0.20041214155229.01c42e98@mail.uark.edu> X-Virus-Scanned: ClamAV 0.80/540/Tue Oct 19 14:59:23 2004 clamav-milter version 0.80j on mailrelay01 X-Virus-Status: Clean X-Virus-Scanned: by amavisd-new at ntg.nl X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.5 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: ntg-context-bounces@ntg.nl Errors-To: ntg-context-bounces@ntg.nl X-Virus-Scanned: by amavisd-new at ntg.nl Xref: main.gmane.org gmane.comp.tex.context:17525 X-Report-Spam: http://spam.gmane.org/gmane.comp.tex.context:17525 This is a multi-part message in MIME format. --------------010605050001090406060108 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi Dan, > of the scaling matrix in \doMPconcat. ah, doMPconcat ... indeed a problematic one ... > I have written some modifications for supp-pdf that avoid all of these. good, we needed a mathematician to do this -) > The current state of my code can be found at > http://comp.uark.edu/~luecking/tex/supp-pdf.mod interesting > Comments are welcome. I hope at least the division can be made more > accurate > in the context distribution. sure, but i will probably comment the old and insret the new code (i often keep older slower worse code in there as example); let me know when you've frozen the code so that i can merge it one thing you can consider playing with is an etex variant; i attach a local experimental file (it build on the old code, but keeping the calculations within a \dimexpr may give even more accuracy because internally double precission is used thanks for taking the time to look into that messy part of the converter -) Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl ----------------------------------------------------------------- --------------010605050001090406060108 Content-Type: application/x-tex; name="supp-pdn.tex" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="supp-pdn.tex" \unprotect % \def\XpresetMPconcat % {\dimen 0=\dimexpr \gMPs1 pt/\MPconcatfactor \relax % r_x % \dimen 2=\dimexpr \gMPs2 pt/\MPconcatfactor \relax % s_x % \dimen 4=\dimexpr \gMPs3 pt/\MPconcatfactor \relax % s_y % \dimen 6=\dimexpr \gMPs4 pt/\MPconcatfactor \relax % r_y % \dimen 8=\dimexpr \gMPs5 pt/\MPconcatfactor \relax % t_x % \dimen10=\dimexpr \gMPs6 pt/\MPconcatfactor \relax } % t_y % \def\XpresetMPscale % {\dimen 0=\dimexpr \gMPs1 pt/\MPconcatfactor \relax % \dimen 2=\zeropoint % \dimen 4=\zeropoint % \dimen 6=\dimexpr \gMPs2 pt/\MPconcatfactor \relax % \dimen 8=\zeropoint % \dimen10=\zeropoint} % \def\XdoMPconcat#1#2#3#4% % {\dimen16=\dimexpr((\dimen0*\dimen6)- % (\dimen2*\dimen4))\relax % \dimen18=\dimexpr((#1pt/\MPconcatfactor*\dimen6)- % (#3pt/\MPconcatfactor*\dimen4)+ % (\dimen4*\dimen10)- % (\dimen6*\dimen 8))\relax % \dimen12=\dimexpr((#1pt/\MPconcatfactor*-\dimen2)+ % (#3pt/\MPconcatfactor* \dimen0)+ % (\dimen2*\dimen 8)- % (\dimen0*\dimen10))\relax % \ifdim\dimen16=1pt % \edef#2{\withoutpt\the\dimen18}% % \edef#4{\withoutpt\the\dimen12}% % \else % \edef#2{\withoutpt\the\dimexpr\MPconcatfactor\dimexpr(\MPconcatfactor\dimexpr(\dimen18/\dimen16))}% % \edef#4{\withoutpt\the\dimexpr\MPconcatfactor\dimexpr(\MPconcatfactor\dimexpr(\dimen12/\dimen16))}% % \fi} \def\presetMPconcat {\dimen 0=\gMPs1\points % r_x \dimen 2=\gMPs2\points % s_x \dimen 4=\gMPs3\points % s_y \dimen 6=\gMPs4\points % r_y \dimen 8=\gMPs5\points % t_x \dimen10=\gMPs6\points } % t_y \def\presetMPscale {\dimen 0=\gMPs1\points \dimen 2=\zeropoint \dimen 4=\zeropoint \dimen 6=\gMPs2\points \dimen 8=\zeropoint \dimen10=\zeropoint} \def\doMPconcat#1#2#3#4% {\dimen16=\dimexpr (((\dimen0/\MPconcatfactor)*\dimen6/\MPconcatfactor)- ((\dimen2/\MPconcatfactor)*\dimen4/\MPconcatfactor))\relax \dimen18=\dimexpr (((#1\points/\MPconcatfactor)*\dimen 6/\MPconcatfactor)- ((#3\points/\MPconcatfactor)*\dimen 4/\MPconcatfactor)+ ((\dimen4/\MPconcatfactor)*\dimen10/\MPconcatfactor)- ((\dimen6/\MPconcatfactor)*\dimen 8/\MPconcatfactor))\relax \dimen12=\dimexpr (((#3\points/\MPconcatfactor)*\dimen 0/\MPconcatfactor)- ((#1\points/\MPconcatfactor)*\dimen 2/\MPconcatfactor)+ ((\dimen2/\MPconcatfactor)*\dimen 8/\MPconcatfactor)- ((\dimen0/\MPconcatfactor)*\dimen10/\MPconcatfactor))\relax \ifdim\dimen16=\onepoint \edef#2{\withoutpt\the\dimen18}% \edef#4{\withoutpt\the\dimen12}% \else %\edef#2{\withoutpt\the\dimexpr\MPconcatfactor\dimexpr(\MPconcatfactor\dimexpr(\dimen18/\dimen16))}% %\edef#4{\withoutpt\the\dimexpr\MPconcatfactor\dimexpr(\MPconcatfactor\dimexpr(\dimen12/\dimen16))}% \edef#2{\withoutpt\the\dimexpr(\dimen18/\dimen16)*\MPconcatfactor*\MPconcatfactor}% \edef#4{\withoutpt\the\dimexpr(\dimen12/\dimen16)*\MPconcatfactor*\MPconcatfactor}% \fi} \def\doMPconcat#1#2#3#4% {\dimen16=\dimexpr (((\dimen0/\MPconcatfactor)*\dimen6/\MPconcatfactor)- ((\dimen2/\MPconcatfactor)*\dimen4/\MPconcatfactor))\relax \dimen18=\dimexpr ((((#1\points/\MPconcatfactor)*\dimen 6/\MPconcatfactor)- ((#3\points/\MPconcatfactor)*\dimen 4/\MPconcatfactor)+ ((\dimen4/\MPconcatfactor)*\dimen10/\MPconcatfactor)- ((\dimen6/\MPconcatfactor)*\dimen 8/\MPconcatfactor)) /\dimen16)*\MPconcatfactor*\MPconcatfactor\relax \dimen12=\dimexpr ((((#3\points/\MPconcatfactor)*\dimen 0/\MPconcatfactor)- ((#1\points/\MPconcatfactor)*\dimen 2/\MPconcatfactor)+ ((\dimen2/\MPconcatfactor)*\dimen 8/\MPconcatfactor)- ((\dimen0/\MPconcatfactor)*\dimen10/\MPconcatfactor)) /\dimen16)*\MPconcatfactor*\MPconcatfactor\relax \edef#2{\withoutpt\the\dimen18}% \edef#4{\withoutpt\the\dimen12}} \def\doMPconcat#1#2#3#4% {\edef#2{\withoutpt\the\dimexpr ((((#1\points/\MPconcatfactor)*\dimen 6/\MPconcatfactor)- ((#3\points/\MPconcatfactor)*\dimen 4/\MPconcatfactor)+ ((\dimen4/\MPconcatfactor)*\dimen10/\MPconcatfactor)- ((\dimen6/\MPconcatfactor)*\dimen 8/\MPconcatfactor))/ (((\dimen0/\MPconcatfactor)*\dimen 6/\MPconcatfactor)- ((\dimen2/\MPconcatfactor)*\dimen 4/\MPconcatfactor)) )*\MPconcatfactor*\MPconcatfactor}% \edef#4{\withoutpt\the\dimexpr ((((#3\points/\MPconcatfactor)*\dimen 0/\MPconcatfactor)- ((#1\points/\MPconcatfactor)*\dimen 2/\MPconcatfactor)+ ((\dimen2/\MPconcatfactor)*\dimen 8/\MPconcatfactor)- ((\dimen0/\MPconcatfactor)*\dimen10/\MPconcatfactor))/ (((\dimen0/\MPconcatfactor)*\dimen 6/\MPconcatfactor)- ((\dimen2/\MPconcatfactor)*\dimen 4/\MPconcatfactor)) )*\MPconcatfactor*\MPconcatfactor}} \def\MPconcatfactor{256} \def\doMPconcat#1#2#3#4% {\edef#2{\withoutpt\the\dimexpr ((((#1\points/\MPconcatfactor)*\dimen 6/\MPconcatfactor)- ((#3\points/\MPconcatfactor)*\dimen 4/\MPconcatfactor)+ ((\dimen4/\MPconcatfactor)*\dimen10/\MPconcatfactor)- ((\dimen6/\MPconcatfactor)*\dimen 8/\MPconcatfactor))/ (((\dimen0/\MPconcatfactor)*\dimen 6/\MPconcatfactor)- ((\dimen2/\MPconcatfactor)*\dimen 4/\MPconcatfactor)) )*\MPconcatfactor*\MPconcatfactor}% \edef#4{\withoutpt\the\dimexpr ((((#3\points/\MPconcatfactor)*\dimen 0/\MPconcatfactor)- ((#1\points/\MPconcatfactor)*\dimen 2/\MPconcatfactor)+ ((\dimen2/\MPconcatfactor)*\dimen 8/\MPconcatfactor)- ((\dimen0/\MPconcatfactor)*\dimen10/\MPconcatfactor))/ (((\dimen0/\MPconcatfactor)*\dimen 6/\MPconcatfactor)- ((\dimen2/\MPconcatfactor)*\dimen 4/\MPconcatfactor)) )*\MPconcatfactor*\MPconcatfactor}} \def\presetMPconcat {\!!dimena\gMPs1\points % r_x \!!dimenb\gMPs2\points % s_x \!!dimenc\gMPs3\points % s_y \!!dimend\gMPs4\points % r_y \!!dimene\gMPs5\points % t_x \!!dimenf\gMPs6\points } % t_y \def\presetMPscale {\!!dimena\gMPs1\points \!!dimenb\zeropoint \!!dimenc\zeropoint \!!dimend\gMPs2\points \!!dimene\zeropoint \!!dimenf\zeropoint} \mathchardef\MPconcatfactor=256 \def\doMPconcat#1#2#3#4% {\edef#2{\withoutpt\the\dimexpr ((((#1\points/\MPconcatfactor)*\!!dimend/\MPconcatfactor)-% ((#3\points/\MPconcatfactor)*\!!dimenc/\MPconcatfactor)+% ((\!!dimenc/\MPconcatfactor)*\!!dimenf/\MPconcatfactor)-% ((\!!dimend/\MPconcatfactor)*\!!dimene/\MPconcatfactor))/% (((\!!dimena/\MPconcatfactor)*\!!dimend/\MPconcatfactor)-% ((\!!dimenb/\MPconcatfactor)*\!!dimenc/\MPconcatfactor))% )*\MPconcatfactor*\MPconcatfactor}% \edef#4{\withoutpt\the\dimexpr ((((#3\points/\MPconcatfactor)*\!!dimena/\MPconcatfactor)-% ((#1\points/\MPconcatfactor)*\!!dimenb/\MPconcatfactor)+% ((\!!dimenb/\MPconcatfactor)*\!!dimene/\MPconcatfactor)-% ((\!!dimena/\MPconcatfactor)*\!!dimenf/\MPconcatfactor))/% (((\!!dimena/\MPconcatfactor)*\!!dimend/\MPconcatfactor)-% ((\!!dimenb/\MPconcatfactor)*\!!dimenc/\MPconcatfactor))% )*\MPconcatfactor*\MPconcatfactor}} \protect --------------010605050001090406060108 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context --------------010605050001090406060108--