From patchwork Wed Oct 6 18:05:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 45933 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 766483858006 for ; Wed, 6 Oct 2021 18:07:56 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 766483858006 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1633543676; bh=zi86yYW2c2WRPf7/vXXjgGNvvGb91n2nytfs836ziho=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=dsHJttOMctiEryXfY9vxXt1/U2GkzCsLEFh7BZi5/dfsmUiGaRcGGwVk5miZBonCe 7gBZn/d8JFo9ccDJUQXcntFBaLaBGKWEE84xgjfuhwG5UTHMzPlBJtVrfocSLLVfjV Vr5xITQ1FJz/VKsXxHlNap/r5XuUAT42q5QzIO7c= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qt1-x835.google.com (mail-qt1-x835.google.com [IPv6:2607:f8b0:4864:20::835]) by sourceware.org (Postfix) with ESMTPS id D2C4B3858401 for ; Wed, 6 Oct 2021 18:06:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D2C4B3858401 Received: by mail-qt1-x835.google.com with SMTP id z23so3526341qtv.9 for ; Wed, 06 Oct 2021 11:06:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zi86yYW2c2WRPf7/vXXjgGNvvGb91n2nytfs836ziho=; b=TszQ9F5kTQY9oMQR2v/KopKyOAPiOMsp8JSKIS+NeuXFfJqQ7YlBtt7sB751cP973c kp61cxFcmE82JX+rlyFN7zCyFy16k9sqVPFtqLJQPVLc8jnb100QoyuskXCaXFL9OUTe EXO/0oPll4alrxX6IR2EonCKtMcxSpLnY3OlfaK4qnC0fVOEuZWU7iWgXIS9KWLIy8nC 1CpynCC1HpwXNxu1/aIadPtiA7A/p8vBUxub9RnpwhPoVHo1lin73P+ExuSJ2wDbOWdq vwZuxZFCwRd1Ml60L8Hq/9KXZxNJmtU9JRFDrk1PFxieM2nWa4/tBShMN7nrfkWwmFo/ 3ZiA== X-Gm-Message-State: AOAM532YGuPdxCv6SKcTOddeUE2NAt8FjG+8aLKMAI2/2nEypd1eEKiT aIKQT9Lh0yS0+OW6isI417Z9/OrzSAahtQ== X-Google-Smtp-Source: ABdhPJwbo7wQyaT418a7cS3x8ZVbCqWmn+qnb4ZoWV/jTJ3cyVkDmGx6p5xfsS8tQY2on9Q6Fi0z4Q== X-Received: by 2002:ac8:151:: with SMTP id f17mr125207qtg.313.1633543562325; Wed, 06 Oct 2021 11:06:02 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:807a:2ebe:4b13:27bd:f11d]) by smtp.gmail.com with ESMTPSA id 18sm14161168qtz.49.2021.10.06.11.06.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Oct 2021 11:06:02 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH 1/9] benchtests: Make hypot input random Date: Wed, 6 Oct 2021 15:05:49 -0300 Message-Id: <20211006180557.933826-2-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211006180557.933826-1-adhemerval.zanella@linaro.org> References: <20211006180557.933826-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Instead of inputs based on the algorithm implementation details. --- benchtests/hypot-inputs | 1014 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 1002 insertions(+), 12 deletions(-) diff --git a/benchtests/hypot-inputs b/benchtests/hypot-inputs index e987e5dd1b..b3c8762ef3 100644 --- a/benchtests/hypot-inputs +++ b/benchtests/hypot-inputs @@ -2,15 +2,1005 @@ ## args: double:double ## ret: double -## name: overflow -0x3.ffffffffffffcp-1024, 0x8p-152 -## name: higher_two500 -0x1.000002027941dp+500, 0x1.0000000000001p+500 -## name: subnormal -0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022 -## name: less_two500 -0x1.fffffffffffffp-501, 0x1.fffffffffffffp-501 - -## name: default -3.0 , 4.0 -5.0 , 4.0 +# Random inputs in [DBL_MIN, DBL_MAX] +## name: workload-random +-0x1.c9b9e4ccb538fp+526, 0x1.5a2839615dcc4p-90 +-0x1.b4686db8fbe07p-466, -0x1.ad5bab40e28b5p-705 +0x1.b67e9830d0742p+89, 0x1.712bed15ab242p-79 +0x1.2b0cf5dce789bp+94, 0x1.de2935e408821p+744 +-0x1.4b8bfab1fbe84p-696, 0x1.9400021b6864p-353 +-0x1.586240fa11ce1p+563, 0x1.d032a033d5883p-277 +0x1.d4ed8f4dad9a1p-577, 0x1.15cc3a3dfd1a8p+904 +0x1.ef56f125ff922p-961, -0x1.a081c8f4a8b54p-739 +-0x1.3ae85ca2a7a85p+634, 0x1.ab7f8908907b5p-616 +0x1.5689b747313f2p-288, -0x1.533e4d90ba16ep-617 +-0x1.14a5c88935df3p+330, 0x1.a5e5f87292686p-493 +-0x1.11e5466d30d72p-649, 0x1.252e4933a8dffp+83 +-0x1.42310106b5893p+507, 0x1.d7c96bb09f172p+7 +-0x1.9d8063c48f8bap-618, 0x1.34eb629467897p-660 +-0x1.d06c9facc6cb9p-957, 0x1.66eea10b76d25p-120 +-0x1.fd476b0696ea7p-217, -0x1.e05d14a0749aep+896 +0x1.cdd05ca691efp+455, -0x1.34157c01b4401p-862 +0x1.761da13f8f6e4p-659, -0x1.cd34b2b726c35p-73 +0x1.4b5e793152991p+1023, 0x1.b0e7c833bab6dp+265 +0x1.1fec80cb0cfbep+352, 0x1.fe7879323a307p+115 +0x1.ca13c6a7c361ep-1, 0x1.e7794b757984ap+20 +0x1.9d0b10c3259cap+328, 0x1.a6f6e01fa8308p+27 +0x1.359cb18c6be06p-1010, -0x1.5c9b8ea01c649p+243 +-0x1.d0dcb95e18854p-850, -0x1.692c34253f833p+897 +0x1.64a3e91246202p+194, -0x1.6a08b6e0c10fcp+869 +-0x1.09133c8b3ab46p-817, 0x1.5e33faa5f9609p+204 +-0x1.5d65411fca3e1p-883, -0x1.c49451e8ff7ffp+463 +-0x1.a49b5f87b5e33p-192, 0x1.4e346710769e6p-532 +-0x1.71e5eeb1af912p+233, -0x1.e0d9fc2c51f5ap+465 +-0x1.8b1153ccd5db1p+912, 0x1.8122f54133f1dp-636 +-0x1.6b2c289f6d0f8p+4, -0x1.0e020ad34ea5fp+184 +-0x1.910d7cab2fed5p-856, 0x1.f48192b625d76p-193 +0x1.cef0e34593e32p-697, -0x1.823fdb16ac5a8p+233 +0x1.9dbca687e11fcp+460, -0x1.064a7d8a035bdp-695 +0x1.c33f7ac0118fp-354, 0x1.25c6e97f8ee95p-727 +-0x1.ed77de8fe0b87p+1019, -0x1.4231d27d608d6p-569 +-0x1.13b5a2be4d59dp-5, -0x1.f74f34809e8cap+734 +0x1.29470976cb343p-794, -0x1.688e2134673eap-760 +-0x1.dbd669283a975p+950, 0x1.8bd4b47b19394p-972 +0x1.dcebfad589251p+584, 0x1.ab821c80883efp-745 +0x1.3d7898d9e10c8p-826, -0x1.2ea1591bcf713p-168 +-0x1.8062525376bbap-671, -0x1.1320518198246p-281 +0x1.aef3fad3f633fp+433, -0x1.033b6ebbde9eep-387 +-0x1.cedf0931fbcc3p+440, -0x1.c9b40671bbf62p-26 +-0x1.bf147c6ae1629p+644, -0x1.f10b967824ef3p+218 +-0x1.69b82f4508c9bp-1002, -0x1.1f52bdcf38bfcp-522 +-0x0.226af30ce6ba4p-1022, 0x1.956794128b9c7p-816 +0x1.269e8197b6197p-660, -0x1.9c08a23eb8cafp+408 +-0x1.067677cb27c65p-577, 0x1.54f85143ad106p-252 +-0x1.5c139666cc203p-678, -0x1.6fa4a26a23e3fp-500 +0x1.fb4bbc14ed566p-980, -0x1.64a2623385865p-105 +-0x1.0d9e75e4bc22dp-702, 0x1.0010bb11ef0ep+461 +0x1.b047105706bf1p+811, 0x1.294f1289e801fp-479 +-0x1.a1539b9498fcfp-219, 0x1.b8cfa27e5b9dbp-852 +0x1.60b580776e0dap-965, 0x1.86ca0301b862bp+64 +-0x1.de27a3092c282p+956, -0x1.d14da5110136dp-125 +0x1.216680bf7c046p-219, -0x1.672b73cc56298p-533 +0x1.7f964e1e6933ep+225, -0x1.b397a6addb416p-782 +0x1.5c5ac7088ad85p+67, 0x1.c5c1f54c8c464p+900 +0x1.b99bf2d232a67p+183, -0x1.3b6d8db73e9e7p+587 +0x1.efd8702ceea4bp+112, 0x1.27662ebd318d4p-736 +-0x1.d00020aa60799p-269, -0x1.4602aaefed288p+841 +-0x1.0ca653d3607p+843, 0x1.8165ec6a151f2p-245 +0x1.637d7faf2dcd3p+339, -0x1.5de8f895e0921p-311 +-0x1.0a54dcf5397dap-543, -0x1.cf69228868211p-922 +0x1.4239bcb2ff07fp+415, 0x1.37df12f9bff83p+518 +-0x1.c7fac16e63044p+219, 0x1.cd83114f41ff9p-161 +-0x1.b469af516da75p-714, 0x1.782837617acd9p-977 +0x1.564ee8746d24fp-635, -0x1.23be8b6551b5fp-104 +0x1.f6dd92d2c98fep-186, -0x1.dbd48c6dd0933p-563 +0x1.5415754086856p+692, -0x1.ade3a6fbe19c2p-636 +-0x1.3a86ff32e226ep+956, 0x1.f7bf282f8ec3fp+617 +0x1.5dabcedf6d038p-402, 0x1.3921fe12cbd16p+802 +-0x1.580f681d777d1p-649, 0x1.82ce0cd6261ccp+237 +0x1.4dbd038b40241p+742, 0x1.74a8ca5e0a9a8p-193 +-0x1.81fb7906a6e7ap+858, 0x1.060707422c742p+615 +-0x1.9f20a4e0fc9aep-50, 0x1.ce323011d922fp-93 +0x1.251c72200297bp+984, 0x1.00bd429a23dc8p+101 +0x1.4e68d50a30953p-570, 0x1.0f725b5d4ff05p-76 +-0x1.d47d5d42ff4bep+941, -0x1.4fd8f1971f601p+269 +-0x1.bd95a498e5246p+777, 0x1.27388108b2efep+422 +0x1.e734c9d1d015ep-712, -0x1.7cb5b0ff76b6ap+808 +-0x1.c50bbe662db65p-594, 0x1.a004f6eb37cc1p-116 +0x1.382b84973113ep-727, 0x1.9ea5b4ee35aa5p+834 +0x1.3a4b07f2f3d36p+189, -0x1.364bd57f1cd8bp-785 +-0x1.6faf61accf379p+489, -0x1.cb52b93ba68ecp-548 +-0x1.afd131d3d2b49p+236, 0x1.654017eaccba4p+78 +-0x1.afd3da3760269p-146, -0x1.f5fe580b9e7ep-934 +-0x1.8c4c67078936bp-12, -0x1.744e6736a7dffp+851 +-0x1.a90de8574d525p+518, 0x1.87fdedfd965bbp+461 +0x1.d8050ffe1f993p-989, -0x1.ca5bf9ea2f1d3p-358 +-0x1.b9fd456ba3825p-559, 0x1.df45fa0640fb2p-632 +0x1.27b3ef01957d9p-48, -0x1.4214dd3231529p+232 +-0x1.3348f5d5ae725p+242, -0x1.01fdc7c1a472fp-541 +-0x1.779cf98e86ffcp+324, 0x1.efa30985d4c9ep-865 +-0x1.daeab430fe19fp+904, -0x1.bf73667703487p-19 +-0x1.2337981a0ea42p+555, 0x1.72fc7523f3aa9p+699 +-0x1.c1f53cb9c4858p-877, -0x1.88c740da5c31ap-451 +0x1.4a7cc59577262p-58, -0x1.eaaf5c8bc91f6p+378 +-0x1.5ab543c3de40ap+379, -0x1.506c8ac72d8b5p+508 +0x1.87ee478dfb8aap+767, -0x1.6934d5063786dp+877 +0x1.a9658347666bbp+720, 0x1.9e9883550ae82p+119 +-0x1.f11cba04565bep+536, 0x1.a77c4d7de3901p-907 +-0x1.637aed92c164ap-773, 0x1.563a853915c42p+437 +0x1.0ac5623fe4d48p+245, 0x1.60f4ab95dbda6p-258 +-0x1.9f046bc061838p-149, 0x1.eed3c3dd7c7cdp+284 +0x1.bfe4663804caap-26, 0x1.ab9f1e111572fp+699 +0x1.34b033c032cc3p-701, 0x1.54eb3833df0cbp-621 +-0x1.d7992b5a800ecp+415, -0x1.658855a5caecep+714 +-0x1.4ec652825633ep+1023, 0x1.a4ffd3a40a26ep+31 +-0x1.5f664d7f22a9bp+150, 0x1.4efa7d597084p+719 +0x1.618ee42ae6009p+28, 0x1.db0e81473ab64p+191 +0x1.bce0aef1f1fap-326, -0x1.5ad80a5760518p-609 +0x1.93708072fdf0fp-591, 0x1.46d43d71768p+605 +-0x1.f28f62effec4fp+502, 0x1.897d978a0b593p+750 +-0x1.23ff24b59fb3bp+354, -0x1.27870d98e3026p-780 +0x1.462c222c9b216p-451, 0x1.a1389d9277e44p-229 +0x1.949a454cfc1f4p-296, -0x1.5989cd90df4f9p+634 +-0x1.c4a0554f11021p-985, -0x1.ebf8e73763f67p-990 +-0x1.a6d24b4d26f2p+616, 0x1.9398629961de3p+601 +-0x1.d6a7a620bcbd4p-205, 0x1.92937feb024b7p+335 +0x1.418684de16ec3p+486, 0x1.3006846754803p-426 +0x1.3256cab64df2cp-538, -0x1.55ab298d58395p+656 +-0x1.2ca0062a03c7fp-639, -0x1.8e46155170c63p+982 +-0x1.d86feb9f05e9bp+964, -0x1.218a8f3a16949p-282 +0x1.6a19114fa7321p+1015, 0x1.b754067c9e2d8p+636 +-0x1.0a8381ab06281p+909, 0x1.4a718f00e0a7p-361 +-0x1.ef571562e5ffcp-706, -0x1.3e40e8e8677e5p-712 +0x1.6024680e45bep-228, -0x1.c2c0877492ee3p-442 +0x1.0651afa5be1c4p+257, -0x1.70a2cce7668aep-112 +0x1.3273c5c3a2ef6p+436, -0x1.a5ba1669b0ee1p-32 +-0x1.be37878b94849p+720, 0x1.444659b28d49cp-635 +0x1.ec87a2a4bfdaap-322, 0x1.dbcdddd0214cp+146 +0x1.4438b217911d8p+134, 0x1.00efaddb1137cp-82 +-0x1.8252c0ca5d1a6p-875, 0x1.c6a8d7ca520cap-293 +-0x1.fb0e91dc80524p-86, -0x1.079abd8f02a8dp-807 +0x1.c2058b220be56p-82, 0x1.6cd250a6189e2p-144 +-0x1.9719b79d19e1bp+548, -0x1.a883e9e65f1e6p-890 +0x1.f596727c3a99fp+203, 0x1.8a224f1264e47p-491 +-0x1.1f7d9c69c0f18p+276, -0x1.c355418418a7cp-491 +0x1.ce61bba0004a6p+423, -0x1.d2eccb2c8f702p+114 +-0x1.68f9afab87fa2p+877, -0x1.61630090f07ffp+689 +-0x1.3b9af2b3d18dbp+351, 0x1.563ebfed3bfb9p+194 +-0x1.fd3d2b95b33e2p+607, -0x1.6ba06587fc088p-750 +-0x1.62697c2790ea6p-762, 0x1.940443c2bf806p+363 +0x1.82f9a7f79ab11p-398, 0x1.399d121c78ee7p+624 +-0x1.47a6905e12d29p+775, 0x1.5dbe293914a2p+297 +0x1.5388a26b37edfp-760, -0x1.2642bb599e25ep+186 +0x1.415d8a0ac5257p+876, 0x1.6aa66a01eaa79p+866 +0x1.6d9a658695dddp-222, -0x1.7b9856f12729fp-769 +0x1.159bb14a7af3dp+486, -0x1.06c00e97d6bd3p+747 +-0x1.e17bbdc8fae26p+417, -0x1.6733fdf758a97p-823 +-0x1.43048fd005312p+504, 0x1.3ec148f513b83p+905 +-0x1.50745c6aedbe5p-195, -0x1.a3b710c9b630cp+786 +0x1.59a9cc50449e8p+95, 0x1.b4ff697900ee2p+320 +-0x1.adfb919cb6ea5p-576, 0x1.005f12f94b659p-554 +-0x1.8f872bdfb906cp+99, -0x1.f589b72cf4fc6p-477 +0x1.17d258034c48fp-611, -0x1.1838e57f0a5eep+471 +-0x1.d01e0fe18253dp-109, 0x1.a083d4e940fe1p+432 +-0x1.51df04426df75p+859, 0x1.0c322348c5dcap-930 +0x1.ab9c906ce5019p+844, -0x1.b2255ef461be8p-517 +-0x1.54fb74bf1cad3p-774, -0x1.74b3abc36f7cep+552 +0x1.3267692663a7bp-572, -0x1.d16fcd4949779p-553 +-0x1.c965c71480f41p-447, 0x1.1f54d57f3d4adp-659 +0x1.38357cfa8ee7p-396, 0x1.9a97dcdfc45b2p-174 +-0x1.3f8f2c4694a3ep-860, -0x1.074af4a491069p-147 +0x1.be5b121361bcep-279, 0x1.a6271864c15e5p+54 +-0x1.571d524fb837fp-332, -0x1.6c8b85553ccdap+728 +-0x1.dae5da9458a36p-18, -0x1.af80fcafe421ep+869 +0x1.bdf5e14076194p+230, 0x1.5f3872155062cp-840 +-0x1.68736f0a701e5p-369, 0x1.63cb6b731e9bep+362 +0x1.0585505e94b3ap+132, -0x1.eee570790b35p-750 +-0x1.5612b0b696c64p-542, 0x1.41c9378f060b2p-1007 +0x1.b1e8265bbb6ep-227, -0x1.1c5e724be2b67p+92 +0x1.0ac13517bf64ep-246, 0x1.4a443e5081577p-420 +0x1.8039830b7dfa4p+965, 0x1.99086df83915ap-942 +-0x1.2d2988b255995p+429, 0x1.1d19bcdfa257ep+251 +0x1.4274e0e9c27e7p-943, -0x1.114ed04e2e4b4p-470 +0x1.6af9dddeb095bp+775, -0x1.ed9ca85c3aa46p-601 +0x1.631e4a1067d03p-781, 0x1.be6d46e30228ep+534 +-0x1.2ac10fa9a0893p+332, 0x1.1b2d4e33621f1p+29 +0x1.709f2137dab95p-445, -0x1.6fde48d966fc8p-25 +-0x1.f811f68aba1aap+535, -0x1.96004333260a6p-290 +-0x1.2c51ffe1fcf8ep+152, -0x1.17af9b031a485p-174 +0x1.f69275e5f29ap+756, -0x1.682105d44483dp+613 +0x1.7d13efce5f1a1p+707, -0x1.3858a4e669e3bp-752 +-0x1.6cd05a4c54144p+826, 0x1.7c42ac0d2886fp-866 +-0x1.f89ce04dfd27fp+410, 0x1.fe0de103ce1abp-573 +-0x1.43b5c66354397p+311, 0x1.5bd0c23718998p-967 +-0x1.2319f27f77d36p-663, -0x1.615950a57876dp+924 +-0x1.83385c49fbcebp+686, 0x1.010c2b151c788p+619 +-0x1.0d44261e94de8p-670, 0x1.17160af447683p+571 +0x1.3481f39ea088bp+25, -0x1.706d7cd9b1652p+781 +-0x1.f0039b20728b8p-542, -0x1.51e7fca7f6499p-80 +-0x1.06b7cc5a7aedp-775, -0x1.e8efd554e61fbp+375 +-0x1.d9473d1361ae7p+477, -0x1.86a9bfbf95f03p-415 +-0x1.3f932e5d162bp-31, -0x1.a96d172b0257bp-804 +0x1.b3172331d60d6p-173, 0x1.3a7a560866aa9p-266 +-0x1.0358cd79c7569p-173, -0x1.4705dd58b26a8p+515 +-0x1.18805746027a1p-741, -0x1.d05d211d42f13p-228 +-0x1.659e72e94f232p-821, 0x1.a674275ce4cbep-164 +0x1.e9029329f9a9bp+115, -0x1.c8b8788091017p+461 +0x1.070b4391204cfp-612, -0x1.c0b61ce1003ecp-369 +0x1.d9792e699e24cp-716, -0x1.da3503c8b2b43p-784 +-0x1.ce75906b2a612p+994, 0x1.1f17844d2ebbbp+306 +-0x1.b837832174a07p-235, -0x1.4deefd727a398p-999 +-0x1.d39e49f0c9e38p+607, -0x1.bbdbd223f6e0fp+527 +0x1.d475d8f7f9b1cp+574, -0x1.d084c3a952956p-930 +0x1.36367deff0d1ep-819, -0x1.c1840b9d5cd01p-169 +0x1.56c29271ff50bp+991, 0x1.3133db7e7f3d6p+492 +0x1.70949a147a538p-649, 0x1.015d59b9e641cp+604 +0x1.48acc2d1e59b3p+280, 0x1.e97d807eb23d6p+419 +-0x1.8b0fb0c961928p-415, 0x1.35e01b117c406p+868 +-0x1.e95698f9b36a5p-282, 0x1.2d1a96cf2b0e9p-90 +0x1.0f2cbb86d9dd8p+46, -0x1.09f47148e87d4p-583 +-0x1.84c4de82fa752p+827, -0x1.9d36bcf2289f2p-315 +-0x1.262e501cf4fe6p-484, -0x1.18cbf59d3c82bp-956 +-0x1.d6c5b75278e41p-126, -0x1.1e1a6117f2e03p-295 +0x1.53c7b4d94cb4p+277, 0x1.2131bcf644999p+306 +0x1.956d78a2e3bf5p+804, 0x1.1e43de7ae36c9p-707 +0x1.e8fc958c5b717p-443, -0x1.1a7d40b3f2739p-1012 +-0x1.126556bd1c7cbp-69, -0x1.fc96af8d1e8cap+76 +0x1.5f3db9f4f3b8ap-938, 0x1.fc2131e7568bep-209 +-0x1.c354c3873dde2p+694, -0x1.8cdeee290f152p+381 +0x1.5339563d3cb9bp-638, 0x1.131d7aa4d4e46p-619 +-0x1.db77aa4411622p+219, 0x1.38efddb4b014bp+15 +0x1.4782b8dc33f23p-989, 0x1.fdbc130d05fbdp+217 +0x1.1554b3faa9bc8p+663, 0x1.91b103ff68c84p+498 +-0x1.105a3b4f92febp-877, -0x1.3fe0c998823dfp+862 +0x1.4c4c1467e80b6p+403, -0x1.3b1826a3d91e3p+547 +0x1.15885c2cb065ep+525, -0x1.b9014a9051735p-662 +0x1.b55857117e40bp-1006, -0x1.4bde04447b4b4p+162 +0x1.770d8b9533efep-954, 0x1.8bd860f89e00ep-586 +0x1.4bf1ef8066d3ep+20, 0x1.5a3b04c8ecb31p-370 +-0x1.856affcdc7484p+105, 0x1.b2c2a3327b38fp+516 +-0x1.2043fbca121cap-986, 0x1.78067f50d8218p+973 +0x1.7a9b80611e082p-939, -0x1.4bc487d06fcc3p+321 +0x1.a7af5850d7e21p+837, -0x1.e4f86095eda51p-946 +-0x1.348c991495b18p+1012, -0x1.3fca47184df5ep+251 +-0x1.b30af77ac83e3p+734, -0x1.6ef2c081952cfp+912 +-0x1.bd05a684eefd2p-180, 0x1.689a61eb600d1p-717 +-0x1.eca4d31cbed39p+725, -0x1.e672808edfee1p-1012 +-0x1.af0c6f8066b2bp+160, 0x1.a0df9068424e9p+218 +-0x1.074cd85809a85p+123, 0x1.1167ddb731e5fp+901 +0x1.72eae8bda4c5bp-813, 0x1.4a5062248e4adp-71 +-0x1.9d63ecbed33bcp+265, 0x1.6cba2bbeebdbap-818 +0x1.41202ee7dd7ebp-231, 0x1.927d7db0b3ac1p-438 +-0x1.fae9b8015cc4cp+163, 0x1.c44783a48ed9dp+776 +0x1.114f5d056d1a9p-113, 0x1.3f716fc0860cfp+303 +0x1.8826271676367p-821, 0x1.b0caed69c32dp-325 +-0x1.6f71959e447d8p-502, 0x1.076175c1ea436p-527 +-0x1.05d90a1df2ca7p+382, -0x1.22b79fed8c6c5p-221 +0x1.0ab8360e63e2p+194, 0x1.d6508c089866fp+198 +0x1.8a6123459b2d2p+127, -0x1.02dbf496418a7p-615 +-0x1.eef719eabbaeep-726, -0x1.3dc0270cf8aacp-126 +0x1.67b96ab330527p+600, 0x1.bffd396c7e8acp-940 +0x1.988759e704db4p+861, -0x1.55b449b993732p+231 +0x1.815034668d89p-293, 0x1.47e31361c5b59p+330 +-0x1.f1d051ffebb52p+291, 0x1.6ba2fcb860761p+253 +0x1.086f2905624f3p+510, -0x1.b90f1a2ec5ee1p+181 +0x1.5b539bb7d553ap-330, -0x1.2892c14113004p-859 +-0x1.16b0a2af6d9f6p-896, 0x1.04b4cb13a7c09p+603 +0x1.ac408d54fcccap+424, 0x1.33a7b922bf9ebp-108 +0x1.9487a31a13b57p-398, 0x1.a0329ebf9d818p+610 +-0x1.5589c7698dd8p-444, 0x1.e4bbf4f028bc2p+467 +0x1.0209ebc01c62dp-15, -0x1.590c303f5c32ep-625 +0x1.0858928266e15p+793, 0x1.27572b171f4fap+526 +-0x1.19d225c27b15bp-167, 0x1.93d1c269a3023p-153 +-0x1.5e01f51a9409ep+927, -0x1.72ce2117da968p+411 +0x1.afdf52ba2f9a1p-164, 0x1.8518c5c3f9ae4p+65 +-0x1.1e4f218d1cf3dp-294, -0x1.af9948f24567bp-443 +0x1.49f8a32ff1489p+954, -0x1.c6f38622684e9p-252 +-0x1.b23af13e433e8p-459, -0x1.5538f4ac5ffefp+973 +0x1.145a167ea4ea3p+749, 0x1.e8e69e6ba34dp-718 +-0x1.17ad652e40944p+23, 0x1.66ddc1e172328p-450 +-0x1.ae48e33b39c31p+851, 0x1.03deb2a4c08d7p-198 +0x1.029657e93754p+23, 0x1.f089b6f3f4e12p+885 +-0x1.14a99baac9aacp-486, 0x1.3c54cf9ef9d37p+305 +-0x1.e433d50b1645ep-826, -0x1.f502d8dd83819p+243 +0x1.ea1bbab4a6f05p-63, -0x1.48dc68f196565p+344 +0x1.19b93fe281cep+182, 0x1.3cae06156bafep+245 +-0x1.eafc483d29c5ep-941, -0x1.757c7688daddbp+780 +-0x1.cfcd3060df71bp-599, -0x1.5574747016423p-122 +0x1.e2a08569c5146p-208, -0x1.6f93aad37bad3p+678 +-0x1.cfb545723ed6dp+574, -0x1.4e7218edc07e5p+548 +0x1.13e16abe51f46p+790, 0x1.fa484c70d4103p-280 +0x1.8db06dfb66124p+567, 0x1.53d01cb5b356p-700 +0x1.0ce4ef1e7236dp-554, -0x1.c1fc4d7a584bp-303 +0x1.89206dfc8616cp+15, -0x1.9e7478f5bec9cp+923 +0x1.6cc0ac296df5ap-147, -0x1.d739c6a80e0f3p+552 +-0x1.df37c2f72c6ccp+1005, -0x1.f4e6900023b7dp+547 +0x1.a51aa19b57427p+1001, 0x1.1f938280997e4p+987 +-0x1.44146720af4adp+997, -0x1.b1e854686ddffp-496 +-0x1.7d243089f275fp-330, -0x1.7d93a4d0485d4p-56 +-0x1.86c36110b814bp+100, -0x1.830d04b6994eap+904 +-0x1.025cb594ffd92p-612, -0x1.df97ee930ad24p+394 +0x1.ac3302e5f07e8p+532, -0x1.5ada3b5365c8bp-359 +-0x1.bf0774299faaep+454, 0x1.12f06f88c041dp-521 +-0x1.12db166bcf454p+810, -0x1.e7eccfd52033ep+102 +0x1.ded6a6913d792p+631, -0x1.484b2de8cf2b5p+966 +-0x1.114054988c55fp-878, 0x1.2057d26e3eb6ep-28 +0x1.18d0062268ac2p-329, -0x1.397bdc3aa0c52p-581 +0x1.c4b492b296653p+560, 0x1.83965be75df49p+915 +0x1.7c4b464475424p-258, 0x1.364b6b9ecc84p-86 +-0x1.932ee715ee9cp-820, 0x1.5d0acac046461p+11 +0x1.89f236108da3dp+719, -0x1.8f46421ff86dbp+619 +0x1.bab714dbc675cp-735, 0x1.9b8ea9c4a0afcp+990 +0x1.953f1c8fbb33ep+503, 0x1.4a9dbcd88b5a4p+105 +-0x1.6b04af0630912p-113, 0x1.834f7677b3ab9p+179 +-0x1.3888739dfb47ap-7, -0x1.00f6937bbf981p+352 +-0x1.26e31d1f6989ap+985, -0x1.4a62efd62f7d4p-676 +0x1.b1318ee7120ap-249, 0x1.31dff7b683cb8p-468 +-0x1.7eca922a0218ep+757, -0x1.5130bad36e8e6p-20 +-0x1.3ea820bf73af7p-99, 0x1.54891c667887bp-389 +-0x1.4173e13089454p+969, 0x1.c2270a9e17d99p-762 +0x1.e0f91f0c64208p-803, 0x1.2271e0e7f4f2ap+61 +-0x1.56d3f9037057ep-718, 0x1.3e223c3967763p+574 +-0x1.665faed24722fp-157, 0x1.40053a68f4211p+95 +0x1.2454b75a6cab2p+745, -0x1.a7f2287049bc5p+395 +-0x1.9d2154ed6469cp-968, -0x1.d3ac769e77edap-963 +-0x1.afc4aa9627a8dp-971, -0x1.079013d73e044p+288 +0x1.66924e10ea983p-696, -0x1.8d1e7efdf17b4p-414 +0x1.482a8a82a858fp-147, 0x1.5765012556a53p-280 +-0x1.a3e22d6b16af4p-951, -0x1.71c1d60485311p+51 +0x1.f7ffee28ce83fp-929, 0x1.3d8b9f1309ba1p-733 +-0x1.ce4e32e5bae99p-11, -0x1.0322d6f0db1b3p-686 +-0x1.c5b3a9093463fp-626, 0x1.7512d37db67ebp-618 +-0x1.e4467d3b1c326p+196, -0x1.3e29526da8062p-356 +-0x1.254a46a8edfd4p+315, -0x1.ee95ab5cc02dp-871 +0x1.432a8d8a87f6ap-670, 0x1.616525e862d08p-421 +0x1.aba7daefcca05p+646, 0x1.4c73556be56acp-236 +-0x1.865f26dc229cdp+440, 0x1.7f2892578881fp+29 +0x1.8ba56472f51efp+525, 0x1.95e1a93ac3379p-262 +0x1.11a5f934f0679p+98, 0x1.d42d0edd0f56p-756 +0x1.0503e708de3ffp+263, -0x1.8272e0f532f82p+444 +-0x1.30fa73e805392p+379, -0x1.9ec42fc6c86b7p-916 +0x1.039c6350d048dp+189, -0x1.e27d363f4dc48p+759 +-0x1.b2f5f5a32cf93p+162, -0x1.089b0581a89b5p-554 +0x1.d6dea1404a5ebp-386, 0x1.d1e7427d8fd74p-585 +-0x1.138943e1ba00bp+260, -0x1.55a8357860ff4p-633 +-0x1.cb0585a69ec8p-771, -0x1.b30b34fb4849bp+1019 +0x1.15b8d33e57b5dp+613, -0x1.16d8525dd808ep+819 +0x1.089a11b10202p+860, -0x1.661b937862d88p+985 +0x1.ecd24009cb22bp+611, 0x1.e8fd804b52191p+722 +0x1.bdeed16ee9071p-21, 0x1.c18770cf15d94p+893 +-0x1.7e246229c7479p+11, 0x1.8c0a023da75bp+22 +-0x1.2696479517f63p-873, 0x1.61472367b790cp-273 +-0x1.dff31fa2945e4p+879, -0x1.788f359366c3dp-999 +-0x1.204a18b87c646p+526, 0x1.c3906c3b0745fp+318 +-0x1.8ebbfa9bfd865p-570, 0x1.df27bbba13fabp-1005 +-0x1.f0bce56e90b36p-906, -0x1.621a7b0077f98p+74 +0x1.f1d65127c0b6dp+121, 0x1.62c01ad0396afp-792 +0x1.83edee737ce55p-183, -0x1.b76cec6de8a28p-810 +-0x1.00fd8f4b7eaeap+798, -0x1.d10dc39b5cb6ep+202 +-0x1.badde0405e759p+324, 0x1.77dc6d3ea132ap+823 +0x1.da1baea3c16fap+333, 0x1.2cc0c40bc671dp-339 +-0x1.ac7789c6b4cf2p+51, 0x1.51e3dc935590bp+316 +0x1.13cd66f9c9a41p+110, -0x1.73044e1701d54p+955 +0x1.aa206d92df49ap-539, 0x1.787369e33123p+338 +-0x1.5e085883313c7p-698, -0x1.c5c7fcaff2a8dp-417 +0x1.b3333de61b2c9p-380, -0x1.544afdd14d54ap+393 +0x1.7bcdabfd53ac9p+141, 0x1.f0b76e9704968p+408 +-0x1.7369c072cb16bp-29, -0x1.68971ae967238p+320 +0x1.ef8c843fd5689p+161, -0x1.ff0d6afd40d0cp-31 +0x1.f6a910bfe476ap-159, 0x1.b96aa192e68b6p-538 +0x1.5374abf201ef3p+838, 0x1.ac2785d030c44p-616 +0x1.26eb33cd00e9dp-509, -0x1.f3d66906ee76bp+707 +-0x1.a26c06a38e4a1p-730, -0x1.dc673bdc267bep-999 +0x1.3216151975fc7p-457, 0x1.4d50afe1e7304p-449 +0x1.1e099367bca38p+255, 0x1.6b58cf3af69a3p+884 +0x1.236e0a09b95e9p+567, 0x1.e8ee1eb0da59fp+100 +0x1.64fe680eddb96p-513, -0x1.71722a535e8f7p+787 +-0x1.abd443466d6f8p-274, 0x1.bce5c9e6e1067p-455 +0x1.ef4dcfd4ecd88p-210, 0x1.454b0894b629bp-731 +0x1.7e4055d580af4p-265, -0x1.af992ca040efap+635 +0x1.3aff343aeab8ap-692, -0x1.b7f34b4c1770bp+736 +0x1.a825e573089fbp+267, -0x1.ff89356fd5dcap+324 +-0x1.4c74bd94c23e9p-699, -0x1.6f8f0f40c819p+688 +0x1.ed672b96b7d2p+244, 0x1.67398b6a9639ep+499 +-0x1.896f4f1a0af8dp-348, 0x1.247df7c6665d9p-635 +0x1.64a8ad593015fp+173, -0x1.1ff42760e7babp-37 +-0x1.066ca4e6a26b9p-144, -0x1.f228ff9fd4b29p-50 +0x1.1c297a31d8e09p+496, -0x1.2ec016ced5d6ep-581 +-0x1.e2f48ee5963dep+554, 0x1.67b03a7908837p-32 +0x1.a6d1a3a6ff54bp-816, 0x1.fc81e2ef3f55p+385 +-0x1.14ed4b5053f69p+570, -0x1.39990faca1affp+17 +-0x1.4e49d59528292p+768, 0x1.5fbc8a55f23eap-68 +-0x1.2fb3935152a42p-868, -0x1.b74743ff80cfcp+699 +0x1.0a9e69428019ap+297, -0x1.b569c64ba1cbbp+155 +0x1.8035305a8c434p-646, -0x1.6ee5d92a20efep+559 +0x1.7d0489a9409ddp+893, -0x1.ce88b5a1086e9p-787 +0x1.b0fe00e7f1ddap-495, 0x1.4b9baf802f094p-901 +-0x1.962ffbd66b12bp+806, 0x1.75e05396da57fp+195 +0x1.a29aea6168e29p-279, -0x1.192abc8197e6ap+37 +0x1.8c133db90b85ap-466, 0x1.946563959c2bap+456 +0x1.c9789ef809b8ap+341, 0x1.2a49d0ca369a3p-962 +-0x1.5f2f72d0eded7p-840, -0x1.4bd4f1980ab3dp+54 +0x1.6d67321d91dap+304, 0x1.a328296f03117p-867 +-0x1.839cca5c3f88bp+36, -0x1.e5d66a7c3bfa9p+310 +0x1.bcb853a989cf4p-637, 0x1.3da4a58536c7ap+227 +0x1.1d678d30a3afep-335, -0x1.632ed31c4ef7p+188 +0x1.7cdc8685ea2abp-463, 0x1.4be25b058c5dap+1006 +-0x1.b3cac7cf3ca82p+769, -0x1.bc8931922cb8ap+38 +-0x1.4009d3f1e9232p+184, 0x1.e0157784e700dp+708 +0x1.5398945cf4022p-488, -0x1.d2121ac926aaep-665 +-0x1.12c11e3852e9dp-495, -0x1.0a8b5d5667b46p+926 +-0x1.0d88d03448ba2p-159, -0x1.d365262040e95p+660 +0x1.a6ad97b6322e8p-976, 0x1.dc3fbb8a5734bp+579 +-0x1.548081a3d1873p+709, -0x1.321c60171f77ap+679 +-0x1.e9c6f424313ebp+877, -0x1.e83d59a949f5dp+212 +0x1.ddd8f91b00853p-270, 0x1.aee61ef9a4dd9p-108 +-0x1.3d0042532b7fbp+688, -0x1.fd8aab6dac0c3p-681 +0x1.d0c862fb02403p+754, 0x1.7c3ad6097438ap-242 +0x1.78d852eac428cp+964, -0x1.4328c93b56089p-303 +-0x1.1ee22e52fe9e7p-628, 0x1.2a3bc85a3db6cp-502 +0x1.d8f1bd1a041d3p-344, -0x1.2833cf7e22b7fp-434 +0x1.10e2c2bd2fb45p+129, -0x1.ed7dccc0e350ep+358 +0x1.b578dea09879ep+893, 0x1.abca8d47f2e38p+942 +0x1.54266fb6dfc3fp-377, 0x1.a98189e9ed367p+490 +-0x1.3dffa7105fecbp+314, 0x1.9277eb5ee3b9p-689 +-0x1.4df79e9addeddp+805, 0x1.b2b8f2bf5b352p-244 +-0x1.d64da0b70510dp+527, -0x1.8565e650f15c3p+778 +-0x1.2aad5abf7d92ap+353, -0x1.a9d6977598aa3p+570 +-0x1.d0565b035198p+268, -0x1.555e91b7ac1d2p+464 +0x1.ccabdaa29e061p+627, 0x1.fb9beaf2413a9p-534 +0x1.7c68d90e0552cp-410, 0x1.35f296bf50fd2p-472 +-0x1.8e7677094d102p-760, -0x1.f7607d5e95586p-234 +-0x1.6f989baeb0008p+522, 0x1.440db29d598e7p+131 +0x1.5e05478ad697ap+187, -0x1.4cde3bc245dbdp-493 +0x1.205c69372380cp+949, -0x1.246c125149301p-385 +-0x1.28a4a30c67eadp-750, -0x1.7586a35e654c2p+705 +0x1.9c57811360249p+997, 0x1.cb5374777df29p+466 +-0x1.e71629b1d2e24p+0, -0x1.7c32976051278p-85 +-0x1.4555929e65b69p-437, -0x1.08f901cbff6e7p+534 +-0x1.d482302130b9cp-351, -0x1.d87c620a546c5p-806 +0x1.61f8ae086e3a7p-744, -0x1.addecbec35731p+80 +-0x1.15171f44c3508p-25, -0x1.6f8401e5340f5p+599 +-0x1.bb5e0f6e722a8p-266, -0x1.3d1393d8f644ap-686 +-0x1.c44dac2e882efp-117, -0x1.1b4eabd97a3eep-890 +-0x1.5de17111873bbp-523, 0x1.441cddd48e282p-273 +0x1.8ceab10eed252p-150, -0x1.5cf44e4f50a92p-931 +-0x1.3e6926fcd302ep+680, 0x1.67081048ebe9cp+383 +0x1.f609787820c22p+467, -0x1.0f0e3dc10b434p-706 +-0x1.6281a8dc9a637p-862, -0x1.3d66a75dd6459p-515 +-0x1.12756c0b8a7e5p+553, -0x1.20557c4c9df55p-618 +-0x1.7165a5f004259p-328, -0x1.1bc31035b0cccp+488 +-0x1.bd7bc111885bbp+635, 0x1.78f6031426ab5p-383 +-0x1.da9337b21ff9bp-664, 0x1.a983594eb464cp-472 +-0x1.4463e633452b5p+94, -0x1.eba53c2d63cfep+113 +0x1.41f53747cdap-110, -0x1.a6420ec80a717p-387 +-0x1.30979d9547db3p-741, 0x1.04f47f562677cp-455 +0x1.3026666a06f7dp-919, 0x1.4488c08c8dd38p+594 +0x1.b86e0629db653p+869, 0x1.7009f8525f842p+977 +-0x1.45ba8f33c5bbdp-646, 0x1.bd14e056f875dp-989 +0x1.42b7e9c042083p+836, 0x1.22d1039d0e6fbp+37 +-0x1.69bc336ab616dp+478, -0x1.ea8689ce6f8b2p-589 +-0x1.0a059370ba169p+734, 0x1.40172539857e3p+457 +0x1.7d1abd28728fap+951, 0x1.95be8f48dd74ap+125 +-0x1.4c29760bc909cp-966, 0x1.4d0c39ea994p+194 +0x1.807ee47258958p-134, -0x1.9ab6b2b3c6b47p-86 +0x1.df2343ac77142p-596, -0x1.65aaefd7164cdp-397 +-0x1.0d55066ffb4e1p-418, -0x1.f498b0b57eabfp-985 +0x1.92487706239e7p+839, 0x1.a861c4e6cd56bp+858 +-0x1.90e289ce03823p+266, -0x1.9b7324b04fbe9p+534 +0x1.7a89e24f4dd4ep+202, 0x1.e17b0d5028495p+147 +0x1.c76ef2787661fp+312, -0x1.d11873afe7043p+750 +-0x1.9475f232679bbp-492, -0x1.ec5d349eeb8fcp-83 +-0x1.46ff6c6d01bfdp+133, 0x1.15f45a6ce5d07p+819 +-0x1.e865ac432e475p+864, 0x1.5b688316a6f35p-335 +-0x1.ff1b174fc083ap+447, 0x1.0cda1c8c6e17dp-636 +-0x1.93be66e12ab6cp-785, -0x1.52c017a7eeb1ep+528 +0x1.5a81cae2bf074p+633, 0x1.1e7c44e3f7147p+412 +-0x1.ea37520cc4c73p+747, 0x1.56938541747cfp-1010 +0x1.e07f64df0472bp+499, -0x1.da4ea4d50f099p-330 +-0x1.3b46a22b4d1a5p-484, -0x1.3c9652a1b38e4p+735 +0x1.99f8988c9a29ep+406, -0x1.267efe22b4d6ap-507 +-0x1.e6900f34f0e89p+201, 0x1.6808d8175449fp-781 +0x1.281e7cd9e6f8ep+755, 0x1.91878892830e6p-760 +0x1.c11d41d32e7a9p-836, -0x1.b13f6e505e542p-517 +-0x1.763242a88a435p+575, -0x1.c735b86af8c0ap+164 +-0x1.68d2d31ef5a0fp-822, 0x1.fe73b669121e6p-530 +-0x1.e2ec1e484b467p-246, -0x1.517674118ece2p-510 +-0x1.d476c1bc1a52fp+376, -0x1.c8436ee6291bep+818 +-0x1.2ffdeebbaab96p+144, -0x1.cbd166199ba51p-734 +-0x1.fcbed2f5373aap+669, 0x1.435d769199dbfp-805 +0x1.bca15435f5c05p+45, 0x1.e294e729b665dp+549 +-0x1.392bf94af616ap+455, -0x1.b37cc138ca3cep+102 +0x1.56ff2da161de6p-919, 0x1.16d11c53a7cf5p+303 +-0x1.204990fc84f77p+684, -0x1.2628043f0fe08p-417 +-0x1.50360f8a8f455p-818, -0x1.0ede3efc906b7p-573 +-0x1.13dd476a38f43p-92, -0x1.3f243a6caf87bp-214 +-0x1.bb3685b58bd14p+889, 0x1.262e682291e64p+813 +0x1.f7b34af8b1b6ep+818, -0x1.1f6557d369c25p+648 +0x1.90c2babca2f1fp+131, 0x1.70a7107f832fap+558 +-0x1.56c85887bc5ebp-896, -0x1.2d706f8f20cc1p-585 +0x1.f446545972c8cp-832, 0x1.cd4b4070c8996p+393 +0x1.52b20cf35c687p+466, -0x1.2e658b97fc69bp+381 +-0x1.69ef69848858ep-925, 0x1.c49c1fb4ff3a2p+677 +-0x1.4faa81b6c6265p-361, -0x1.be626569dccccp-503 +-0x1.8d2a9a383d506p-467, -0x1.c9f284d06c576p+434 +-0x1.9a293ce2c81cfp-447, -0x1.841977b795897p-63 +0x1.3ec878f68f40cp-806, 0x1.f348321912e5cp-550 +-0x1.6f7bbd10c82ddp-439, 0x1.877dcff25c497p-577 +-0x1.9c2f7ea3b6878p+408, -0x1.83fa86483766bp-325 +0x1.70f578bb9533bp-712, 0x1.a1a74a80f45c7p-295 +0x1.cca7cf2817ba7p-860, -0x1.2be524a6f3e33p-221 +0x1.20bc24c8a126p+842, 0x1.8cffe6532802fp-854 +0x1.6f1a523e6e92ap-640, 0x1.acac10f26818p-868 +-0x1.efb2bf99c041ap-49, 0x1.59bbe4d1e01bfp-68 +0x1.1a003438903f4p+864, 0x1.4a656551d94fcp+976 +0x1.472679d7418eap+697, 0x1.63d3e008371fdp+72 +-0x1.a56bf5b0a35fap-221, 0x1.5bc6dec8df722p+153 +0x1.2e6bf50077ac8p+472, -0x1.092db085783cdp+604 +0x1.828468bbcee93p+170, 0x1.5cdd84670e071p-646 +-0x1.2b6e8dd80a229p-702, -0x1.897b1e2bab355p+656 +-0x1.09f81069fbaa4p+514, -0x1.645850022d112p-871 +-0x1.61141fb352a63p-622, 0x1.a25bfcd7039dbp+705 +0x1.38f128a15e6p-780, 0x1.fdcacd1866dbbp-740 +0x1.4a816e68d12ap+938, -0x1.4d4f5e8beb119p-137 +-0x1.79743984c7c4bp-432, 0x1.6b360061cb6ebp+341 +0x1.4085f9860efc7p-578, 0x1.3b1a52f7735a2p+821 +-0x1.fdd6f1f21f4cbp+600, 0x1.63b1cf27c3d71p-861 +0x1.d6d5636d9b52bp+747, 0x1.f74138528a4edp+205 +-0x1.d889d11cc04e3p+124, -0x1.727a5b11ea9c9p-194 +-0x1.b14cb39070498p-870, 0x1.adc43b3db4d59p-913 +-0x1.8f9a4c8709cfcp-683, 0x1.c167543c4f8dp+484 +-0x1.8c8f198f83d25p+389, -0x1.2acd43dc601c7p-925 +0x1.00dc21201dd3fp-363, 0x1.12bd881160a0fp-611 +0x1.3b8d0b7b496d8p+741, 0x1.d9791df33fac1p+718 +-0x1.c57a262ffca6fp-299, 0x1.67ca7d276fe05p+842 +-0x1.398bf03135e64p+180, -0x1.6f63b6716c7d6p-553 +-0x1.577ed8a9668c7p-435, 0x1.b158b8ef66da7p+773 +0x1.a925ddd73d122p+239, 0x1.75da7381ba36bp-554 +0x1.aa55abf852967p-865, -0x1.a5ba61af0e1b9p-640 +0x1.8da7a6d44fc61p-994, -0x1.c9b1584f1107bp-197 +0x1.01211a48a51e9p-122, 0x1.8b7492103e65dp+734 +-0x1.1537e473f5c65p-757, 0x1.79effd1669aa8p-38 +0x1.8baaeb1ebf6e6p+233, 0x1.33088baff4c6p+241 +-0x1.f9a6d8e0975e6p+236, 0x1.ff9f0020e9048p+8 +0x1.ef67be55e650ep-305, 0x1.79e2e6ecdcb89p-469 +0x1.616acbc7b7fcfp-953, -0x1.f9c43c9a4997p-779 +0x1.d4f001ee489fcp+991, 0x1.b6659362bd8e7p-976 +-0x1.38635f22ae1e9p-721, 0x1.e0f0a6a27ec05p-950 +0x1.37a00d97d5439p-647, -0x1.73d96401d733ep-381 +-0x1.ef42af5cde108p-734, -0x1.a1111a85d88dcp+368 +-0x1.f9356336eb04bp+425, 0x1.c73595538494ep-266 +-0x1.7d4616d0d4ab9p+867, 0x1.803c102f32713p+396 +-0x1.c1a231aaa532ep+984, -0x1.70d03a3853fa4p-473 +-0x1.329e89377c4ffp-717, -0x1.0e9a006387ac5p-46 +0x1.754af9e855c0cp+205, 0x1.a966e0f892021p-644 +0x1.afb4d264dbdfap+411, -0x1.ee31ecc37a5f1p+1021 +0x1.9ee00bbf52557p+345, 0x1.f31c8a31ab158p+274 +-0x1.c6e1644d8c4e4p+262, -0x1.45c50029dd117p-428 +0x1.bd12397eb841p+540, 0x1.7057b7f788553p+732 +0x1.e7b4d0d26f2b3p+892, 0x1.b57ddd846a188p+193 +-0x1.2b5a9c0241dc8p-518, -0x1.915b7e9526228p-320 +0x1.bc804abeaca35p-596, -0x1.4420836242beep-59 +-0x1.cba822633ff8fp-214, -0x1.6161c6719a7c3p-753 +0x1.654df6c52a9fbp-309, -0x1.06074a07ee34bp-277 +0x1.71a2fde5038b3p+214, 0x1.d7203b3a1411dp-446 +0x1.864163a41ac0fp-700, 0x1.fc3e0d3881296p-468 +-0x1.a0fe0638a13d6p-1019, 0x1.3ccfd97d04ac3p-883 +-0x1.ea2d6341264f9p+967, 0x1.74c85a744a30dp-895 +-0x1.7b229dd4fad83p+574, -0x1.f5b6ff060e14bp-311 +0x1.0847e35317b2ap+872, 0x1.263cc7008eda6p+786 +0x1.836d9cba61135p-822, 0x1.42cadefcbe54fp-881 +-0x1.f3160f0fabd52p-679, -0x1.b422bf6a06284p+226 +0x1.6d53a76310183p+137, -0x1.5990d03d7fc06p-807 +-0x1.f2707b38430cep+819, 0x1.197b70fe7abf1p-289 +0x1.3d089bf57d8a6p+761, -0x1.edd136b9f96a4p-439 +0x1.0709c83a75b8ap-433, -0x1.b903f3b7d4615p-260 +0x1.6ef476cc3b04ep-609, -0x1.26049c2f1c352p-433 +0x1.df370d82f900ap+43, 0x1.e0a3ff4d4a3cdp+893 +-0x1.c0fd6da7e0c1ap-1003, -0x1.988ba00743d67p+549 +0x1.84206fe9d4f58p+648, 0x1.d8b8d3e0b4e46p-869 +0x1.ff96130f95774p-173, -0x1.edecc6c42567bp-330 +0x1.eb2ef215c55b2p+34, 0x1.27e6b07cf8c7dp-692 +0x1.4b40312a220abp-516, 0x1.d8f1cecf8b454p-996 +-0x1.b78cb61a1150ap-207, 0x1.45720db95266fp-963 +0x1.927136ec86accp-764, 0x1.251099daf16a4p+857 +-0x1.880f868994f9cp-558, -0x1.f986798188bcap-918 +-0x1.ad4f15fc5b3ccp-496, 0x1.54f2a9c040b1ap+752 +0x1.345a08e466479p+754, 0x1.eba2a4ba16953p-593 +0x1.ca715be6a7cc6p-136, 0x1.a8877bf600824p+837 +-0x1.a2f91d66f1b86p+263, -0x1.82b1b34a211aep-605 +-0x1.ab9e91db764bp+110, -0x1.7eee5611dd3fep-860 +-0x1.1fcaa151dcf23p-1004, -0x1.32d025c752388p+787 +-0x1.328464f3c8726p-973, 0x1.cc2b39aeb9a6p-416 +0x1.007f3d7f0e16bp+98, -0x1.a2d87e3b81475p+963 +-0x1.46589bf40603ep-492, -0x1.e2e2ff99c103ap+287 +0x1.b0e96c5eb7685p+386, -0x1.d824f6f0c309cp+294 +0x1.9d19ef3e2ffa9p+359, -0x1.143b522ff344fp+68 +-0x1.c5a997bdc73ebp-803, 0x1.c22d771e1e0bcp-443 +-0x1.ad43d4178df7bp+545, -0x1.0476bd7e6a54bp-134 +-0x1.3dec26382e421p+433, -0x1.94fe1637a388bp-222 +0x1.e3e8bd564a2a6p-55, 0x1.49c70d3334283p+481 +-0x1.a12efcac0fa89p-15, -0x1.36f0d6dd3c26bp+3 +0x1.fd73824406e7fp-173, 0x1.78219dd6bbcfbp-237 +-0x1.418ec59bb4e29p-858, -0x1.d4318757b4b8bp-409 +0x1.0310c4fa29ee9p+815, -0x1.561374f4c43d6p-589 +0x1.841880334fe9dp-236, -0x1.4848b24d0472dp+866 +0x1.5d6949de4154dp-829, 0x1.2091c1d9b73d3p-1021 +-0x1.2ac8017ab5892p+228, -0x1.2be11eb3cbb2p-62 +-0x1.79ae0adf95f2bp+469, -0x1.5d03f72741e28p+261 +0x1.0b6cc6755cf4fp+1004, -0x1.657df8cd3ad36p+969 +0x1.6ac7dc7cbd9a2p+844, -0x1.295186fd5a461p+583 +-0x1.7ff3241662b9cp-407, -0x1.5fd7fbbaf3a9dp-813 +-0x1.c58ee93c33266p+753, 0x1.a1ab883ce5434p-36 +-0x1.96f5f04c2f464p-168, 0x1.0b461ecc4b7d6p-922 +0x1.ba604f170f7c9p-149, 0x1.a99217bf2d0a7p-778 +-0x1.4835d1f469224p+841, 0x1.1937793755eabp-182 +0x1.fe78881af7febp-134, 0x1.630169576e036p+539 +-0x1.6698ba5c20ddp-115, -0x1.ff068e5836595p-939 +0x1.17b49e9681a82p+898, -0x1.364fb710eab17p+964 +0x1.899cb4a8030bcp+731, 0x1.a6e18b4844a54p+814 +0x1.5d249524d7c1cp-916, -0x1.4df4912c71364p-528 +-0x1.b483741db72fep-896, 0x1.5e38500a41ef6p-353 +-0x1.c649b634c49f3p+462, 0x1.e10d690e21746p-588 +0x1.c0243af36ae07p-56, 0x1.98efe19e31d0bp-745 +0x1.3e9375f1fdfc4p+610, 0x1.98981c3a04c1dp+852 +-0x1.22b057aaf9d81p-895, 0x1.2a52d36701ff1p+180 +-0x1.1a43b134b404ep+758, 0x1.2dde4e536602dp+803 +-0x1.4a8ec71fbaae9p+86, 0x1.5af682eb54995p+803 +-0x1.4ea2023486202p-955, 0x1.fbd200f967ad7p-364 +0x1.653e2e58fee69p+731, -0x1.73a474aa28ab7p+247 +0x1.91c372ed7dba9p-866, 0x1.7434b02c10f8fp-217 +0x1.dc09c5407e20ep-350, 0x1.638ce6ffc4f74p+660 +-0x1.bfffd339062c2p-935, -0x1.9561d60fc0379p+779 +-0x1.1c84fae104859p+350, -0x1.c29f23ab083b5p+980 +-0x1.d76aa28c3b123p-380, -0x1.0e9739accda04p+981 +-0x1.c8eba56da773p-568, 0x1.20334ccf0ad5cp+754 +0x1.70248ce177e39p+65, -0x1.59e7dd27a32c1p-295 +0x1.15f0c7a31a514p+415, -0x1.a13e1be0eff11p-722 +-0x1.9b29bdc200f9cp+895, 0x1.640b44f368a39p-108 +-0x1.f3ce00a4d660dp-974, -0x1.7da4c6c6c4058p-45 +0x1.96d47ff47e46p-836, -0x1.4073d7c22860bp+965 +0x1.525621ff5063fp+147, 0x1.f692f37cdd382p+291 +0x1.c98c9fb3c856dp-505, -0x1.ae059226c76d4p-628 +0x1.6ff383d1ade7dp-797, 0x1.2faff9f1e05f4p-894 +0x1.33d332690fc6cp-472, -0x1.0596916b71093p-66 +0x1.6ac0e441c0b8fp+19, 0x1.f462c3703ff57p+640 +0x1.5d6b56ec43c82p+554, -0x1.4b5893c3c2a93p-814 +0x1.eb41fc0afbae8p-941, 0x1.4ab53f214d8c6p-791 +0x1.b2d45d736a02ep+207, -0x1.1f95f822d7799p+783 +-0x1.f5e88da9ba61fp-191, 0x1.44cbede96ea5p-513 +0x1.aa22ecc174b97p+140, -0x1.34d368e46663fp-750 +-0x1.afb895fc2d5a9p-391, 0x1.cd058e2ce6a5cp-594 +-0x1.fdfe414690a48p+219, 0x1.0c62089ea1a26p-564 +-0x1.b7f139f27d1a9p-958, 0x1.08497b0e149p+609 +0x1.cbdd9d00ec53fp-889, -0x1.8a0df224eeb41p+180 +-0x1.2c4f61a61e2f3p-925, -0x1.bb4584ce4583bp-89 +0x1.398a21ff40d2p-525, 0x1.1ea6dc8faf463p+764 +-0x1.e053dded237e3p+448, 0x1.d9a4fbf891117p+897 +-0x1.6970debd68939p-181, -0x1.c321b67b5d8ffp-799 +0x1.c9173f9d2256cp-94, 0x1.0300654420afbp+132 +0x1.fd8af1d806cfep+703, 0x1.6f346ed47986cp-725 +0x1.7359d99eec8bep-377, -0x1.308e8f9dd340ap+22 +0x1.b69ed445c0fecp-642, 0x1.40fe9856c9524p+830 +0x1.3c9963a22f88cp+179, -0x1.c1a338d49d771p-153 +-0x1.3c628bb3a16b4p+943, 0x1.0bd79855c2a15p+892 +0x1.a2956df189feap+862, -0x1.430a09d3c48e8p-382 +-0x1.c58a4f88b051dp-818, -0x1.749b08cb7267ep+46 +-0x1.47424874956c4p-472, 0x1.5d53f92d872b2p+360 +0x1.3ac3c45e5b085p-583, -0x1.8b888ebd96778p-489 +-0x1.a3cce9a7875e4p+848, -0x1.4a0288f77b2p+83 +0x1.04c053055e26p+116, -0x1.adeacc9b7efe9p+748 +0x1.3a545fad070b5p+736, -0x1.b971a19a23ba7p-204 +-0x1.4b06d12f140d4p-352, 0x1.4f1f7ca3a5aa4p-97 +-0x1.4b34797ec8e3bp+1012, -0x1.ec9fedf87d0b5p-708 +-0x1.9a123ad73fafcp+101, 0x1.424981d6598a6p+351 +0x1.5b353c0b6aec5p-3, -0x1.c58a64ab63a0ap+1019 +0x1.c4d6a8aa200d6p-608, -0x1.897f2effad50ap+68 +0x1.2473892e0d653p-119, -0x1.e8ee7fcff6d67p+818 +0x0.ca3b996c8f9b6p-1022, 0x1.5fdc12e3b5f85p+216 +-0x1.b792edef53c35p+416, 0x1.d3ffb3d8fc4dap-674 +0x1.85cc482bb6e48p+515, 0x1.9282863ea931dp-422 +-0x1.d56d55f88eeb4p+791, -0x1.14be64f69ce5bp-595 +0x1.b035c2b7bc0cap+626, -0x1.d0534fb3ab003p+693 +-0x1.da47e70b4e0c4p-797, 0x1.13bfb01fb078p+197 +0x1.fc23bbdeffedbp+575, -0x1.4ad27c9e72337p+779 +-0x1.ed2f41b68412p-85, -0x1.89a6ac24742a1p+162 +0x1.538f9175bad3ap+969, -0x1.1bb4c19af5595p-493 +0x1.5548ced19b007p+212, -0x1.0af485176f217p-590 +-0x1.12f5f81cb1638p-613, 0x1.a9855b7297d3cp-639 +-0x1.ede28c82a1cecp+653, 0x1.72ace7dd05ae1p-345 +-0x1.ce0ef9b0c1a58p-927, -0x1.0933e76eb202fp+107 +0x1.7c5f6f78950d3p+828, -0x1.43b30032f092ap-328 +-0x1.a91c26be6ec6ep+83, 0x1.d386e9e104b4ap+416 +0x1.b4b3228d3e8b2p+830, -0x1.9ae727179a915p+165 +-0x1.b632258d91d4p+754, -0x1.305f94b7a57c4p-87 +0x1.326690d491cafp+479, -0x1.539cf1f3237bcp+600 +-0x1.e3510c8015c3ap+867, 0x1.399de732fdb91p-1001 +-0x1.e71dbbc3bd5d5p+132, 0x1.ff0a5b0c9494bp-201 +-0x1.714145d97709cp-968, -0x1.20bd66be71137p-147 +0x1.ca1f25e85fa53p-609, 0x1.54dcf288294d9p-883 +-0x1.b2daace6045bfp-457, -0x1.bf71fc4c48eb3p-777 +-0x1.e0bd0b3ee6975p-498, 0x1.a44a68ebd64fdp+926 +-0x1.91a9040bb5f4dp-374, 0x1.21c03f17a12e3p+494 +-0x1.52c8e516058cep-605, 0x1.6c773943b6575p-221 +0x1.0b36199ce6fdcp-402, 0x1.f4fa5dcc66238p-424 +0x1.7b68fbcc9a7b1p+737, 0x1.00d589aeb9d14p+838 +0x1.762015597525p-707, 0x1.91c0a96e3e2f3p+69 +-0x1.9c1c91a01e7f4p+561, -0x1.2b5afc756381p-86 +0x1.168db8b195388p+77, 0x1.5941ac902b8adp-322 +-0x1.5fd7fc44221f6p-175, 0x1.8ec12c1b5db9dp+821 +0x1.afc39485b60e5p+365, 0x1.ca8524e92647ap-889 +0x1.6d6fb6ff7d88bp+1007, -0x1.1f98ec264f97bp+818 +-0x1.aabed7cb278bfp-531, -0x1.7d50961792ae2p+646 +-0x1.54c1810ef8546p-863, 0x1.8494c04338cffp-933 +0x1.4a53f9d493286p+13, -0x1.7d5f45cf88817p-561 +0x1.9202115764e33p-762, 0x1.3aeeb538484ffp+632 +-0x1.fd3120017ba15p-171, -0x1.8e7297b901883p+175 +0x1.5432ceb2d540bp+204, 0x1.e2fb29d69d5b4p+868 +0x1.fade56777205ep-441, 0x1.7008842efa71bp-836 +-0x1.c56cf93119487p-697, 0x1.80b8c8746f3a1p+746 +0x1.5981929daf7f5p-827, -0x1.ed02906ddcb2fp-906 +-0x1.a41b88e2c5debp+342, -0x1.2b2469d0471d3p+404 +0x1.01599e94c69cbp+466, 0x1.01993baa28dfcp+818 +-0x1.dd239f1b51226p-511, -0x1.16789d43ac97dp+565 +0x1.0ded21786afbap-262, -0x1.a54ddc4e86bcap+659 +-0x1.23f4f983b875dp-750, 0x1.dd4aadb8840cbp-633 +-0x1.fc421b593967cp-517, 0x1.f0ed46dfb4ffep+713 +0x1.dfb22ec4cf72cp-1004, -0x1.73173dd7aab6p+326 +0x1.2db5f7b524b72p-919, -0x1.589675c47344fp+378 +0x1.56d3d3502df3cp-952, 0x1.db00e5c4e0213p-311 +0x1.50edf7242bddp+559, 0x1.4613f677cbad5p-40 +-0x1.f7d9ec2938ee2p+220, 0x1.0be59f2cce9a5p-382 +-0x1.9c9a552de56dfp-57, -0x1.b4f304bdc8ab6p-937 +0x1.f02142c026defp-961, -0x1.eb3716d2031bfp+195 +0x1.527b93ca647cep-866, 0x1.a88a9f3833375p+1002 +-0x1.a74019c62e26p+399, 0x1.faee3010ed0c4p+801 +-0x1.7ca550710140ep-101, 0x1.eb52be9e679fp+571 +0x1.12171f8729216p-519, -0x1.004f792d5a268p-63 +0x1.d65bfd4c30839p-746, -0x1.4daba43409641p+204 +-0x1.21cd83e498516p-450, 0x1.4609b19e9ef53p-403 +0x1.ebb5fa387c927p+248, 0x1.4ecab9624ec62p-92 +0x1.45b55f65ff1e7p+813, -0x1.f707e3c8b5239p-138 +-0x1.1da001fda482bp+974, 0x1.edec501a36b24p-724 +0x1.97315ecb8425cp-123, 0x1.612592215f3fdp-132 +0x1.8d5b1b3846284p-425, -0x1.3ce5fa09132cbp+436 +0x1.d1d47524c44a4p-812, -0x1.bf891b93dde8ap+744 +0x1.92a7bf9242684p-73, -0x1.aa82bb891be0cp+89 +-0x1.e6810b9a1bf0ap-168, 0x1.c5398195ccdc3p+956 +0x1.7e96a89da165fp-109, 0x1.f329f2304d644p-49 +0x1.34bd8b31ce5c4p-282, 0x1.abae1a040636p+948 +0x1.996f4e63d4f6cp+525, -0x1.cc3c2ee836653p+88 +-0x1.02c3adb3be10fp+415, 0x1.9b4364f0bdae8p+443 +0x1.b9b92f18fd558p+252, 0x1.016c8f344aa47p+650 +0x1.c4c4bb137d3b3p-872, 0x1.f8f7156fde005p+743 +0x1.a8de0feae63afp+656, -0x1.be0f16040e274p+567 +0x1.dbfd2ff985308p-669, -0x1.44af235aa6586p+1020 +-0x1.a0078fbaaab42p-479, 0x1.9dd2d4b16edecp-982 +-0x1.e5ecc39229163p-774, 0x1.76f56f40cf5fep-657 +-0x1.50b0162168c61p+75, -0x1.57cd096ae8ceep+687 +-0x1.a462268708eaep-588, -0x1.0d36bcb0b2543p-466 +-0x1.9d5d462d78a6bp-722, 0x1.991f65583703p-302 +0x1.0bc631281acb7p+773, -0x1.94de5221c9b09p+933 +-0x1.883db5e32c18ep-926, 0x1.e909063938ef8p-786 +-0x1.c19dc126e2edp-216, 0x1.b69af7ca5d054p-418 +-0x1.71c3328325a06p-201, 0x1.47b59a7ef826p-85 +0x1.a4c106321fba5p-905, 0x1.d662dbd1e9c91p+254 +0x1.c5b5de0aca697p-258, -0x1.f7d22c841742dp-581 +-0x1.023ca584137cbp-748, 0x1.ca5f548413f7dp-208 +0x1.22e3284776858p+995, -0x1.17ae2e18def95p-26 +0x1.ea4795d44137dp+675, 0x1.46f251013b56ap-288 +0x1.1884e3956d27fp-761, -0x1.e674a4e761f5fp-739 +0x1.6204d355c8abfp+1015, -0x1.21daf1f59bedap-270 +0x1.1fc66d71e1062p-964, -0x1.ab81995abffc2p-254 +-0x1.ac284515546c2p-721, 0x1.1dd5d567a1a71p-396 +0x1.241d5888f647ep-200, 0x1.73d9a9c9d9b67p-251 +0x1.cb9669c0b22a4p+218, 0x1.7e5907e439ba7p-72 +0x1.3ac7220650da3p-269, 0x1.63d95519da5d1p+241 +0x1.8eb6d46d9a348p+330, 0x1.5ab0857c44654p-861 +0x1.fe103724110ap+293, -0x1.6f2313c4854bep+856 +-0x1.c876b78ed48ep+47, 0x1.c364b45c86731p+410 +0x1.20bc075971705p-179, -0x1.4623e2dba0225p-950 +-0x1.bab2368e68d6fp-806, -0x1.1bf2a7f5955p+283 +-0x1.e2a7f07af1ba8p+225, -0x1.2d8a8fa4019fep-360 +-0x1.7c24cad3c9107p-793, -0x1.7c8df00527f77p+374 +0x1.4c4257d85d97cp+868, 0x1.d95fb6727b064p+495 +0x1.883a5e7f0489bp-256, -0x1.c435375952c0fp+27 +0x1.fc5a906c4aea2p-390, -0x1.057b91c5f31ccp+351 +0x1.86b1e5feb630ap-212, 0x1.c9317e723e87p-782 +0x1.fd784a7a3492p-310, 0x1.13394a2dbec98p-79 +0x1.7fe2769664081p+435, 0x1.10e2b5c4b6481p+145 +0x1.e03f7bf6e87c2p-470, -0x1.ee5649f4bf6fp+276 +0x1.4ab32bae3801dp-330, -0x1.cc6cfb5febdfcp-170 +0x1.d06c7fe7c6b0dp-376, 0x1.cbde7bcaca351p+735 +0x1.008c2aab04dabp+859, -0x1.285fe5dd7d39ep-855 +-0x1.8695662e78418p-630, -0x1.4ebb1cd711234p+272 +0x1.1c7560a0d2df2p+702, 0x1.10fd7629c58a7p+236 +0x1.e92cd9e803aecp-636, 0x1.2a0d010fccd2cp-157 +0x1.08913e8bcd565p-224, 0x1.84d49084f3544p-991 +-0x1.807cc09113d47p+358, -0x1.e984309dbe045p+169 +-0x1.f83619b15175ap-889, -0x1.9a2cf661dbcbp-663 +0x1.5fd0dddd8c329p+331, -0x1.f5cad18245203p-325 +-0x1.af7f725a79dbp+979, 0x1.0569c82eaba96p-1010 +0x1.cad6d7736af6ap+804, 0x1.68a9d7048d8dfp+16 +0x1.b06e4f6e05c74p+675, -0x1.82e414b8b1f3cp-981 +-0x1.0c17284003246p+437, 0x1.a98a01fd5ea0dp+593 +0x1.0a9276374f493p-364, 0x1.9abc279b0f173p-753 +0x1.e67c66ea3297cp+799, 0x1.7862e7b7e2378p-324 +0x1.99f36820e47adp-891, -0x1.74fae8b0b3fa1p-548 +0x1.5727b90bacc54p+42, 0x1.f8a955c63b79p+439 +0x1.bc630f9589dep+939, 0x1.00a0432666a59p+370 +-0x1.a0a05f9ad91dfp+852, 0x1.0400649151163p+262 +0x1.916ce547832f6p+702, 0x1.1cdde7fed53p+885 +-0x1.4a809e3e8738ap-1003, -0x1.6e1ebe4d7d35dp-508 +0x1.d4ede50b0f8fcp+959, 0x1.d723c8d23e883p+736 +0x1.c2acda5cceb57p+381, 0x1.ccf15447659bfp-45 +-0x1.a030113512cb1p+746, 0x1.c0f08c56a8681p+756 +-0x1.87cbeda5c080bp-968, 0x1.37316dba763f4p+1023 +0x1.2141e5f6943ccp-981, 0x1.894b6684f4d0ep+768 +-0x1.ee4b5798a9cffp-516, -0x1.a3c3ef4d63759p-176 +-0x1.28fa20f216b59p+898, 0x1.e0c9b5cabe6ep-154 +-0x1.045cc99bc9b41p-547, 0x1.ea693bae2df0fp-1018 +0x1.603305c877b17p+509, -0x1.ae79d5792d458p-499 +0x1.bd2500f96ac17p+1023, 0x1.1756ccd297817p-134 +-0x1.2a8372b2c5fa8p-815, 0x1.5acea1671ec1ap+916 +0x1.a1b0e306ac99p-292, 0x1.8a62c83277e19p+299 +-0x1.936570229e706p-836, -0x1.32f83f64d9642p+995 +0x1.57a4e8244e595p-939, -0x1.80e476dda7192p-806 +0x1.484d7640f541fp+983, -0x1.07a37b1528d44p-182 +0x1.1254176e87c6ap+392, -0x1.b0001af186addp-981 +0x1.ede3fc3a5ca1bp+578, 0x1.95031dd4bdd3ep-959 +0x1.a2eb5cbb6ba73p+1010, 0x1.efcb4205e5ec7p+854 +0x1.b2c24a0226e26p+526, -0x1.45198a7a92467p-113 +0x1.3050e85788d06p-665, 0x1.a04395bb35bbfp-990 +0x1.a4419ac76552dp+299, -0x1.ac156732cef0ap+442 +-0x0.c9c2ac71cf416p-1022, -0x1.43c79d7592e3bp+662 +-0x1.61be60c492702p+53, -0x1.04995d2d2f4afp+833 +-0x1.ec6a831ec4f3ep+814, -0x1.c085bfb8b0802p-312 +-0x1.459bb6e803835p-368, 0x1.3dc58d44ec162p-469 +0x1.1d79a7c416909p+813, -0x1.46b62b0a3ac1bp+613 +0x1.9d1387fc05612p+868, 0x1.adacb571845afp-638 +0x1.e55125c4369a4p+268, 0x1.8c6b089764121p+17 +0x1.db29703a69ed2p-72, -0x1.b6011d91ad9e9p+907 +0x1.9ebd63b002a6p-697, -0x1.cc3c55854c2ecp+239 +0x1.b45f659d66846p-656, -0x1.ba09fb67b05d2p+186 +-0x1.c65ba7ae75451p+853, 0x1.844fe2c65f941p-630 +0x1.738a17a1a0746p+938, 0x1.6bda1a8a04583p-226 +-0x1.d74d85d4d1f4fp-638, -0x1.8dd6a9ce6cdc3p+876 +-0x1.ac1dbf8e05e35p+779, 0x1.a6418bed4b62bp+262 +-0x1.6ea1fa5253bedp+26, -0x1.601895f61ee3cp+697 +-0x1.a95b0ff128d5ap+633, -0x1.ed2d83198618p+666 +0x1.8bff8243f7b3dp+278, 0x1.c2a77096bbdb2p+85 +0x1.eec96511d93b4p-140, 0x1.623a468ac3d94p+183 +0x1.c4eabfa35fddfp+889, -0x1.33f439b51bc35p-222 +0x1.949f1b5ce5dbp+302, 0x1.f8f0932a9d195p+710 +0x1.0aa20a24bcef5p-183, 0x1.5c0292e4e2975p-513 +0x1.9ef93307c3522p-831, -0x1.4250a65b9d124p+950 +0x1.d6262800d007cp-587, -0x1.289e6162488a5p-395 +0x1.9b9c2759b9d6cp+348, -0x1.70f9a73f8de5p+72 +-0x1.fdb00afbe1e01p-383, -0x1.2a155917930f9p-583 +0x1.061bdc95f343cp+443, -0x1.fcc2fa73ffe7fp-389 +0x1.0ecd81dee3403p+1020, -0x1.2b8cab98346e3p+217 +-0x1.a7d9c01150eeep+145, 0x1.c99503b3fab8ep+79 +0x1.115849bd4355fp-889, -0x1.584be874ef866p+895 +0x1.79bdc0480d5f6p+835, -0x1.5137a69c83238p-537 +0x1.34fcbb895c593p+202, 0x1.3b95fbd9eae2fp-367 +-0x1.dcc539c5674e9p-497, -0x1.65e85d7fddd54p+973 +0x1.04c41aef220abp+354, 0x1.f25bfa410cd1ap-637 +-0x1.21a2f3fa109b3p-176, 0x1.464134cab10a4p+649 +-0x1.aa97f9df3d02ap+320, 0x1.270a06e1ed625p+393 +0x1.0757de7784636p-803, -0x1.1078a50df2d9bp+926 +-0x1.db116067d1e52p+508, -0x1.2094021453f7ap+881 +-0x1.3e5acfc0a9699p+299, -0x1.a1ac083116c75p+756 +-0x1.1762f192cc412p+98, 0x1.b34a206142782p+618 +0x1.380460b387bf9p+261, 0x1.27a285767a5b9p+365 +0x1.63b3b9db0d83bp+236, -0x1.54964f2e283d3p-291 +0x1.f9a6d9e3eeffap-811, -0x1.03b06a9b79d63p+832 +0x1.a25365aaf555bp-114, 0x1.49f4416582a9ap-117 +0x1.b5d022e408eacp+118, 0x1.6f736ab12a72ep+815 +0x1.3e8d033a37c35p+669, 0x1.d0b510d024ed8p+163 +-0x1.753ffb7cf35b6p-308, -0x1.14995499cb3f7p-972 +-0x1.dc454c6dc2fe4p+93, 0x1.4b543400eae43p+825 +0x1.ac1f6e3d41783p-173, 0x1.a65dc47c15194p+723 +-0x1.6c820c125474ap+607, 0x1.5c3f5183eddc3p+920 +-0x1.78f8b437b9422p-106, 0x1.9b7b5b05b74e6p-982 +0x1.259163f137d33p+776, 0x1.dc9c19787d832p+960 +0x1.a21d9506336d1p-607, 0x1.89f563dcefe07p+438 +0x1.89c77505177efp-232, 0x1.efb52e5b60e65p+459 +0x1.7aa6fd4ab981bp+488, 0x1.105128296785dp+420 +-0x1.d90e261c068cp+852, -0x1.2703ac5312c28p+243 +-0x1.cf492b17bb3f6p+948, 0x1.8c5d493a58a31p+847 +-0x1.18c29aa390d1cp-212, 0x1.cf0383e46dcc6p+376 +-0x1.8b85915e13a71p-64, 0x1.d817b0af92102p-944 +0x1.0ee2196ee8a76p-429, -0x1.739d2fff9fe55p+947 +-0x1.f367f086e9beep+387, 0x1.7132680938113p+908 +-0x1.095390367d552p-999, -0x1.09ee53b68a11p-674 +-0x1.c2bfbd47f1fcp-381, -0x1.90bd759d89c95p-682 +-0x1.5070732f1b6f6p-574, 0x1.5e1e18a89d10ep+910 +0x1.b08151a83f7acp+1018, -0x1.b7449856e98b6p+518 +0x1.9aaeaef8da936p+905, -0x1.f028be9fccdaap+819 +0x1.e80b1f70df1e6p-274, -0x1.31af0033ae172p+471 +-0x1.974eb9ea4776fp+769, 0x1.7bc9fb64cf9b6p+671 +-0x1.42d902d4ac967p+39, 0x1.59fbc371e060ep+915 +0x1.da244995ea5d9p+923, -0x1.d1f898dea5887p-140 +0x1.228096ac90886p-475, 0x1.e89d6a356788cp+490 +0x1.754733aabb8fp+615, -0x1.5ec7f36ef0645p+237 +-0x1.c28a759014522p-368, 0x1.e06c3c72f1147p+674 +-0x1.9359e4e2ab8dcp+39, -0x1.49e7e7eb7286p-432 +-0x1.4205f02739704p-416, 0x1.8590b07658eefp+292 +0x1.50dc9c70c62d2p+756, -0x1.7e05375a7ab59p-936 +0x1.692682fbda19dp+135, -0x1.2c1424531f5e8p-57 +-0x1.533e6e861a0dbp+776, 0x1.30569319da867p-1018 +-0x1.230a5fd77b2b9p+595, -0x1.aed54652fdfa7p-29 +0x1.ffb43cc18a59ap-332, 0x1.6541e1db4f3dfp+379 +0x1.741695d36e2dp-235, 0x1.b2481aa788cc8p+234 +-0x1.adae686004adcp-287, 0x1.33b21ad23690cp+419 +0x1.bb009ab42f26fp-247, -0x1.42324ad2b8a68p-43 +0x1.48d0967c5f305p-409, 0x1.a4e19caa8c9c3p+470 +-0x1.9ca27f566a9a4p-944, 0x1.cabd95ac29be5p-809 +0x1.ed59dd38faf7p+525, -0x1.ebc3480df97e3p-355 +0x1.daf52cf4b4cf9p+37, 0x1.90a3a6c0923b6p-572 +0x1.17d9f720c2817p-988, 0x1.fcc786fc17e44p-35 +-0x1.922db9d580176p+647, 0x1.a49c619f10944p-180 +-0x1.88d69d63ca7b9p+1001, 0x1.aaa0924175993p+233 +0x1.9fd1c3e8a149p+17, -0x1.0e5dabd650042p+490 +-0x1.7ee7727afa707p+117, -0x1.f28ff43a60bfbp+41 +-0x1.c654c5b561eb4p+799, -0x1.d83d996dafdf6p+792 +0x1.cfce439e8f42bp-782, 0x1.c58c8a15f8b97p+593 +0x1.6681925e58ac9p-861, 0x1.2768402ced7efp-987 +-0x1.fcc75df07481ap+978, -0x1.912cd806dd07fp-487 +-0x1.d71f87c76b1d8p+873, -0x1.f5c64d1a7da78p-20 +0x1.4cce0cf3c3185p+829, -0x1.cb56ef1a03f52p+87 +-0x1.bda1a9c5ff5dp+169, 0x1.c66b9959e7f95p+137 +-0x1.b82e694e7764dp+743, -0x1.c6bd0bdc6648ap+970 +0x1.18361594258a5p-639, 0x1.2171c4a28c0eep-509 +0x1.89b8d64277c87p-575, 0x1.b5f836264ff06p+439 +-0x1.0d83cd1af1e99p+45, -0x1.47be13c8b3911p+751 +0x1.0c3780fcb3604p+643, -0x1.57a797edd61b1p+754 +-0x1.7745a041426aap-969, 0x1.4db400b96d65ap+421 +-0x1.16810be69914dp-120, 0x1.359633ae39259p-436 +0x1.194c052752cb8p-954, 0x1.01815af1c2c2cp-55 +0x1.22d8cab5f845bp+652, -0x1.fbb57fa2642cep-510 +0x1.1857f3606057ep-96, -0x1.6958bf8167258p+926 +-0x1.275cced907a1fp+691, -0x1.daa610958c4b9p-589 +-0x1.50962537ad40ap-613, 0x1.9484de2fb6c05p-789 +0x1.72ec630989c6dp+590, 0x1.fc2ec584faadap+771 +0x1.ff67d9efd9a7bp-437, 0x1.a342fe8ac841ap+36 +-0x1.fa6a77ba49436p+594, -0x1.f40dab00e930bp-590 +-0x1.459843f7583aep+540, 0x1.bb7bc32501f52p+464 +0x1.3093dbe01bff4p+570, -0x1.38b026fd38248p+295 +0x1.3f351b55e473ap+695, -0x1.2e9e6547857ccp+697 +0x1.0ef002c6e5163p-299, 0x1.d467c08cf75a3p-343 +-0x1.cfff22b862868p-150, -0x1.dd99a1e648e7ap-9 +-0x1.a6f1972aff101p+317, 0x1.69e2d38ca4cfp-319 +-0x1.7baeedc009edcp+858, -0x1.3ea62df373ca1p-241 +-0x1.a91ffa89c5633p-734, 0x1.938cb7ffdb644p-239 +0x1.2c288ad276a45p-665, 0x1.269c7f16bb183p-181 +-0x1.76ab172388c82p-615, 0x1.1972be7709aecp+615 +-0x1.7db418283e85ep-421, -0x1.fae14268866a3p+59 +-0x1.cb48b2f68de38p-257, 0x1.4c3239a1ab421p+808 +-0x1.6d20620b488fdp-909, 0x1.58b35285c1115p+501 +-0x1.9bee720266f0ep-704, 0x1.7e32ae5746303p+863 +-0x1.1a201780dd7aep-949, -0x0.c1957598624f4p-1022 +-0x1.f0cf664d8d70ap-826, -0x1.89d0cc2a06bp+136 +0x1.67059fe254eb2p-9, 0x1.984f78a7fa679p-576 +-0x1.ea8a9cd8cb5a7p-577, 0x1.83eac1df0b8d1p+728 +0x1.98ee1b3b19987p+193, -0x1.6cd21f3ec717cp-137 +-0x1.fefcf1bb6a922p-18, 0x1.9ed2427a5900ap+858 +0x1.e6ae7e7578defp-633, 0x1.ba06af17eae86p+476 +0x1.71e69842d986fp-965, 0x1.2c3fdc4684bdp+422 +0x1.b038cd5ae9e4fp+841, -0x1.95b00ece687efp+21 +0x1.55a312d2bf3c2p-605, 0x1.f3d2c56e0dca7p-963 +-0x1.13fce5f27a7a7p-458, -0x1.98c23d246fa2fp-572 +-0x1.36fb53aa8e38cp-127, -0x1.154bab93c8eb8p-590 +-0x1.f73f174bb837dp-77, -0x1.67054ecc9f64ep-762 +0x1.e8df068ba3d27p+550, -0x1.903f587384614p+334 +-0x1.208e3a22be12bp-545, -0x1.7c50e9315c046p-224 +-0x1.733bbf66e524bp-167, 0x1.3292c65fc09dfp-602 +0x1.4461130c1f39ep+95, -0x1.a2de85d48cfecp-345 +0x1.5bbf44944b906p-224, 0x1.17b902b02851p+22 +0x1.b55c7423964bcp+84, -0x1.6f05ad0402f98p-402 +-0x1.3b7550ac640cbp-376, 0x1.b6843aa267502p-861 +-0x1.bd4d0ffa60298p+962, 0x1.d39028ecd025ap-537 +-0x1.d539bfb12f853p+533, 0x1.6fd6dcc76b594p-818 +-0x1.7545b6cc7dab5p-989, 0x1.bfe53e64af279p+595 +0x1.55d86841fd23p-1004, 0x1.d9c209c1b0068p-514 +0x1.71d66d7b86f5bp+826, 0x1.80c9e49887e21p-832 +0x1.a4ba3a825eaf4p-172, -0x1.7dcb9539bc991p-886 +0x1.90bc135879ee1p+498, -0x1.d6593af2b9d7bp+493 +-0x1.e3ca7439f0777p-52, 0x1.75cbcb66dc7efp+241 +0x1.07f6872a92fe5p-607, -0x1.881e8574eaedcp-600 +-0x1.78ad66194bdap+976, -0x1.763bf4157053fp+882 +-0x1.ede5ec3f2f167p-439, -0x1.0beb082f89a82p-463 +-0x1.72acd7228f9ffp-916, -0x1.ce0930cb50203p-755 +-0x1.42e0f9c1c4b0dp-779, 0x1.08a5ee82c2212p+859 +0x1.5eba5f7fe5f69p+980, -0x1.3d553ed90e14p-518 +-0x1.a3a8484f043d4p-207, -0x1.2c3d8c0a90616p-419 +-0x1.bdbfb2ad17291p-293, 0x1.ada0e6c75e1b8p-1005 +0x1.dbd467dab06bcp+791, 0x1.344edbf4006aap-638 +-0x1.8d948c07d8843p-948, -0x1.0f19d92ad5f81p+198 +0x1.4fd4d0019912fp-940, 0x1.a06753a54d04p+931 +0x1.1a58041a552efp+775, 0x1.8e950df4ff8aap+428 +0x1.086dabe1d9b6bp-488, -0x1.f8e2cb6387fe2p+62 +-0x1.8bbc34c5c76a5p-945, -0x1.27441a8578b44p+860 +0x1.478d786c0b936p+153, -0x1.29257807aa044p-729 +-0x1.7c39fb95aaf5cp+150, 0x1.aedeb637a197fp-963 From patchwork Wed Oct 6 18:05:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 45934 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id DFA35385843E for ; Wed, 6 Oct 2021 18:08:44 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DFA35385843E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1633543724; bh=Gf35a1lAv9XJ4DIKVk4HLFVwnR7PT/khthfO41pNiFQ=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=qnkVMMTBO8ACj+YOa0QgPyom8QtYpA9B7bFi9ig6MVilOOJ9PuLSXTcAj2F/Y6hJn qG6iTrOelq9RWnWcflNfwrcu9J3rWhN/vIWpbVnDivifleUY1FKnw5MshdZmrOKXQ2 EOdIOjdCPztgZYvgWIFwjkSqSXZn6aVQv/bY9dKQ= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qk1-x72d.google.com (mail-qk1-x72d.google.com [IPv6:2607:f8b0:4864:20::72d]) by sourceware.org (Postfix) with ESMTPS id 3A2B03858407 for ; Wed, 6 Oct 2021 18:06:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3A2B03858407 Received: by mail-qk1-x72d.google.com with SMTP id q125so3379973qkd.12 for ; Wed, 06 Oct 2021 11:06:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Gf35a1lAv9XJ4DIKVk4HLFVwnR7PT/khthfO41pNiFQ=; b=PD7SjGFkNmgK0RyIHY7ISEDhp6NfRYS9Io0DIZP9WdM6/Fbc3GlHCBKhCG3PgUnGjH teT/XmAWzF+i0CVDh7iMv3YsShTBtSnVXpkf0jgN0Sj+VdbYHtplcMLAERBnYqZ5lki4 qblXdGBDow9m8/phkkToYZcroooL8BtiYnme8gEkLw6bNUcDsH3r7yEYYgfwiLAJLc+M TfuIcJoGJf6GB8XWptINwDeqb4L6GLXE9qpuYL+CZS/SJ5y4A1Dfmjh+ZM3n8v6jK26A jUkoBUol9G5e3gmIi6Q1me1zQIJWQM7U2isiq8zUI1nwgZgFTFvdJ29b5H7h09xLMR6G y3UQ== X-Gm-Message-State: AOAM533khwBwMKTGqvpgWeS0b0bvDuPVqDFn3CHuCiv+lbvPzCpLwaX3 T6cioNZH/V8Cft6SLF16RIyFWZSsWptcFg== X-Google-Smtp-Source: ABdhPJz2VHw4iyh/1JZujD7VrLQZIfzhEyR92HzKR+HnUM9NjxE7S1cXEXyvUIWam6FE1vkN1PBOxg== X-Received: by 2002:a05:620a:23a:: with SMTP id u26mr151772qkm.106.1633543563519; Wed, 06 Oct 2021 11:06:03 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:807a:2ebe:4b13:27bd:f11d]) by smtp.gmail.com with ESMTPSA id 18sm14161168qtz.49.2021.10.06.11.06.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Oct 2021 11:06:03 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH 2/9] benchtests: Add hypotf Date: Wed, 6 Oct 2021 15:05:50 -0300 Message-Id: <20211006180557.933826-3-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211006180557.933826-1-adhemerval.zanella@linaro.org> References: <20211006180557.933826-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Based on random input arguments. --- benchtests/Makefile | 2 +- benchtests/hypotf-inputs | 1006 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 1007 insertions(+), 1 deletion(-) create mode 100644 benchtests/hypotf-inputs diff --git a/benchtests/Makefile b/benchtests/Makefile index 4fcd73131a..ad4bbf2912 100644 --- a/benchtests/Makefile +++ b/benchtests/Makefile @@ -26,7 +26,7 @@ bench-math := acos acosh asin asinh atan atanh cos cosh exp exp2 log log2 \ fmaxf powf trunc truncf roundeven roundevenf expf exp2f logf \ log2f sincosf sinf cosf isnan isinf isfinite hypot logb logbf \ exp10f ilogb ilogbf cbrt erf erfc exp10 expm1 j0 j1 lgamma \ - log10 log1p tgamma y0 y1 atan2 + log10 log1p tgamma y0 y1 atan2 hypotf ifneq (,$(filter yes,$(float96-fcts))) bench-math += cbrtl diff --git a/benchtests/hypotf-inputs b/benchtests/hypotf-inputs new file mode 100644 index 0000000000..25b28c71b0 --- /dev/null +++ b/benchtests/hypotf-inputs @@ -0,0 +1,1006 @@ +## includes: math.h +## args: float:float +## ret: float + +# Random inputs in [FLT_MIN, FTL_MAX] +## name: workload-random +-0x1.edae52p-59, 0x1.504a8p+125 +0x1.250844p-37, 0x1.e1122ap+3 +-0x1.5b7a7ep-93, -0x1.21477ap-39 +-0x1.e5af9ep-81, -0x1.7ed6eap+105 +0x1.7ef9b6p-75, -0x1.b25f9ap+41 +-0x1.feef0ep+11, -0x1.d68b4ap+73 +-0x1.c0907p-53, -0x1.e80e5cp-37 +-0x1.d7d9ecp+91, -0x1.0768d8p+113 +0x1.cd0fap-47, 0x1.3e3328p+111 +0x1.3fcb82p-83, -0x1.b2d3a8p-107 +0x1.d3df2ep-33, -0x1.3c0398p-89 +-0x1.a9bc14p+33, -0x1.7f96ecp+5 +0x1.746f48p-21, -0x1.275848p+33 +-0x1.3eb37cp-39, 0x1.87d12cp+121 +0x1.8c853ap-27, 0x1.d92daep-7 +0x1.45f826p-35, 0x1.7d8a04p+73 +0x1.682b8ap-29, -0x1.9d9982p-95 +-0x1.f0c9c2p-23, 0x1.e20deap-49 +-0x1.4f58ccp-1, 0x1.3a8bb4p+111 +0x1.9aab7cp-81, -0x1.cadf0ep-123 +-0x1.59ef08p-113, 0x1.5ba2dp-31 +0x1.37ff4cp+75, 0x1.d601d2p+85 +0x1.beb4a4p-119, 0x1.b26a4p+59 +-0x1.e7bb62p-9, -0x1.17ed62p-69 +0x1.850c9ap-77, -0x1.db0ad6p-15 +0x1.3b09e6p-117, 0x1.8d1394p-47 +-0x1.b6057p+85, 0x1.6db2a6p+41 +0x1.9b441ep+117, 0x1.1b9d3ap+27 +0x1.4fb1e4p+79, -0x1.15174ap+3 +0x1.fa279p+45, -0x1.3164c6p+43 +-0x1.a0dc4ep-41, 0x1.af8a1ep-123 +0x1.a87ceap+3, -0x1.3b1402p+1 +-0x1.2bfa7ep+125, -0x1.d42942p+9 +0x1.c20decp+45, 0x1.1ac07p-87 +0x1.320192p+111, 0x1.88bdcp-111 +0x1.c6ac0ap-13, 0x1.78289ap-125 +0x1.c04d3ep-97, -0x1.cd2b0ep+119 +-0x1.f321dap-43, -0x1.f3a8a2p+75 +-0x1.38618ep+55, 0x1.af4a5cp+95 +-0x1.262efep-3, -0x1.d641cp-49 +-0x1.e4a1bep+123, 0x1.fdeefep+109 +-0x1.b1b03cp-51, 0x1.c89384p+71 +-0x1.c8bdb6p-29, -0x1.34ee3p+47 +0x1.d19c0ep-101, -0x1.a3a902p-49 +0x1.c0e9fcp-113, -0x1.81bc52p-1 +-0x1.00eaeep-71, -0x1.10cfc4p+91 +0x1.b0867p+47, 0x1.838426p+65 +0x1.fa2bb2p+111, 0x1.98b2e2p-35 +0x1.63215ap+57, -0x1.665636p-71 +-0x1.f4be8cp+5, -0x1.3308a2p+19 +0x1.0cea5cp-41, 0x1.c67682p+19 +0x1.24ff42p-71, 0x1.aadf16p-45 +-0x1.83714ep+35, -0x1.2144c2p-43 +0x1.94339ap+9, 0x1.95bf3p+11 +0x1.cc573cp-7, -0x1.aec4cap-91 +0x1.679136p-99, -0x1.17589p-19 +-0x1.369edp-97, 0x1.211da2p-5 +0x1.1483bep-47, 0x1.cee72ap-15 +0x1.74c8f4p+57, 0x1.d5bc5cp-49 +-0x1.a5cc94p-95, -0x1.180822p-37 +-0x1.6ff11ep+33, 0x1.76a6c2p-35 +0x1.057fep+29, -0x1.894db4p+13 +-0x1.1ffe8p-97, -0x1.ea0204p-127 +0x1.c37c2cp+93, 0x1.d4d0f4p-107 +-0x1.34dae2p+103, 0x1.944a9ep+5 +0x1.03da1ep+21, -0x1.85d212p-121 +0x1.810f02p-91, -0x1.f8fb2cp-111 +0x1.5c3638p+91, 0x1.2289c8p-77 +0x1.17a252p+73, -0x1.56add2p-7 +0x1.c6ff9ap-125, 0x1.7fbcc6p+9 +0x1.13bdbcp+95, -0x1.e8141p+85 +0x1.7b0118p+43, -0x1.6353c2p-19 +0x1.5f8cf6p-79, -0x1.ca90a2p-57 +0x1.9d465ep-55, 0x1.0487bp-99 +-0x1.246f1ap+107, 0x1.e1044p-75 +0x1.b28f2cp+89, 0x1.e33354p+95 +0x1.bbacecp-35, -0x1.c17d98p-75 +0x1.2d5ddcp+47, -0x1.aa7e06p+101 +0x1.a419cap-97, -0x1.e49d0cp+93 +-0x1.0af2fap+47, -0x1.f8811ap+77 +0x1.7ecae4p-37, 0x1.f206c6p-57 +0x1.f52c94p+105, 0x1.3ce9a4p+103 +-0x1.b51c58p-41, -0x1.e3fcf8p-59 +0x1.345e16p-55, 0x1.4799e4p-71 +-0x1.3b3a64p-43, 0x1.19f382p-21 +-0x1.a8212ap+123, 0x1.7bae1cp+87 +0x1.c750f8p-91, 0x1.30ef74p+81 +0x1.f6c2c2p-91, 0x1.2201f2p-109 +0x1.ca33cep-125, -0x1.97bb84p-27 +-0x1.d32aaap-21, 0x1.cadeecp+95 +0x1.93ce2cp+71, -0x1.83f13p+63 +0x1.481adep-117, -0x1.db71e4p-41 +0x1.33e14ep-85, -0x1.c81b7ap+29 +-0x1.ec18e2p+45, -0x1.7e5466p-115 +0x1.cdb63ep+31, 0x1.fd7ca6p-73 +-0x1.42db3ep+75, 0x1.a4dff4p-115 +0x1.a2717cp-99, 0x1.1c7738p-5 +0x1.d2d31ap-71, -0x1.c1e7a4p-45 +-0x1.e5567ap+75, 0x1.f4491p+47 +0x1.67797cp+77, -0x1.1765c8p+107 +-0x1.b56f7p-77, 0x1.0a4f1cp+15 +-0x1.ddd08p-93, 0x1.fa8c64p-115 +0x1.17233ep-3, 0x1.1e184p-31 +0x1.ed1e3ep+69, 0x1.d4537cp-127 +-0x1.74d8ep+115, -0x1.ea76c2p+77 +0x1.c01b0ap+69, -0x1.f0357cp-85 +-0x1.c93fa6p+91, -0x1.3b143cp+67 +-0x1.207008p+67, -0x1.940b52p-101 +0x1.3cab04p-85, 0x1.8d92f2p+15 +-0x1.bf92e6p+7, -0x1.088e98p-61 +-0x1.ffd83cp+37, -0x1.66afa8p+61 +-0x1.193c1p-105, -0x1.d68ef6p+13 +0x1.2190dp+59, -0x1.739642p-123 +-0x1.ccd4d4p-65, 0x1.cde8fcp-39 +0x1.4dc6b8p-111, 0x1.5fd7aep-59 +-0x1.178cf8p-51, -0x1.2ea798p+25 +-0x1.8a425p-129, -0x1.fe5ff2p+7 +0x1.5f9fdp+23, -0x1.692006p+117 +-0x1.18c246p-101, 0x1.c1df02p-125 +0x1.13aadcp+59, -0x1.bf3adp+117 +0x1.bd550ep+63, 0x1.85e3aep-59 +0x1.173c22p+87, 0x1.c85bcap+53 +0x1.0f97bcp-69, -0x1.bfc67p-121 +0x1.8083bep-31, -0x1.952954p-105 +-0x1.64211p-101, 0x1.b6d996p-77 +-0x1.b36608p+25, -0x1.1724c2p+57 +-0x1.66a052p-69, 0x1.bbe4c8p-121 +-0x1.533d1ap-67, 0x1.cebbaap+61 +-0x1.aec6a2p+3, -0x1.cdac1ap+119 +0x1.02a65p+1, 0x1.f033dp-93 +-0x1.35c59p-15, -0x1.d28adcp-115 +-0x1.dc584p+119, -0x1.04d12p+97 +0x1.d1af1p+33, 0x1.9797ap-47 +0x1.39bcf4p-43, 0x1.20fbp+63 +-0x1.1e097ap-103, 0x1.48cca4p-35 +0x1.04990cp-69, 0x1.95c012p-101 +0x1.321a94p-69, -0x1.7aebe8p-103 +0x1.f9b85ep+13, 0x1.3ed8a2p-21 +-0x1.4779c8p-97, -0x1.21c1ap-93 +0x1.dd15p-89, -0x1.12d19p+35 +0x1.fbc36p-57, 0x1.bcb044p-91 +-0x1.9c54f2p+61, 0x1.9b327ep-69 +0x1.589dbep-47, 0x1.653cc4p-35 +-0x1.66181p-109, 0x1.c2dc02p-125 +0x1.3969fp+105, -0x1.997302p+51 +-0x1.a635dep-7, -0x1.97a04ap-109 +0x1.15bf3cp+95, 0x1.b0aabcp-77 +0x1.e04466p-33, -0x1.f19c08p+119 +-0x1.c1d9d6p-21, -0x1.97d458p-73 +-0x1.755cfep+57, -0x1.aa0bd6p-105 +0x1.152f58p-128, 0x1.bf3f96p-25 +0x1.f777a4p-41, -0x1.d036ap-81 +-0x1.8c8454p+5, 0x1.96d57p-25 +0x1.0984c4p+109, 0x1.1667e4p-79 +-0x1.5a00b4p+57, 0x1.e1c622p+9 +-0x1.556f9ep-87, -0x1.982f9cp+87 +-0x1.681d8ep+117, -0x1.050dfep+49 +-0x1.f78944p-19, -0x1.117ff8p+35 +-0x1.81c334p+49, 0x1.28c88ep+19 +0x1.71ddf2p+55, 0x1.fc46ap+37 +-0x1.8b7bbp-57, -0x1.b14a0ap+47 +-0x1.4ed274p+21, -0x1.21e6eap+51 +-0x1.e296cep+101, 0x1.3c1252p+109 +0x1.0579b8p-71, -0x1.7acbfcp-121 +-0x1.74b06ep-85, -0x1.786962p-47 +-0x1.d0be4cp+21, -0x1.07058p+91 +0x1.f93136p-87, -0x1.a668e6p-63 +0x1.601a22p+41, 0x1.5e494p-111 +0x1.ce991p-81, 0x1.175b82p-39 +0x1.d5a112p-101, -0x1.1d4994p+113 +0x1.75ba68p+103, -0x1.cc2da4p-31 +0x1.08016p+3, -0x1.7bdd5p+105 +0x1.aaf7cep-45, 0x1.d52d2cp+55 +0x1.ab182ap-71, -0x1.0d7b0ap-23 +-0x1.a8259ep-41, 0x1.17cdaep-33 +0x1.2cd59cp+37, -0x1.86326ep+19 +-0x1.3284e8p+79, 0x1.7841f4p-65 +-0x1.056f38p-9, 0x1.cf50ccp+101 +0x1.4e0b02p+109, 0x1.73f5acp+63 +0x1.ed794p-51, 0x1.3ccc28p+115 +0x1.bb305ap+11, 0x1.8a2accp+61 +-0x1.c76cf2p+55, -0x1.24185cp+105 +-0x1.5825e2p-95, -0x1.7b334ep-59 +-0x1.0870c2p+65, 0x1.119b16p+115 +0x1.7bd208p-93, -0x1.1ee962p-25 +0x1.36cc8ep-57, 0x1.b3b4bcp-1 +0x1.54bc5ep-95, -0x1.ca7408p-49 +-0x1.c785b4p+33, 0x1.3ee46ap-85 +0x1.9a093ep+97, 0x1.b313f4p-17 +0x1.e2490ep-45, -0x1.d3b4f4p-3 +-0x1.117022p-125, -0x1.09b56p+19 +-0x1.2646f2p+77, 0x1.03daf6p-93 +-0x1.4e15a8p+55, -0x1.19cd9ep+63 +0x1.87d54ep+55, 0x1.1707dp-81 +-0x1.530f68p+45, -0x1.f65a18p-61 +0x1.d976a8p-101, -0x1.75fe4cp+85 +0x1.2da742p+123, 0x1.2cf722p+33 +-0x1.20ed2ap+43, 0x1.e2b14p+39 +0x1.d7c882p-119, 0x1.099654p+51 +0x1.45529cp-47, -0x1.41eb1ep+17 +0x1.e7ea3ap-27, 0x1.0c46fep-47 +0x1.b17efap+1, -0x1.a9e0d4p+125 +-0x1.4eb16cp-97, -0x1.d6c682p-75 +-0x1.d7d9cp-87, 0x1.1d453cp-103 +-0x1.cd905p+43, 0x1.0baa3ep+127 +-0x1.1f7dd2p-101, 0x1.522d96p+29 +0x1.0786fap-119, -0x1.013546p+17 +0x1.67f4dcp+49, 0x1.a49d4p+107 +-0x1.9e6568p+3, -0x1.e112ccp-115 +0x1.c5e73ep+113, -0x1.8ed2b2p+121 +-0x1.14dd8ap+53, 0x1.fc8136p+51 +0x1.4a05cp-61, -0x1.dc4874p-75 +0x1.f7356ep+111, 0x1.60014ap+13 +0x1.71bdf6p+41, 0x1.544ddap+33 +-0x1.032c3ap-53, 0x1.b72432p-61 +0x1.e25b44p-19, 0x1.0ea43cp+29 +0x1.418c5ap-121, -0x1.034ffcp-27 +-0x1.87294cp+15, 0x1.2a9fc2p+103 +0x1.7b0666p+69, -0x1.41570ep-47 +-0x1.4f89e6p+53, 0x1.d6cd3ap+107 +0x1.584532p-97, -0x1.2c93ecp-29 +-0x1.53fd5ep-41, 0x1.0b5788p+45 +0x1.fac676p-17, 0x1.0cac18p-13 +-0x1.f0eb58p-43, -0x1.07029p-49 +-0x1.a7c832p+109, 0x1.84987ap+83 +-0x1.8647dp-117, -0x1.52ef5cp-105 +0x1.ce399ap+55, -0x1.fd4e0ep-111 +0x1.55d266p-75, -0x1.bc1d7cp+61 +-0x1.a28654p-31, 0x1.a9c51p+99 +0x1.4a1ab8p+5, 0x1.0efa68p-23 +-0x1.3b4638p+19, 0x1.5dbb58p+57 +0x1.33fae6p-3, -0x1.e7d4f8p+75 +-0x1.7b482ap+109, 0x1.05bbc8p-105 +-0x1.cb961ap+65, -0x1.14130cp-19 +-0x1.4eec14p+15, -0x1.204db4p+47 +0x1.e17406p-125, -0x1.4e3086p-7 +-0x1.c50858p+121, -0x1.cabfaap+1 +-0x1.52cb0cp+125, -0x1.a7b09ap+69 +0x1.36075ep+119, 0x1.6892bap+21 +-0x1.1d7288p+81, -0x1.802e16p+119 +0x1.b0b4b4p+123, -0x1.0b0e4ep+17 +0x1.93dc68p-41, -0x1.e6794ap-93 +0x1.d74842p+103, 0x1.9d5654p+25 +-0x1.faf37ap-25, -0x1.3c6b2cp+41 +-0x1.9178e2p-121, -0x1.38c79p+71 +0x1.a6c92ep+93, 0x1.451e26p+49 +0x1.615abep+115, 0x1.11d95ap-113 +-0x1.1a464ep-19, -0x1.d4d388p+103 +-0x1.139ecap-11, 0x1.6f9988p+99 +0x1.b23abap+21, 0x1.9a2a76p+59 +0x1.0c9b7cp+97, -0x1.ac3c9ap-111 +0x1.fbb1dep-49, 0x1.a393bcp-95 +-0x1.db70cap-15, -0x1.77ba22p-67 +-0x1.127bcap+23, -0x1.265d4ep+51 +0x1.b10c8ap+125, -0x1.64283ap+91 +0x1.07778p+83, 0x1.9b2a12p-115 +-0x1.c8b63ep-81, -0x1.9260ccp-97 +-0x1.1a90ecp-61, 0x1.80e3ep-97 +-0x1.9ac0fep-19, -0x1.f1650ep-53 +0x1.25816p+77, -0x1.d71a68p+113 +0x1.2a7fdp-117, -0x1.b689c8p+23 +-0x1.5b6556p+65, -0x1.618b9ep+67 +-0x1.f1bb86p+51, 0x1.47443p-115 +-0x1.b7b824p-33, 0x1.dc3972p+119 +-0x1.7442ap-11, 0x1.75a524p+127 +-0x1.6ecbdcp-21, -0x1.e39962p-49 +-0x1.97ec52p+107, 0x1.50349cp+17 +-0x1.ec931ep+61, -0x1.5709a8p-105 +-0x1.d06e5ap-27, 0x1.e2e274p+21 +-0x1.ab724cp-39, 0x1.11f774p+51 +-0x1.12c154p-107, -0x1.0e0b94p-65 +-0x1.afb4dcp+37, -0x1.1a984ep-81 +-0x1.da4c16p+1, 0x1.6ff384p-105 +0x1.59f5aap+95, 0x1.b3f804p-21 +-0x1.cf49aep+69, 0x1.63246ep-57 +0x1.55dccep-95, -0x1.37434ep-97 +-0x1.f42e24p+31, -0x1.c08dcap-79 +0x1.fa56cep+85, 0x1.d1485ep+111 +-0x1.02db4cp-17, -0x1.f8298p+5 +0x1.88f4bep+55, 0x1.856c98p+113 +-0x1.588882p+83, -0x1.90014cp-127 +-0x1.bbdfb4p-51, 0x1.055378p-107 +0x1.b6d108p-31, -0x1.369af6p+119 +-0x1.81989cp-119, 0x1.adcec4p+127 +-0x1.3ede92p-125, 0x1.918a96p-91 +0x1.e2ed6cp-23, -0x1.0c2058p-113 +0x1.114da6p+37, 0x1.7647ap+101 +-0x1.82b366p-27, -0x1.1098ccp-75 +-0x1.8c5e84p-13, -0x1.44d514p+85 +0x1.8cb0d6p+113, -0x1.aa3aa4p-107 +-0x1.389ffap+9, -0x1.8e7c08p+109 +-0x1.621616p+13, 0x1.58b64ep+29 +-0x1.291d14p-101, 0x1.dacf74p-55 +0x1.343f14p-5, -0x1.93dda2p+43 +-0x1.4fbd74p+85, 0x1.de0278p+127 +-0x1.c84b3cp+49, 0x1.a32546p+53 +0x1.9fe3f6p+101, -0x1.5e0dp-73 +0x1.a3afecp-121, -0x1.33a39p+111 +0x1.ace3b4p+91, 0x1.259e7p-5 +-0x1.ddd3p-97, 0x1.ce1a84p+45 +-0x1.8e4464p-7, -0x1.9c72cap-107 +0x1.11ab9cp-65, -0x1.d39c4cp+99 +-0x1.8c938cp-9, -0x1.84d616p-113 +-0x1.66d698p+51, 0x1.bf77b2p+103 +-0x1.20fd9cp-61, -0x1.7a803ep+67 +0x1.c3f63cp+87, -0x1.648e4cp-73 +0x1.a288bap+47, -0x1.9b30ep+69 +0x1.1d4794p+29, -0x1.5f5402p-113 +-0x1.cbfa4cp-3, 0x1.07d076p+21 +-0x1.ab7c5ep-49, -0x1.98f856p+111 +-0x1.6c4c72p-77, -0x1.976118p+93 +0x1.7f5b8cp+55, 0x1.296fep+31 +0x1.4d0d7cp+15, -0x1.62c564p-33 +-0x1.2c6ea4p+123, 0x1.8c63e2p-59 +0x1.ba80fp+19, 0x1.e4bcc8p+41 +-0x1.6145eap+121, 0x1.387e7ep-99 +0x1.b5bfaep-89, 0x1.3bee24p-127 +0x1.e794e2p-1, -0x1.7d9fdap+125 +-0x1.447462p-123, 0x1.7ad05cp+23 +-0x1.a64f54p-113, -0x1.ba7aa8p-1 +-0x1.26ac88p-23, -0x1.6259d6p-79 +0x1.29126p-9, 0x1.dd1db2p-37 +0x1.f913e8p+37, -0x1.7b1816p-3 +-0x1.f42a28p+85, -0x1.73c352p-31 +-0x1.6b090ep-19, 0x1.fcbec8p-19 +0x1.a05944p+5, -0x1.71ab2cp+37 +0x1.89b4e4p-111, -0x1.0a243cp+19 +-0x1.a98a28p+43, -0x1.2c7d9cp+125 +0x1.cff6cp+11, -0x1.ba7e1cp+11 +-0x1.6a55ep+17, 0x1.6c998cp-17 +-0x1.62c776p-99, -0x1.3768e6p-83 +0x1.495488p-17, -0x1.ea9f72p-125 +-0x1.9a3e84p-97, 0x1.34cb9ap+53 +0x1.edcb1cp-21, 0x1.88cp-19 +-0x1.bb510ep+83, -0x1.3d185p+49 +-0x1.96e248p+29, -0x1.471e44p-127 +0x1.51f19ep-101, -0x1.173da4p-119 +-0x1.b8772ap-83, -0x1.a4ba34p+17 +-0x1.2da902p-121, -0x1.d3aa84p-41 +-0x1.9e0db2p-27, -0x1.95454ap+69 +0x1.b44664p+97, 0x1.dd2b58p-21 +-0x1.c7eb1cp-79, 0x1.ce6978p-65 +0x1.46fb8p-33, 0x1.1ad46ap+41 +0x1.58dcd2p-49, 0x1.f0a34ap+109 +0x1.7af9bep-45, -0x1.ce931ep-97 +0x1.55f97p-97, 0x1.bd903cp-41 +0x1.58d332p+79, -0x1.b8916cp+51 +0x1.a68326p+113, 0x1.8136fap+37 +0x1.9edb84p+99, -0x1.a8f788p+63 +-0x1.64b696p+83, 0x1.da429cp+45 +0x1.6c0a06p-7, -0x1.5d50b2p+91 +-0x1.8e56bcp-103, -0x1.0e44dap+15 +0x1.59a906p+73, 0x1.78d4d6p+83 +0x1.b80fa2p+47, 0x1.2cff76p+71 +-0x1.03978ep-37, 0x1.07ae9ap+115 +0x1.75e992p+99, -0x1.b73b7p-127 +0x1.fc088ep-65, 0x1.e76328p+63 +-0x1.474a2ep-67, 0x1.312d9ep-79 +-0x1.4d6696p+97, -0x1.3a1ef8p+101 +0x1.4be1aep+15, 0x1.71d37p+77 +0x1.95871p-63, 0x1.b7db36p-99 +-0x1.884df8p+77, -0x1.5a3274p-123 +-0x1.f29684p-125, -0x1.a2a2a2p+33 +0x1.05a6b8p-89, -0x1.6aa302p+103 +-0x1.b45d8ap+101, -0x1.92353cp+1 +-0x1.6e44dp-97, -0x1.b4a108p+57 +-0x1.a85398p-121, 0x1.15d378p+103 +0x1.cc4f62p+125, -0x1.55e58p-132 +-0x1.182f92p+69, 0x1.fd4d16p-79 +-0x1.417dbep-67, 0x1.a5dddp-103 +0x1.96040ep+49, 0x1.52864ep+69 +-0x1.286cbap+117, -0x1.aa16cep+1 +0x1.53d6aap+67, -0x1.dde9e6p+95 +-0x1.4b9914p-125, -0x1.f088ecp+89 +0x1.99f90cp+55, -0x1.1d261cp+119 +0x1.e3917p-91, 0x1.3ab736p+23 +0x1.f8aa64p-125, -0x1.22987p-17 +-0x1.ddddbcp+119, -0x1.4263f6p-65 +0x1.ba65dp+13, 0x1.00013p-77 +-0x1.d9d524p+37, -0x1.4303eap-35 +0x1.ded8c8p+15, -0x1.fb3f36p+99 +-0x1.24d3b4p+91, 0x1.fc2396p-105 +-0x1.c9c8f8p+7, -0x1.6fb67ep+21 +0x1.9da584p-27, 0x1.732e62p+73 +0x1.25be08p+37, 0x1.ca14d2p-3 +0x1.d5313p-49, -0x1.fed8bep-43 +0x1.2837a4p-101, -0x1.35fbbp-97 +0x1.76c682p+91, 0x1.16a0dep-75 +0x1.cf0af8p+81, -0x1.109184p+115 +-0x1.c2530cp-1, -0x1.501a3ap-3 +-0x1.622172p-61, -0x1.a59ae8p+39 +-0x1.fd7e7cp-95, -0x1.cdc5fap+91 +0x1.052b02p+81, 0x1.c05d96p-105 +-0x1.50409cp-41, 0x1.dd8c6ep+79 +-0x1.e340cp+99, 0x1.9e6d68p+35 +0x1.a5a324p+3, 0x1.81988ep-115 +0x1.78e2c2p+121, -0x1.70d938p+75 +-0x1.facc84p-109, 0x1.3a729ap-35 +-0x1.7c5ad8p-7, -0x1.08416ap+99 +0x1.0c44e4p-37, 0x1.21a94p+23 +0x1.f47bcp+25, -0x1.9f9eb8p+111 +0x1.a78abep+41, 0x1.7218p+105 +0x1.975cfp-103, -0x1.b544b2p-95 +0x1.52644ep-47, -0x1.af93a4p+105 +0x1.da63f2p+75, 0x1.19eae4p+63 +0x1.ab1e98p-111, -0x1.8037dep-27 +-0x1.0893fp+119, 0x1.7dd9b6p-45 +0x1.264e1ep+67, 0x1.ce5aap+97 +0x1.8ebf62p-53, 0x1.2bcde4p+53 +-0x1.40155ep-11, 0x1.e9a48ap+103 +0x1.03ace6p+99, -0x1.512956p+39 +0x1.84dcc2p+113, -0x1.f3aa5ep-121 +0x1.a8889ep+81, -0x1.b995cp-125 +0x1.38009ap+1, 0x1.7c59b8p+97 +-0x1.b9794p+11, 0x1.4bb492p+95 +0x1.4f7a76p-61, 0x1.731636p+39 +0x1.b66abap-33, 0x1.df8912p+17 +-0x1.b7d05cp-17, -0x1.bec0f2p+105 +0x1.f7c87cp+59, -0x1.fcb0f4p-19 +0x1.8f7ae2p-75, 0x1.1b1044p-69 +0x1.cbcee8p-21, 0x1.75ef96p+99 +0x1.1646fp-93, -0x1.414296p-109 +0x1.eb9b66p+79, 0x1.f9ea38p-65 +0x1.f49076p+125, -0x1.8dab26p+105 +0x1.41ee7cp+111, 0x1.fef55ep+113 +0x1.1fab94p+5, 0x1.447bb8p+57 +-0x1.52cb48p+77, -0x1.69d216p+55 +-0x1.0e5cb2p-121, -0x1.9ea1f6p-109 +-0x1.f08432p-107, 0x1.3df8d8p-79 +-0x1.41001cp-53, 0x1.31936ep-83 +-0x1.cca2c4p-79, -0x1.8c32c6p-115 +0x1.49101p+117, -0x1.5d9558p-67 +-0x1.669d38p-1, 0x1.24c8a8p+123 +-0x1.d7e162p+65, -0x1.6d44p+51 +-0x1.10bdc6p+81, -0x1.107aa2p-17 +-0x1.60773ap+125, -0x1.895e88p-61 +-0x1.804694p+111, -0x1.e71dd6p-81 +0x1.46f6cap+41, 0x1.f28ff6p-59 +0x1.ac97b4p+35, -0x1.a88b7cp-89 +0x1.4dafa6p-121, 0x1.332728p-45 +0x1.a3f4cp-119, -0x1.b38fe6p-45 +-0x1.8ea278p-67, 0x1.529cc6p-113 +0x1.d68898p-115, -0x1.2b76d6p+119 +0x1.0a8c26p-79, -0x1.1f395cp+75 +0x1.278146p-25, -0x1.eda13p-71 +0x1.f675aep+11, 0x1.36e01ap-125 +-0x1.c0b868p-127, -0x1.6bd0e6p-93 +-0x1.f9d568p+19, 0x1.916762p+59 +-0x1.4a156ap-15, -0x1.d48cfp-77 +0x1.3ece54p-1, 0x1.d23a1ep-107 +-0x1.e1c66ep-31, 0x1.a974a6p+33 +0x1.69255ap-11, 0x1.ceddaep+91 +-0x1.e8e00ep+9, 0x1.1303ep+3 +0x1.d8750cp-69, 0x1.749ae4p+95 +0x1.f9695p+7, 0x1.4f7c7ap+17 +-0x1.e497c6p-119, 0x1.63911p+49 +-0x1.40f398p-29, 0x1.cceb62p-21 +0x1.ff45fap-119, 0x1.cf243ep+67 +-0x1.43b94ap+19, -0x1.853738p-5 +0x1.dacb1ap-85, 0x1.618b02p+19 +0x1.7bca08p-33, 0x1.119a1p+69 +0x1.3d6556p+37, -0x1.9a26b6p+73 +-0x1.bda44cp+49, 0x1.dff0ap+57 +-0x1.79251p-109, -0x1.df0798p-109 +-0x1.bb3162p+1, 0x1.a4545ep-49 +0x1.6975f2p-9, 0x1.f5d67p-5 +0x1.c8e30ap+99, 0x1.e341bep-19 +-0x1.b9452p+71, 0x1.857e08p+61 +0x1.13cff6p-43, -0x1.370f6ap-37 +0x1.a5ceap+81, 0x1.e25932p-35 +-0x1.65a9eap-97, -0x1.e99p-33 +-0x1.677e16p+79, -0x1.cec76ep+69 +-0x1.59790cp-29, -0x1.d09608p-65 +-0x1.7e2c7ep+79, -0x1.24b45cp+67 +-0x1.2d1a8ep+21, -0x1.0235aep+57 +-0x1.c693fp-69, 0x1.17651p-83 +-0x1.db6356p+105, 0x1.b5111p+11 +-0x1.4c17bep+41, 0x1.e50ba6p-83 +-0x1.2c8caap+43, -0x1.af6288p+33 +0x1.0cf9aap-37, 0x1.2b96ccp+29 +0x1.cc0c36p-43, 0x1.f8aecep+85 +0x1.43357ap-79, 0x1.a39c1p+53 +-0x1.885af8p-59, -0x1.174f4ap+9 +-0x1.3f907cp-29, 0x1.6eefd8p-35 +-0x1.163b3p-95, -0x1.aab788p+89 +-0x1.efe05cp-43, 0x1.03e2a4p+5 +-0x1.378f9cp-93, -0x1.3abd18p+91 +0x1.04f762p+33, 0x1.19a152p-91 +-0x1.d4aeeep-111, -0x1.9abd2p+31 +0x1.c710fep-71, 0x1.80c6d6p+45 +0x1.d74a16p-111, 0x1.780118p+121 +-0x1.4c9806p+47, 0x1.21ae0cp-59 +0x1.da2826p+57, 0x1.fa51d4p-95 +0x1.c4c11ep-47, -0x1.ca7f62p-85 +-0x1.7433f4p+33, -0x1.e4a76cp-61 +0x1.72e95cp-77, 0x1.d5b466p+57 +-0x1.39ef7ep+63, 0x1.5cd13ep-95 +0x1.b0d9a6p+91, 0x1.83bb94p+107 +-0x1.d1d226p+113, 0x1.3f131p+67 +0x1.956998p+41, 0x1.a4919p-85 +0x1.0f4a6ep+127, 0x1.5a4b78p+103 +-0x1.732994p-7, 0x1.e6526p+11 +-0x1.db0038p-17, -0x1.fe34b8p-35 +0x1.b24ec4p+5, -0x1.b2b2cp-117 +0x1.1cec56p+113, -0x1.e59ab2p-43 +-0x1.cd894p-91, -0x1.1df7d4p-89 +0x1.a70f02p+11, 0x1.72ee9cp+41 +-0x1.b79d84p+17, 0x1.1324dcp+87 +0x1.8f2c34p-23, 0x1.1b1f9cp-29 +0x1.b37ecap-89, 0x1.bf4cfap+15 +0x1.ebadcap+121, -0x1.5cb82cp-53 +-0x1.784b1ap+9, -0x1.f4ff2ap-51 +-0x1.ff8126p-13, -0x1.789108p-55 +-0x1.7aff56p+23, -0x1.5b8d1ep+15 +0x1.2f8be6p+109, 0x1.4c4284p+115 +0x1.508b94p+101, 0x1.30a78p-11 +0x1.001e9ep-23, -0x1.da111ep-21 +0x1.dfdf02p+73, 0x1.ec4538p+39 +-0x1.83cb52p-31, -0x1.5e784ap-115 +0x1.2f85eap+23, -0x1.a708f8p-87 +0x1.46fc1cp-49, 0x1.cdfc56p-87 +0x1.8fe0e6p-3, -0x1.8db9fcp+57 +-0x1.f80dp-115, 0x1.6494f4p-13 +-0x1.7cffe4p+23, -0x1.995b46p-81 +-0x1.06730ap+43, -0x1.d7b764p+55 +-0x1.556484p-111, -0x1.858cecp-23 +0x1.a3c536p+111, -0x1.ade8e4p+97 +-0x1.556a14p+61, -0x1.4525a8p+77 +0x1.092f68p+57, -0x1.0a758cp+7 +0x1.2308b4p-15, 0x1.9ad1b8p+127 +0x1.37fe7p-27, -0x1.61d1dp+59 +-0x1.417114p+105, -0x1.6e88cp-87 +-0x1.a255dcp-103, 0x1.aaa368p-95 +0x1.f54928p+81, 0x1.a0dc82p-85 +0x1.f14a8ap-71, -0x1.47712ep-83 +-0x1.a078p+107, 0x1.548e5cp-105 +0x1.905b12p+55, 0x1.39fd52p+31 +0x1.62de8p+53, -0x1.91ad06p+15 +-0x1.31d756p+55, -0x1.bfb3fap+45 +0x1.6489a2p-31, -0x1.449558p+15 +-0x1.84348ep+29, 0x1.bbb018p-75 +-0x1.d7b856p-5, 0x1.39947ep+31 +-0x1.a6de0ap+19, -0x1.5ffd76p-123 +-0x1.f6a908p-7, -0x1.73c1e6p+115 +0x1.b4acd4p-83, 0x1.30f88ep-115 +-0x1.89e074p-109, 0x1.515b76p+77 +-0x1.ed59c8p+51, 0x1.35375p-7 +-0x1.8cf928p-83, 0x1.0075eap-113 +-0x1.5fa8dcp+107, 0x1.5bbc32p+51 +0x1.71c338p-29, 0x1.9f90bap-59 +0x1.05a45cp+91, -0x1.c0e9c4p-127 +-0x1.2a6ed6p+15, -0x1.237f46p+9 +0x1.1625a4p+93, 0x1.2bf54p-113 +-0x1.e7d0eep-77, 0x1.1b3834p-33 +0x1.a7098p-77, -0x1.404ea8p-101 +0x1.ca3028p-99, -0x1.150312p+101 +-0x1.bf2f14p+73, -0x1.e25b66p-11 +0x1.8fc53p+61, 0x1.817f2cp+63 +0x1.59ec72p+85, -0x1.a4e64cp+75 +-0x1.042a06p-83, 0x1.bf1decp+97 +0x1.41c616p+107, 0x1.0f41f2p+109 +0x1.369708p-45, 0x1.c2e258p+85 +-0x1.6f100ap-3, -0x1.f7fcc4p-123 +-0x1.85a6e6p-35, 0x1.3520c2p+123 +-0x1.903fe4p-81, -0x1.f96bd8p-103 +-0x1.8b67a2p+113, 0x1.a7662cp-75 +0x1.108868p+77, -0x1.fce106p+59 +-0x1.a0a34ap+17, 0x1.e916cep-79 +-0x1.4479f6p-107, -0x1.6abc6cp-127 +-0x1.d32226p+45, 0x1.f6fd58p-55 +-0x1.1bede2p+107, -0x1.6ae71p-103 +-0x1.c56ac2p+123, -0x1.2d2fb4p+45 +0x1.8a3798p+41, 0x1.72cf3cp+3 +0x1.d5d736p+19, 0x1.d11aa4p+101 +0x1.28a0c2p-117, 0x1.4e492ep+47 +0x1.569b88p-127, -0x1.31925cp+7 +-0x1.7b0528p+61, -0x1.55b908p-23 +0x1.7e78a6p-13, -0x1.ac6a34p-27 +0x1.a38468p+89, -0x1.89bd2ap-83 +-0x1.b48f4cp-25, -0x1.8d150ep+89 +-0x1.6a4652p+67, -0x1.9baf46p+43 +0x1.4917d6p-33, -0x1.af0164p+39 +0x1.051528p-89, 0x1.dbfbb6p+101 +0x1.cc9a74p+81, -0x1.06410ap-25 +0x1.2386ccp+1, 0x1.79aa68p+45 +-0x1.2f085ap+31, -0x1.3b23aep+75 +0x1.a8fba4p-75, 0x1.d10b2cp-115 +0x1.61b196p+1, 0x1.7f596ep+67 +0x1.22eb8ap+35, 0x1.5cf9f6p-19 +-0x1.98e53cp-13, -0x1.b775aep+85 +0x1.3b0b86p-115, 0x1.d01da6p+73 +-0x1.02a8fep+11, 0x1.a65ec6p-37 +0x1.1174ep-91, -0x1.30ce22p+63 +-0x1.e8f3acp+17, -0x1.95fa36p-5 +0x1.d5f9dcp-101, 0x1.7632bcp-1 +-0x1.8f0ddep+103, -0x1.6acd4ep+53 +-0x1.93d702p-3, 0x1.af129ep+29 +0x1.e69a86p-83, 0x1.c12676p+121 +0x1.8b4354p+39, 0x1.323796p-15 +-0x1.7cb89cp+3, -0x1.39bde4p-91 +-0x1.85b08ep-71, 0x1.b7258p+75 +0x1.faf7c8p+29, -0x1.b9b7e6p-13 +0x1.aa2672p+59, -0x1.ea361ep+89 +-0x1.23fd1cp+83, -0x1.867982p+37 +-0x1.4fcf5ap-69, -0x1.406216p+17 +0x1.f4bdd6p-41, 0x1.74eb8p-123 +0x1.4a2138p-41, -0x1.2821b6p-75 +-0x1.f519b4p-87, -0x1.b6b50ep+97 +0x1.ce28e2p+121, -0x1.7cb6eap-49 +-0x1.2a4c98p+125, 0x1.72cfb4p-117 +0x1.00d212p+29, 0x1.1218b2p-35 +0x1.4eea78p-39, 0x1.40ed4ap+91 +0x1.ca52fcp+105, 0x1.99308ap-51 +-0x1.6e753p-17, 0x1.795edap+97 +0x1.6f4bf4p+87, 0x1.da0576p-45 +0x1.dd95e8p+63, -0x1.c01f4ap-105 +0x1.48393p-29, -0x1.4b646p-9 +-0x1.20b24ap+115, 0x1.b6c31ep-79 +-0x1.bf9442p+59, -0x1.e54f92p+103 +0x1.ef131ap-57, -0x1.eef68ap+97 +0x1.f5772p+123, 0x1.9ac2dap-95 +-0x1.7ad1c8p-5, 0x1.f5a0c6p-29 +0x1.453de4p-29, -0x1.c3f9dcp+79 +0x1.95bb26p-49, 0x1.d615fep+81 +0x1.7a3052p-69, -0x1.88392p+85 +0x1.74f878p+45, 0x1.0d4c08p-77 +0x1.b4d184p-35, -0x1.0a613ep+59 +-0x1.1347d8p+97, 0x1.72c754p+57 +-0x1.902858p-41, -0x1.3a5b96p-27 +-0x1.8a5774p+99, -0x1.c09be8p+77 +-0x1.46e594p+73, 0x1.cbb668p+67 +-0x1.a0fce4p-27, -0x1.8c288cp-125 +0x1.152d4p-35, 0x1.6b00bep-105 +-0x1.5344f4p+111, -0x1.3505bap-105 +0x1.4444e8p+9, -0x1.0b7abcp+115 +0x1.f47f92p+111, -0x1.c955e2p+97 +0x1.8913f6p-123, -0x1.185d6cp+49 +0x1.dc1f12p-21, 0x1.53771ap-23 +-0x1.502dd2p+39, 0x1.b6d9dap-121 +-0x1.7900cap-39, -0x1.06bc36p+13 +0x1.81b5a2p-61, -0x1.aad6ep-77 +0x1.6b8c34p-97, -0x1.65a68p-17 +0x1.f56598p+25, 0x1.7b9886p+107 +-0x1.66fc52p+49, 0x1.7c2b54p+85 +-0x1.d865fcp+103, 0x1.ae157ap+3 +-0x1.869a84p-115, 0x1.df88aep+121 +-0x1.204d96p+105, -0x1.98615ap-3 +0x1.99c632p+83, -0x1.356ff2p-3 +-0x1.942766p+21, -0x1.c9c3dap-59 +-0x1.8f4cbap-25, -0x1.1ac256p+91 +0x1.2e3818p+71, 0x1.c46da6p-113 +-0x1.d49f5p-15, 0x1.6b14aep+95 +0x1.cb54a2p+15, 0x1.7eff3ap-79 +0x1.6121fap+7, -0x1.678eccp+31 +0x1.60e6b6p+41, -0x1.03e69cp-43 +0x1.c0ffd6p-121, 0x1.1bf6cap-35 +-0x1.4761cp-17, -0x1.8b110ep+53 +-0x1.22cf08p+83, -0x1.f44ae8p+73 +-0x1.72da22p-101, 0x1.ba090ap+37 +0x1.8d9544p+71, -0x1.fc81bcp+103 +0x1.a3d01ap+35, -0x1.d9a1ecp-27 +0x1.7b045ap+105, 0x1.4284fap+67 +0x1.602dfep+35, 0x1.975a5p-3 +-0x1.63f9f4p-83, 0x1.8680fep+113 +-0x1.449876p-49, 0x1.cbdb7p-23 +-0x1.23ed8ap+61, -0x1.598c22p+3 +-0x1.be1436p-93, 0x1.8daecep-107 +0x1.72ef3ap+13, 0x1.673e5p+73 +-0x1.cfbb2ap-17, -0x1.6b4816p-49 +-0x1.fb09e6p-57, -0x1.d8c9cp+5 +0x1.17414ap-77, -0x1.e92a6cp-11 +0x1.7920aep+105, 0x1.76d182p+111 +-0x1.a13e56p+113, -0x1.406fep+11 +-0x1.e50abp-33, -0x1.7b1848p-105 +-0x1.1f51f6p-17, 0x1.041c08p+117 +-0x1.6a11c6p-45, -0x1.83026p-87 +0x1.666086p-97, 0x1.8cbd5p-79 +-0x1.aa3498p+13, -0x1.402e66p-49 +-0x1.e2fad8p+37, 0x1.d34ab6p+33 +-0x1.418994p+27, 0x1.c51a9p-65 +0x1.5c8fc8p-27, -0x1.94c6b2p-67 +0x1.f1e8f2p+7, 0x1.a3b4acp-109 +-0x1.1acfdp-121, -0x1.ce6602p-113 +0x1.3f5ca6p-55, 0x1.adc242p+3 +0x1.2458e6p+53, -0x1.0fa1p-131 +-0x1.c388ap+105, -0x1.b6c36p-71 +-0x1.6093dap+61, -0x1.376b5p+21 +0x1.29257p-31, -0x1.aee0f6p+93 +-0x1.272ecep+105, -0x1.6dafd2p-107 +0x1.f43e0cp-5, 0x1.6cd27cp-43 +0x1.8042a4p-55, -0x1.6da866p-41 +-0x1.7159fp-123, 0x1.df4f3ap+107 +-0x1.4f362ap-39, 0x1.2674dap-93 +0x1.1f13eep+1, 0x1.5ece9ep-47 +0x1.4d3446p+89, 0x1.23b582p-111 +0x1.58c272p+105, -0x1.64741cp-23 +-0x1.4fe306p-49, -0x1.835d2p-7 +0x1.5938f6p-109, 0x1.061fdcp+49 +-0x1.b11c38p+19, -0x1.0d83fp-79 +-0x1.566824p-107, 0x1.edb3a2p-123 +0x1.ebfbc6p-109, 0x1.a2a774p-75 +-0x1.100f22p-117, 0x1.8d3e8ep+9 +0x1.af1b94p+93, 0x1.fce9b2p-69 +-0x1.8ea8dap+31, 0x1.9dc148p-105 +0x1.8bab62p-85, -0x1.29cc3cp+39 +-0x1.c8cd4cp+9, 0x1.5c72aep-105 +0x1.e93a32p+77, -0x1.5ab5cp-97 +-0x1.44406cp-35, -0x1.e5bb92p-35 +-0x1.c1d34p-111, -0x1.27795ep-59 +-0x1.4d308ep+77, -0x1.14561p+115 +0x1.4b6ce2p+79, 0x1.ba72d4p-65 +-0x1.ef5848p-39, -0x1.20068p+65 +-0x1.71d6bap-117, -0x1.b17c14p-81 +0x1.c36762p-41, -0x1.d62752p+3 +-0x1.d31984p-7, 0x1.475858p+13 +-0x1.f331d4p-67, 0x1.d93012p-95 +-0x1.99ef64p+71, 0x1.e4b4ap+85 +-0x1.2fe67ap-13, -0x1.708084p-77 +-0x1.37830ap-27, -0x1.321c9ap+75 +0x1.87940cp+31, -0x1.05f03ep-43 +0x1.0d57c4p+3, 0x1.ecd0bap-119 +-0x1.0213cep-33, -0x1.2b1644p-91 +0x1.b4a67p-77, 0x1.678712p-39 +0x1.b5f7d6p-61, -0x1.cfc79ap+23 +-0x1.3e56dep+75, -0x1.3ac524p+73 +-0x1.9ed65ep+1, 0x1.464796p-125 +-0x1.c1e02ep-123, 0x1.13db4ep+41 +0x1.ce3fb8p+53, -0x1.9490acp-31 +0x1.c778c2p-95, 0x1.05edeep-31 +0x1.b38b74p-11, 0x1.65c87ep-71 +-0x1.bd1d3cp-103, 0x1.5b1652p-125 +0x1.6328ccp+53, 0x1.a60028p-33 +-0x1.9fd63cp-57, 0x1.e46198p+67 +0x1.83f1aep+43, 0x1.d2a79p-123 +-0x1.fe615p-17, 0x1.9fcc74p-53 +-0x1.d1bf5ep-121, -0x1.815becp+65 +0x1.a5ee1p-101, 0x1.7985f2p-89 +-0x1.2ea18cp-111, -0x1.89e4fap-3 +0x1.bd543p-109, 0x1.17feb6p+79 +-0x1.6521ap+115, -0x1.5c66cap-47 +-0x1.1fe92ap+89, 0x1.23c9fep+87 +-0x1.6e6c22p-17, 0x1.eb8bd4p-75 +0x1.e27734p+17, 0x1.8ce362p+65 +-0x1.0a721ep-121, -0x1.2f2828p+61 +0x1.04d5fp+21, -0x1.012dfcp+111 +0x1.3369cap+127, 0x1.0c9d7p-91 +0x1.790e34p-79, 0x1.4346d6p+27 +-0x1.d18cbcp+85, 0x1.712288p-33 +-0x1.b93b3ap-99, -0x1.a7075cp-89 +0x1.09abfcp+85, 0x1.dce29cp+17 +-0x1.eabefep-7, -0x1.941f08p-103 +0x1.f3dee6p+13, 0x1.fc996ep+35 +0x1.f4e5fep-29, 0x1.db6f58p+57 +0x1.0a0dfep+59, -0x1.10773ap+27 +0x1.60f24ep+71, -0x1.61094p+9 +0x1.e2910ep-81, 0x1.ef33c4p+33 +0x1.04d916p+75, -0x1.7ba58ep-29 +0x1.e3f162p+15, 0x1.a82c06p+95 +-0x1.8a1fd6p+27, 0x1.a3416ap-25 +0x1.b52486p-15, -0x1.b90882p+109 +0x1.2866fep+15, -0x1.0ed1bap-13 +-0x1.900a3cp-115, -0x1.560702p+109 +-0x1.c085c2p+77, -0x1.9241aap+77 +-0x1.af9834p-81, 0x1.df2384p+113 +0x1.e76b4ap+105, -0x1.d879a8p-39 +0x1.d4afd2p+83, -0x1.3c1326p+43 +-0x1.badafp+71, -0x1.32ede4p+33 +0x1.b0c35ep+71, 0x1.4713f8p+59 +-0x1.483cbep+97, -0x1.ebdc86p-35 +0x1.3ca30ep+43, -0x1.0b17f8p-23 +-0x1.daf4aep+101, -0x1.75bbfep-23 +0x1.4a974p-129, 0x1.970dccp-31 +-0x1.8e530ap+43, -0x1.d347aep-83 +0x1.d7a9bcp+19, 0x1.8ca676p-103 +-0x1.b29a1ep+79, 0x1.506d6cp+111 +-0x1.35106ap-71, -0x1.f1121ap+1 +-0x1.f3a346p+125, -0x1.33c34ep+123 +0x1.9ffacap-79, -0x1.dd3e06p+31 +-0x1.231e7p+11, 0x1.44fe6p-33 +-0x1.f5ddd6p+11, -0x1.561922p+43 +-0x1.37f04p+95, 0x1.c1976ep+69 +-0x1.f1863ep-73, -0x1.df437ep+5 +0x1.2ef32ap-5, -0x1.256c1ap+115 +0x1.d4f998p-65, -0x1.76929p+113 +-0x1.08b9b2p+15, -0x1.f365a6p+3 +-0x1.5bdf8ep-125, -0x1.5dbfd4p+81 +0x1.0f3836p+45, 0x1.29aff2p-47 +-0x1.4e7f2cp+125, 0x1.cfe3f6p+27 +0x1.9033d6p+39, -0x1.e2115p-95 +-0x1.032ed4p+49, -0x1.94b94cp-111 +-0x1.352ec4p+117, 0x1.917fap-71 +-0x1.1c252p-43, 0x1.cb9bf6p-121 +0x1.9dc1dap-53, -0x1.bd2de2p+21 +-0x1.657a4p-107, -0x1.c14c22p-19 +-0x1.de162ep+117, 0x1.bf60f8p-87 +-0x1.c9fe4ap-101, 0x1.6f7338p+81 +0x1.defa7cp+43, -0x1.e7b40ap+83 +-0x1.964ae6p+61, 0x1.ac578cp-93 +-0x1.f971eep+21, 0x1.f83814p+45 +0x1.f3aafep-51, -0x1.80fba4p-53 +0x1.2f1188p-107, -0x1.dca372p-29 +0x1.58757ep+87, -0x1.e7643ap-93 +0x1.f491p-69, -0x1.fd7ebap-67 +0x1.3534d2p+69, -0x1.120c8ep-119 +0x1.12fcb4p-13, -0x1.e93c22p-61 +0x1.15662ap-111, 0x1.094fc4p+53 +0x1.0bbdf2p+127, -0x1.0d556p+5 +0x1.4829e8p+49, -0x1.963766p+125 +0x1.81de1p-5, -0x1.9b3b5ap-59 +-0x1.4856aep-69, 0x1.d281p+19 +0x1.f3a778p-89, 0x1.893f86p+107 +-0x1.b6bf1ep+81, 0x1.6515c8p-33 +-0x1.62d04p-79, 0x1.1d9148p-95 +-0x1.92aeeep-39, 0x1.c70a94p-13 +0x1.46af7p-79, 0x1.18c2d4p+69 +0x1.b51e6p-35, 0x1.985aep+57 +0x1.9b2884p-15, -0x1.ca315ep+89 +0x1.28094p-37, 0x1.8a6cf2p-17 +0x1.f2ee5cp-29, 0x1.ebccdp+5 +-0x1.ac937cp+115, -0x1.5af87cp+31 +0x1.722b94p-123, -0x1.f3d534p-125 +0x1.6a648ep+91, 0x1.c62fb8p+103 +-0x1.c554ecp-83, 0x1.24310cp-45 +-0x1.1c6082p-115, 0x1.30656p-47 +-0x1.f65e24p+49, 0x1.858c5cp+19 +-0x1.a5324ap+81, 0x1.4d296p-93 +-0x1.c1d6c4p-9, 0x1.a4c4c6p-117 +0x1.c254eep+7, -0x1.85958ap+119 +-0x1.1bcbf6p-9, -0x1.5561bcp+73 +0x1.641de6p-21, -0x1.382bf4p+13 +-0x1.3f47eep-71, -0x1.0df502p+17 +-0x1.590604p-95, 0x1.8937d2p-93 +-0x1.8abfbap-15, -0x1.7c186ep+21 +-0x1.9a413ep-31, 0x1.224c28p-119 +-0x1.b2bc96p-97, 0x1.b59c58p-11 +0x1.8e221p+83, -0x1.80a652p+81 +0x1.f518e4p+117, -0x1.25995ep+75 +0x1.20695ep+59, 0x1.eb49bep+121 +0x1.e3f242p+61, 0x1.143006p-53 +0x1.124e78p-63, -0x1.0da3f6p+41 +0x1.6826e2p-27, -0x1.deb7p-17 +-0x1.4de7f6p-11, -0x1.789f5p-25 +-0x1.a2c5b8p-41, 0x1.75a1ep-1 +-0x1.c47a1p+79, -0x1.931ac6p+77 +0x1.04047ep+5, -0x1.a9a5bp+79 +0x1.e64c68p-57, 0x1.69777ap+97 +-0x1.9e4d9ap-115, -0x1.71d8dp+59 +-0x1.184612p-117, -0x1.11842ap-109 +-0x1.c7e90ep-47, 0x1.652c38p-95 +-0x1.c8eb98p+81, 0x1.81445cp+61 +0x1.824782p+7, -0x1.76564p+25 +0x1.59d554p-73, 0x1.55b028p-13 +0x1.cc07dap-115, 0x1.e77516p-59 +-0x1.e78ca2p+107, 0x1.dfb3bp+51 +-0x1.102296p+41, -0x1.287cbcp-119 +0x1.6c016ep+13, -0x1.04513cp+43 +0x1.c210f8p-19, -0x1.3ecbfep-67 +-0x1.bf407ep+87, -0x1.04050ap+49 +-0x1.8d1c7ap+79, 0x1.727708p+7 +0x1.ca3058p-95, 0x1.add62ep+121 +0x1.220162p-51, -0x1.9830f2p+71 +-0x1.0563ecp-103, 0x1.3ee13cp-105 +-0x1.3522e2p+9, 0x1.10ffc8p+53 +0x1.8fbc92p+17, 0x1.b0d97cp-81 +-0x1.fb808ep-75, -0x1.8c68d8p-115 +0x1.b46728p+33, 0x1.025168p+127 +-0x1.7fcdc2p-87, 0x1.583c3ep+115 +0x1.3c3e9ep+49, -0x1.740244p+67 +0x1.f1a56ap-69, 0x1.5a34aep+15 +0x1.e28902p-101, 0x1.7ce36cp-89 +-0x1.7ffb88p+105, 0x1.a60e8cp-43 +0x1.d250c8p-127, -0x1.10f99cp-75 +-0x1.cfab7cp+119, -0x1.db9d4cp+83 +0x1.185b1ap-35, -0x1.ca048p+7 +-0x1.da6032p+73, 0x1.df716cp-1 +0x1.88c95ap+1, 0x1.fa5506p+5 +-0x1.0d327ep-113, -0x1.ce01b2p+41 +0x1.ab6032p-55, 0x1.2eb6e4p+107 +-0x1.62c7bcp-37, -0x1.03f2e6p+9 +0x1.c88eaap-113, -0x1.e0db88p+43 +-0x1.cdb8ep-107, 0x1.9474b6p-69 +-0x1.d564e4p-87, 0x1.c7105ap+19 +-0x1.dfebe8p-35, 0x1.6c32fp+41 +0x1.0d0e82p-19, -0x1.de610cp-39 +0x1.af637ap+43, -0x1.8b5f6ep-7 +-0x1.fb3944p+13, -0x1.87b74cp+49 +-0x1.75c644p+59, 0x1.95bbc6p-81 +-0x1.cf341p-39, -0x1.85e31cp+15 +0x1.acc342p-93, 0x1.545fdap+85 +-0x1.5296e2p+25, -0x1.84f9eap+113 +-0x1.fc305p+107, 0x1.d22fd4p-43 +-0x1.d1401p+59, 0x1.d5e566p+31 +-0x1.8b35a4p-31, -0x1.6ee6d8p-97 +-0x1.a3110ep-117, -0x1.178354p-119 +0x1.31dc1ep-59, -0x1.2006a8p-59 +0x1.c76718p-25, 0x1.43003p+39 +0x1.78c26ep-11, 0x1.ed928ap-51 +0x1.7c326cp-55, -0x1.b47e52p+61 +0x1.abc998p+51, 0x1.2f5b4cp+13 +0x1.50a2d6p+63, -0x1.c3d728p+27 +0x1.139cdp+37, -0x1.978fdap-27 +-0x1.952d6ep+123, 0x1.9b34cp-117 +-0x1.9f0012p+1, -0x1.029e14p-115 +-0x1.ca0838p-39, -0x1.a321e4p+89 +0x1.381c48p+25, -0x1.adec28p-23 +0x1.0cd4ecp+1, 0x1.1315ccp+55 +0x1.09685ep+61, -0x1.1a2b8ep-61 +0x1.cba66cp-103, 0x1.804acp+47 +-0x1.1c716p+91, -0x1.bc6c68p+95 +-0x1.471a44p-43, 0x1.fbf18cp-57 +0x1.f0fc7p-93, -0x1.6442e6p-29 +0x1.971db4p-83, 0x1.940b9p+7 +0x1.ac1126p+61, 0x1.8bcbdcp+105 +0x1.269932p+43, 0x1.4475c2p+97 +0x1.e2cb16p+117, 0x1.cf977p-103 +0x1.762b06p+113, 0x1.1ca6eep+69 +-0x1.0017fp-81, 0x1.823d88p-43 +-0x1.bdaae6p-61, 0x1.f1ef72p-63 +-0x1.fe198ap+111, 0x1.85d9ccp-67 +-0x1.11bfa4p-65, 0x1.8d22d4p+25 +-0x1.e7bb16p+43, 0x1.43602p+49 +-0x1.d686e8p-93, 0x1.45a892p-49 +0x1.ed541p-1, -0x1.cc85a6p-39 +-0x1.2f03fcp-71, -0x1.6b351ep-31 +-0x1.71b314p-29, -0x1.e2b898p-17 +-0x1.ebd5f8p-85, -0x1.8db56ap+57 +-0x1.e3d15ap+71, -0x1.020b74p+39 +0x1.d8f59ep-9, -0x1.267c8ep-91 +0x1.38d794p+11, 0x1.4d4e5cp+103 +0x1.7dd7a2p-31, 0x1.be6a9cp+73 +-0x1.1408d8p-121, 0x1.10f37p+99 +-0x1.ef03dp-125, 0x1.70a31ap-99 +-0x1.8dff72p-67, 0x1.ba6d14p+97 +-0x1.c424a8p+105, 0x1.b6575ap+51 +-0x1.26bb2p+35, -0x1.6c4f48p-37 +-0x1.d7331p-101, -0x1.cfc016p-65 +-0x1.804164p-103, 0x1.aa1dep+107 +0x1.03e6d6p+63, 0x1.a822e6p-27 +0x1.e3352cp-35, 0x1.257ed8p-109 +-0x1.f50ca6p+13, -0x1.c72accp-63 +0x1.c33f4cp+21, -0x1.d90b22p-57 +0x1.6b0642p-85, 0x1.ba928ap-123 +0x1.7ec6ap-119, 0x1.3dca8p-9 +0x1.661fc2p+53, -0x1.9075c4p+27 +-0x1.2ab95ap-31, 0x1.6bcd72p+65 +0x1.95ba5cp+11, -0x1.63a46p-85 +-0x1.00709ap-91, 0x1.1c759p-21 +0x1.9c04c2p+121, 0x1.5608ccp+95 +-0x1.9db026p+93, -0x1.684d46p-51 +0x1.082ed2p+21, 0x1.5f2adap+63 +-0x1.efbff8p-117, -0x1.15cb7ep-77 +0x1.748f3p-37, -0x1.af1c74p-65 +-0x1.e13dc4p-85, 0x1.37f1cp+21 +-0x1.7b50b8p-128, -0x1.c5a7d4p+61 +0x1.f9cfecp-51, 0x1.a0a80ap-93 +0x1.87b578p-41, 0x1.b17798p+93 +-0x1.fde6fp-81, -0x1.968196p+43 +0x1.5e5faep+33, -0x1.073b8cp-19 +0x1.e74636p+55, 0x1.e44c24p-69 +-0x1.b92de2p+75, 0x1.f1854ep-89 +0x1.e3e554p-43, 0x1.7e0164p-7 +0x1.18d6c8p+115, 0x1.ce9cf4p+23 +0x1.00de28p-107, 0x1.4371a8p-61 +-0x1.a29ab2p-45, -0x1.d0c916p+89 +-0x1.d2543ap+67, 0x1.1aa5acp-27 +-0x1.bcf608p-57, 0x1.fcaa06p+45 +0x1.a97ea6p-11, 0x1.40f9cap-93 +-0x1.6f3bfcp+123, 0x1.fcb72ap+105 +0x1.583b2cp-49, -0x1.8b86a2p+19 +-0x1.7a2d5ep+109, -0x1.27ed68p+87 +-0x1.512144p+51, 0x1.7a2b24p-93 +-0x1.740cc4p+67, 0x1.5c58bcp+51 +-0x1.9c60dap+101, -0x1.b07f2ep-65 +-0x1.d7162p-91, 0x1.0608a4p+61 +-0x1.971bap-55, 0x1.79c728p-123 +0x1.e04514p+103, -0x1.c5711cp-31 +0x1.5d4f7ep-87, 0x1.65e0aep+27 +0x1.ec298cp-49, 0x1.9685d2p-123 +0x1.b79deep-37, -0x1.87a16ap+1 +-0x1.af9c1p+119, -0x1.cdff8cp-127 +-0x1.c102f4p+103, 0x1.3f8e74p+87 +0x1.99ba8p-63, -0x1.9a0d3ep+75 +-0x1.77941ep-79, 0x1.10c348p+11 +0x1.4ffa9p+121, 0x1.de8f58p+41 +-0x1.793116p+119, -0x1.c1461ep-85 +-0x1.2e3156p-49, -0x1.e75af4p-61 +0x1.95aa7ap-117, -0x1.77fa6cp+43 +-0x1.6be95ep-95, -0x1.946cfp-37 +0x1.f710eep-51, 0x1.d66fd6p-97 +0x1.5883dap+125, -0x1.8ceb64p-107 +0x1.22e6b8p-47, -0x1.884312p+35 +0x1.c6b7c4p+97, -0x1.077fcap+93 +0x1.db1bd2p-1, 0x1.b58a9ep+49 +0x1.77ae1ep-27, 0x1.69b66ep+115 +-0x1.836058p+123, 0x1.230e6cp+121 +-0x1.400382p-39, 0x1.dff776p-95 +-0x1.3b109cp-17, -0x1.78eddep-101 +0x1.f4c808p+83, 0x1.5226dep-89 +0x1.a49f02p+9, -0x1.83dd7cp+55 +-0x1.59d4c4p+59, -0x1.5a23bcp-15 From patchwork Wed Oct 6 18:05:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 45932 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6873B385800B for ; Wed, 6 Oct 2021 18:07:06 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6873B385800B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1633543626; bh=Nq8F8t6XuErBvP+8yyk9vz08RVxh6mVBoNgtG8Zr4zE=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=fiRlhyvVICAWa9BV+nnh7znkmZliNaq7IWE0t445K8Fuu+zo0TAdCeNNTd5LM3vqa ysvMedD+3fcLnAFDV5f9wb7u/qVEuw2c8/FTvMVnAJc4rJUqIqe3l7lKetcu/RWA3Z RXO9gQgjLt8LT3n0RKBnbB6tRJ0rSAc74AwalWog= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qt1-x82e.google.com (mail-qt1-x82e.google.com [IPv6:2607:f8b0:4864:20::82e]) by sourceware.org (Postfix) with ESMTPS id 3E0713858408 for ; Wed, 6 Oct 2021 18:06:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3E0713858408 Received: by mail-qt1-x82e.google.com with SMTP id x9so3655411qtv.0 for ; Wed, 06 Oct 2021 11:06:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Nq8F8t6XuErBvP+8yyk9vz08RVxh6mVBoNgtG8Zr4zE=; b=xk2FGSMv05RGOtGsRU0K7NUE1SZD2NObw3t8t3ZqKxDQKIy4CCuYySlGL3KLF8rY3i /uy0/UdHEFmWY9QQReRMeZWO+S8/nbmJiz2asEmU2yFxcinQyoedYb+1WP+v5LjJU81p 66Q3VUvuszY5odYkvQV33IZ8cCDQV1PyA5NnwQt4z4+FXr3OqHLPsoTNJCFJbCSzvuaD 9S/XC/VKcTa3yT/iphAWRTAgER8Yzok0JsgimpiEwBL803vIdRXhKQ5etXZw3Ae8ThZ7 ElmTMoCKbX0U+5vLsC/Zjv5Z6KDbq7NwG0TfSUXfurr8WsW4ikE2jsvzISST8RtvPoC8 6Ndw== X-Gm-Message-State: AOAM5313Zm+8Jz1TLGJ8/QV6t9uwsWmoLTAHQDqpk202x07SomPIxNRJ i2rMalJJPx7OQoTQhSFnZtQyofxp/xm2pg== X-Google-Smtp-Source: ABdhPJyWjTdB9MrthpnSRSOCzAscIoB2rUAl+qt93DsLo09m+h73Tox6LsFlrcl9WUV4WdclkraeeA== X-Received: by 2002:ac8:5788:: with SMTP id v8mr172093qta.372.1633543564660; Wed, 06 Oct 2021 11:06:04 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:807a:2ebe:4b13:27bd:f11d]) by smtp.gmail.com with ESMTPSA id 18sm14161168qtz.49.2021.10.06.11.06.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Oct 2021 11:06:04 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH 3/9] math: Simplify hypotf implementation Date: Wed, 6 Oct 2021 15:05:51 -0300 Message-Id: <20211006180557.933826-4-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211006180557.933826-1-adhemerval.zanella@linaro.org> References: <20211006180557.933826-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_ASCII_DIVIDERS, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Use isnan()/isinf() instead of GET_FLOAT_WORD and interger operations. There is also no need to check for 0.0. The file Copyright is also change to use GPL, the implementation was complete change by 7c10fd3515f to use double precision instead of scaling and this change removes all the GET_FLOAT_WORD usage. Checked on x86_64-linux-gnu. --- sysdeps/ieee754/flt-32/e_hypotf.c | 57 +++++++++++++------------------ 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/sysdeps/ieee754/flt-32/e_hypotf.c b/sysdeps/ieee754/flt-32/e_hypotf.c index e770947dc1..6495a91cd4 100644 --- a/sysdeps/ieee754/flt-32/e_hypotf.c +++ b/sysdeps/ieee754/flt-32/e_hypotf.c @@ -1,46 +1,35 @@ -/* e_hypotf.c -- float version of e_hypot.c. - */ +/* Euclidean distance function. Float/Binary32 version. + Copyright (C) 2012-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ #include #include #include float -__ieee754_hypotf(float x, float y) +__ieee754_hypotf (float x, float y) { - double d_x, d_y; - int32_t ha, hb; - - GET_FLOAT_WORD(ha,x); - ha &= 0x7fffffff; - GET_FLOAT_WORD(hb,y); - hb &= 0x7fffffff; - if (ha == 0x7f800000 && !issignaling (y)) - return fabsf(x); - else if (hb == 0x7f800000 && !issignaling (x)) - return fabsf(y); - else if (ha > 0x7f800000 || hb > 0x7f800000) - return fabsf(x) * fabsf(y); - else if (ha == 0) - return fabsf(y); - else if (hb == 0) - return fabsf(x); - - d_x = (double) x; - d_y = (double) y; + if ((isinf (x) || isinf (y)) + && !issignaling (x) && !issignaling (y)) + return INFINITY; + if (isnan (x) || isnan (y)) + return x + y; - return (float) sqrt(d_x * d_x + d_y * d_y); + return sqrt ((double) x * (double) x + (double) y * (double) y); } #ifndef __ieee754_hypotf libm_alias_finite (__ieee754_hypotf, __hypotf) From patchwork Wed Oct 6 18:05:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 45935 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D83523858425 for ; Wed, 6 Oct 2021 18:15:54 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D83523858425 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1633544154; bh=2SDYG2kqLihPPrTxRYAo33e6WKOI9PW3aFMqRFMXWRc=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=b4U6Q4HneoM11oSsbrbcnJYamQMD2AFX1XiyNqH9YV1Oni99pgH1b5PV58uEgYQV2 nAVTbJYZYvtjc4cYsa7z8ZlzgO4xeIrzCR7Lu0gKo+8JbcB1EjM/Ouik9Q8t4XjpBR bLgT4P9WZGtSW+pWYrJ8KBgeqXYSV0XX1N+ON4fo= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qk1-x730.google.com (mail-qk1-x730.google.com [IPv6:2607:f8b0:4864:20::730]) by sourceware.org (Postfix) with ESMTPS id 6D7E53858C39 for ; Wed, 6 Oct 2021 18:15:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6D7E53858C39 Received: by mail-qk1-x730.google.com with SMTP id p4so3471228qki.3 for ; Wed, 06 Oct 2021 11:15:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2SDYG2kqLihPPrTxRYAo33e6WKOI9PW3aFMqRFMXWRc=; b=g5u0pgJGiad11Sr91KYuzPecFJdqmbe/RbOWuA+qgHla694LkGOvEZ1xSPbvOs4TFs 98hnCKUPoBIy+qE7HKNUZAPv+ApKvblCXsPYZYHIqzKfxrLUFF3EWGsuc12mMBUSsjTO IbOyRk5hg4CvGonWKbbJKfzFqesVwIba3D5byOAu4RC1GURQ8BlIB4+bGnTJdXrMvxS2 uYqsqpbtp5C5c9HuSCevcrxQMMyUM7a+GzMTIEtmt9nO9GQdVGvW4BBZ6d2sZ6dFMC0d KzxIxXN41unY8znTb2bxVTM7ZaD1ugfveyS0pztddk35hyNJ5sfl/jOxcEjbDGEYZjes mTgg== X-Gm-Message-State: AOAM5314BUBSj4BePX9A5YajRnEfbYaW/HMCMjANOEyxfuQ54qCIfLNr 0dgw0KR8OjFQ2mE3AfX9x9Hwj123Jkzy9Q== X-Google-Smtp-Source: ABdhPJypdBR0KDCH1ffxM28qXiFAm0Hm7PR9aVci8aWDNWkvpBCuEEh82yd9N0J3LZ1VYfFY2oa3lA== X-Received: by 2002:ae9:ef97:: with SMTP id d145mr134125qkg.293.1633544131636; Wed, 06 Oct 2021 11:15:31 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:807a:2ebe:4b13:27bd:f11d]) by smtp.gmail.com with ESMTPSA id 18sm14161168qtz.49.2021.10.06.11.15.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Oct 2021 11:15:31 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH 4/9] math: Use an improved algorithm for hypot (dbl-64) Date: Wed, 6 Oct 2021 15:05:52 -0300 Message-Id: <20211006180557.933826-5-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211006180557.933826-1-adhemerval.zanella@linaro.org> References: <20211006180557.933826-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_ASCII_DIVIDERS, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" This implementation is based on the 'An Improved Algorithm for hypot(a,b)' by Carlos F. Borges [1] using the MyHypot3 with the following changes: - Handle qNaN and sNaN. - Tune the 'widely varying operands' to avoid spurious underflow due the multiplication and fix the return value for upwards rounding mode. - Handle required underflow exception for denormal results. The main advantage of the new algorithm is its precision: with a random 1e9 input pairs in the range of [DBL_MIN, DBL_MAX], glibc current implementation shows around 0.34% results with an error of 1 ulp (3424869 results) while the new implementation only shows 0.002% of total (18851). The performance result are also only slight worse than current implementation. On x86_64 (Ryzen 5900X) with gcc 10.3.1: Before: "hypot": { "workload-random": { "duration": 3.71687e+09, "iterations": 2.08e+08, "reciprocal-throughput": 15.0308, "latency": 20.7083, "max-throughput": 6.65299e+07, "min-throughput": 4.82897e+07 } After: "hypot": { "workload-random": { "duration": 3.70911e+09, "iterations": 2.44e+08, "reciprocal-throughput": 15.0929, "latency": 15.3097, "max-throughput": 6.62565e+07, "min-throughput": 6.53181e+07 } } Co-Authored-By: Paul Zimmermann Checked on x86_64-linux-gnu and aarch64-linux-gnu. [1] https://arxiv.org/pdf/1904.09481.pdf --- sysdeps/ieee754/dbl-64/e_hypot.c | 225 ++++++++++++------------------- 1 file changed, 86 insertions(+), 139 deletions(-) diff --git a/sysdeps/ieee754/dbl-64/e_hypot.c b/sysdeps/ieee754/dbl-64/e_hypot.c index 9ec4c1ced0..231fb0d70f 100644 --- a/sysdeps/ieee754/dbl-64/e_hypot.c +++ b/sysdeps/ieee754/dbl-64/e_hypot.c @@ -1,164 +1,111 @@ -/* @(#)e_hypot.c 5.1 93/09/24 */ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ +/* Euclidean distance function. Double/Binary64 version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. -/* __ieee754_hypot(x,y) - * - * Method : - * If (assume round-to-nearest) z=x*x+y*y - * has error less than sqrt(2)/2 ulp, than - * sqrt(z) has error less than 1 ulp (exercise). - * - * So, compute sqrt(x*x+y*y) with some care as - * follows to get the error below 1 ulp: - * - * Assume x>y>0; - * (if possible, set rounding to round-to-nearest) - * 1. if x > 2y use - * x1*x1+(y*y+(x2*(x+x1))) for x*x+y*y - * where x1 = x with lower 32 bits cleared, x2 = x-x1; else - * 2. if x <= 2y use - * t1*y1+((x-y)*(x-y)+(t1*y2+t2*y)) - * where t1 = 2x with lower 32 bits cleared, t2 = 2x-t1, - * y1= y with lower 32 bits chopped, y2 = y-y1. - * - * NOTE: scaling may be necessary if some argument is too - * large or too tiny - * - * Special cases: - * hypot(x,y) is INF if x or y is +INF or -INF; else - * hypot(x,y) is NAN if x or y is NAN. - * - * Accuracy: - * hypot(x,y) returns sqrt(x^2+y^2) with error less - * than 1 ulps (units in the last place) - */ + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* This implementation is based on 'An Improved Algorithm for hypot(a,b)' by + Carlos F. Borges [1] using the MyHypot3 with the following changes: + + - Handle qNaN and sNaN. + - Tune the 'widely varying operands' to avoid spurious underflow + due the multiplication and fix the return value for upwards + rounding mode. + - Handle required underflow exception for subnormal results. + + [1] https://arxiv.org/pdf/1904.09481.pdf */ #include #include #include +#include #include +#include + +/* sqrt (DBL_EPSILON / 2.0) */ +#define SQRT_EPS_DIV_2 0x1.6a09e667f3bcdp-27 +/* DBL_MIN / (sqrt (DBL_EPSILON / 2.0)) */ +#define DBL_MIN_THRESHOLD 0x1.6a09e667f3bcdp-996 +/* eps (double) * sqrt (DBL_MIN)) */ +#define SCALE 0x1p-563 +/* 1 / eps (sqrt (DBL_MIN) */ +#define INV_SCALE 0x1p+563 +/* sqrt (DBL_MAX) */ +#define SQRT_DBL_MAX 0x1.6a09e667f3bccp+511 +/* sqrt (DBL_MIN) */ +#define SQRT_DBL_MIN 0x1p-511 double __ieee754_hypot (double x, double y) { - double a, b, t1, t2, y1, y2, w; - int32_t j, k, ha, hb; + if ((isinf (x) || isinf (y)) + && !issignaling (x) && !issignaling (y)) + return INFINITY; + if (isnan (x) || isnan (y)) + return x + y; - GET_HIGH_WORD (ha, x); - ha &= 0x7fffffff; - GET_HIGH_WORD (hb, y); - hb &= 0x7fffffff; - if (hb > ha) - { - a = y; b = x; j = ha; ha = hb; hb = j; - } - else + double ax = fabs (x); + double ay = fabs (y); + if (ay > ax) { - a = x; b = y; + double tmp = ax; + ax = ay; + ay = tmp; } - SET_HIGH_WORD (a, ha); /* a <- |a| */ - SET_HIGH_WORD (b, hb); /* b <- |b| */ - if ((ha - hb) > 0x3c00000) - { - return a + b; - } /* x/y > 2**60 */ - k = 0; - if (__glibc_unlikely (ha > 0x5f300000)) /* a>2**500 */ - { - if (ha >= 0x7ff00000) /* Inf or NaN */ - { - uint32_t low; - w = a + b; /* for sNaN */ - if (issignaling (a) || issignaling (b)) - return w; - GET_LOW_WORD (low, a); - if (((ha & 0xfffff) | low) == 0) - w = a; - GET_LOW_WORD (low, b); - if (((hb ^ 0x7ff00000) | low) == 0) - w = b; - return w; - } - /* scale a and b by 2**-600 */ - ha -= 0x25800000; hb -= 0x25800000; k += 600; - SET_HIGH_WORD (a, ha); - SET_HIGH_WORD (b, hb); - } - if (__builtin_expect (hb < 0x23d00000, 0)) /* b < 2**-450 */ + + /* Widely varying operands. The DBL_MIN_THRESHOLD check is used to avoid + a spurious underflow from the multiplication. */ + if (ax >= DBL_MIN_THRESHOLD && ay <= ax * SQRT_EPS_DIV_2) + return (ay == 0.0) ? ax : math_narrow_eval (ax + DBL_TRUE_MIN); + + double scale = SCALE; + if (ax > SQRT_DBL_MAX) { - if (hb <= 0x000fffff) /* subnormal b or 0 */ - { - uint32_t low; - GET_LOW_WORD (low, b); - if ((hb | low) == 0) - return a; - t1 = 0; - SET_HIGH_WORD (t1, 0x7fd00000); /* t1=2^1022 */ - b *= t1; - a *= t1; - k -= 1022; - GET_HIGH_WORD (ha, a); - GET_HIGH_WORD (hb, b); - if (hb > ha) - { - t1 = a; - a = b; - b = t1; - j = ha; - ha = hb; - hb = j; - } - } - else /* scale a and b by 2^600 */ - { - ha += 0x25800000; /* a *= 2^600 */ - hb += 0x25800000; /* b *= 2^600 */ - k -= 600; - SET_HIGH_WORD (a, ha); - SET_HIGH_WORD (b, hb); - } + ax *= scale; + ay *= scale; + scale = INV_SCALE; } - /* medium size a and b */ - w = a - b; - if (w > b) + else if (ay < SQRT_DBL_MIN) { - t1 = 0; - SET_HIGH_WORD (t1, ha); - t2 = a - t1; - w = sqrt (t1 * t1 - (b * (-b) - t2 * (a + t1))); + ax /= scale; + ay /= scale; } else + scale = 1.0; + + double h = sqrt (ax * ax + ay * ay); + + double t1, t2; + if (h == 0.0) + return h; + else if (h <= 2.0 * ay) { - a = a + a; - y1 = 0; - SET_HIGH_WORD (y1, hb); - y2 = b - y1; - t1 = 0; - SET_HIGH_WORD (t1, ha + 0x00100000); - t2 = a - t1; - w = sqrt (t1 * y1 - (w * (-w) - (t1 * y2 + t2 * b))); + double delta = h - ay; + t1 = ax * (2.0 * delta - ax); + t2 = (delta - 2.0 * (ax - ay)) * delta; } - if (k != 0) + else { - uint32_t high; - t1 = 1.0; - GET_HIGH_WORD (high, t1); - SET_HIGH_WORD (t1, high + (k << 20)); - w *= t1; - math_check_force_underflow_nonneg (w); - return w; + double delta = h - ax; + t1 = 2.0 * delta * (ax - 2 * ay); + t2 = (4.0 * delta - ay) * ay + delta * delta; } - else - return w; + h -= (t1 + t2) / (2.0 * h); + h = math_narrow_eval (h * scale); + math_check_force_underflow_nonneg (h); + return h; } #ifndef __ieee754_hypot libm_alias_finite (__ieee754_hypot, __hypot) From patchwork Wed Oct 6 18:05:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 45936 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id ED45C3858023 for ; Wed, 6 Oct 2021 18:16:36 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org ED45C3858023 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1633544197; bh=3k8ebNutYqSsvdgMT5oD3rnAvS/QCIOVdb1bz4dV0vg=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=qfpgL2ZTcb0aA3zjwhwE5pAQt7XtwmSLhvLSpi4ak843QdlUA5sGSDLKiwdzv2bNG fyD2BTQnvNn17TKrBSlVWNkO0rM20a/zUB97gIBanDnScomhTUj9zf6almGrF5QI14 AUl+I2QAfbjOw5hopV3P5swB800GVqjVbLrh4byk= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qv1-xf33.google.com (mail-qv1-xf33.google.com [IPv6:2607:f8b0:4864:20::f33]) by sourceware.org (Postfix) with ESMTPS id 719C03858C3A for ; Wed, 6 Oct 2021 18:15:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 719C03858C3A Received: by mail-qv1-xf33.google.com with SMTP id z15so2503544qvj.7 for ; Wed, 06 Oct 2021 11:15:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3k8ebNutYqSsvdgMT5oD3rnAvS/QCIOVdb1bz4dV0vg=; b=XCpVn2fsTVHHdfbwHPKXkjGObh//+YyGQ3auRQqONwkF1/Lpf6+34QOgSZRvSgx2Je psq4IQYonVpYYQeXmCIBqhPJ+ibbtH8oiPpYviL2cVM7nAlXLvjiehTD8ejRQabEYEFz uwemPv4QQ/fOJghwhHbv3+Hx/weWarjDlZrefu7gevNwvipFuyR0d/eEw+y66B1f2StI eDBZkmgk9rcpYAWpiowSEwr9TGiqlfUFhYz7t98bU/Ga1cCPB4YenOGTPb/mHgtVZY+a /v19QQ2kR/+lXMsm4AyJ6fbH6BnsaBfgQPeqrBBomPWUSx5RjIwXYXTenQw19j5Q7x30 93Kw== X-Gm-Message-State: AOAM5335Xx7H/242i583PhAWIk7owaZ/mvBP49tRhjfZX3YQmRpvo9Y+ WoadVLPUjCIMJiRNx97gXqW+812B/rv49g== X-Google-Smtp-Source: ABdhPJz9DBvXN1cACBI09pYhGq6gQ8d7vBAx7yuxTh6tHKW5eYiTx2yxDs1wyE5MfJI7Dd9rjy1ctA== X-Received: by 2002:a0c:e78c:: with SMTP id x12mr30808141qvn.24.1633544132807; Wed, 06 Oct 2021 11:15:32 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:807a:2ebe:4b13:27bd:f11d]) by smtp.gmail.com with ESMTPSA id 18sm14161168qtz.49.2021.10.06.11.15.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Oct 2021 11:15:32 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH 5/9] math: Use an improved algorithm for hypotl (ldbl-96) Date: Wed, 6 Oct 2021 15:05:53 -0300 Message-Id: <20211006180557.933826-6-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211006180557.933826-1-adhemerval.zanella@linaro.org> References: <20211006180557.933826-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_ASCII_DIVIDERS, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" This implementation is based on 'An Improved Algorithm for hypot(a,b)' by Carlos F. Borges [1] using the MyHypot3 with the following changes: - Handle qNaN and sNaN. - Tune the 'widely varying operands' to avoid spurious underflow due the multiplication and fix the return value for upwards rounding mode. - Handle required underflow exception for subnormal results. The main advantage of the new algorithm is its precision. With a random 1e8 input pairs in the range of [LDBL_MIN, LDBL_MAX], glibc current implementation shows around 0.02% results with an error of 1 ulp (23158 results) while the new implementation only shows 0.0001% of total (111). [1] https://arxiv.org/pdf/1904.09481.pdf --- sysdeps/ieee754/ldbl-96/e_hypotl.c | 227 ++++++++++++----------------- 1 file changed, 97 insertions(+), 130 deletions(-) diff --git a/sysdeps/ieee754/ldbl-96/e_hypotl.c b/sysdeps/ieee754/ldbl-96/e_hypotl.c index 44e72353c0..85dcbc894b 100644 --- a/sysdeps/ieee754/ldbl-96/e_hypotl.c +++ b/sysdeps/ieee754/ldbl-96/e_hypotl.c @@ -1,142 +1,109 @@ -/* e_hypotl.c -- long double version of e_hypot.c. - */ +/* Euclidean distance function. Long Double/Binary96 version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. -/* __ieee754_hypotl(x,y) - * - * Method : - * If (assume round-to-nearest) z=x*x+y*y - * has error less than sqrt(2)/2 ulp, than - * sqrt(z) has error less than 1 ulp (exercise). - * - * So, compute sqrt(x*x+y*y) with some care as - * follows to get the error below 1 ulp: - * - * Assume x>y>0; - * (if possible, set rounding to round-to-nearest) - * 1. if x > 2y use - * x1*x1+(y*y+(x2*(x+x1))) for x*x+y*y - * where x1 = x with lower 32 bits cleared, x2 = x-x1; else - * 2. if x <= 2y use - * t1*y1+((x-y)*(x-y)+(t1*y2+t2*y)) - * where t1 = 2x with lower 32 bits cleared, t2 = 2x-t1, - * y1= y with lower 32 bits chopped, y2 = y-y1. - * - * NOTE: scaling may be necessary if some argument is too - * large or too tiny - * - * Special cases: - * hypot(x,y) is INF if x or y is +INF or -INF; else - * hypot(x,y) is NAN if x or y is NAN. - * - * Accuracy: - * hypot(x,y) returns sqrt(x^2+y^2) with error less - * than 1 ulps (units in the last place) - */ + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* This implementation is based on 'An Improved Algorithm for hypot(a,b)' by + Carlos F. Borges [1] using the MyHypot3 with the following changes: + + - Handle qNaN and sNaN. + - Tune the 'widely varying operands' to avoid spurious underflow + due the multiplication and fix the return value for upwards + rounding mode. + - Handle required underflow exception for subnormal results. + + [1] https://arxiv.org/pdf/1904.09481.pdf */ #include #include #include #include -long double __ieee754_hypotl(long double x, long double y) +/* sqrt (LDBL_EPSILON / 2.0) */ +#define SQRT_EPS_DIV_2 0x8p-35L +/* DBL_MIN / (sqrt (LDBL_EPSILON / 2.0)) */ +#define LDBL_MIN_THRESHOLD 0x8p-16353L +/* eps (long double) * sqrt (LDBL_MIN) */ +#define SCALE 0x8p-8257L +/* 1 / eps (sqrt (LDBL_MIN) */ +#define INV_SCALE 0x8p+8251L +/* sqrt (LDBL_MAX) */ +#define SQRT_LDBL_MAX 0xb.504f333f9de6484p+8188L +/* sqrt (LDBL_MIN) */ +#define SQRT_LDBL_MIN 0x8p-8194L + +long double +__ieee754_hypotl (long double x, long double y) { - long double a,b,t1,t2,y1,y2,w; - uint32_t j,k,ea,eb; + if ((isinf (x) || isinf (y)) + && !issignaling (x) && !issignaling (y)) + return INFINITY; + if (isnan (x) || isnan (y)) + return x + y; + + long double ax = fabsl (x); + long double ay = fabsl (y); + if (ay > ax) + { + long double tmp = ax; + ax = ay; + ay = tmp; + } + + /* Widely varying operands. The LDBL_MIN_THRESHOLD check is used to avoid + a spurious underflow from the multiplication. */ + if (ax >= LDBL_MIN_THRESHOLD && ay <= ax * SQRT_EPS_DIV_2) + return (ay == 0.0) ? ax : ax + LDBL_TRUE_MIN; + + long double scale = SCALE; + if (ax > SQRT_LDBL_MAX) + { + ax *= scale; + ay *= scale; + scale = INV_SCALE; + } + else if (ay < SQRT_LDBL_MIN) + { + ax /= scale; + ay /= scale; + } + else + scale = 1.0L; + + long double h = sqrtl (ax * ax + ay * ay); - GET_LDOUBLE_EXP(ea,x); - ea &= 0x7fff; - GET_LDOUBLE_EXP(eb,y); - eb &= 0x7fff; - if(eb > ea) {a=y;b=x;j=ea; ea=eb;eb=j;} else {a=x;b=y;} - SET_LDOUBLE_EXP(a,ea); /* a <- |a| */ - SET_LDOUBLE_EXP(b,eb); /* b <- |b| */ - if((ea-eb)>0x46) {return a+b;} /* x/y > 2**70 */ - k=0; - if(__builtin_expect(ea > 0x5f3f,0)) { /* a>2**8000 */ - if(ea == 0x7fff) { /* Inf or NaN */ - uint32_t exp __attribute__ ((unused)); - uint32_t high,low; - w = a+b; /* for sNaN */ - if (issignaling (a) || issignaling (b)) - return w; - GET_LDOUBLE_WORDS(exp,high,low,a); - if(((high&0x7fffffff)|low)==0) w = a; - GET_LDOUBLE_WORDS(exp,high,low,b); - if(((eb^0x7fff)|(high&0x7fffffff)|low)==0) w = b; - return w; - } - /* scale a and b by 2**-9600 */ - ea -= 0x2580; eb -= 0x2580; k += 9600; - SET_LDOUBLE_EXP(a,ea); - SET_LDOUBLE_EXP(b,eb); - } - if(__builtin_expect(eb < 0x20bf, 0)) { /* b < 2**-8000 */ - if(eb == 0) { /* subnormal b or 0 */ - uint32_t exp __attribute__ ((unused)); - uint32_t high,low; - GET_LDOUBLE_WORDS(exp,high,low,b); - if((high|low)==0) return a; - SET_LDOUBLE_WORDS(t1, 0x7ffd, 0x80000000, 0); /* t1=2^16382 */ - b *= t1; - a *= t1; - k -= 16382; - GET_LDOUBLE_EXP (ea, a); - GET_LDOUBLE_EXP (eb, b); - if (eb > ea) - { - t1 = a; - a = b; - b = t1; - j = ea; - ea = eb; - eb = j; - } - } else { /* scale a and b by 2^9600 */ - ea += 0x2580; /* a *= 2^9600 */ - eb += 0x2580; /* b *= 2^9600 */ - k -= 9600; - SET_LDOUBLE_EXP(a,ea); - SET_LDOUBLE_EXP(b,eb); - } - } - /* medium size a and b */ - w = a-b; - if (w>b) { - uint32_t high; - GET_LDOUBLE_MSW(high,a); - SET_LDOUBLE_WORDS(t1,ea,high,0); - t2 = a-t1; - w = sqrtl(t1*t1-(b*(-b)-t2*(a+t1))); - } else { - uint32_t high; - GET_LDOUBLE_MSW(high,b); - a = a+a; - SET_LDOUBLE_WORDS(y1,eb,high,0); - y2 = b - y1; - GET_LDOUBLE_MSW(high,a); - SET_LDOUBLE_WORDS(t1,ea+1,high,0); - t2 = a - t1; - w = sqrtl(t1*y1-(w*(-w)-(t1*y2+t2*b))); - } - if(k!=0) { - uint32_t exp; - t1 = 1.0; - GET_LDOUBLE_EXP(exp,t1); - SET_LDOUBLE_EXP(t1,exp+k); - w *= t1; - math_check_force_underflow_nonneg (w); - return w; - } else return w; + long double t1; + long double t2; + if (h == 0.0L) + return h; + if (h <= 2.0L * ay) + { + long double delta = h - ay; + t1 = ax * (2.0L * delta - ax); + t2 = (delta - 2.0L * (ax - ay)) * delta; + } + else + { + long double delta = h - ax; + t1 = 2.0L * delta * (ax - 2.0L * ay); + t2 = (4.0L * delta - ay) * ay + delta * delta; + } + h -= (t1 + t2) / (2.0L * h); + h *= scale; + math_check_force_underflow_nonneg (h); + return h; } libm_alias_finite (__ieee754_hypotl, __hypotl) From patchwork Wed Oct 6 18:05:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 45937 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 28C68385842A for ; Wed, 6 Oct 2021 18:17:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 28C68385842A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1633544239; bh=yLUSPc59FDmh2Fi3UTUBC0BCbXOZ+GrYBk8ieg4rmJk=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=rFBk/gMbGlAPEvuJB1FTXac3xhqGdWmPCdnqNEXcsHfEEzOLs+xxOdjR9m7ZgpIgM oM7KoYFS3JWBzrYq1lrOFBW8FJ247mtrtAxhjke29Ox40YqvFGVSco5YDRDneR35V0 UOLm6Nw8MkcrHe3UP99JBvQSAcewJV4DWB3e6QbI= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qk1-x731.google.com (mail-qk1-x731.google.com [IPv6:2607:f8b0:4864:20::731]) by sourceware.org (Postfix) with ESMTPS id BAA553858C39 for ; Wed, 6 Oct 2021 18:15:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BAA553858C39 Received: by mail-qk1-x731.google.com with SMTP id m7so3443945qke.8 for ; Wed, 06 Oct 2021 11:15:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=yLUSPc59FDmh2Fi3UTUBC0BCbXOZ+GrYBk8ieg4rmJk=; b=2iuSvnqWRVi7V0kB13ZdPe7GcXTgEpblAa88ShekplZYGU7aYvXCrLVVBKWVG7k+iU GB/yr6ajKuW0FT1afxeBSv3Kl4ACId3nlP9RaNjL5M9a893PwvQvXdh+Qwc3inbr4cCS 4DxLBAXVczhUyaPsmtrkPdBxVS7luDqw8a/s3DprkUas+NqCCneQ12degWNDwKNBfa09 4FnZd5nWM6izCMZHRoZ+5D3bzRK//8EZQQ6ic6gZr1axHMWgsv9JDLu3onD23Xfkopsj qloAzS8VnO5b6k8wkx84jyjQZZB8kLiEOD9dz4VcGJea1JSHN6/DnHP9w650VULaZHbF phSg== X-Gm-Message-State: AOAM531xDGh5pDaqnmErLOGdw6GlBVuJ2ryBECyab7mj221gU2EanRM8 pxaRujjap32a8QPvHhJ9a2hvbgukosJqQg== X-Google-Smtp-Source: ABdhPJymif8mnbtxwnpYKHs9eULrY4Bme6nkwhKLZcMRNMHu8ioXrhmrgl1kN6WEazy6i9zcPjKZTg== X-Received: by 2002:a37:b0c6:: with SMTP id z189mr173013qke.344.1633544134049; Wed, 06 Oct 2021 11:15:34 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:807a:2ebe:4b13:27bd:f11d]) by smtp.gmail.com with ESMTPSA id 18sm14161168qtz.49.2021.10.06.11.15.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Oct 2021 11:15:33 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH 6/9] math: Use an improved algorithm for hypotl (ldbl-128) Date: Wed, 6 Oct 2021 15:05:54 -0300 Message-Id: <20211006180557.933826-7-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211006180557.933826-1-adhemerval.zanella@linaro.org> References: <20211006180557.933826-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_ASCII_DIVIDERS, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" This implementation is based on 'An Improved Algorithm for hypot(a,b)' by Carlos F. Borges [1] using the MyHypot3 with the following changes: - Handle qNaN and sNaN. - Tune the 'widely varying operands' to avoid spurious underflow due the multiplication and fix the return value for upwards rounding mode. - Handle required underflow exception for subnormal results. The main advantage of the new algorithm is its precision. With a random 1e9 input pairs in the range of [LDBL_MIN, LDBL_MAX], glibc current implementation shows around 0.05% results with an error of 1 ulp (453266 results) while the new implementation only shows 0.0001% of total (1280). Checked on aarch64-linux-gnu and x86_64-linux-gnu. [1] https://arxiv.org/pdf/1904.09481.pdf --- sysdeps/ieee754/ldbl-128/e_hypotl.c | 222 ++++++++++++---------------- 1 file changed, 95 insertions(+), 127 deletions(-) diff --git a/sysdeps/ieee754/ldbl-128/e_hypotl.c b/sysdeps/ieee754/ldbl-128/e_hypotl.c index cd4fdbc4a6..a27eab0470 100644 --- a/sysdeps/ieee754/ldbl-128/e_hypotl.c +++ b/sysdeps/ieee754/ldbl-128/e_hypotl.c @@ -1,141 +1,109 @@ -/* e_hypotl.c -- long double version of e_hypot.c. - */ +/* Euclidean distance function. Long Double/Binary128 version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. -/* __ieee754_hypotl(x,y) - * - * Method : - * If (assume round-to-nearest) z=x*x+y*y - * has error less than sqrtl(2)/2 ulp, than - * sqrtl(z) has error less than 1 ulp (exercise). - * - * So, compute sqrtl(x*x+y*y) with some care as - * follows to get the error below 1 ulp: - * - * Assume x>y>0; - * (if possible, set rounding to round-to-nearest) - * 1. if x > 2y use - * x1*x1+(y*y+(x2*(x+x1))) for x*x+y*y - * where x1 = x with lower 64 bits cleared, x2 = x-x1; else - * 2. if x <= 2y use - * t1*y1+((x-y)*(x-y)+(t1*y2+t2*y)) - * where t1 = 2x with lower 64 bits cleared, t2 = 2x-t1, - * y1= y with lower 64 bits chopped, y2 = y-y1. - * - * NOTE: scaling may be necessary if some argument is too - * large or too tiny - * - * Special cases: - * hypotl(x,y) is INF if x or y is +INF or -INF; else - * hypotl(x,y) is NAN if x or y is NAN. - * - * Accuracy: - * hypotl(x,y) returns sqrtl(x^2+y^2) with error less - * than 1 ulps (units in the last place) - */ + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* This implementation is based on 'An Improved Algorithm for hypot(a,b)' by + Carlos F. Borges [1] using the MyHypot3 with the following changes: + + - Handle qNaN and sNaN. + - Tune the 'widely varying operands' to avoid spurious underflow + due the multiplication and fix the return value for upwards + rounding mode. + - Handle required underflow exception for subnormal results. + + [1] https://arxiv.org/pdf/1904.09481.pdf */ #include #include #include #include +/* sqrt (LDBL_EPSILON / 2.0) */ +#define SQRT_EPS_DIV_2 L(0x1.6a09e667f3bcc908b2fb1366ea95p-57) +/* DBL_MIN / (sqrt (LDBL_EPSILON / 2.0)) */ +#define LDBL_MIN_THRESHOLD L(0x1.6a09e667f3bcc908b2fb1366ea96p-16326) +/* eps (long double) *(sqrt (LDBL_MIN) */ +#define SCALE L(0x1p-8303) +/* 1 / eps (sqrt (LDBL_MIN) */ +#define INV_SCALE L(0x1p+8303) +/* sqrt (LDBL_MAX) */ +#define SQRT_LDBL_MAX L(0x1.6a09e667f3bcc908b2fb1366ea95p+8191) +/* sqrt (LDBL_MIN) */ +#define SQRT_LDBL_MIN L(0x1p-8191) + _Float128 __ieee754_hypotl(_Float128 x, _Float128 y) { - _Float128 a,b,t1,t2,y1,y2,w; - int64_t j,k,ha,hb; + if ((isinf (x) || isinf (y)) + && !issignaling (x) && !issignaling (y)) + return INFINITY; + if (isnan (x) || isnan (y)) + return x + y; + + _Float128 ax = fabsl (x); + _Float128 ay = fabsl (y); + if (ay > ax) + { + _Float128 tmp = ax; + ax = ay; + ay = tmp; + } + + /* Widely varying operands. The DBL_MIN_THRESHOLD check is used to avoid + an spurious underflow from the multiplication. */ + if (ax >= LDBL_MIN_THRESHOLD && ay <= ax * SQRT_EPS_DIV_2) + return (ay == 0.0) ? ax : ax + LDBL_TRUE_MIN; + + _Float128 scale = SCALE; + if (ax > SQRT_LDBL_MAX) + { + ax *= scale; + ay *= scale; + scale = INV_SCALE; + } + else if (ay < SQRT_LDBL_MIN) + { + ax /= scale; + ay /= scale; + } + else + scale = 1.0; + + _Float128 h = sqrtl (ax * ax + ay * ay); - GET_LDOUBLE_MSW64(ha,x); - ha &= 0x7fffffffffffffffLL; - GET_LDOUBLE_MSW64(hb,y); - hb &= 0x7fffffffffffffffLL; - if(hb > ha) {a=y;b=x;j=ha; ha=hb;hb=j;} else {a=x;b=y;} - SET_LDOUBLE_MSW64(a,ha); /* a <- |a| */ - SET_LDOUBLE_MSW64(b,hb); /* b <- |b| */ - if((ha-hb)>0x78000000000000LL) {return a+b;} /* x/y > 2**120 */ - k=0; - if(ha > 0x5f3f000000000000LL) { /* a>2**8000 */ - if(ha >= 0x7fff000000000000LL) { /* Inf or NaN */ - uint64_t low; - w = a+b; /* for sNaN */ - if (issignaling (a) || issignaling (b)) - return w; - GET_LDOUBLE_LSW64(low,a); - if(((ha&0xffffffffffffLL)|low)==0) w = a; - GET_LDOUBLE_LSW64(low,b); - if(((hb^0x7fff000000000000LL)|low)==0) w = b; - return w; - } - /* scale a and b by 2**-9600 */ - ha -= 0x2580000000000000LL; - hb -= 0x2580000000000000LL; k += 9600; - SET_LDOUBLE_MSW64(a,ha); - SET_LDOUBLE_MSW64(b,hb); - } - if(hb < 0x20bf000000000000LL) { /* b < 2**-8000 */ - if(hb <= 0x0000ffffffffffffLL) { /* subnormal b or 0 */ - uint64_t low; - GET_LDOUBLE_LSW64(low,b); - if((hb|low)==0) return a; - t1=0; - SET_LDOUBLE_MSW64(t1,0x7ffd000000000000LL); /* t1=2^16382 */ - b *= t1; - a *= t1; - k -= 16382; - GET_LDOUBLE_MSW64 (ha, a); - GET_LDOUBLE_MSW64 (hb, b); - if (hb > ha) - { - t1 = a; - a = b; - b = t1; - j = ha; - ha = hb; - hb = j; - } - } else { /* scale a and b by 2^9600 */ - ha += 0x2580000000000000LL; /* a *= 2^9600 */ - hb += 0x2580000000000000LL; /* b *= 2^9600 */ - k -= 9600; - SET_LDOUBLE_MSW64(a,ha); - SET_LDOUBLE_MSW64(b,hb); - } - } - /* medium size a and b */ - w = a-b; - if (w>b) { - t1 = 0; - SET_LDOUBLE_MSW64(t1,ha); - t2 = a-t1; - w = sqrtl(t1*t1-(b*(-b)-t2*(a+t1))); - } else { - a = a+a; - y1 = 0; - SET_LDOUBLE_MSW64(y1,hb); - y2 = b - y1; - t1 = 0; - SET_LDOUBLE_MSW64(t1,ha+0x0001000000000000LL); - t2 = a - t1; - w = sqrtl(t1*y1-(w*(-w)-(t1*y2+t2*b))); - } - if(k!=0) { - uint64_t high; - t1 = 1; - GET_LDOUBLE_MSW64(high,t1); - SET_LDOUBLE_MSW64(t1,high+(k<<48)); - w *= t1; - math_check_force_underflow_nonneg (w); - return w; - } else return w; + _Float128 t1; + _Float128 t2; + if (h == 0.0) + return h; + if (h <= 2.0 * ay) + { + _Float128 delta = h - ay; + t1 = ax * (2.0 * delta - ax); + t2 = (delta - 2.0 * (ax - ay)) * delta; + } + else + { + _Float128 delta = h - ax; + t1 = 2.0 * delta * (ax - 2 * ay); + t2 = (4.0 * delta - ay) * ay + delta * delta; + } + h -= (t1 + t2) / (2.0 * h); + h *= scale; + math_check_force_underflow_nonneg (h); + return h; } libm_alias_finite (__ieee754_hypotl, __hypotl) From patchwork Wed Oct 6 18:05:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 45938 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 717693858408 for ; Wed, 6 Oct 2021 18:18:07 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 717693858408 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1633544287; bh=yaNM0vEjyNyF0yqZBt8m/YKNA4KRn5d5VWTIkack4u4=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=gZiOEoKD/yJg6KaD1prL6+Y1yyB2+QKyEJFUJSCkKwzq3tDAzwOd8SGIp+81wqKdQ b9eC754vjW3q8l867SdQxENfmeXWBkT/+piwxnqAoaq//g3m5RV/jYfhAmXMzVRZsx 2wNxPAjnVpMZvbERP1qHOADkh1Pw6mMnbWxMAziU= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qk1-x730.google.com (mail-qk1-x730.google.com [IPv6:2607:f8b0:4864:20::730]) by sourceware.org (Postfix) with ESMTPS id 224183858408 for ; Wed, 6 Oct 2021 18:15:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 224183858408 Received: by mail-qk1-x730.google.com with SMTP id i132so3490726qke.1 for ; Wed, 06 Oct 2021 11:15:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=yaNM0vEjyNyF0yqZBt8m/YKNA4KRn5d5VWTIkack4u4=; b=Q9Ym1LHU+T2ksAgA6mBkupaQ0vmsMxKTphyE2L1h8R00EC3z7Z8yEiG7skj5SPpNZ+ +s9vuE7ndreFz/tdqcnX5SFU1AYxGTJXJwu5zUJsbOTnEHC6xAqR7tGnD91aom7pKuKv 5TdSH3z8Wm9cWO3VnkH46ONBYbv5e7B3lWAppdbazPvbflmo+sVdbzmxd2kbzrnYzLMZ rJff/imHOIcg5wCAN/Ub2dqiwbCEbkrGe4PhJP+PHn4XgAApPEQByQ3ojcOQVl7uGdGT OLHvMa17Ts7zeI43tAXt/tJtgrx3QILoZnKcEUAyBDXKB0QBDYRw2xK/NGj1BcBkbFtF imvw== X-Gm-Message-State: AOAM531th055VBp0PAD2s0HCam4tjtyXK56clVdylDEIDYXNW76sJeoZ JKqXqQMLvntmY6eEDxFbWQZUBut2b7x6Zw== X-Google-Smtp-Source: ABdhPJw43CBm5LI5GKXi0MscRy4/PnLznkth/dQ9J4rs2saj2DYMf2g4XfYBxcG53Hg1S/0H+Br8rA== X-Received: by 2002:a05:620a:23a:: with SMTP id u26mr201711qkm.106.1633544135285; Wed, 06 Oct 2021 11:15:35 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:807a:2ebe:4b13:27bd:f11d]) by smtp.gmail.com with ESMTPSA id 18sm14161168qtz.49.2021.10.06.11.15.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Oct 2021 11:15:35 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH 7/9] math: Remove powerpc e_hypot Date: Wed, 6 Oct 2021 15:05:55 -0300 Message-Id: <20211006180557.933826-8-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211006180557.933826-1-adhemerval.zanella@linaro.org> References: <20211006180557.933826-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TVD_SUBJ_WIPE_DEBT, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" power9 master: "hypot": { "workload-random": { "duration": 5.20744e+08, "iterations": 5.6e+07, "reciprocal-throughput": 9.27604, "latency": 9.32194, "max-throughput": 1.07805e+08, "min-throughput": 1.07274e+08 } } power9 patched: "hypot": { "workload-random": { "duration": 5.23124e+08, "iterations": 5.4e+07, "reciprocal-throughput": 9.51892, "latency": 9.85606, "max-throughput": 1.05054e+08, "min-throughput": 1.0146e+08 } } power8 master: "hypot": { "workload-random": { "duration": 5.21128e+08, "iterations": 4.6e+07, "reciprocal-throughput": 11.3589, "latency": 11.2988, "max-throughput": 8.80368e+07, "min-throughput": 8.85047e+07 } } power8 patched: "hypot": { "workload-random": { "duration": 5.22651e+08, "iterations": 4.6e+07, "reciprocal-throughput": 11.3764, "latency": 11.3475, "max-throughput": 8.79009e+07, "min-throughput": 8.81252e+07 } } Checked on powerpc64-linux-gnu (power8) and powerpc64le-linux-gnu (power9). Tested-by: Paul A. Clarke --- sysdeps/powerpc/fpu/e_hypot.c | 87 ------------------- sysdeps/powerpc/fpu/e_hypotf.c | 78 ----------------- .../powerpc32/power4/fpu/multiarch/Makefile | 5 +- .../power4/fpu/multiarch/e_hypot-power7.c | 23 ----- .../power4/fpu/multiarch/e_hypot-ppc32.c | 23 ----- .../powerpc32/power4/fpu/multiarch/e_hypot.c | 33 ------- .../power4/fpu/multiarch/e_hypotf-power7.c | 23 ----- .../power4/fpu/multiarch/e_hypotf-ppc32.c | 23 ----- .../powerpc32/power4/fpu/multiarch/e_hypotf.c | 33 ------- 9 files changed, 1 insertion(+), 327 deletions(-) delete mode 100644 sysdeps/powerpc/fpu/e_hypot.c delete mode 100644 sysdeps/powerpc/fpu/e_hypotf.c delete mode 100644 sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c delete mode 100644 sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c delete mode 100644 sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c delete mode 100644 sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c delete mode 100644 sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c delete mode 100644 sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c diff --git a/sysdeps/powerpc/fpu/e_hypot.c b/sysdeps/powerpc/fpu/e_hypot.c deleted file mode 100644 index f96c589bbd..0000000000 --- a/sysdeps/powerpc/fpu/e_hypot.c +++ /dev/null @@ -1,87 +0,0 @@ -/* Pythagorean addition using doubles - Copyright (C) 2011-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If - not, see . */ - -#include -#include -#include -#include -#include - -/* __ieee754_hypot(x,y) - * - * This a FP only version without any FP->INT conversion. - * It is similar to default C version, making appropriates - * overflow and underflows checks as well scaling when it - * is needed. - */ - -double -__ieee754_hypot (double x, double y) -{ - if ((isinf (x) || isinf (y)) - && !issignaling (x) && !issignaling (y)) - return INFINITY; - if (isnan (x) || isnan (y)) - return x + y; - - x = fabs (x); - y = fabs (y); - - if (y > x) - { - double t = x; - x = y; - y = t; - } - if (y == 0.0) - return x; - - /* if y is higher enough, y * 2^60 might overflow. The tests if - y >= 1.7976931348623157e+308/2^60 (two60factor) and uses the - appropriate check to avoid the overflow exception generation. */ - if (y <= 0x1.fffffffffffffp+963 && x > (y * 0x1p+60)) - return x + y; - - if (x > 0x1p+500) - { - x *= 0x1p-600; - y *= 0x1p-600; - return sqrt (x * x + y * y) / 0x1p-600; - } - if (y < 0x1p-500) - { - if (y <= 0x0.fffffffffffffp-1022) - { - x *= 0x1p+1022; - y *= 0x1p+1022; - double ret = sqrt (x * x + y * y) / 0x1p+1022; - math_check_force_underflow_nonneg (ret); - return ret; - } - else - { - x *= 0x1p+600; - y *= 0x1p+600; - return sqrt (x * x + y * y) / 0x1p+600; - } - } - return sqrt (x * x + y * y); -} -#ifndef __ieee754_hypot -libm_alias_finite (__ieee754_hypot, __hypot) -#endif diff --git a/sysdeps/powerpc/fpu/e_hypotf.c b/sysdeps/powerpc/fpu/e_hypotf.c deleted file mode 100644 index fa201dda51..0000000000 --- a/sysdeps/powerpc/fpu/e_hypotf.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Pythagorean addition using floats - Copyright (C) 2011-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If - not, see . */ - -#include -#include -#include -#include - -/* __ieee754_hypotf(x,y) - - This a FP only version without any FP->INT conversion. - It is similar to default C version, making appropriates - overflow and underflows checks as using double precision - instead of scaling. */ - -#ifdef _ARCH_PWR7 -/* POWER7 isinf and isnan optimizations are fast. */ -# define TEST_INF_NAN(x, y) \ - if ((isinff(x) || isinff(y)) \ - && !issignaling (x) && !issignaling (y)) \ - return INFINITY; \ - if (isnanf(x) || isnanf(y)) \ - return x + y; -# else -/* For POWER6 and below isinf/isnan triggers LHS and PLT calls are - * costly (especially for POWER6). */ -# define GET_TWO_FLOAT_WORD(f1,f2,i1,i2) \ - do { \ - ieee_float_shape_type gf_u1; \ - ieee_float_shape_type gf_u2; \ - gf_u1.value = (f1); \ - gf_u2.value = (f2); \ - (i1) = gf_u1.word & 0x7fffffff; \ - (i2) = gf_u2.word & 0x7fffffff; \ - } while (0) - -# define TEST_INF_NAN(x, y) \ - do { \ - uint32_t hx, hy; \ - GET_TWO_FLOAT_WORD(x, y, hx, hy); \ - if (hy > hx) { \ - uint32_t ht = hx; hx = hy; hy = ht; \ - } \ - if (hx >= 0x7f800000) { \ - if ((hx == 0x7f800000 || hy == 0x7f800000) \ - && !issignaling (x) && !issignaling (y)) \ - return INFINITY; \ - return x + y; \ - } \ - } while (0) -#endif - - -float -__ieee754_hypotf (float x, float y) -{ - TEST_INF_NAN (x, y); - - return sqrt ((double) x * x + (double) y * y); -} -#ifndef __ieee754_hypotf -libm_alias_finite (__ieee754_hypotf, __hypotf) -#endif diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile index 60f2c95532..1de0f9b350 100644 --- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile +++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile @@ -15,8 +15,7 @@ libm-sysdep_routines += s_llrintf-power6 s_llrintf-ppc32 s_llrint-power6 \ s_lrint-ppc32 s_modf-power5+ s_modf-ppc32 \ s_modff-power5+ s_modff-ppc32 s_logbl-power7 \ s_logbl-ppc32 s_logb-power7 s_logb-ppc32 \ - s_logbf-power7 s_logbf-ppc32 e_hypot-power7 \ - e_hypot-ppc32 e_hypotf-power7 e_hypotf-ppc32 + s_logbf-power7 s_logbf-ppc32 CFLAGS-s_llrintf-power6.c += -mcpu=power6 CFLAGS-s_llrintf-ppc32.c += -mcpu=power4 @@ -35,8 +34,6 @@ CFLAGS-s_modff-power5+.c = -mcpu=power5+ CFLAGS-s_logbl-power7.c = -mcpu=power7 CFLAGS-s_logb-power7.c = -mcpu=power7 CFLAGS-s_logbf-power7.c = -mcpu=power7 -CFLAGS-e_hypot-power7.c = -mcpu=power7 -CFLAGS-e_hypotf-power7.c = -mcpu=power7 # These files quiet sNaNs in a way that is optimized away without # -fsignaling-nans. diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c deleted file mode 100644 index 382b4a0b27..0000000000 --- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c +++ /dev/null @@ -1,23 +0,0 @@ -/* __ieee_hypot() POWER7 version. - Copyright (C) 2013-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include - -#define __ieee754_hypot __ieee754_hypot_power7 - -#include diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c deleted file mode 100644 index abb14d5469..0000000000 --- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-ppc32.c +++ /dev/null @@ -1,23 +0,0 @@ -/* __ieee_hypot() PowerPC32 version. - Copyright (C) 2013-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include - -#define __ieee754_hypot __ieee754_hypot_ppc32 - -#include diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c deleted file mode 100644 index a16efa350c..0000000000 --- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Multiple versions of ieee754_hypot. - Copyright (C) 2013-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include "init-arch.h" - -extern __typeof (__ieee754_hypot) __ieee754_hypot_ppc32 attribute_hidden; -extern __typeof (__ieee754_hypot) __ieee754_hypot_power7 attribute_hidden; - -libc_ifunc (__ieee754_hypot, - (hwcap & PPC_FEATURE_ARCH_2_06) - ? __ieee754_hypot_power7 - : __ieee754_hypot_ppc32); - -libm_alias_finite (__ieee754_hypot, __hypot) diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c deleted file mode 100644 index f8a26ff22f..0000000000 --- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c +++ /dev/null @@ -1,23 +0,0 @@ -/* __ieee754_hypot POWER7 version. - Copyright (C) 2013-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include - -#define __ieee754_hypotf __ieee754_hypotf_power7 - -#include diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c deleted file mode 100644 index b13f8c9db2..0000000000 --- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-ppc32.c +++ /dev/null @@ -1,23 +0,0 @@ -/* __ieee_hypot() PowerPC32 version. - Copyright (C) 2013-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include - -#define __ieee754_hypotf __ieee754_hypotf_ppc32 - -#include diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c deleted file mode 100644 index 1e72605db8..0000000000 --- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Multiple versions of ieee754_hypotf. - Copyright (C) 2013-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include -#include -#include "init-arch.h" - -extern __typeof (__ieee754_hypotf) __ieee754_hypotf_ppc32 attribute_hidden; -extern __typeof (__ieee754_hypotf) __ieee754_hypotf_power7 attribute_hidden; - -libc_ifunc (__ieee754_hypotf, - (hwcap & PPC_FEATURE_ARCH_2_06) - ? __ieee754_hypotf_power7 - : __ieee754_hypotf_ppc32); - -libm_alias_finite (__ieee754_hypotf, __hypotf) From patchwork Wed Oct 6 18:05:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 45939 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 518B43858003 for ; Wed, 6 Oct 2021 18:18:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 518B43858003 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1633544330; bh=j6bjTOW5sxPcREQG79wL8rdjsmwAHLReH1LfYm93780=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=rX7sBHvTtpJ6sHLxgmr9s9p0oXqEq5VUnzEuCzraoSgX2UqO0kKdvk2PnHaQ+WnmZ zJOi8UWMecTS/Q+W9JwBjhQRggEUgGJI7OZO2OXub68nqllf/DLdd4XO59k333ZHsg wl67Z6/IJ3eCJ+ingGip6H0Uwrb6psoIzZxCGAq4= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qv1-xf2b.google.com (mail-qv1-xf2b.google.com [IPv6:2607:f8b0:4864:20::f2b]) by sourceware.org (Postfix) with ESMTPS id 1B70F3858410 for ; Wed, 6 Oct 2021 18:15:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1B70F3858410 Received: by mail-qv1-xf2b.google.com with SMTP id o13so2508641qvm.4 for ; Wed, 06 Oct 2021 11:15:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=j6bjTOW5sxPcREQG79wL8rdjsmwAHLReH1LfYm93780=; b=easV8wlOSZBewOBUUM4SBrU1i+epVUL0ArZ5yaQelWsUX1Mk5H//GJx4hzg/g5oRPW Adf2NRCVEe/3NIJfImYSIYff+FxGSnvyeavJedCMImMZxoBVku+flkMKMrcLHmUDSpRW d2Zi/9/N54l4QNKCGW3+OHSICILo/l6SkPZrOZ1O/3+VwkKuebmW1eD7QdWI6MEwOGVM bMV+3dgxzPa2yJTEo5SzRCzU4KSOflPlJ669RLxhAe0zi8U9Qq+0V68JBbYJI6/4zp3d EpKTZX/gqEf9LX6ujo2uxXN7j+lN1w5Ph4dytwzKgbO4xx6CxgJdUGKWu1WuJwsFUQe1 enqA== X-Gm-Message-State: AOAM53342r4Pme01hc/nC0MvIjUoXVH+tHbWnEyJMRywx0lniWAMzqav ByhE4fdhobKoYbb2dXDGz/qaFoWUv+Qg+g== X-Google-Smtp-Source: ABdhPJxESu41BfQR9kgVS/7avkvn1o/yCIhGr8p+asi/fsipzh/J2DsnjsBTSZZmluLYE/dknna0Ng== X-Received: by 2002:a0c:e08c:: with SMTP id l12mr7537711qvk.67.1633544136499; Wed, 06 Oct 2021 11:15:36 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:807a:2ebe:4b13:27bd:f11d]) by smtp.gmail.com with ESMTPSA id 18sm14161168qtz.49.2021.10.06.11.15.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Oct 2021 11:15:36 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH 8/9] i386: Move hypot implementation to C Date: Wed, 6 Oct 2021 15:05:56 -0300 Message-Id: <20211006180557.933826-9-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211006180557.933826-1-adhemerval.zanella@linaro.org> References: <20211006180557.933826-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" The generic hypotf is slight slower, mostly due the tricks the assembly does to optimize the isinf/isnan/issignaling. Results on a Ryzen 5900X with gcc 10.3.1: master: "hypotf": { "workload-random": { "duration": 3.76493e+09, "iterations": 6.8e+07, "reciprocal-throughput": 38.4243, "latency": 72.309, "max-throughput": 2.60252e+07, "min-throughput": 1.38295e+07 } } patched: "hypotf": { "workload-random": { "duration": 3.78098e+09, "iterations": 6.8e+07, "reciprocal-throughput": 28.9206, "latency": 82.2848, "max-throughput": 3.45774e+07, "min-throughput": 1.21529e+07 } } The generic hypot is way slower, since the optimized implementation uses the i386 default excessive precision to issue the operation directly. A similar implementation is provided instead of using the generic implementation: master: "hypot": { "workload-random": { "duration": 3.7452e+09, "iterations": 6.6e+07, "reciprocal-throughput": 40.3203, "latency": 73.1707, "max-throughput": 2.48014e+07, "min-throughput": 1.36667e+07 } } patched: ./benchtests/bench-hypot "hypot": { "workload-random": { "duration": 3.72606e+09, "iterations": 7.6e+07, "reciprocal-throughput": 25.9437, "latency": 72.1104, "max-throughput": 3.8545e+07, "min-throughput": 1.38676e+07 } } Checked on i686-linux-gnu. --- sysdeps/i386/fpu/e_hypot.S | 75 ------------------------------------- sysdeps/i386/fpu/e_hypot.c | 42 +++++++++++++++++++++ sysdeps/i386/fpu/e_hypotf.S | 64 ------------------------------- 3 files changed, 42 insertions(+), 139 deletions(-) delete mode 100644 sysdeps/i386/fpu/e_hypot.S create mode 100644 sysdeps/i386/fpu/e_hypot.c delete mode 100644 sysdeps/i386/fpu/e_hypotf.S diff --git a/sysdeps/i386/fpu/e_hypot.S b/sysdeps/i386/fpu/e_hypot.S deleted file mode 100644 index f2c956b77a..0000000000 --- a/sysdeps/i386/fpu/e_hypot.S +++ /dev/null @@ -1,75 +0,0 @@ -/* Compute the hypothenuse of X and Y. - Copyright (C) 1998-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - -DEFINE_DBL_MIN - -#ifdef PIC -# define MO(op) op##@GOTOFF(%edx) -#else -# define MO(op) op -#endif - - .text -ENTRY(__ieee754_hypot) -#ifdef PIC - LOAD_PIC_REG (dx) -#endif - fldl 4(%esp) // x - fxam - fnstsw - fldl 12(%esp) // y : x - movb %ah, %ch - fxam - fnstsw - movb %ah, %al - orb %ch, %ah - sahf - jc 1f - fmul %st(0) // y * y : x - fxch // x : y * y - fmul %st(0) // x * x : y * y - faddp // x * x + y * y - fsqrt - DBL_NARROW_EVAL_UFLOW_NONNEG -2: ret - - // We have to test whether any of the parameters is Inf. - // In this case the result is infinity. -1: andb $0x45, %al - cmpb $5, %al - je 3f // jump if y is Inf - andb $0x45, %ch - cmpb $5, %ch - jne 4f // jump if x is not Inf - fxch -3: fstp %st(1) - fabs - jmp 2b - -4: testb $1, %al - jnz 5f // y is NaN - fxch -5: fstp %st(1) - jmp 2b - -END(__ieee754_hypot) -libm_alias_finite (__ieee754_hypot, __hypot) diff --git a/sysdeps/i386/fpu/e_hypot.c b/sysdeps/i386/fpu/e_hypot.c new file mode 100644 index 0000000000..4920a8cb49 --- /dev/null +++ b/sysdeps/i386/fpu/e_hypot.c @@ -0,0 +1,42 @@ +/* Euclidean distance function. Double/Binary64 i386 version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include +#include +#include +#include + +/* The i386 allows ot use the default excess of precision to optimize the + hypot implementation, since internal multiplication and sqrt is carried + with 80-bit FP type. */ +double +__ieee754_hypot (double x, double y) +{ + if ((isinf (x) || isinf (y)) + && !issignaling (x) && !issignaling (y)) + return INFINITY; + if (isnan (x) || isnan (y)) + return x + y; + + double r = math_narrow_eval (sqrt (x * x + y * y)); + math_check_force_underflow_nonneg (r); + return r; +} +libm_alias_finite (__ieee754_hypot, __hypot) diff --git a/sysdeps/i386/fpu/e_hypotf.S b/sysdeps/i386/fpu/e_hypotf.S deleted file mode 100644 index cec5d15403..0000000000 --- a/sysdeps/i386/fpu/e_hypotf.S +++ /dev/null @@ -1,64 +0,0 @@ -/* Compute the hypothenuse of X and Y. - Copyright (C) 1998-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - .text -ENTRY(__ieee754_hypotf) - flds 4(%esp) // x - fxam - fnstsw - flds 8(%esp) // y : x - movb %ah, %ch - fxam - fnstsw - movb %ah, %al - orb %ch, %ah - sahf - jc 1f - fmul %st(0) // y * y : x - fxch // x : y * y - fmul %st(0) // x * x : y * y - faddp // x * x + y * y - fsqrt - FLT_NARROW_EVAL -2: ret - - // We have to test whether any of the parameters is Inf. - // In this case the result is infinity. -1: andb $0x45, %al - cmpb $5, %al - je 3f // jump if y is Inf - andb $0x45, %ch - cmpb $5, %ch - jne 4f // jump if x is not Inf - fxch -3: fstp %st(1) - fabs - jmp 2b - -4: testb $1, %al - jnz 5f // y is NaN - fxch -5: fstp %st(1) - jmp 2b - -END(__ieee754_hypotf) -libm_alias_finite (__ieee754_hypotf, __hypotf) From patchwork Wed Oct 6 18:05:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 45940 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3FC933858015 for ; Wed, 6 Oct 2021 18:19:38 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3FC933858015 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1633544378; bh=/vCcZjUMWBBUI89atYLjIks9IDmSqimQI+y/f+mfPo4=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=OfJ6IqN8QBhfhxfWhlBMZackDQM4avVzBxBHXyOsJmxHFw9tWGgMnx9Dzsr0OIeWz ZWSTAdNbtkxoW2bKF6YSnmQ5qefjxjLB0B02OQLCeb2FWiUqEOARB5T5EWPbUPy6jL 8SG2YFdiWVGG759DNqt78vzk/sQlDKKx/R+xrruA= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qk1-x72e.google.com (mail-qk1-x72e.google.com [IPv6:2607:f8b0:4864:20::72e]) by sourceware.org (Postfix) with ESMTPS id 8C3573858012 for ; Wed, 6 Oct 2021 18:15:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8C3573858012 Received: by mail-qk1-x72e.google.com with SMTP id q125so3413756qkd.12 for ; Wed, 06 Oct 2021 11:15:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/vCcZjUMWBBUI89atYLjIks9IDmSqimQI+y/f+mfPo4=; b=BrtRYTmrfWP/I85fKArcdFgEgaJAGvukdbke7ikpPdL97YaWs25tSIS0Odo/aEsBZy 4wUBqJateA+giZfM5rO0iRSJb1WWsTH4Kz28UdYILMl+WJ5Pl9mxp5obcWiMxRVOlVU2 katEkpp+dPYYhPv/Klk1yV0KHqjh0/ImFG6tSQsoY3joiyqtCiDBAtFy08OHpCdf327T X/10tl+8D0sheLNBd28/055SPy8THpI1T+Npdmze7jVtnUhGyQ/DHuP/CC27z+z2gn2e ZqJ0AvyWK0rzGyxnQHRjR7IQ9vh3896gvkagXQEaL4WQyUgSyFoovceKNxSvz1MMfNeD EtFA== X-Gm-Message-State: AOAM530E//rSiA+FeVPNeR4B3JhtPVhQVQpKRsqTyxy+5IyfFhy004OG d+a4jC+aA5LalbIcTxwSo39GglXLE1Nf9Q== X-Google-Smtp-Source: ABdhPJyIOAHPO9BYNIinu6nzxyTG3Re0H+wQdwFtj77G/54Wit+5HgC41U0rlPEsBuRPFpL19sSgeg== X-Received: by 2002:a37:bfc1:: with SMTP id p184mr176095qkf.336.1633544137650; Wed, 06 Oct 2021 11:15:37 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:807a:2ebe:4b13:27bd:f11d]) by smtp.gmail.com with ESMTPSA id 18sm14161168qtz.49.2021.10.06.11.15.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Oct 2021 11:15:37 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH 9/9] math: Remove the error handling wrapper from hypot and hypotf Date: Wed, 6 Oct 2021 15:05:57 -0300 Message-Id: <20211006180557.933826-10-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211006180557.933826-1-adhemerval.zanella@linaro.org> References: <20211006180557.933826-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" The error handling is moved to sysdeps/ieee754 version with no SVID support. The compatibility symbol versions still use the wrapper with SVID error handling around the new code. There is no new symbol version nor compatibility code on !LIBM_SVID_COMPAT targets (e.g. riscv). Only ia64 is unchanged, since it still uses the arch specific __libm_error_region on its implementation. On x86_64 (Ryzen 5900X) with gcc 10.3.1: * master: "hypot": { "workload-random": { "duration": 3.70911e+09, "iterations": 2.44e+08, "reciprocal-throughput": 15.0929, "latency": 15.3097, "max-throughput": 6.62565e+07, "min-throughput": 6.53181e+07 } } *patched: "hypot": { "workload-random": { "duration": 3.72248e+09, "iterations": 3.26e+08, "reciprocal-throughput": 11.1809, "latency": 11.6564, "max-throughput": 8.94384e+07, "min-throughput": 8.57895e+07 } } Checked on x86_64-linux-gnu, i686-linux-gnu, and aarch64-linux-gnu. --- math/Versions | 2 ++ math/w_hypot.c | 8 ++++++ math/w_hypot_compat.c | 13 +++++++--- math/w_hypotf.c | 8 ++++++ math/w_hypotf_compat.c | 6 ++--- sysdeps/i386/fpu/e_hypot.c | 14 +++++++++- sysdeps/ieee754/dbl-64/e_hypot.c | 26 ++++++++++++++++--- sysdeps/ieee754/dbl-64/w_hypot.c | 1 + sysdeps/ieee754/flt-32/e_hypotf.c | 19 +++++++++++--- sysdeps/ieee754/flt-32/w_hypotf.c | 1 + sysdeps/mach/hurd/i386/libm.abilist | 2 ++ sysdeps/mach/hurd/libhurduser.abilist | 0 sysdeps/mach/libmachuser.abilist | 0 sysdeps/unix/sysv/linux/aarch64/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/alpha/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/arm/be/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/arm/le/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/hppa/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/i386/libm.abilist | 2 ++ .../sysv/linux/m68k/coldfire/libm.abilist | 2 ++ .../unix/sysv/linux/m68k/m680x0/libm.abilist | 2 ++ .../sysv/linux/microblaze/be/libm.abilist | 2 ++ .../sysv/linux/microblaze/le/libm.abilist | 2 ++ .../unix/sysv/linux/mips/mips32/libm.abilist | 2 ++ .../unix/sysv/linux/mips/mips64/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/nios2/libm.abilist | 2 ++ .../linux/powerpc/powerpc32/fpu/libm.abilist | 2 ++ .../powerpc/powerpc32/nofpu/libm.abilist | 2 ++ .../linux/powerpc/powerpc64/be/libm.abilist | 2 ++ .../linux/powerpc/powerpc64/le/libm.abilist | 2 ++ .../unix/sysv/linux/s390/s390-32/libm.abilist | 2 ++ .../unix/sysv/linux/s390/s390-64/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/sh/be/libm.abilist | 2 ++ sysdeps/unix/sysv/linux/sh/le/libm.abilist | 2 ++ .../sysv/linux/sparc/sparc32/libm.abilist | 2 ++ .../sysv/linux/sparc/sparc64/libm.abilist | 2 ++ .../unix/sysv/linux/x86_64/64/libm.abilist | 2 ++ .../unix/sysv/linux/x86_64/x32/libm.abilist | 2 ++ 38 files changed, 135 insertions(+), 15 deletions(-) create mode 100644 math/w_hypot.c create mode 100644 math/w_hypotf.c create mode 100644 sysdeps/ieee754/dbl-64/w_hypot.c create mode 100644 sysdeps/ieee754/flt-32/w_hypotf.c delete mode 100644 sysdeps/mach/hurd/libhurduser.abilist delete mode 100644 sysdeps/mach/libmachuser.abilist diff --git a/math/Versions b/math/Versions index a4b5405ddc..fef7a08c3b 100644 --- a/math/Versions +++ b/math/Versions @@ -628,5 +628,7 @@ libm { fminimum_numf64x; fminimum_numf128; fminimum_magf64x; fminimum_magf128; fminimum_mag_numf64x; fminimum_mag_numf128; + # No SVID compatible error handling. + hypotf; hypot; } } diff --git a/math/w_hypot.c b/math/w_hypot.c new file mode 100644 index 0000000000..66f723a896 --- /dev/null +++ b/math/w_hypot.c @@ -0,0 +1,8 @@ +#include +#undef __USE_WRAPPER_TEMPLATE +#define __USE_WRAPPER_TEMPLATE 1 +#undef declare_mgen_alias +#define declare_mgen_alias(a, b) +#include +versioned_symbol (libm, __hypot, hypot, GLIBC_2_35); +libm_alias_float_other (__hypot, hypot) diff --git a/math/w_hypot_compat.c b/math/w_hypot_compat.c index f07039cc51..8ee73078bf 100644 --- a/math/w_hypot_compat.c +++ b/math/w_hypot_compat.c @@ -20,9 +20,9 @@ #include -#if LIBM_SVID_COMPAT +#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_35) double -__hypot (double x, double y) +__hypot_compat (double x, double y) { double z = __ieee754_hypot(x,y); if(__builtin_expect(!isfinite(z), 0) @@ -31,5 +31,12 @@ __hypot (double x, double y) return z; } -libm_alias_double (__hypot, hypot) +compat_symbol (libm, __hypot_compat, hypot, GLIBC_2_0); +# ifdef NO_LONG_DOUBLE +weak_alias (__hypot_compat, hypotl) +# endif +# ifdef LONG_DOUBLE_COMPAT +LONG_DOUBLE_COMPAT_CHOOSE_libm_expl ( + compat_symbol (libm, __hypot_compat, hypotl, FIRST_VERSION_libm_hypotl), ); +# endif #endif diff --git a/math/w_hypotf.c b/math/w_hypotf.c new file mode 100644 index 0000000000..b15a9b06d0 --- /dev/null +++ b/math/w_hypotf.c @@ -0,0 +1,8 @@ +#include +#undef __USE_WRAPPER_TEMPLATE +#define __USE_WRAPPER_TEMPLATE 1 +#undef declare_mgen_alias +#define declare_mgen_alias(a, b) +#include +versioned_symbol (libm, __hypotf, hypotf, GLIBC_2_35); +libm_alias_float_other (__hypotf, hypotf) diff --git a/math/w_hypotf_compat.c b/math/w_hypotf_compat.c index 05898d3420..2bde4553b0 100644 --- a/math/w_hypotf_compat.c +++ b/math/w_hypotf_compat.c @@ -22,9 +22,9 @@ #include -#if LIBM_SVID_COMPAT +#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_35) float -__hypotf(float x, float y) +__hypotf_compat (float x, float y) { float z = __ieee754_hypotf(x,y); if(__builtin_expect(!isfinite(z), 0) @@ -34,5 +34,5 @@ __hypotf(float x, float y) return z; } -libm_alias_float (__hypot, hypot) +compat_symbol (libm, __hypotf_compat, hypotf, GLIBC_2_0); #endif diff --git a/sysdeps/i386/fpu/e_hypot.c b/sysdeps/i386/fpu/e_hypot.c index 4920a8cb49..e16f3bf0ab 100644 --- a/sysdeps/i386/fpu/e_hypot.c +++ b/sysdeps/i386/fpu/e_hypot.c @@ -20,14 +20,17 @@ #include #include #include +#include #include +#include #include +#include /* The i386 allows ot use the default excess of precision to optimize the hypot implementation, since internal multiplication and sqrt is carried with 80-bit FP type. */ double -__ieee754_hypot (double x, double y) +__hypot (double x, double y) { if ((isinf (x) || isinf (y)) && !issignaling (x) && !issignaling (y)) @@ -37,6 +40,15 @@ __ieee754_hypot (double x, double y) double r = math_narrow_eval (sqrt (x * x + y * y)); math_check_force_underflow_nonneg (r); + if (isinf (r)) + __set_errno (ERANGE); return r; } +strong_alias (__hypot, __ieee754_hypot) +#if LIBM_SVID_COMPAT +versioned_symbol (libm, __hypot, hypot, GLIBC_2_35); libm_alias_finite (__ieee754_hypot, __hypot) +libm_alias_double_other (__hypot, hypot) +#else +libm_alias_double (__hypot, hypot) +#endif diff --git a/sysdeps/ieee754/dbl-64/e_hypot.c b/sysdeps/ieee754/dbl-64/e_hypot.c index 231fb0d70f..d20bc3e365 100644 --- a/sysdeps/ieee754/dbl-64/e_hypot.c +++ b/sysdeps/ieee754/dbl-64/e_hypot.c @@ -32,7 +32,18 @@ #include #include #include +#include #include +#include +#include + +static inline double +handle_errno (double r) +{ + if (isinf (r)) + __set_errno (ERANGE); + return r; +} /* sqrt (DBL_EPSILON / 2.0) */ #define SQRT_EPS_DIV_2 0x1.6a09e667f3bcdp-27 @@ -48,7 +59,7 @@ #define SQRT_DBL_MIN 0x1p-511 double -__ieee754_hypot (double x, double y) +__hypot (double x, double y) { if ((isinf (x) || isinf (y)) && !issignaling (x) && !issignaling (y)) @@ -68,7 +79,9 @@ __ieee754_hypot (double x, double y) /* Widely varying operands. The DBL_MIN_THRESHOLD check is used to avoid a spurious underflow from the multiplication. */ if (ax >= DBL_MIN_THRESHOLD && ay <= ax * SQRT_EPS_DIV_2) - return (ay == 0.0) ? ax : math_narrow_eval (ax + DBL_TRUE_MIN); + return (ay == 0.0) + ? ax + : handle_errno (math_narrow_eval (ax + DBL_TRUE_MIN)); double scale = SCALE; if (ax > SQRT_DBL_MAX) @@ -105,8 +118,13 @@ __ieee754_hypot (double x, double y) h -= (t1 + t2) / (2.0 * h); h = math_narrow_eval (h * scale); math_check_force_underflow_nonneg (h); - return h; + return handle_errno (h); } -#ifndef __ieee754_hypot +strong_alias (__hypot, __ieee754_hypot) libm_alias_finite (__ieee754_hypot, __hypot) +#if LIBM_SVID_COMPAT +versioned_symbol (libm, __hypot, hypot, GLIBC_2_35); +libm_alias_double_other (__hypot, hypot) +#else +libm_alias_double (__hypot, hypot) #endif diff --git a/sysdeps/ieee754/dbl-64/w_hypot.c b/sysdeps/ieee754/dbl-64/w_hypot.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/ieee754/dbl-64/w_hypot.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/ieee754/flt-32/e_hypotf.c b/sysdeps/ieee754/flt-32/e_hypotf.c index 6495a91cd4..d73eecca8c 100644 --- a/sysdeps/ieee754/flt-32/e_hypotf.c +++ b/sysdeps/ieee754/flt-32/e_hypotf.c @@ -19,9 +19,12 @@ #include #include #include +#include +#include +#include float -__ieee754_hypotf (float x, float y) +__hypotf (float x, float y) { if ((isinf (x) || isinf (y)) && !issignaling (x) && !issignaling (y)) @@ -29,8 +32,16 @@ __ieee754_hypotf (float x, float y) if (isnan (x) || isnan (y)) return x + y; - return sqrt ((double) x * (double) x + (double) y * (double) y); + float r = sqrt ((double) x * (double) x + (double) y * (double) y); + if (!isfinite (r)) + __set_errno (ERANGE); + return r; } -#ifndef __ieee754_hypotf -libm_alias_finite (__ieee754_hypotf, __hypotf) +strong_alias (__hypotf, __ieee754_hypotf) +#if LIBM_SVID_COMPAT +versioned_symbol (libm, __hypotf, hypotf, GLIBC_2_35); +libm_alias_float_other (__hypot, hypot) +#else +libm_alias_float (__hypot, hypot) #endif +libm_alias_finite (__ieee754_hypotf, __hypotf) diff --git a/sysdeps/ieee754/flt-32/w_hypotf.c b/sysdeps/ieee754/flt-32/w_hypotf.c new file mode 100644 index 0000000000..1cc8931700 --- /dev/null +++ b/sysdeps/ieee754/flt-32/w_hypotf.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist index abf91bd142..8f40ddb150 100644 --- a/sysdeps/mach/hurd/i386/libm.abilist +++ b/sysdeps/mach/hurd/i386/libm.abilist @@ -1179,3 +1179,5 @@ GLIBC_2.35 fminimumf64x F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F diff --git a/sysdeps/mach/hurd/libhurduser.abilist b/sysdeps/mach/hurd/libhurduser.abilist deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/sysdeps/mach/libmachuser.abilist b/sysdeps/mach/libmachuser.abilist deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist index 1cef7d3db7..c2e3c6453e 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist @@ -1144,3 +1144,5 @@ GLIBC_2.35 fminimumf64x F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist index 59d51021fa..4f85b6180f 100644 --- a/sysdeps/unix/sysv/linux/alpha/libm.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist @@ -1201,6 +1201,8 @@ GLIBC_2.35 fminimumf64x F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist index 44666ad7cd..36190add84 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist @@ -531,6 +531,8 @@ GLIBC_2.35 fminimumf64 F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F GLIBC_2.4 _LIB_VERSION D 0x4 GLIBC_2.4 __clog10 F GLIBC_2.4 __clog10f F diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist index 44666ad7cd..36190add84 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist @@ -531,6 +531,8 @@ GLIBC_2.35 fminimumf64 F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F GLIBC_2.4 _LIB_VERSION D 0x4 GLIBC_2.4 __clog10 F GLIBC_2.4 __clog10f F diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist index 35d316a720..b5dd4e851f 100644 --- a/sysdeps/unix/sysv/linux/hppa/libm.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist @@ -842,4 +842,6 @@ GLIBC_2.35 fminimumf64 F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F GLIBC_2.4 exp2l F diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist index ef99b3e104..5d89aaa08e 100644 --- a/sysdeps/unix/sysv/linux/i386/libm.abilist +++ b/sysdeps/unix/sysv/linux/i386/libm.abilist @@ -1186,3 +1186,5 @@ GLIBC_2.35 fminimumf64x F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist index 44666ad7cd..36190add84 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist @@ -531,6 +531,8 @@ GLIBC_2.35 fminimumf64 F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F GLIBC_2.4 _LIB_VERSION D 0x4 GLIBC_2.4 __clog10 F GLIBC_2.4 __clog10f F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist index 58316c96ae..e7cd739a54 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist @@ -882,3 +882,5 @@ GLIBC_2.35 fminimumf64 F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist index b5e5da0272..274ecff630 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist @@ -843,3 +843,5 @@ GLIBC_2.35 fminimumf64 F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist index b5e5da0272..274ecff630 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist @@ -843,3 +843,5 @@ GLIBC_2.35 fminimumf64 F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist index 4113d3170d..08b902118d 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist @@ -842,4 +842,6 @@ GLIBC_2.35 fminimumf64 F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F GLIBC_2.4 exp2l F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist index 18fe9cc57a..09bb3bd75b 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist @@ -1144,3 +1144,5 @@ GLIBC_2.35 fminimumf64x F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist index 3a2b34ecc2..11abbb5668 100644 --- a/sysdeps/unix/sysv/linux/nios2/libm.abilist +++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist @@ -843,3 +843,5 @@ GLIBC_2.35 fminimumf64 F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist index 740cc8f55b..1688809c36 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist @@ -888,6 +888,8 @@ GLIBC_2.35 fminimumf64 F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist index 16fb30566b..e880cebd78 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist @@ -887,6 +887,8 @@ GLIBC_2.35 fminimumf64 F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist index ad4b98c09a..033385dfc1 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist @@ -881,6 +881,8 @@ GLIBC_2.35 fminimumf64 F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist index 955765051c..7923d428bc 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist @@ -1316,3 +1316,5 @@ GLIBC_2.35 fminimumf64x F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist index 1f5bd7754d..9a84163089 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist @@ -1145,6 +1145,8 @@ GLIBC_2.35 fminimumf64x F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist index 0b18481f39..174bde4fa0 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist @@ -1145,6 +1145,8 @@ GLIBC_2.35 fminimumf64x F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist index f525a9e77e..1e1324d667 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist @@ -842,4 +842,6 @@ GLIBC_2.35 fminimumf64 F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F GLIBC_2.4 exp2l F diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist index f525a9e77e..1e1324d667 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist @@ -842,4 +842,6 @@ GLIBC_2.35 fminimumf64 F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F GLIBC_2.4 exp2l F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist index 727d1ce707..217e6eff7f 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist @@ -1152,6 +1152,8 @@ GLIBC_2.35 fminimumf64x F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F GLIBC_2.4 __clog10l F GLIBC_2.4 __finitel F GLIBC_2.4 __fpclassifyl F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist index 0f57574523..6b53b0c59f 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist @@ -1144,3 +1144,5 @@ GLIBC_2.35 fminimumf64x F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist index 574789e061..dbefbc3a1a 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist @@ -1177,3 +1177,5 @@ GLIBC_2.35 fminimumf64x F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist index 1dc89b304d..8001d0f219 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist @@ -1177,3 +1177,5 @@ GLIBC_2.35 fminimumf64x F GLIBC_2.35 fminimuml F GLIBC_2.35 fsqrt F GLIBC_2.35 fsqrtl F +GLIBC_2.35 hypot F +GLIBC_2.35 hypotf F