get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 815517,
    "url": "http://patchwork.ozlabs.org/api/patches/815517/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/glibc/patch/59C114D5.5090009@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": "<59C114D5.5090009@arm.com>",
    "list_archive_url": null,
    "date": "2017-09-19T13:00:05",
    "name": "[5/9] New generic log2f",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "1a4351690704ef401e2f9b2ff3409427870eaf3f",
    "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/59C114D5.5090009@arm.com/mbox/",
    "series": [
        {
            "id": 3865,
            "url": "http://patchwork.ozlabs.org/api/series/3865/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/glibc/list/?series=3865",
            "date": "2017-09-19T12:49:03",
            "name": "Optimized expf, exp2f, logf, log2f and powf",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/3865/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/815517/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/815517/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<libc-alpha-return-84726-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-84726-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=\"QBdkdMkM\"; 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 3xxNK828Vbz9s7g\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 19 Sep 2017 23:00:44 +1000 (AEST)",
            "(qmail 32415 invoked by alias); 19 Sep 2017 13:00:33 -0000",
            "(qmail 29663 invoked by uid 89); 19 Sep 2017 13:00:27 -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\tVI8dMO4poYjupmK8tSkFH0gipBQgBGx7J9/gWjTIyIAXGgOJLLXaF6Sr+bou1P7f\n\tkn7nRBbmG5X5q8x0uszU747h4U/4fDCsjqhtj+DqgunK9cBvj69jvf4PiwiDpOSa\n\t4wFOSw72liTSOkiUwE3m342lQIOLSdQogWAjD2DgVA8=",
        "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=bG7o\n\tyzegXfdD11FtlJLh+5tIJGs=; b=QBdkdMkMpwxOzCPuQ/KTDMasYThVRPwCaC0x\n\t6guwPkaj50HL4ayLwRn1CQznA1jTTG2mgbCxWXSuWPh0UHeqhX+aeIXOswFwRVTF\n\tiJ5C/biVih3zF1sNU9k8qYB8RaHTCDEls7NQsjKPrjvioXHKkuiBfBRMN6Iur/B5\n\tQIBhpiE=",
        "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=-23.9 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=",
        "X-HELO": "EUR01-DB5-obe.outbound.protection.outlook.com",
        "Message-ID": "<59C114D5.5090009@arm.com>",
        "Date": "Tue, 19 Sep 2017 14:00:05 +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 5/9] New generic log2f",
        "References": "<59C1123F.9080003@arm.com>",
        "In-Reply-To": "<59C1123F.9080003@arm.com>",
        "Content-Type": "multipart/mixed;\n\tboundary=\"------------090302000701070208030806\"",
        "X-ClientProxiedBy": "DB6P189CA0022.EURP189.PROD.OUTLOOK.COM\n\t(2603:10a6:6:2e::35)\n\tTo VI1PR0802MB2495.eurprd08.prod.outlook.com (2603:10a6:800:b6::23)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "0a04a308-ecd7-4858-24fd-08d4ff5e5b68",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(49563074)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:VI1PR0802MB2495; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; VI1PR0802MB2495;\n\t3:2AMBoEqLgrK9W2H0hI4ieVtgv/iudyPUDb+KDLipOO4AQ3hgOdIv3zt7fH+YVUK/Od27tBGlOHfqNBXFvmAH1jLutjTXuItghzKJbrqMcllD7knK/2guA/wV83C53YISRM/su9cneteqIeRd6aja2TcxG68RXQUcsnDUhsHZZtjmDOYkLfO1OJ3njtyU3qL0/NwFoPFcX5V/Ur8r8rY5mMoZ6mUS1lQyftIV+v9EiTTwGfKt9kc77a1KKjtS8SA3;\n\t25:4kna9W+fvAtgMxBdHYSBpqI/IIPWpvM7o22osZVzyHkOEDTmZ5NGbwOqyFzJGqXWLIOn8P/jD3volNq7R4s3vcgtl74aW6519UfsC7RwfSfnRRv46ihjbh3HVLHxDRCta0iB/FfoKEWHInwWe2HzNKr6ucpgpekW4SOHNiecT5vUEa45U4FLmhkAKkUma5jtqkudur7Fd5lcmNTsMymtU/D/zRWl/w9SvxKKpSepjhVeGuqrbhPFjNbSgk3VI4h2q4fjogBbbBROWHiW2sEqqzei2gYKnCg7DuvsOXdvtbq1Y5Om6HeCsbdEg+waW7Q5MzOAeDXyYqI/z4gTeLsmiQ==;\n\t31:aupgmoc37eJ4jNga3HzB/iBQDtJVDGpP1Xt8NigX7uvwzKjsGvGt4vOWlUbTO8u4omSe7nIkP3GHGfYG+H0fOz+WN4B8Y8f4x4+zJxhafwBJ1DIB9eJkxmthOTXVU9uUXr2KXNzJ161m3cfEFrJxqaRq/V6IXmi5Qvw0Z9IbbL1iqkz2lpY6JXrcjMLt0rlDmkHzPSNPDdFdQO3WghvblIbBLr6uJ9EHdU7zS4vVX78=",
            "1; VI1PR0802MB2495;\n\t20:tHLPcmK/dsJOVKTTQp2gHiAbQEXADToBF6gAhs322ait3qigf3tqZ5HcRft/r3sCWHX/22eMKDzhBDxr6ESeUEmAG1o/DvWM+XrITrdtEpvTX1arJ52cUA0Ou5UqnIDUy4DenzBp3zYX6rB3AVoxgKarhYs+gesDrG393fbGjoA=;\n\t4:s7G2coaIBlVw1z5oGwHy0dn5jmdrapvLXFDsvXakvs0kNUDGUTtsD2ccAFl++s9n6n72qcNdCvNzAL7eLeEXBNXFci7di2iWYAHahn9uLuCD8o4VBEfpB95B30CbOorJMX3pFeRXxOzqroVCkIE1mm5IKw/aIciUkcbpciFtpxHcyihyevawmyzI0dLKvUz9OowVDSaQG/eKjUk9d79aXItoTYgfTdr7GpLINBEoD7xwPJ0h22X0iut0E9S4gnmp7/szOsnPUXvWM8iUFXnokNBj/fwWzRzybYtWmR3wnTY=",
            "1; VI1PR0802MB2495;\n\t23:0o0ruk0W8jyoq0dlPufwEaDHEV8a5RJqyZwXmdxObgarfRoqT+s27MyIcdDNF+bm7BqcRSqyVViliZgQT5PiPgLgjOBkfjWBB3HsIObR8866pdcKoq5lVtni8fCu5KLrC2MPAedS12+6zqCQyD0LLqT9xRlG/Z21+eXGHPuE1zHaOikxylUGyycE7SYG5g7Nk7Cf0u5qZyA9+JmhhIasn+dRWXwUz2r32PyMx9XsqU5tVPubLtb4v3k++QODzY1XNxw3MT1tqdKdYTaWiykx0TU6oUUc6WOFkXfr6joCaq6/m1bN5ND0YKADy0KrMgJsP/DCpZJLpb0EXOiyE40Wj+fUdKIKggtpUcb2lf2ADBN7YT9YMERfoC76k+9ZWYvwF9jcJlZ3RVypzuYQ0TaOg70+apG7M1zrX6T2/3GuNzg1xWRp+elXAY+wL9svyV2aje7SzZ6PE+Dxb1qUXWbZl9J8skmLykqZk1hRFMtTtdJvKEUFeiJ9pp5HB22WTJ6TBxCWBLlxCrAyPemsy15dnjM7AAxfurGedQ7vagXFYSG9zebWFa2BawgIMYs4Zq6WnrborVBwb8B0E626fFlCoGm7X32kOf/QqryLKz+BK4qQEcP3JVtAd3ByMjOwzXIpR9Bs6tRBb/ucebP00phdPMhTOK6wLXpKpBNhICfP/qkIYGpqd2IWyZGjvPRmZCvy3KUXYB5sKnTMVzrbGLpv23gQKS8a2VYtCOtZIUO3s+aPZV7fVQJOv8Xe9bvzlOUJO21CFM2hh9RQMuvPrqTIGvejxU48GEDedeQrlREd790LuzvC0Kxu7BYVOsodeAWzAo6GLH6CXuDqLJWGERT1fdBjzrJoD0C1zhAstQma/iY5yzWAmQvYNMxS4eu1G7LlLo//pZD2AVoDC6Js5hS0ZNXxZimh9TkK9aT9LJgECfBr98ghWBZ0oOrW8ynYL+f8uwrfpRqefoOzY/rticGDN/+jZBh2HtG4I5xY389rS+QZeMVkUl3BS9BFktdmjsvg52QIlDlXoTHJcT+gXOj/enEX4c3kW1ifFJKj9UOE1fmDvV3ykOAP5viXGND8eLNgCXDHZUEByRFbx+bFP25sUiPuN2q7UB8/cJ3nnSQoMlT3TJ2PoDlZ7VjHujFlM9byL8xbyHZRLOS8561A1mOqAHi51FIHJ0i1L9jr/8F03Q8ZRCpVB96dYCNk3mKO06FC+VkeOgP3rkQmnDY75gaMVwwM6cEj77adiQ8teJgBlk6ZpFYkfDVbGBWt5+Kq585GdNpQFGEA24uGlO4iCpl+DDqp+dGiZXpkXmNpaV0VPiT3mhK9Ogd0U++82z6Jaql/gRB0vQ+z6uUmET5dh+JAf+KsmK7md/FtUnpClxKM9amoaBtnuLJm5vACec/3SPPzY2s9tNE1TrWwlsG6hqYGr6hCJGUT0xkE17O1dut3TU9UeAAIHqv2D0ZV+mRNTt+V0gLb0PKONeGCsWMcByvSUz8yaV92i7Q8hwIDBMmatB/OZQdCUlj4yD+6A8IRTgVU",
            "1; VI1PR0802MB2495;\n\t6:7F4in4Nd2WLqoDlGzxiZ/M4tR7ypxXXZNJPb0580+9JFJsOXI9AVnfqhkLHKRgAMvSc53+2i/UDJjta3ZRHvpkNZ1ifXusgej+VUfSk//clzamPyYG5g4hG1l+BwyYYEFv96O3Tg1h02t2a4CZ5ClhwnVF8IJ1q2QL67Mut1dfsgluC+MdKqAKYyjxzlv2tzbxKnT+tnTfnI2D3OS7AaY2ypqVeV7mVpQe1bXDeUa5BuPvzG/iisZhIaLpNgaR4FsH6MKyvoH5kWT0pyNmarmgkSSmA9E/kiGibUrBXuk9B647P2w40x1vAxvyzPX9nnG4khSt/9FZJliWKvRrIirQ==;\n\t5:y7P3f+KK3ezK4k9sF3UNdJwdFY1TJQ+IXoyYrvGe4zw5WbxI0Yb25ABDRHp0iQQVi6Mb8RvAa0IcGRuGFAfd51CmHlsN6AtNxOQWOc86zxCWZOb6bknWgKjXUcGzWEDUTd9NmT8EIL31Qx//8D8P/w==;\n\t24:HjP//1xm3kqdCLzz/+xFsjRAGWEGupcpGm32Zu61c37uuAtRjQ6HtdRkZ97/2nAr8bK0DKxYd4ebXrRjR02cmoy/nIJ3KP0MI/Y7FjJYndA=;\n\t7:vFGQStFZZJ/co4bxedANbhd+7Fr/Vqq64Hso7/DmKkxV7sAalBilyZH8LD2H+eSOyFjdqDl9cm390ERQCZikoojCSBc9LZBoLxKZAjV03w5EsF23Okb9DXM/S7TK8eD61QCDcyg82NT5o5XRBtC+zUqbYKw3BJP4BUlK9+KMk6pdWuMnZp0Z8ccs885LCMfQq6a6zk/mQ6RoAWxpAcmBK9ShDu4erKrXo3DbF+VJVhM="
        ],
        "X-MS-TrafficTypeDiagnostic": "VI1PR0802MB2495:",
        "NoDisclaimer": "True",
        "X-Exchange-Antispam-Report-Test": "UriScan:(180628864354917);",
        "X-Microsoft-Antispam-PRVS": "<VI1PR0802MB249529ACBED3973950047BB8ED600@VI1PR0802MB2495.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)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(100000703101)(100105400095)(6055026)(6041248)(20161123555025)(20161123562025)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:VI1PR0802MB2495; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:VI1PR0802MB2495; ",
        "X-Forefront-PRVS": "04359FAD81",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(7370300001)(4630300001)(6009001)(6049001)(39860400002)(346002)(376002)(199003)(377424004)(189002)(84326002)(2906002)(58126008)(6666003)(25786009)(68736007)(59896002)(4610100001)(5660300001)(77096006)(83506001)(4326008)(72206003)(106356001)(86362001)(80316001)(5890100001)(21490400003)(6486002)(2950100002)(76176999)(53936002)(7736002)(50986999)(54356999)(16586007)(65816999)(6916009)(270700001)(305945005)(105586002)(64126003)(478600001)(66066001)(189998001)(65806001)(65956001)(33656002)(8676002)(16526017)(101416001)(2476003)(36756003)(16576012)(81156014)(97736004)(81166006)(3846002)(316002)(568964002)(6116002)(7350300001)(87266999)(5000100001)(41533002);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0802MB2495;\n\tH:[10.2.206.69]; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX: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": "19 Sep 2017 13:00:08.8361\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "VI1PR0802MB2495"
    },
    "content": "Similar to the new logf: double precision arithmetics\nand a small lookup table is used. The argument reduction\nstep is the same as for the new logf.\n\nwith naive ubenchmark (on aarch64):\nreciprocal-throughput: 2.7x faster\nlatency: 2x faster\nold worst case error: 1.72 ulp\nnew worst case error: 0.75 ulp\naarch64 .text size: -252 bytes\naarch64 .rodata size: +244 bytes\n\n2017-09-19  Szabolcs Nagy  <szabolcs.nagy@arm.com>\n\n\t* math/Makefile (type-float-routines): Add e_log2f_data.\n\t* sysdeps/ieee754/flt-32/e_log2f.c: New implementation.\n\t* sysdeps/ieee754/flt-32/e_log2f_data.c: New file.\n\t* sysdeps/ieee754/flt-32/math_config.h (__log2f_data): Define.\n\t(LOG2F_TABLE_BITS, LOG2F_POLY_ORDER): Define.\n\t* sysdeps/i386/fpu/e_log2f_data.c: New file.\n\t* sysdeps/ia64/fpu/e_log2f_data.c: New file.\n\t* sysdeps/m68k/m680x0/fpu/e_log2f_data.c: New file.",
    "diff": "diff --git a/math/Makefile b/math/Makefile\nindex 919fec13ef..b4b3101592 100644\n--- a/math/Makefile\n+++ b/math/Makefile\n@@ -115,7 +115,8 @@ 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 e_logf_data\n+type-float-routines := k_rem_pio2f math_errf e_exp2f_data e_logf_data\t\\\n+\t\t       e_log2f_data\n \n # _Float128 support\n type-float128-suffix := f128\ndiff --git a/sysdeps/i386/fpu/e_log2f_data.c b/sysdeps/i386/fpu/e_log2f_data.c\nnew file mode 100644\nindex 0000000000..1cc8931700\n--- /dev/null\n+++ b/sysdeps/i386/fpu/e_log2f_data.c\n@@ -0,0 +1 @@\n+/* Not needed.  */\ndiff --git a/sysdeps/ia64/fpu/e_log2f_data.c b/sysdeps/ia64/fpu/e_log2f_data.c\nnew file mode 100644\nindex 0000000000..1cc8931700\n--- /dev/null\n+++ b/sysdeps/ia64/fpu/e_log2f_data.c\n@@ -0,0 +1 @@\n+/* Not needed.  */\ndiff --git a/sysdeps/ieee754/flt-32/e_log2f.c b/sysdeps/ieee754/flt-32/e_log2f.c\nindex 782d901094..6c42f27843 100644\n--- a/sysdeps/ieee754/flt-32/e_log2f.c\n+++ b/sysdeps/ieee754/flt-32/e_log2f.c\n@@ -1,86 +1,88 @@\n-/* e_logf.c -- float version of e_log.c.\n- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.\n- * adapted for log2 by Ulrich Drepper <drepper@cygnus.com>\n- */\n+/* Single-precision log2 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 <fix-int-fp-convert-zero.h>\n+#include <stdint.h>\n+#include \"math_config.h\"\n+\n+/*\n+LOG2F_TABLE_BITS = 4\n+LOG2F_POLY_ORDER = 4\n \n-static const float\n-ln2 = 0.69314718055994530942,\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+ULP error: 0.752 (nearest rounding.)\n+Relative error: 1.9 * 2^-26 (before rounding.)\n+*/\n \n-static const float zero   =  0.0;\n+#define N (1 << LOG2F_TABLE_BITS)\n+#define T __log2f_data.tab\n+#define A __log2f_data.poly\n+#define OFF 0x3f330000\n \n float\n-__ieee754_log2f(float x)\n+__ieee754_log2f (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, p, y, y0, invc, logc;\n+  uint32_t ix, iz, top, 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) /* log2(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 - LOG2F_TABLE_BITS)) % N;\n+  top = tmp & 0xff800000;\n+  iz = ix - top;\n+  k = (int32_t) tmp >> 23; /* arithmetic shift */\n+  invc = T[i].invc;\n+  logc = T[i].logc;\n+  z = (double_t) asfloat (iz);\n \n-\tGET_FLOAT_WORD(ix,x);\n+  /* log2(x) = log1p(z/c-1)/ln2 + log2(c) + k */\n+  r = z * invc - 1;\n+  y0 = logc + (double_t) k;\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/__fabsf (x);\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-\tdk = (float)k;\n-\tf = x-(float)1.0;\n-\tif((0x007fffff&(15+ix))<16) {\t/* |f| < 2**-20 */\n-\t    if(f==zero)\n-\t      {\n-\t\tif (FIX_INT_FP_CONVERT_ZERO && dk == 0.0f)\n-\t\t  dk = 0.0f;\n-\t\treturn dk;\n-\t      }\n-\t    R = f*f*((float)0.5-(float)0.33333333333333333*f);\n-\t    return dk-(R-f)/ln2;\n-\t}\n-\ts = f/((float)2.0+f);\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    return dk-((hfsq-(s*(hfsq+R)))-f)/ln2;\n-\t} else {\n-\t    return dk-((s*(f-R))-f)/ln2;\n-\t}\n+  /* Pipelined polynomial evaluation to approximate log1p(r)/ln2.  */\n+  r2 = r * r;\n+  y = A[1] * r + A[2];\n+  y = A[0] * r2 + y;\n+  p = A[3] * r + y0;\n+  y = y * r2 + p;\n+  return (float) y;\n }\n strong_alias (__ieee754_log2f, __log2f_finite)\ndiff --git a/sysdeps/ieee754/flt-32/e_log2f_data.c b/sysdeps/ieee754/flt-32/e_log2f_data.c\nnew file mode 100644\nindex 0000000000..e39de3ba56\n--- /dev/null\n+++ b/sysdeps/ieee754/flt-32/e_log2f_data.c\n@@ -0,0 +1,44 @@\n+/* Data definition for log2f.\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 log2f_data __log2f_data = {\n+  .tab = {\n+  { 0x1.661ec79f8f3bep+0, -0x1.efec65b963019p-2 },\n+  { 0x1.571ed4aaf883dp+0, -0x1.b0b6832d4fca4p-2 },\n+  { 0x1.49539f0f010bp+0, -0x1.7418b0a1fb77bp-2 },\n+  { 0x1.3c995b0b80385p+0, -0x1.39de91a6dcf7bp-2 },\n+  { 0x1.30d190c8864a5p+0, -0x1.01d9bf3f2b631p-2 },\n+  { 0x1.25e227b0b8eap+0, -0x1.97c1d1b3b7afp-3 },\n+  { 0x1.1bb4a4a1a343fp+0, -0x1.2f9e393af3c9fp-3 },\n+  { 0x1.12358f08ae5bap+0, -0x1.960cbbf788d5cp-4 },\n+  { 0x1.0953f419900a7p+0, -0x1.a6f9db6475fcep-5 },\n+  { 0x1p+0, 0x0p+0 },\n+  { 0x1.e608cfd9a47acp-1, 0x1.338ca9f24f53dp-4 },\n+  { 0x1.ca4b31f026aap-1, 0x1.476a9543891bap-3 },\n+  { 0x1.b2036576afce6p-1, 0x1.e840b4ac4e4d2p-3 },\n+  { 0x1.9c2d163a1aa2dp-1, 0x1.40645f0c6651cp-2 },\n+  { 0x1.886e6037841edp-1, 0x1.88e9c2c1b9ff8p-2 },\n+  { 0x1.767dcf5534862p-1, 0x1.ce0a44eb17bccp-2 },\n+  },\n+  .poly = {\n+  -0x1.712b6f70a7e4dp-2, 0x1.ecabf496832ep-2, -0x1.715479ffae3dep-1,\n+  0x1.715475f35c8b8p0,\n+  }\n+};\ndiff --git a/sysdeps/ieee754/flt-32/math_config.h b/sysdeps/ieee754/flt-32/math_config.h\nindex e1feafccfe..4e27b99bf4 100644\n--- a/sysdeps/ieee754/flt-32/math_config.h\n+++ b/sysdeps/ieee754/flt-32/math_config.h\n@@ -123,4 +123,15 @@ extern const struct logf_data\n   double poly[LOGF_POLY_ORDER];\n } __logf_data;\n \n+#define LOG2F_TABLE_BITS 4\n+#define LOG2F_POLY_ORDER 4\n+extern const struct log2f_data\n+{\n+  struct\n+  {\n+    double invc, logc;\n+  } tab[1 << LOG2F_TABLE_BITS];\n+  double poly[LOG2F_POLY_ORDER];\n+} __log2f_data;\n+\n #endif\ndiff --git a/sysdeps/m68k/m680x0/fpu/e_log2f_data.c b/sysdeps/m68k/m680x0/fpu/e_log2f_data.c\nnew file mode 100644\nindex 0000000000..1cc8931700\n--- /dev/null\n+++ b/sysdeps/m68k/m680x0/fpu/e_log2f_data.c\n@@ -0,0 +1 @@\n+/* Not needed.  */\n",
    "prefixes": [
        "5/9"
    ]
}