From owner-freebsd-standards@FreeBSD.ORG Mon Sep 12 11:02:15 2005 Return-Path: X-Original-To: freebsd-standards@freebsd.org Delivered-To: freebsd-standards@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id CC25A16A421 for ; Mon, 12 Sep 2005 11:02:15 +0000 (GMT) (envelope-from owner-bugmaster@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 88F6343D49 for ; Mon, 12 Sep 2005 11:02:14 +0000 (GMT) (envelope-from owner-bugmaster@freebsd.org) Received: from freefall.freebsd.org (peter@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j8CB2EjF025608 for ; Mon, 12 Sep 2005 11:02:14 GMT (envelope-from owner-bugmaster@freebsd.org) Received: (from peter@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j8CB2D6B025602 for freebsd-standards@freebsd.org; Mon, 12 Sep 2005 11:02:13 GMT (envelope-from owner-bugmaster@freebsd.org) Date: Mon, 12 Sep 2005 11:02:13 GMT Message-Id: <200509121102.j8CB2D6B025602@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: peter set sender to owner-bugmaster@freebsd.org using -f From: FreeBSD bugmaster To: freebsd-standards@FreeBSD.org Cc: Subject: Current problem reports assigned to you X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Sep 2005 11:02:16 -0000 Current FreeBSD problem reports Critical problems Serious problems S Submitted Tracker Resp. Description ------------------------------------------------------------------------------- o [2001/03/05] bin/25542 standards /bin/sh: null char in quoted string o [2002/12/13] kern/46239 standards posix semaphore implementation errors o [2003/04/21] standards/51209standards [PATCH] add a64l()/l64a/l64a_r functions o [2003/07/12] standards/54410standards one-true-awk not POSIX compliant (no exte o [2005/06/25] standards/82654standards C99 long double math functions are missin 5 problems total. Non-critical problems S Submitted Tracker Resp. Description ------------------------------------------------------------------------------- o [2000/09/24] bin/21519 standards sys/dir.h should be deprecated some more o [2001/01/16] bin/24390 standards Replacing old dir-symlinks when using /bi s [2001/01/24] standards/24590standards timezone function not compatible witn Sin s [2001/06/18] kern/28260 standards UIO_MAXIOV needs to be made public p [2001/11/20] standards/32126standards getopt(3) not Unix-98 conformant s [2002/03/19] standards/36076standards Implementation of POSIX fuser command o [2002/06/14] standards/39256standards [v]snprintf aren't POSIX-conformant for s p [2002/08/12] standards/41576standards POSIX compliance of ln(1) o [2002/10/23] standards/44425standards getcwd() succeeds even if current dir has o [2002/12/09] standards/46119standards Priority problems for SCHED_OTHER using p o [2003/07/24] standards/54809standards pcvt deficits o [2003/07/25] standards/54833standards more pcvt deficits o [2003/07/25] standards/54839standards pcvt deficits o [2003/07/31] standards/55112standards glob.h, glob_t's gl_pathc should be "size o [2003/09/05] standards/56476standards cd9660 unicode support simple hack o [2003/10/29] standards/58676standards grantpt(3) alters storage used by ptsname s [2004/02/14] standards/62858standards malloc(0) not C99 compliant p [2004/02/21] standards/63173standards Patch to add getopt_long_only(3) to libc o [2004/03/29] kern/64875 standards [patch] add a system call: fdatasync() o [2004/05/07] standards/66357standards make POSIX conformance problem ('sh -e' & o [2004/05/11] standards/66531standards _gettemp uses a far smaller set of filena o [2004/08/22] standards/70813standards [PATCH] ls not Posix compliant o [2004/08/26] docs/70985 standards [patch] sh(1): incomplete documentation o o [2004/09/22] standards/72006standards floating point formating in non-C locales o [2005/03/20] standards/79055standards Add an IFS regression test for shells o [2005/03/20] standards/79056standards regex(3) regression tests o [2005/03/21] standards/79067standards /bin/sh should be more intelligent about a [2005/04/23] standards/80293standards sysconf() does not support well-defined u o [2005/05/20] standards/81287standards [PATCH]: fingerd(8) might send a line not o [2005/07/21] standards/83845standards [ patch ] add log2() and log2f() support o [2005/08/18] standards/85080standards output of long double subnormals (with pr o [2005/08/18] standards/85090standards [patch] add memalign() and posix_memalign 32 problems total. From owner-freebsd-standards@FreeBSD.ORG Tue Sep 13 00:30:55 2005 Return-Path: X-Original-To: freebsd-standards@FreeBSD.org Delivered-To: freebsd-standards@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 95C9016A420; Tue, 13 Sep 2005 00:30:55 +0000 (GMT) (envelope-from kargl@troutmask.apl.washington.edu) Received: from troutmask.apl.washington.edu (troutmask.apl.washington.edu [128.208.78.105]) by mx1.FreeBSD.org (Postfix) with ESMTP id 20D3A43D76; Tue, 13 Sep 2005 00:30:28 +0000 (GMT) (envelope-from kargl@troutmask.apl.washington.edu) Received: from troutmask.apl.washington.edu (localhost [127.0.0.1]) by troutmask.apl.washington.edu (8.13.4/8.13.4) with ESMTP id j8D0URma000278; Mon, 12 Sep 2005 17:30:27 -0700 (PDT) (envelope-from kargl@troutmask.apl.washington.edu) Received: (from kargl@localhost) by troutmask.apl.washington.edu (8.13.4/8.13.1/Submit) id j8D0URQm000277; Mon, 12 Sep 2005 17:30:27 -0700 (PDT) (envelope-from kargl) From: "Steven G. Kargl" Message-Id: <200509130030.j8D0URQm000277@troutmask.apl.washington.edu> In-Reply-To: <200506252340.j5PNeCQd005977@freefall.freebsd.org> To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-standards@FreeBSD.org Date: Mon, 12 Sep 2005 17:30:27 -0700 (PDT) X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=ELM1126571427-113-0_ Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: Subject: Re: standards/82654: C99 long double math functions are missing X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Sep 2005 00:30:55 -0000 --ELM1126571427-113-0_ Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII FreeBSD-gnats-submit@FreeBSD.org wrote: > Thank you very much for your problem report. > It has the internal identification `standards/82654'. > The individual assigned to look at your > report is: freebsd-standards. > > You can access the state of your problem report at any time > via this link: > > http://www.freebsd.org/cgi/query-pr.cgi?pr=82654 > > >Category: standards > >Responsible: freebsd-standards > >Synopsis: C99 long double math functions are missing > >Arrival-Date: Sat Jun 25 23:40:12 GMT 2005 > Attached is a new implementation of logl(3) and diff to the exp.3 man page. The method to my implementation of the long double log should be acceptable for 64-bit precision and follow the following steps: 1) Deal with special cases 2) Split the argument into fraction, f, and exponent, n, with frexpl 3) Use a look-up table for 128 entries for log(f_n) where the interval [1/2,1) is split into 128 equally spaced intervals. 4) Use polynomial approximations for interpolation a) Start with Taylor's series where x is in [0,1/128] and truncate retaining the x**9 term, i.e., error of order 8e-22. b) Transform polynomial into range [-1,1] c) Rewrite transformed polynomial in an expansion of Chebyshev polynomials d) Reduce the Chebyshev polynomials to a polynomial of order x**8. 5) Run a boat load of tests. In the following test, "./log 1000000 10" means 1 million random arguments to logf, log, and logl are generated such that x = f*2**e and e is in [-10,10] and f is in [1/2,1). On i386 (53-bit precision), a comparison of logf, log, and logl to GMP/MPFR shows the following results. The legend is read as follows: R --> a difference of 1 in the last decimal digit 1 --> a difference of more than 1 in last decimal digit 2 --> a difference occurs in the 2nd to last decimal digit 3 --> a difference occurs in the 3rd to last decimal digit 4 --> a difference occurs in the 4th (or larger) to last decimal digit FLT --> 24-bit floating point DBL --> 53-bit double floating point LDBL -> 53-bit long double floating point on i386 -> 64-bit long double floating point on amd64 kargl[216] ./log 1000000 1 Checking logf, log, and logl ... R 1 2 3 4 Range of Failures FLT: 1128 85 18 0 10 9.90536e-01 1.09909e+00 DBL: 314483 185399 6972 7062 16245 3.67892680689692e-01 1.99999806284904e+00 LDBL: 316817 185429 6965 7071 16240 3.67892680689692e-01 1.99999806284904e+00 kargl[217] ./log 1000000 10 Checking logf, log, and logl ... R 1 2 3 4 Range of Failures FLT: 237 14 6 0 0 9.90536e-01 1.05196e+00 DBL: 141135 38632 1289 1269 2959 3.67997204419225e-01 2.71815394610167e+00 LDBL: 144160 38639 1289 1266 2957 3.67901860736310e-01 2.71815394610167e+00 kargl[218] ./log 1000000 120 Checking logf, log, and logl ... R 1 2 3 4 Range of Failures FLT: 32 0 0 0 0 DBL: 23673 3498 128 134 263 3.68287028279155e-01 2.71191326901317e+00 LDBL: 44026 3503 128 134 263 3.68287028279155e-01 2.71191326901317e+00 kargl[219] ./log 1000000 1020 Checking log and logl ... R 1 2 3 4 Range of Failures DBL: 3761 439 17 9 32 3.70691583026201e-01 2.67239280417562e+00 LDBL: 28123 437 17 10 31 3.70691583026201e-01 2.70551693812013e+00 kargl[220] ./log 1000000 16000 Checking logl ... R 1 2 3 4 Range of Failures LDBL: 30873 30 0 0 4 9.05885221436620e-01 2.32185203954577e+00 For i386 (53-bit precision), we see the implementation of logl is consistent with the implementation of log. Note, my comparison function converts the long double x to an ASCII string via scanf and the mpfr type is also converted to an ASCII string. Thus, a rounding error can occur in my numerical implementation, gdtoa, or mpfr_get_str and is the reason why I make a distinction between R and 1 in my tables. Note, the "Range of Failures" excludes the differences under R and is fairly well localized to a small range in x. On amd64 (64-bit precision), we find troutmask:sgk[211] ./log 1000000 1 Checking logf, log, and logl ... R 1 2 3 4 Range of Failures FLT: 4105 104 23 0 13 9.90094e-01 1.10419e+00 DBL: 5586 0 0 0 0 LDBL: 124664 631825 61534 8867 95289 2.50107496511191130e-01 1.99999793246388435e+00 troutmask:sgk[212] ./log 1000000 10 Checking logf, log, and logl ... R 1 2 3 4 Range of Failures FLT: 1583 17 2 0 1 9.90414e-01 1.09967e+00 DBL: 2511 0 0 0 0 LDBL: 480101 131205 12991 1654 17324 1.00236730759206694e-03 1.02341860389709473e+03 troutmask:sgk[213] ./log 1000000 120 Checking logf, log, and logl ... R 1 2 3 4 Range of Failures FLT: 254 1 0 0 0 1.05113e+00 1.05113e+00 DBL: 407 0 0 0 0 LDBL: 113720 12165 1176 151 1566 5.22837305538814689e-05 2.19174624633789062e+04 troutmask:sgk[214] ./log 1000000 1020 Checking log and logl ... R 1 2 3 4 Range of Failures DBL: 64 0 0 0 0 LDBL: 26339 1465 153 17 170 1.04225044424310909e-04 1.45063449859619141e+04 troutmask:sgk[215] ./log 1000000 16000 Checking logl ... R 1 2 3 4 Range of Failures LDBL: 15995 78 10 2 12 2.05640358899472631e-04 2.63248902320861816e+02 If I restrict the test program and logl to 53-bit precision for logl, we find all columns marked with 1, 2, 3, and 4 are zero for logl. If neither das or bde object, I would like to see logl.c committed to libm. With logl committed, I have implementations of log2f, log2, and log2l also ready for the tree. -- Steve http://troutmask.apl.washington.edu/~kargl/ --ELM1126571427-113-0_ Content-Transfer-Encoding: 7bit Content-Type: text/x-patch Content-Disposition: attachment; filename=exp.3.diff Content-Description: --- /mnt1/src/lib/msun/man/exp.3 Wed Aug 24 21:02:10 2005 +++ exp.3 Mon Sep 12 16:51:12 2005 @@ -45,8 +45,10 @@ .Nm expm1f , .Nm log , .Nm logf , +.Nm logl , .Nm log10 , .Nm log10f , +.Nm log10l , .Nm log1p , .Nm log1pf , .Nm pow , @@ -72,10 +74,14 @@ .Fn log "double x" .Ft float .Fn logf "float x" +.Ft "long double" +.Fn logl "long double x" .Ft double .Fn log10 "double x" .Ft float .Fn log10f "float x" +.Ft "long double" +.Fn log10l "long double x" .Ft double .Fn log1p "double x" .Ft float @@ -109,16 +115,18 @@ .Fa x . .Pp The -.Fn log -and the -.Fn logf +.Fn log , +.Fn logf , +and +.Fn logl functions compute the value of the natural logarithm of argument .Fa x . .Pp The -.Fn log10 -and the -.Fn log10f +.Fn log10 , +.Fn log10f , +and +.Fn log10l functions compute the value of the logarithm of argument .Fa x to base 10. --ELM1126571427-113-0_-- From owner-freebsd-standards@FreeBSD.ORG Tue Sep 13 00:40:20 2005 Return-Path: X-Original-To: freebsd-standards@hub.freebsd.org Delivered-To: freebsd-standards@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0B1D216A41F for ; Tue, 13 Sep 2005 00:40:20 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id A359343D45 for ; Tue, 13 Sep 2005 00:40:19 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j8D0eJ1L030137 for ; Tue, 13 Sep 2005 00:40:19 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j8D0eJwi030136; Tue, 13 Sep 2005 00:40:19 GMT (envelope-from gnats) Date: Tue, 13 Sep 2005 00:40:19 GMT Message-Id: <200509130040.j8D0eJwi030136@freefall.freebsd.org> To: freebsd-standards@FreeBSD.org From: "Steven G. Kargl" Cc: Subject: Re: standards/82654: C99 long double math functions are missing X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: "Steven G. Kargl" List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Sep 2005 00:40:20 -0000 The following reply was made to PR standards/82654; it has been noted by GNATS. From: "Steven G. Kargl" To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-standards@FreeBSD.org Cc: Subject: Re: standards/82654: C99 long double math functions are missing Date: Mon, 12 Sep 2005 17:30:27 -0700 (PDT) --ELM1126571427-113-0_ Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII FreeBSD-gnats-submit@FreeBSD.org wrote: > Thank you very much for your problem report. > It has the internal identification `standards/82654'. > The individual assigned to look at your > report is: freebsd-standards. > > You can access the state of your problem report at any time > via this link: > > http://www.freebsd.org/cgi/query-pr.cgi?pr=82654 > > >Category: standards > >Responsible: freebsd-standards > >Synopsis: C99 long double math functions are missing > >Arrival-Date: Sat Jun 25 23:40:12 GMT 2005 > Attached is a new implementation of logl(3) and diff to the exp.3 man page. The method to my implementation of the long double log should be acceptable for 64-bit precision and follow the following steps: 1) Deal with special cases 2) Split the argument into fraction, f, and exponent, n, with frexpl 3) Use a look-up table for 128 entries for log(f_n) where the interval [1/2,1) is split into 128 equally spaced intervals. 4) Use polynomial approximations for interpolation a) Start with Taylor's series where x is in [0,1/128] and truncate retaining the x**9 term, i.e., error of order 8e-22. b) Transform polynomial into range [-1,1] c) Rewrite transformed polynomial in an expansion of Chebyshev polynomials d) Reduce the Chebyshev polynomials to a polynomial of order x**8. 5) Run a boat load of tests. In the following test, "./log 1000000 10" means 1 million random arguments to logf, log, and logl are generated such that x = f*2**e and e is in [-10,10] and f is in [1/2,1). On i386 (53-bit precision), a comparison of logf, log, and logl to GMP/MPFR shows the following results. The legend is read as follows: R --> a difference of 1 in the last decimal digit 1 --> a difference of more than 1 in last decimal digit 2 --> a difference occurs in the 2nd to last decimal digit 3 --> a difference occurs in the 3rd to last decimal digit 4 --> a difference occurs in the 4th (or larger) to last decimal digit FLT --> 24-bit floating point DBL --> 53-bit double floating point LDBL -> 53-bit long double floating point on i386 -> 64-bit long double floating point on amd64 kargl[216] ./log 1000000 1 Checking logf, log, and logl ... R 1 2 3 4 Range of Failures FLT: 1128 85 18 0 10 9.90536e-01 1.09909e+00 DBL: 314483 185399 6972 7062 16245 3.67892680689692e-01 1.99999806284904e+00 LDBL: 316817 185429 6965 7071 16240 3.67892680689692e-01 1.99999806284904e+00 kargl[217] ./log 1000000 10 Checking logf, log, and logl ... R 1 2 3 4 Range of Failures FLT: 237 14 6 0 0 9.90536e-01 1.05196e+00 DBL: 141135 38632 1289 1269 2959 3.67997204419225e-01 2.71815394610167e+00 LDBL: 144160 38639 1289 1266 2957 3.67901860736310e-01 2.71815394610167e+00 kargl[218] ./log 1000000 120 Checking logf, log, and logl ... R 1 2 3 4 Range of Failures FLT: 32 0 0 0 0 DBL: 23673 3498 128 134 263 3.68287028279155e-01 2.71191326901317e+00 LDBL: 44026 3503 128 134 263 3.68287028279155e-01 2.71191326901317e+00 kargl[219] ./log 1000000 1020 Checking log and logl ... R 1 2 3 4 Range of Failures DBL: 3761 439 17 9 32 3.70691583026201e-01 2.67239280417562e+00 LDBL: 28123 437 17 10 31 3.70691583026201e-01 2.70551693812013e+00 kargl[220] ./log 1000000 16000 Checking logl ... R 1 2 3 4 Range of Failures LDBL: 30873 30 0 0 4 9.05885221436620e-01 2.32185203954577e+00 For i386 (53-bit precision), we see the implementation of logl is consistent with the implementation of log. Note, my comparison function converts the long double x to an ASCII string via scanf and the mpfr type is also converted to an ASCII string. Thus, a rounding error can occur in my numerical implementation, gdtoa, or mpfr_get_str and is the reason why I make a distinction between R and 1 in my tables. Note, the "Range of Failures" excludes the differences under R and is fairly well localized to a small range in x. On amd64 (64-bit precision), we find troutmask:sgk[211] ./log 1000000 1 Checking logf, log, and logl ... R 1 2 3 4 Range of Failures FLT: 4105 104 23 0 13 9.90094e-01 1.10419e+00 DBL: 5586 0 0 0 0 LDBL: 124664 631825 61534 8867 95289 2.50107496511191130e-01 1.99999793246388435e+00 troutmask:sgk[212] ./log 1000000 10 Checking logf, log, and logl ... R 1 2 3 4 Range of Failures FLT: 1583 17 2 0 1 9.90414e-01 1.09967e+00 DBL: 2511 0 0 0 0 LDBL: 480101 131205 12991 1654 17324 1.00236730759206694e-03 1.02341860389709473e+03 troutmask:sgk[213] ./log 1000000 120 Checking logf, log, and logl ... R 1 2 3 4 Range of Failures FLT: 254 1 0 0 0 1.05113e+00 1.05113e+00 DBL: 407 0 0 0 0 LDBL: 113720 12165 1176 151 1566 5.22837305538814689e-05 2.19174624633789062e+04 troutmask:sgk[214] ./log 1000000 1020 Checking log and logl ... R 1 2 3 4 Range of Failures DBL: 64 0 0 0 0 LDBL: 26339 1465 153 17 170 1.04225044424310909e-04 1.45063449859619141e+04 troutmask:sgk[215] ./log 1000000 16000 Checking logl ... R 1 2 3 4 Range of Failures LDBL: 15995 78 10 2 12 2.05640358899472631e-04 2.63248902320861816e+02 If I restrict the test program and logl to 53-bit precision for logl, we find all columns marked with 1, 2, 3, and 4 are zero for logl. If neither das or bde object, I would like to see logl.c committed to libm. With logl committed, I have implementations of log2f, log2, and log2l also ready for the tree. -- Steve http://troutmask.apl.washington.edu/~kargl/ --ELM1126571427-113-0_ Content-Transfer-Encoding: 7bit Content-Type: text/x-c++src Content-Disposition: attachment; filename=logl.c Content-Description: /*- * Copyright (c) 2005, Steven G. Kargl * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice unmodified, this list of conditions, and the following * disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Compute the natural logarithm of x by decomposing x into its base 2 * representation. * * log(x) = log(F * 2**n) such that F = [1/2,1). * = log(F) + n * log(2) * * Let F = f_n + e such that f_n is interval endpoint. * * log(F) = log(f_n + e) * = log[f_n (1 + e / f_n)] * = log(f_n) + log(1 + e / f_n) * * The log(f_n) are tabulated below. Let d = e / f_n and use * * log(1 + d) = d - (1/2)*d**2 + (1/3)*d**3 - (1/4)*d**4 + ... + (1/9)*d**9 * = p(d) * * We have d in [0,1/interval width]. This is mapped into an interval * of t in [-1,1] and p(d) is converted into a polynomial p(t). Next, * p(t) is written as an expansion in Chebyshev polynomials, T_n(t), on * the interval [-1,1]. Finally, T_n(t) are replaced by their polynomials * in t and this is then reduced to an 8th order polynomial. * * log(x) = n * log(2) + log(f_n) + p(t) * */ #include #define LOGL2 0x.b17217f7d1cf79acp0L /* 6.931471805599453094e-1L */ #define INTERVALS 128 static long double f[INTERVALS][2] = { { 0x.8000000000000000p0L, -0x.b17217f7d1cf79acp0L }, /* 128/256 */ { 0x.8100000000000000p0L, -0x.af74155120c9011cp0L }, /* 129/256 */ { 0x.8200000000000000p0L, -0x.ad7a02e1b24efd32p0L }, /* 130/256 */ { 0x.8300000000000000p0L, -0x.ab83d135dc633301p0L }, /* 131/256 */ { 0x.8400000000000000p0L, -0x.a991713433c2b999p0L }, /* 132/256 */ { 0x.8500000000000000p0L, -0x.a7a2d41ad270c9d7p0L }, /* 133/256 */ { 0x.8600000000000000p0L, -0x.a5b7eb7cb860fb89p0L }, /* 134/256 */ { 0x.8700000000000000p0L, -0x.a3d0a93f45169a4bp0L }, /* 135/256 */ { 0x.8800000000000000p0L, -0x.a1ecff97c91e267bp0L }, /* 136/256 */ { 0x.8900000000000000p0L, -0x.a00ce1092e5498c3p0L }, /* 137/256 */ { 0x.8a00000000000000p0L, -0x.9e304061b5fda919p0L }, /* 138/256 */ { 0x.8b00000000000000p0L, -0x.9c5710b8cbb73a43p0L }, /* 139/256 */ { 0x.8c00000000000000p0L, -0x.9a81456cec642e10p0L }, /* 140/256 */ { 0x.8d00000000000000p0L, -0x.98aed221a03458b6p0L }, /* 141/256 */ { 0x.8e00000000000000p0L, -0x.96dfaabd86fa1647p0L }, /* 142/256 */ { 0x.8f00000000000000p0L, -0x.9513c36876083696p0L }, /* 143/256 */ { 0x.9000000000000000p0L, -0x.934b1089a6dc93c2p0L }, /* 144/256 */ { 0x.9100000000000000p0L, -0x.918586c5f5e4bf02p0L }, /* 145/256 */ { 0x.9200000000000000p0L, -0x.8fc31afe30b2c6dfp0L }, /* 146/256 */ { 0x.9300000000000000p0L, -0x.8e03c24d7300395ap0L }, /* 147/256 */ { 0x.9400000000000000p0L, -0x.8c47720791e53314p0L }, /* 148/256 */ { 0x.9500000000000000p0L, -0x.8a8e1fb794b09134p0L }, /* 149/256 */ { 0x.9600000000000000p0L, -0x.88d7c11e3ad53cdcp0L }, /* 150/256 */ { 0x.9700000000000000p0L, -0x.87244c308e670a66p0L }, /* 151/256 */ { 0x.9800000000000000p0L, -0x.8573b71682a7d21bp0L }, /* 152/256 */ { 0x.9900000000000000p0L, -0x.83c5f8299e2b4091p0L }, /* 153/256 */ { 0x.9a00000000000000p0L, -0x.821b05f3b01d6774p0L }, /* 154/256 */ { 0x.9b00000000000000p0L, -0x.8072d72d903d588cp0L }, /* 155/256 */ { 0x.9c00000000000000p0L, -0x.7ecd62bde92210bfp0L }, /* 156/256 */ { 0x.9d00000000000000p0L, -0x.7d2a9fb80c64b379p0L }, /* 157/256 */ { 0x.9e00000000000000p0L, -0x.7b8a855ad04f93fap0L }, /* 158/256 */ { 0x.9f00000000000000p0L, -0x.79ed0b0f76b5cd58p0L }, /* 159/256 */ { 0x.a000000000000000p0L, -0x.785228689c9b3653p0L }, /* 160/256 */ { 0x.a100000000000000p0L, -0x.76b9d521325856f5p0L }, /* 161/256 */ { 0x.a200000000000000p0L, -0x.7524091b7be9add8p0L }, /* 162/256 */ { 0x.a300000000000000p0L, -0x.7390bc60191d0d08p0L }, /* 163/256 */ { 0x.a400000000000000p0L, -0x.71ffe71d15532491p0L }, /* 164/256 */ { 0x.a500000000000000p0L, -0x.707181a4fe8e7640p0L }, /* 165/256 */ { 0x.a600000000000000p0L, -0x.6ee5846e038bec2ep0L }, /* 166/256 */ { 0x.a700000000000000p0L, -0x.6d5be81118a42549p0L }, /* 167/256 */ { 0x.a800000000000000p0L, -0x.6bd4a5492337419dp0L }, /* 168/256 */ { 0x.a900000000000000p0L, -0x.6a4fb4f22b678dbdp0L }, /* 169/256 */ { 0x.aa00000000000000p0L, -0x.68cd100893e9e323p0L }, /* 170/256 */ { 0x.ab00000000000000p0L, -0x.674cafa857b4ec31p0L }, /* 171/256 */ { 0x.ac00000000000000p0L, -0x.65ce8d0c4d5ab73bp0L }, /* 172/256 */ { 0x.ad00000000000000p0L, -0x.6452a18d6fda2653p0L }, /* 173/256 */ { 0x.ae00000000000000p0L, -0x.62d8e6a22cb7d28fp0L }, /* 174/256 */ { 0x.af00000000000000p0L, -0x.616155ddb72feab8p0L }, /* 175/256 */ { 0x.b000000000000000p0L, -0x.5febe8ef60546fb8p0L }, /* 176/256 */ { 0x.b100000000000000p0L, -0x.5e7899a1f3ecf63fp0L }, /* 177/256 */ { 0x.b200000000000000p0L, -0x.5d0761db19eec585p0L }, /* 178/256 */ { 0x.b300000000000000p0L, -0x.5b983b9abc65c859p0L }, /* 179/256 */ { 0x.b400000000000000p0L, -0x.5a2b20fa71a8506ap0L }, /* 180/256 */ { 0x.b500000000000000p0L, -0x.58c00c2ceab124eep0L }, /* 181/256 */ { 0x.b600000000000000p0L, -0x.5756f77d657cbe9bp0L }, /* 182/256 */ { 0x.b700000000000000p0L, -0x.55efdd4f2347eb7bp0L }, /* 183/256 */ { 0x.b800000000000000p0L, -0x.548ab81ce28f5f38p0L }, /* 184/256 */ { 0x.b900000000000000p0L, -0x.532782785cb0efbbp0L }, /* 185/256 */ { 0x.ba00000000000000p0L, -0x.51c63709c7106c19p0L }, /* 186/256 */ { 0x.bb00000000000000p0L, -0x.5066d08f57a31c87p0L }, /* 187/256 */ { 0x.bc00000000000000p0L, -0x.4f0949dcccc60ed5p0L }, /* 188/256 */ { 0x.bd00000000000000p0L, -0x.4dad9ddaf8445bb3p0L }, /* 189/256 */ { 0x.be00000000000000p0L, -0x.4c53c7874d738ec3p0L }, /* 190/256 */ { 0x.bf00000000000000p0L, -0x.4afbc1f3724d4e7dp0L }, /* 191/256 */ { 0x.c000000000000000p0L, -0x.49a58844d36e49e1p0L }, /* 192/256 */ { 0x.c100000000000000p0L, -0x.485115b43ae350fcp0L }, /* 193/256 */ { 0x.c200000000000000p0L, -0x.46fe658d69ae5377p0L }, /* 194/256 */ { 0x.c300000000000000p0L, -0x.45ad732eb3edcd67p0L }, /* 195/256 */ { 0x.c400000000000000p0L, -0x.445e3a089f91ef79p0L }, /* 196/256 */ { 0x.c500000000000000p0L, -0x.4310b59d858b8c46p0L }, /* 197/256 */ { 0x.c600000000000000p0L, -0x.41c4e181356189cep0L }, /* 198/256 */ { 0x.c700000000000000p0L, -0x.407ab9589b1a43ddp0L }, /* 199/256 */ { 0x.c800000000000000p0L, -0x.3f3238d96766f2fbp0L }, /* 200/256 */ { 0x.c900000000000000p0L, -0x.3deb5bc9b9ffcbbep0L }, /* 201/256 */ { 0x.ca00000000000000p0L, -0x.3ca61dffce202424p0L }, /* 202/256 */ { 0x.cb00000000000000p0L, -0x.3b627b61a912806bp0L }, /* 203/256 */ { 0x.cc00000000000000p0L, -0x.3a206fe4cabcf6b0p0L }, /* 204/256 */ { 0x.cd00000000000000p0L, -0x.38dff78de01ee139p0L }, /* 205/256 */ { 0x.ce00000000000000p0L, -0x.37a10e7077b15a1ep0L }, /* 206/256 */ { 0x.cf00000000000000p0L, -0x.3663b0aeb79c794ep0L }, /* 207/256 */ { 0x.d000000000000000p0L, -0x.3527da7915b3c6dep0L }, /* 208/256 */ { 0x.d100000000000000p0L, -0x.33ed880e112cc827p0L }, /* 209/256 */ { 0x.d200000000000000p0L, -0x.32b4b5b9ee02fe45p0L }, /* 210/256 */ { 0x.d300000000000000p0L, -0x.317d5fd671fd1855p0L }, /* 211/256 */ { 0x.d400000000000000p0L, -0x.304782caa3478377p0L }, /* 212/256 */ { 0x.d500000000000000p0L, -0x.2f131b0a8898e67cp0L }, /* 213/256 */ { 0x.d600000000000000p0L, -0x.2de02516ead57739p0L }, /* 214/256 */ { 0x.d700000000000000p0L, -0x.2cae9d7d182673e3p0L }, /* 215/256 */ { 0x.d800000000000000p0L, -0x.2b7e80d6a87b63f7p0L }, /* 216/256 */ { 0x.d900000000000000p0L, -0x.2a4fcbc9436b19f4p0L }, /* 217/256 */ { 0x.da00000000000000p0L, -0x.29227b06676ac1bdp0L }, /* 218/256 */ { 0x.db00000000000000p0L, -0x.27f68b4b32519714p0L }, /* 219/256 */ { 0x.dc00000000000000p0L, -0x.26cbf9602b202c5fp0L }, /* 220/256 */ { 0x.dd00000000000000p0L, -0x.25a2c2190d0273aep0L }, /* 221/256 */ { 0x.de00000000000000p0L, -0x.247ae25493840349p0L }, /* 222/256 */ { 0x.df00000000000000p0L, -0x.235456fc47ee53c7p0L }, /* 223/256 */ { 0x.e000000000000000p0L, -0x.222f1d044fc8f7bcp0L }, /* 224/256 */ { 0x.e100000000000000p0L, -0x.210b316b3c740d11p0L }, /* 225/256 */ { 0x.e200000000000000p0L, -0x.1fe89139dbd56595p0L }, /* 226/256 */ { 0x.e300000000000000p0L, -0x.1ec739830a111fccp0L }, /* 227/256 */ { 0x.e400000000000000p0L, -0x.1da727638446a250p0L }, /* 228/256 */ { 0x.e500000000000000p0L, -0x.1c885801bc4b2369p0L }, /* 229/256 */ { 0x.e600000000000000p0L, -0x.1b6ac88dad5b1be0p0L }, /* 230/256 */ { 0x.e700000000000000p0L, -0x.1a4e7640b1bc37a9p0L }, /* 231/256 */ { 0x.e800000000000000p0L, -0x.19335e5d594988aep0L }, /* 232/256 */ { 0x.e900000000000000p0L, -0x.18197e2f40e3f01cp0L }, /* 233/256 */ { 0x.ea00000000000000p0L, -0x.1700d30aeac0e0f4p0L }, /* 234/256 */ { 0x.eb00000000000000p0L, -0x.15e95a4d9791cb7dp0L }, /* 235/256 */ { 0x.ec00000000000000p0L, -0x.14d3115d207eac5ep0L }, /* 236/256 */ { 0x.ed00000000000000p0L, -0x.13bdf5a7d1ee642fp0L }, /* 237/256 */ { 0x.ee00000000000000p0L, -0x.12aa04a44717a48cp0L }, /* 238/256 */ { 0x.ef00000000000000p0L, -0x.11973bd1465566d1p0L }, /* 239/256 */ { 0x.f000000000000000p0L, -0x.108598b59e3a0689p0L }, /* 240/256 */ { 0x.f100000000000000p0L, -0x.f7518e0035c3dd83p-4L }, /* 241/256 */ { 0x.f200000000000000p0L, -0x.e65b9e6eed965c37p-4L }, /* 242/256 */ { 0x.f300000000000000p0L, -0x.d5779687d887e0d2p-4L }, /* 243/256 */ { 0x.f400000000000000p0L, -0x.c4a550a4fd9a19a9p-4L }, /* 244/256 */ { 0x.f500000000000000p0L, -0x.b3e4a796a5dac208p-4L }, /* 245/256 */ { 0x.f600000000000000p0L, -0x.a33576a16f1f4c64p-4L }, /* 246/256 */ { 0x.f700000000000000p0L, -0x.9297997c68c1f4d7p-4L }, /* 247/256 */ { 0x.f800000000000000p0L, -0x.820aec4f3a222381p-4L }, /* 248/256 */ { 0x.f900000000000000p0L, -0x.718f4bb052abc632p-4L }, /* 249/256 */ { 0x.fa00000000000000p0L, -0x.612494a3232afa2ep-4L }, /* 250/256 */ { 0x.fb00000000000000p0L, -0x.50caa49660330273p-4L }, /* 251/256 */ { 0x.fc00000000000000p0L, -0x.408159624d611d28p-4L }, /* 252/256 */ { 0x.fd00000000000000p0L, -0x.3048914711455441p-4L }, /* 253/256 */ { 0x.fe00000000000000p0L, -0x.20202aeb11bce252p-4L }, /* 254/256 */ { 0x.ff00000000000000p0L, -0x.10080559588b357ep-4L } /* 255/256 */ }; /* * Chebyshev reduced coefficients in power series. */ #define M00 0x.ff805515885e0250p-8L /* 0.389864041565732301e-2L */ #define M01 0x.ff00ff00ff0591f1p-8L /* 0.389105058365765103e-2L */ #define M02 -0x.7f017e027d037c00p-16L /* -0.757013732229102636e-5L */ #define M03 0x.545751e06188aaabp-24L /* 0.196371909896990662e-7L */ #define M04 -0x.3f027b08b2000000p-32L /* -0.573069790783262763e-10L */ #define M05 0x.327f5b4288888889p-40L /* 0.179403110200483648e-12L */ #define M05 0x.327f5b4288888889p-40L /* 0.179403110200483648e-12L */ #define M06 -0x.29ae215555555555p-48L /* -0.578428917628910401e-15L */ #define M07 -0x.29ae215555555555p-48L /* -0.578428917628910401e-15L */ #define M08 -0x.1f00000000000000p-64L /* -0.656450534122082763e-20L */ #define M09 0x.1c71c71c71c71c72p-72L /* 0.235286929792861205e-22L */ static long double zero = 0.0L; long double logl(long double x) { int i, j, n; long double ff, d, t, val; /* log(+Inf) = +Inf */ if (isinf(x)) return x*x+x; /* log(NaN) = NaN with signal */ if (isnan(x)) return (x+x); /* log(x) = sNaN if x < 0. */ if (x < zero) return (x - x) / (x - x); /* log(+-0) = -Inf with signal */ if (x == zero) return (- 1.0L / zero); /* Break x into ff * 2**n */ ff = frexpl(x, &n); /* Find index for the relevant interval */ i = 2 * ff * INTERVALS - INTERVALS; d = (ff - f[i][0]) / f[i][0]; /* d in [0,1/INTERVALS] */ /* Polynomial mapped into in [-1,1] */ t = 2 * INTERVALS * d - 1.0L; val = M08 + M09 * t; val = M07 + val * t; val = M06 + val * t; val = M05 + val * t; val = M04 + val * t; val = M03 + val * t; val = M02 + val * t; val = M01 + val * t; val = M00 + val * t; val += n * LOGL2 + f[i][1]; return val; } --ELM1126571427-113-0_ Content-Transfer-Encoding: 7bit Content-Type: text/x-patch Content-Disposition: attachment; filename=exp.3.diff Content-Description: --- /mnt1/src/lib/msun/man/exp.3 Wed Aug 24 21:02:10 2005 +++ exp.3 Mon Sep 12 16:51:12 2005 @@ -45,8 +45,10 @@ .Nm expm1f , .Nm log , .Nm logf , +.Nm logl , .Nm log10 , .Nm log10f , +.Nm log10l , .Nm log1p , .Nm log1pf , .Nm pow , @@ -72,10 +74,14 @@ .Fn log "double x" .Ft float .Fn logf "float x" +.Ft "long double" +.Fn logl "long double x" .Ft double .Fn log10 "double x" .Ft float .Fn log10f "float x" +.Ft "long double" +.Fn log10l "long double x" .Ft double .Fn log1p "double x" .Ft float @@ -109,16 +115,18 @@ .Fa x . .Pp The -.Fn log -and the -.Fn logf +.Fn log , +.Fn logf , +and +.Fn logl functions compute the value of the natural logarithm of argument .Fa x . .Pp The -.Fn log10 -and the -.Fn log10f +.Fn log10 , +.Fn log10f , +and +.Fn log10l functions compute the value of the logarithm of argument .Fa x to base 10. --ELM1126571427-113-0_-- From owner-freebsd-standards@FreeBSD.ORG Wed Sep 14 19:54:40 2005 Return-Path: X-Original-To: freebsd-standards@FreeBSD.org Delivered-To: freebsd-standards@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E870A16A41F; Wed, 14 Sep 2005 19:54:40 +0000 (GMT) (envelope-from kargl@troutmask.apl.washington.edu) Received: from troutmask.apl.washington.edu (troutmask.apl.washington.edu [128.208.78.105]) by mx1.FreeBSD.org (Postfix) with ESMTP id 900BB43D46; Wed, 14 Sep 2005 19:54:40 +0000 (GMT) (envelope-from kargl@troutmask.apl.washington.edu) Received: from troutmask.apl.washington.edu (localhost [127.0.0.1]) by troutmask.apl.washington.edu (8.13.4/8.13.4) with ESMTP id j8EJseoH013798; Wed, 14 Sep 2005 12:54:40 -0700 (PDT) (envelope-from kargl@troutmask.apl.washington.edu) Received: (from kargl@localhost) by troutmask.apl.washington.edu (8.13.4/8.13.1/Submit) id j8EJseXU013797; Wed, 14 Sep 2005 12:54:40 -0700 (PDT) (envelope-from kargl) From: "Steven G. Kargl" Message-Id: <200509141954.j8EJseXU013797@troutmask.apl.washington.edu> In-Reply-To: <200506252340.j5PNeCQd005977@freefall.freebsd.org> To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-standards@FreeBSD.org Date: Wed, 14 Sep 2005 12:54:40 -0700 (PDT) X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII Cc: Subject: Re: standards/82654: C99 long double math functions are missing X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Sep 2005 19:54:41 -0000 My latest effort to implement logl() has some problems. In particular, bde has shown me that catastrophic cancellation can lead to enormous errors for value near 1. So, back to the drawing broad. -- Steve http://troutmask.apl.washington.edu/~kargl/ From owner-freebsd-standards@FreeBSD.ORG Wed Sep 14 20:00:37 2005 Return-Path: X-Original-To: freebsd-standards@hub.freebsd.org Delivered-To: freebsd-standards@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id EBD0316A41F for ; Wed, 14 Sep 2005 20:00:37 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5B63B43D48 for ; Wed, 14 Sep 2005 20:00:37 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j8EK0bgg073538 for ; Wed, 14 Sep 2005 20:00:37 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j8EK0b7p073537; Wed, 14 Sep 2005 20:00:37 GMT (envelope-from gnats) Date: Wed, 14 Sep 2005 20:00:37 GMT Message-Id: <200509142000.j8EK0b7p073537@freefall.freebsd.org> To: freebsd-standards@FreeBSD.org From: "Steven G. Kargl" Cc: Subject: Re: standards/82654: C99 long double math functions are missing X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: "Steven G. Kargl" List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Sep 2005 20:00:38 -0000 The following reply was made to PR standards/82654; it has been noted by GNATS. From: "Steven G. Kargl" To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-standards@FreeBSD.org Cc: Subject: Re: standards/82654: C99 long double math functions are missing Date: Wed, 14 Sep 2005 12:54:40 -0700 (PDT) My latest effort to implement logl() has some problems. In particular, bde has shown me that catastrophic cancellation can lead to enormous errors for value near 1. So, back to the drawing broad. -- Steve http://troutmask.apl.washington.edu/~kargl/ From owner-freebsd-standards@FreeBSD.ORG Wed Sep 14 22:23:55 2005 Return-Path: X-Original-To: freebsd-standards@hub.freebsd.org Delivered-To: freebsd-standards@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D0B3816A41F; Wed, 14 Sep 2005 22:23:55 +0000 (GMT) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7161943D46; Wed, 14 Sep 2005 22:23:55 +0000 (GMT) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (linimon@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j8EMNt24096517; Wed, 14 Sep 2005 22:23:55 GMT (envelope-from linimon@freefall.freebsd.org) Received: (from linimon@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j8EMNtfD096513; Wed, 14 Sep 2005 22:23:55 GMT (envelope-from linimon) Date: Wed, 14 Sep 2005 22:23:55 GMT From: Mark Linimon Message-Id: <200509142223.j8EMNtfD096513@freefall.freebsd.org> To: linimon@FreeBSD.org, freebsd-standards@FreeBSD.org Cc: Subject: Re: standards/54809: [pcvt] pcvt deficits X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Sep 2005 22:23:56 -0000 Synopsis: [pcvt] pcvt deficits State-Changed-From-To: open->closed State-Changed-By: linimon State-Changed-When: Wed Sep 14 22:23:35 GMT 2005 State-Changed-Why: Superceded by standards/54839. http://www.freebsd.org/cgi/query-pr.cgi?pr=54809