get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/818175/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 818175,
    "url": "http://patchwork.ozlabs.org/api/patches/818175/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/glibc/patch/59C8E23D.9030206@arm.com/",
    "project": {
        "id": 41,
        "url": "http://patchwork.ozlabs.org/api/projects/41/?format=api",
        "name": "GNU C Library",
        "link_name": "glibc",
        "list_id": "libc-alpha.sourceware.org",
        "list_email": "libc-alpha@sourceware.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<59C8E23D.9030206@arm.com>",
    "list_archive_url": null,
    "date": "2017-09-25T11:02:21",
    "name": "[2/7,v2] New generic logf",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "a8f659dfbae5b10a88e2ffe1f4a21fafbc1350a3",
    "submitter": {
        "id": 65667,
        "url": "http://patchwork.ozlabs.org/api/people/65667/?format=api",
        "name": "Szabolcs Nagy",
        "email": "szabolcs.nagy@arm.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/glibc/patch/59C8E23D.9030206@arm.com/mbox/",
    "series": [
        {
            "id": 4935,
            "url": "http://patchwork.ozlabs.org/api/series/4935/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/glibc/list/?series=4935",
            "date": "2017-09-25T10:57:58",
            "name": "Optimized expf, exp2f, logf, log2f and powf",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/4935/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/818175/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/818175/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<libc-alpha-return-84912-incoming=patchwork.ozlabs.org@sourceware.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": [
            "patchwork-incoming@bilbo.ozlabs.org",
            "mailing list libc-alpha@sourceware.org"
        ],
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=sourceware.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=libc-alpha-return-84912-incoming=patchwork.ozlabs.org@sourceware.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org; dkim=pass (1024-bit key;\n\tsecure) header.d=sourceware.org header.i=@sourceware.org\n\theader.b=\"bJKflJEf\"; dkim-atps=neutral",
            "sourceware.org; auth=none",
            "spf=none (sender IP is )\n\tsmtp.mailfrom=Szabolcs.Nagy@arm.com; "
        ],
        "Received": [
            "from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y11Q66kGRz9t1G\n\tfor <incoming@patchwork.ozlabs.org>;\n\tMon, 25 Sep 2017 21:02:38 +1000 (AEST)",
            "(qmail 16481 invoked by alias); 25 Sep 2017 11:02:33 -0000",
            "(qmail 16470 invoked by uid 89); 25 Sep 2017 11:02:32 -0000"
        ],
        "DomainKey-Signature": "a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:message-id:date:from:mime-version:to:cc\n\t:subject:references:in-reply-to:content-type; q=dns; s=default; b=\n\tbm6tgyJI6QdthO16RaCvAiA78qut2neQwwU34a3TF7ZcpYHOyQZggajmPww1nvQu\n\txP7+EAorZbJGlJQKGHMJ8Qt6RzRZLY5hbpmRexHj+8xj1TuoGltrJ00bkrwE6vdN\n\t6F5XDvRrJPBZyfYHbd7tJPC8M7bCxDjtVbPaE/c+6nY=",
        "DKIM-Signature": "v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:message-id:date:from:mime-version:to:cc\n\t:subject:references:in-reply-to:content-type; s=default; bh=dh00\n\tCXu1CQhv8a5Ig0JZ6F1f67M=; b=bJKflJEfkdFQTDwrtZ34UYHe8rHKufY9x9cb\n\tECCsWb7TmhH+tfp0+hNs4642Z5OfI9fpATOyAj9HJfeZG9pvZUepxR6481DrELCQ\n\tYp137JVmp3ICmAa2pXM0+aPnQaUy4nmjXEppZGdFDZ8sMzs57O3BQGrql1QWyIUk\n\tnm6wF40=",
        "Mailing-List": "contact libc-alpha-help@sourceware.org; run by ezmlm",
        "Precedence": "bulk",
        "List-Id": "<libc-alpha.sourceware.org>",
        "List-Unsubscribe": "<mailto:libc-alpha-unsubscribe-incoming=patchwork.ozlabs.org@sourceware.org>",
        "List-Subscribe": "<mailto:libc-alpha-subscribe@sourceware.org>",
        "List-Archive": "<http://sourceware.org/ml/libc-alpha/>",
        "List-Post": "<mailto:libc-alpha@sourceware.org>",
        "List-Help": "<mailto:libc-alpha-help@sourceware.org>,\n\t<http://sourceware.org/ml/#faqs>",
        "Sender": "libc-alpha-owner@sourceware.org",
        "X-Virus-Found": "No",
        "X-Spam-SWARE-Status": "No, score=-24.0 required=5.0 tests=AWL, BAYES_00,\n\tGIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3,\n\tKAM_ASCII_DIVIDERS, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS,\n\tSPF_PASS autolearn=ham version=3.3.2 spammy=xx, xix, fR, c1",
        "X-HELO": "EUR02-AM5-obe.outbound.protection.outlook.com",
        "Message-ID": "<59C8E23D.9030206@arm.com>",
        "Date": "Mon, 25 Sep 2017 12:02:21 +0100",
        "From": "Szabolcs Nagy <szabolcs.nagy@arm.com>",
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64;\n\trv:31.0) Gecko/20100101 Thunderbird/31.8.0",
        "MIME-Version": "1.0",
        "To": "GNU C Library <libc-alpha@sourceware.org>",
        "CC": "nd@arm.com",
        "Subject": "[PATCH 2/7 v2] New generic logf",
        "References": "<59C8E136.6070606@arm.com>",
        "In-Reply-To": "<59C8E136.6070606@arm.com>",
        "Content-Type": "multipart/mixed;\n\tboundary=\"------------070508030007080805070306\"",
        "X-ClientProxiedBy": "HE1PR05CA0187.eurprd05.prod.outlook.com\n\t(2603:10a6:3:f9::11) To DB6PR0802MB2487.eurprd08.prod.outlook.com\n\t(2603:10a6:4:a0::22)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "6e7902fd-73ae-407c-e5e9-08d50404e841",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(22001)(2017030254152)(48565401081)(2017052603199)(49563074)(201703131423075)(201703031133081)(201702281549075);\n\tSRVR:DB6PR0802MB2487; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; DB6PR0802MB2487;\n\t3:YAZr7UiJ7s3zcIuwUk1+8tzgoLDhEZ/iVlA/2brT3Lba+4PGICRZxFheFwBtmdAdZFopeCDv6t0kqKH97kTpppWozSSPXYJBpQSbl3v25SJl0w7SO2ZxnoQI9tGMbjqnicnfgxlqeH2GmBjPNTndEM75r+iSiQ/5TwsV+kMh5JoGMj2Q3ZtC/w3W91bd8EUqYW2GObCYpbqTIR5/QuNy6/qIzMgOC2iJz2SDFtw7I7sGEwx0YJYxdDDATKioBSIe;\n\t25:bhBWafl6PIt6VuDFMLfDOp99gIHUq5RWbzHVJCInjwqc5P1ND0oWFI2T22phhqRcNKN6SyMBiGPZ13R63tXuCizgmJSPrgg/fz5CqJMh2QXI9pCUhrk4jHRBpXO/FXNCVHDyiH+28TCdHP366BY1o/EcBYhEzRPW6rRlfEYAymmPgq3MWN80Qa4/9aYiCs5yapoCovAqZLIKKB3MHA6ILXZkBESK51Vn3+eUJQ/RsJJR0xCyo9X63XkFWIQsuFwdltJBlBx/d0Lx3lrN2Vd1r4kWb0if3kYawXqkIbh09FO+QxsLFag9lRKszhCdw3vtVcc/FZdKuVN5fyqsxTtLLw==;\n\t31:kGybj6I9d8Xe4eyb/TvVnmbs5IxgJfQbhhpopE4uu6Jt3snLCytpO0iCyPstEY76sdcGTH9fJp5C7hKkCNNokRwtyeUxsUJoQdGZXYiNaLQM+9kbf1LAdIkL1jC7b2b3dcAtR2i4nb0Z6Y3hgYAOtJRdY6WdXDtPCYqWDwao+jaJa2bu6h6NyZ50phKXatMtzLyq3WlnH12LteGLL3OIfqwhP4VAqXpVLsbp6pvbeck=",
            "1; DB6PR0802MB2487;\n\t20:BFiCz0y1Szkeakhse4tE6MaYRm8euCVl5aEUiFWWcIS8w1zQTEWv4/HS99NAyUgQV3HHzb9BszLAUECGS6lWZ+7pL6+rh+gGOb/VKWWjeBzmNnjytfGVI6ZJIi7XLD7S6QHVHI7D30+RGG9Y8QIeVUYm1KjP8QRMyw73ZeUfMQw=;\n\t4:AOaM5mKVXahX/EDcQHoNz6nlNqMNxEO0nTPyEmK/sLAR09ZoNQNrZpdnpC76s92N9WID0Z7LCjiyYLwzYJ+Iw5X4Uri7596w2ICMjrBHzKWQCPEdDWd3+Rymf58XnFXayHGu0s/cTfm8xWzwc4C0fG8/0Xap6VvoBA7zj0HFyBWcHSrCWmSYXWOQH5mG3HgcfktbdiYnEOGPXw45/AomdKB5JGy8QtYM0rFuWbi2dxA0q38hPBLrpJkhKF+KDGlk",
            "1; DB6PR0802MB2487;\n\t23:yPZxtSyDUN68Q76m1qCVCEdZy2OoE4vlNL6tClpWmHnRv1kJhyq+AVhfAaV1azIb1HazrdkY/PLEMlemm3FK1Gc1tX6f/ETB2PKLP0Lb/EGZHnhPtCbX9im7Q1agX9UCZzjITkokSRYZFoxXUh0yOO/j7k2yghjjMX7eQuqen4/8EzNhtQW2HyJoc+zivC1IJWyU+VCXJkls0bkSLXL53OWBjfwu3MZ+2kxZedqBAbmCF+hnMA3HCFTD0mKg+X9zjx+c1y68oi9h/j6dE0eTNj6mkErZZlcrnoSaPlt+gNaDnwTo/e/Gwl9nazGseecgPn9qdQyesqvUZ6O776dAyOWGOxk7dZrlKskaRarewu8KT7bA7u6hJXG8Peyr087KA5H6icYRku5tIFmIfy89RqavFXn13cyk8X6CL6DwIW1UFVxHId+KMyVGq8M1J9hwe3sZZ2o1N9ZC99RCyAJRmkjjFmbWypV5SuWuYmxbCJ4JsmhpuMFn4Q1Rv0Ok6Wp3Lfud1ngQkRYbbYJcn9FgR9vVIlenOLNKwQtUaCAu8bs6m62CmmhUb/aDwN8AWO++f4+poTJHpawkkO98QLkWjmicbkEZSzdyw4MEYTiyraKsmqFfbAgighGHBvNJEk1bP/vKHlDlYmkTFn5vGv7Ncftoe4Ex1wS1EDwjYnqsPPry9eAELDci6anvaWHexGj9p4EihFHSdNSFwwXSw+Fcx9JNm7HBxJKAWcZlyoCMaofueZpDatFwVQRA5Qx5gniRg6CsaVvj3GV61rIVPWN/xdRKtPKsGOt76yr/4y0jaX96r6dtjr1Mss+XXtCHCqdzXn/jm4gDO/MPYnIQBph5k61QyUMxpOp9S0En8BuLIfdEs/F7I7uv2aC47LSp7oGZH8eW/P2TiwpV+q2cI9rnBdE3ZGDdFtxdoQcbCs0lJaB0XrP6wQ/Y1IwG8TME8oqz7MnFxmfEoD5jBTYWOcxf2fEYf4KKCaTpSTS9Udw4AHkH3asV9nVqmGpq5Heo+RTDQZ1pwSGHjyPnE6l6ylmy0dnuQOVWiPIaizRzsIhJlLScSrCbJIrVqHNo1BpuRiABGjoLUiRMKKdMnxEczS8GtFtoJrpEwZmEjanF5N7JWv2BAyyfADOn211fPSCyf9iAkEOgsHpBUqVF262Gk6WhhqssLqsiTV4NbSdapfsZPUR4ri5C3iCrFmMMn1nlEhngoyAZnXKPp0eUBE58aCJNrndzotcnZB5fTznDDHS8zCqxvjo5F+MpJMni0AU+sC1XT8JWw9IlsZHCCeZBmQpMn81nDPpmJ/JoBGXWbnoE/KV/2e3vmn6e1ryf3ShdX5GBSNSWtRHsxyzlaWViR+yY4IuFpBQWz2StfFHaHYKaQIiW3tOQ+nobnYA54BLNt1288yDQGaYq7I8/dJWXSqXujlvfM6HWh1fXwMy9GkIxO4Q=",
            "1; DB6PR0802MB2487;\n\t6:xI5HrbmiirSWMIsDzYn8nswaa6DQbnpkCzWtJoKeMDayBY7yz9ww3NSlly/0vbbPNpOv1jJliGs47z31Xyi/e3ecsyU5lD4FqYy7iYidIR1+j5cecoMfoGN5lOiKbVeWGjE/3IsAnvonXWrupDNlN3sjEyM2hKUfvGj/pfEBwAPIE71IoMfJQ4j45xsuVpjn01CCZh4lR3SeOamATaHQUt3X5b8L8MnLYNxeSOw5EHhqo9MQ/cwY9u50VIkrbXgf5LSDjXjfDpJprM+lQenjbFlPIPfm3dlHIZhqotgbqo7hbuaSZmrxt6EPOU6n1bDGdY6JrrbkQT9tAieDvsLeVA==;\n\t5:kdVEbv9SXEUfonmMlGnBwYnRenFNF6QXKWPURs4Bw7yAHgtbKmqnX2dqIxb8FA/w27uZBHlM/qdVv/Vn14wQuiTYyX/Dt+PUUbBaQY5SrFR4s8/ie8HudoZzrR9/vr2Phre2A11dkPM+Eazy7sunYg==;\n\t24:aEghtba7tKtOzmyH+k4OKKHXmPKsUMZOTk8oJWoP+6+YF1PLMau0iC8MKN+3xbIanixfUmc5eesBtHtwwHhUdVMmsBg9MhnjKSaZa6rzgHQ=;\n\t7:sVAUh4EfykNCdDOTttgopeqxKhOOkdG6ZU6w3b6efpzdv3xfjIILC90/MngtFgq/xT1QT2lLm2RbDZfOcxhdsiGrmHCu9UzMgi0Y8JcqTitRNTWhUiP1a6Sn7SylE5mfMyxuQJQLUOE3e1gXwauZ4/F1YXnld7s6ybSXbpuTrCdzJDbwnVjAoss/QGXZQsBrQDCZE5BmlIQmKvU/x7zJJAdFtwGzsb+SXbP/s1tTZIQ="
        ],
        "X-MS-TrafficTypeDiagnostic": "DB6PR0802MB2487:",
        "NoDisclaimer": "True",
        "X-Exchange-Antispam-Report-Test": "UriScan:;",
        "X-Microsoft-Antispam-PRVS": "<DB6PR0802MB2487B1C7897332C2DF06E9F4ED7A0@DB6PR0802MB2487.eurprd08.prod.outlook.com>",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123560025)(20161123562025)(20161123564025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:DB6PR0802MB2487; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:DB6PR0802MB2487; ",
        "X-Forefront-PRVS": "04410E544A",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(6009001)(6049001)(39860400002)(346002)(376002)(189002)(199003)(72206003)(58126008)(8676002)(6666003)(81166006)(53936002)(4326008)(105586002)(33656002)(8936002)(77096006)(59896002)(86362001)(478600001)(2476003)(6116002)(81156014)(6486002)(568964002)(5890100001)(270700001)(68736007)(65816999)(2906002)(3846002)(97736004)(80316001)(316002)(65956001)(66066001)(101416001)(106356001)(305945005)(36756003)(83506001)(16586007)(16576012)(189998001)(564344004)(2950100002)(25786009)(64126003)(87266999)(50986999)(84326002)(76176999)(5660300001)(54356999)(7736002)(6916009)(5000100001)(4610100001)(65806001)(16526017)(41533002);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0802MB2487;\n\tH:[10.2.206.69]; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1;\n\tLANG:en; ",
        "Received-SPF": "None (protection.outlook.com: arm.com does not designate\n\tpermitted sender hosts)",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "arm.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "25 Sep 2017 11:02:25.8149\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "f34e5979-57d9-4aaa-ad4d-b122a662184d",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DB6PR0802MB2487"
    },
    "content": "v2:\n- __logf_data is attribute_hidden",
    "diff": "From 953dde0ba3351d49a185e57cc1800a3ad7cc35b1 Mon Sep 17 00:00:00 2001\nFrom: Szabolcs Nagy <szabolcs.nagy@arm.com>\nDate: Mon, 4 Sep 2017 17:48:46 +0100\nSubject: [PATCH 2/7] New generic logf\n\nwithout wrapper on aarch64:\nlogf reciprocal-throughput: 2.2x faster\nlogf latency: 1.9x faster\nold worst case error: 0.89 ulp\nnew worst case error: 0.82 ulp\naarch64 .text size: -356 bytes\naarch64 .rodata size: +248 bytes\n\nUses double precision arithmetics and a lookup table to allow smaller\npolynomial and avoid the use of division.\n\nData is in a separate translation unit with fixed layout to prevent the\ncompiler generating suboptimal literal access.\n\nErrors are handled inline according to POSIX rules, but this patch\nkeeps the wrapper with SVID compatible error handling.\n\nNeeds libm-test-ulps adjustment for clogf in non-nearest rounding mode.\n\n2017-09-19  Szabolcs Nagy  <szabolcs.nagy@arm.com>\n\n\t* math/Makefile (type-float-routines): Add e_logf_data.\n\t* sysdeps/ieee754/flt-32/e_logf.c: New implementation.\n\t* sysdeps/ieee754/flt-32/e_logf_data.c: New file.\n\t* sysdeps/ieee754/flt-32/math_config.h (__logf_data): Define.\n\t(LOGF_TABLE_BITS, LOGF_POLY_ORDER): Define.\n\t* sysdeps/i386/fpu/e_logf_data.c: New file.\n\t* sysdeps/ia64/fpu/e_logf_data.c: New file.\n\t* sysdeps/m68k/m680x0/fpu/e_logf_data.c: New file.\n---\n math/Makefile                         |   2 +-\n sysdeps/i386/fpu/e_logf_data.c        |   1 +\n sysdeps/ia64/fpu/e_logf_data.c        |   1 +\n sysdeps/ieee754/flt-32/e_logf.c       | 148 +++++++++++++++++-----------------\n sysdeps/ieee754/flt-32/e_logf_data.c  |  44 ++++++++++\n sysdeps/ieee754/flt-32/math_config.h  |  12 +++\n sysdeps/m68k/m680x0/fpu/e_logf_data.c |   1 +\n 7 files changed, 135 insertions(+), 74 deletions(-)\n create mode 100644 sysdeps/i386/fpu/e_logf_data.c\n create mode 100644 sysdeps/ia64/fpu/e_logf_data.c\n create mode 100644 sysdeps/ieee754/flt-32/e_logf_data.c\n create mode 100644 sysdeps/m68k/m680x0/fpu/e_logf_data.c\n\ndiff --git a/math/Makefile b/math/Makefile\nindex 04586156f8..919fec13ef 100644\n--- a/math/Makefile\n+++ b/math/Makefile\n@@ -115,7 +115,7 @@ type-double-routines := branred doasin dosincos halfulp mpa mpatan2\t\\\n \n # float support\n type-float-suffix := f\n-type-float-routines := k_rem_pio2f math_errf e_exp2f_data\n+type-float-routines := k_rem_pio2f math_errf e_exp2f_data e_logf_data\n \n # _Float128 support\n type-float128-suffix := f128\ndiff --git a/sysdeps/i386/fpu/e_logf_data.c b/sysdeps/i386/fpu/e_logf_data.c\nnew file mode 100644\nindex 0000000000..1cc8931700\n--- /dev/null\n+++ b/sysdeps/i386/fpu/e_logf_data.c\n@@ -0,0 +1 @@\n+/* Not needed.  */\ndiff --git a/sysdeps/ia64/fpu/e_logf_data.c b/sysdeps/ia64/fpu/e_logf_data.c\nnew file mode 100644\nindex 0000000000..1cc8931700\n--- /dev/null\n+++ b/sysdeps/ia64/fpu/e_logf_data.c\n@@ -0,0 +1 @@\n+/* Not needed.  */\ndiff --git a/sysdeps/ieee754/flt-32/e_logf.c b/sysdeps/ieee754/flt-32/e_logf.c\nindex cf75e11781..b8d262441f 100644\n--- a/sysdeps/ieee754/flt-32/e_logf.c\n+++ b/sysdeps/ieee754/flt-32/e_logf.c\n@@ -1,85 +1,87 @@\n-/* e_logf.c -- float version of e_log.c.\n- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.\n- */\n+/* Single-precision log function.\n+   Copyright (C) 2017 Free Software Foundation, Inc.\n+   This file is part of the GNU C Library.\n \n-/*\n- * ====================================================\n- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n- *\n- * Developed at SunPro, a Sun Microsystems, Inc. business.\n- * Permission to use, copy, modify, and distribute this\n- * software is freely granted, provided that this notice\n- * is preserved.\n- * ====================================================\n- */\n+   The GNU C Library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU Lesser General Public\n+   License as published by the Free Software Foundation; either\n+   version 2.1 of the License, or (at your option) any later version.\n+\n+   The GNU C Library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   Lesser General Public License for more details.\n+\n+   You should have received a copy of the GNU Lesser General Public\n+   License along with the GNU C Library; if not, see\n+   <http://www.gnu.org/licenses/>.  */\n \n #include <math.h>\n-#include <math_private.h>\n+#include <stdint.h>\n+#include \"math_config.h\"\n \n-static const float\n-ln2_hi =   6.9313812256e-01,\t/* 0x3f317180 */\n-ln2_lo =   9.0580006145e-06,\t/* 0x3717f7d1 */\n-two25 =    3.355443200e+07,\t/* 0x4c000000 */\n-Lg1 = 6.6666668653e-01,\t/* 3F2AAAAB */\n-Lg2 = 4.0000000596e-01,\t/* 3ECCCCCD */\n-Lg3 = 2.8571429849e-01, /* 3E924925 */\n-Lg4 = 2.2222198546e-01, /* 3E638E29 */\n-Lg5 = 1.8183572590e-01, /* 3E3A3325 */\n-Lg6 = 1.5313838422e-01, /* 3E1CD04F */\n-Lg7 = 1.4798198640e-01; /* 3E178897 */\n+/*\n+LOGF_TABLE_BITS = 4\n+LOGF_POLY_ORDER = 4\n \n-static const float zero   =  0.0;\n+ULP error: 0.818 (nearest rounding.)\n+Relative error: 1.957 * 2^-26 (before rounding.)\n+*/\n+\n+#define T __logf_data.tab\n+#define A __logf_data.poly\n+#define Ln2 __logf_data.ln2\n+#define N (1 << LOGF_TABLE_BITS)\n+#define OFF 0x3f330000\n \n float\n-__ieee754_logf(float x)\n+__ieee754_logf (float x)\n {\n-\tfloat hfsq,f,s,z,R,w,t1,t2,dk;\n-\tint32_t k,ix,i,j;\n+  /* double_t for better performance on targets with FLT_EVAL_METHOD==2.  */\n+  double_t z, r, r2, y, y0, invc, logc;\n+  uint32_t ix, iz, tmp;\n+  int k, i;\n+\n+  ix = asuint (x);\n+#if WANT_ROUNDING\n+  /* Fix sign of zero with downward rounding when x==1.  */\n+  if (__glibc_unlikely (ix == 0x3f800000))\n+    return 0;\n+#endif\n+  if (__glibc_unlikely (ix - 0x00800000 >= 0x7f800000 - 0x00800000))\n+    {\n+      /* x < 0x1p-126 or inf or nan.  */\n+      if (ix * 2 == 0)\n+\treturn __math_divzerof (1);\n+      if (ix == 0x7f800000) /* log(inf) == inf.  */\n+\treturn x;\n+      if ((ix & 0x80000000) || ix * 2 >= 0xff000000)\n+\treturn __math_invalidf (x);\n+      /* x is subnormal, normalize it.  */\n+      ix = asuint (x * 0x1p23f);\n+      ix -= 23 << 23;\n+    }\n+\n+  /* x = 2^k z; where z is in range [OFF,2*OFF] and exact.\n+     The range is split into N subintervals.\n+     The ith subinterval contains z and c is near its center.  */\n+  tmp = ix - OFF;\n+  i = (tmp >> (23 - LOGF_TABLE_BITS)) % N;\n+  k = (int32_t) tmp >> 23; /* arithmetic shift */\n+  iz = ix - (tmp & 0x1ff << 23);\n+  invc = T[i].invc;\n+  logc = T[i].logc;\n+  z = (double_t) asfloat (iz);\n \n-\tGET_FLOAT_WORD(ix,x);\n+  /* log(x) = log1p(z/c-1) + log(c) + k*Ln2 */\n+  r = z * invc - 1;\n+  y0 = logc + (double_t) k * Ln2;\n \n-\tk=0;\n-\tif (ix < 0x00800000) {\t\t\t/* x < 2**-126  */\n-\t    if (__builtin_expect((ix&0x7fffffff)==0, 0))\n-\t\treturn -two25/zero;\t\t/* log(+-0)=-inf */\n-\t    if (__builtin_expect(ix<0, 0))\n-\t\treturn (x-x)/(x-x);\t/* log(-#) = NaN */\n-\t    k -= 25; x *= two25; /* subnormal number, scale up x */\n-\t    GET_FLOAT_WORD(ix,x);\n-\t}\n-\tif (__builtin_expect(ix >= 0x7f800000, 0)) return x+x;\n-\tk += (ix>>23)-127;\n-\tix &= 0x007fffff;\n-\ti = (ix+(0x95f64<<3))&0x800000;\n-\tSET_FLOAT_WORD(x,ix|(i^0x3f800000));\t/* normalize x or x/2 */\n-\tk += (i>>23);\n-\tf = x-(float)1.0;\n-\tif((0x007fffff&(15+ix))<16) {\t/* |f| < 2**-20 */\n-\t    if(f==zero) {\n-\t      if(k==0) return zero;  else {dk=(float)k;\n-\t\t\t\t\t   return dk*ln2_hi+dk*ln2_lo;}\n-\t    }\n-\t    R = f*f*((float)0.5-(float)0.33333333333333333*f);\n-\t    if(k==0) return f-R; else {dk=(float)k;\n-\t\t     return dk*ln2_hi-((R-dk*ln2_lo)-f);}\n-\t}\n-\ts = f/((float)2.0+f);\n-\tdk = (float)k;\n-\tz = s*s;\n-\ti = ix-(0x6147a<<3);\n-\tw = z*z;\n-\tj = (0x6b851<<3)-ix;\n-\tt1= w*(Lg2+w*(Lg4+w*Lg6));\n-\tt2= z*(Lg1+w*(Lg3+w*(Lg5+w*Lg7)));\n-\ti |= j;\n-\tR = t2+t1;\n-\tif(i>0) {\n-\t    hfsq=(float)0.5*f*f;\n-\t    if(k==0) return f-(hfsq-s*(hfsq+R)); else\n-\t\t     return dk*ln2_hi-((hfsq-(s*(hfsq+R)+dk*ln2_lo))-f);\n-\t} else {\n-\t    if(k==0) return f-s*(f-R); else\n-\t\t     return dk*ln2_hi-((s*(f-R)-dk*ln2_lo)-f);\n-\t}\n+  /* Pipelined polynomial evaluation to approximate log1p(r).  */\n+  r2 = r * r;\n+  y = A[1] * r + A[2];\n+  y = A[0] * r2 + y;\n+  y = y * r2 + (y0 + r);\n+  return (float) y;\n }\n strong_alias (__ieee754_logf, __logf_finite)\ndiff --git a/sysdeps/ieee754/flt-32/e_logf_data.c b/sysdeps/ieee754/flt-32/e_logf_data.c\nnew file mode 100644\nindex 0000000000..ce2a0f8a5c\n--- /dev/null\n+++ b/sysdeps/ieee754/flt-32/e_logf_data.c\n@@ -0,0 +1,44 @@\n+/* Data definition for logf.\n+   Copyright (C) 2017 Free Software Foundation, Inc.\n+   This file is part of the GNU C Library.\n+\n+   The GNU C Library is free software; you can redistribute it and/or\n+   modify it under the terms of the GNU Lesser General Public\n+   License as published by the Free Software Foundation; either\n+   version 2.1 of the License, or (at your option) any later version.\n+\n+   The GNU C Library is distributed in the hope that it will be useful,\n+   but WITHOUT ANY WARRANTY; without even the implied warranty of\n+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+   Lesser General Public License for more details.\n+\n+   You should have received a copy of the GNU Lesser General Public\n+   License along with the GNU C Library; if not, see\n+   <http://www.gnu.org/licenses/>.  */\n+\n+#include \"math_config.h\"\n+\n+const struct logf_data __logf_data = {\n+  .tab = {\n+  { 0x1.661ec79f8f3bep+0, -0x1.57bf7808caadep-2 },\n+  { 0x1.571ed4aaf883dp+0, -0x1.2bef0a7c06ddbp-2 },\n+  { 0x1.49539f0f010bp+0, -0x1.01eae7f513a67p-2 },\n+  { 0x1.3c995b0b80385p+0, -0x1.b31d8a68224e9p-3 },\n+  { 0x1.30d190c8864a5p+0, -0x1.6574f0ac07758p-3 },\n+  { 0x1.25e227b0b8eap+0, -0x1.1aa2bc79c81p-3 },\n+  { 0x1.1bb4a4a1a343fp+0, -0x1.a4e76ce8c0e5ep-4 },\n+  { 0x1.12358f08ae5bap+0, -0x1.1973c5a611cccp-4 },\n+  { 0x1.0953f419900a7p+0, -0x1.252f438e10c1ep-5 },\n+  { 0x1p+0, 0x0p+0 },\n+  { 0x1.e608cfd9a47acp-1, 0x1.aa5aa5df25984p-5 },\n+  { 0x1.ca4b31f026aap-1, 0x1.c5e53aa362eb4p-4 },\n+  { 0x1.b2036576afce6p-1, 0x1.526e57720db08p-3 },\n+  { 0x1.9c2d163a1aa2dp-1, 0x1.bc2860d22477p-3 },\n+  { 0x1.886e6037841edp-1, 0x1.1058bc8a07ee1p-2 },\n+  { 0x1.767dcf5534862p-1, 0x1.4043057b6ee09p-2 },\n+  },\n+  .ln2 = 0x1.62e42fefa39efp-1,\n+  .poly = {\n+  -0x1.00ea348b88334p-2, 0x1.5575b0be00b6ap-2, -0x1.ffffef20a4123p-2,\n+  }\n+};\ndiff --git a/sysdeps/ieee754/flt-32/math_config.h b/sysdeps/ieee754/flt-32/math_config.h\nindex 31f0470612..9dde0f98eb 100644\n--- a/sysdeps/ieee754/flt-32/math_config.h\n+++ b/sysdeps/ieee754/flt-32/math_config.h\n@@ -111,4 +111,16 @@ extern const struct exp2f_data\n   double poly_scaled[EXP2F_POLY_ORDER];\n } __exp2f_data attribute_hidden;\n \n+#define LOGF_TABLE_BITS 4\n+#define LOGF_POLY_ORDER 4\n+extern const struct logf_data\n+{\n+  struct\n+  {\n+    double invc, logc;\n+  } tab[1 << LOGF_TABLE_BITS];\n+  double ln2;\n+  double poly[LOGF_POLY_ORDER];\n+} __logf_data attribute_hidden;\n+\n #endif\ndiff --git a/sysdeps/m68k/m680x0/fpu/e_logf_data.c b/sysdeps/m68k/m680x0/fpu/e_logf_data.c\nnew file mode 100644\nindex 0000000000..1cc8931700\n--- /dev/null\n+++ b/sysdeps/m68k/m680x0/fpu/e_logf_data.c\n@@ -0,0 +1 @@\n+/* Not needed.  */\n-- \n2.11.0\n\n",
    "prefixes": [
        "2/7",
        "v2"
    ]
}