From patchwork Mon Dec 3 16:18:23 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Burnus X-Patchwork-Id: 203395 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 059C92C007B for ; Tue, 4 Dec 2012 03:18:45 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1355156326; h=Comment: DomainKey-Signature:Received:Received:Received:Received: Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:Sender:Delivered-To; bh=fga001Q 4yo6+RTo/QX2CZq0l98Y=; b=wMWLe8804zEvvvjlVzYFNavwQuDHYMISfFW81us 1IgDegYZivO04BhHFCoK/JyDWdTygD+a8l99l6Z4H+Nyyrt+HbUPUhptIDDROyZ0 EjMS/3hO2kCUIUSyxRV+J2tL1lC5W0HUii1U9lONBw2ZGJb/RL3ss10jDhBzsj62 KCVk= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Message-ID:Date:From:User-Agent:MIME-Version:To:Subject:Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=JSu/G1jIGIPBCTOZmgNyPbZJSGYgRKVMDSEWGiTGXBlI8C6Jt7G0yBddXWmzlA ug/3cvobYZwl2gMMycaJLwCBzJU47ls1AL/B4YZwyw5S7iNwP26tA2LwgI6PZ3gU 6N/tooaaC3Jz0vC0MzMPTXRWxz7mW7mlKD9BU6MwC4rps=; Received: (qmail 14782 invoked by alias); 3 Dec 2012 16:18:37 -0000 Received: (qmail 14734 invoked by uid 22791); 3 Dec 2012 16:18:34 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, RCVD_IN_HOSTKARMA_NO X-Spam-Check-By: sourceware.org Received: from mx01.qsc.de (HELO mx01.qsc.de) (213.148.129.14) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 03 Dec 2012 16:18:25 +0000 Received: from archimedes.net-b.de (port-92-195-66-45.dynamic.qsc.de [92.195.66.45]) by mx01.qsc.de (Postfix) with ESMTP id 0DC743C8C1; Mon, 3 Dec 2012 17:18:23 +0100 (CET) Message-ID: <50BCD0CF.6070907@net-b.de> Date: Mon, 03 Dec 2012 17:18:23 +0100 From: Tobias Burnus User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 MIME-Version: 1.0 To: gcc patches Subject: [libquadmath, patch, committed] Fix exponent reading Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Somehow that got lot when updating the file. I think, we really need a proper test suite - the current quad_{1,2,3}.f90 are a first step, but rather incomplete. Committed as Rev. 194100 after build+regtesting. Tobias Index: libquadmath/ChangeLog =================================================================== --- libquadmath/ChangeLog (Revision 194099) +++ libquadmath/ChangeLog (Arbeitskopie) @@ -1,3 +1,8 @@ +2012-12-03 Tobias Burnus + + * strtod/strtod_l.c (___STRTOF_INTERNAL): Fix exponent + reading. + 2012-11-25 Tobias Burnus PR libquadmath/55462 Index: libquadmath/strtod/strtod_l.c =================================================================== --- libquadmath/strtod/strtod_l.c (Revision 194099) +++ libquadmath/strtod/strtod_l.c (Arbeitskopie) @@ -1005,6 +1005,9 @@ ____STRTOF_INTERNAL (nptr, endptr, group) /* NOTREACHED */ } + exponent *= 10; + exponent += c - L_('0'); + c = *++cp; } while (c >= L_('0') && c <= L_('9')); Index: gcc/testsuite/ChangeLog =================================================================== --- gcc/testsuite/ChangeLog (Revision 194099) +++ gcc/testsuite/ChangeLog (Arbeitskopie) @@ -1,3 +1,7 @@ +2012-12-03 Tobias Burnus + + * gfortran.dg/quad_3.f90: New. + 2012-12-03 Paolo Carlini PR c++/54170 Index: gcc/testsuite/gfortran.dg/quad_3.f90 =================================================================== --- gcc/testsuite/gfortran.dg/quad_3.f90 (Revision 0) +++ gcc/testsuite/gfortran.dg/quad_3.f90 (Arbeitskopie) @@ -0,0 +1,27 @@ +! { dg-do run } +! +! I/O test for REAL(16) +! +! Contributed by Dominique d'Humieres +! +program test_qp + use iso_fortran_env, only: real_kinds + implicit none + integer, parameter :: QP = real_kinds(ubound(real_kinds,dim=1)) + real(kind=qp) :: a,b(2), c + integer :: exponent + character(len=180) :: tmp + + ! Run this only with libquadmath; assume that all those systems + ! have also kind=10. + if (size (real_kinds) >= 4 .and. real_kinds(3) == 10 .and. qp == 16) then + exponent = 4000 + b(:) = huge (1.0_qp)/10.0_qp**exponent +! print *, 'real(16) big value: ', b(1) + write (tmp, *) b + read (tmp, *) a, c +! print *, 'same value read again: ', a, c +! print *, 'difference: looks OK now ', a-b(1) + if (a-b(1) /= 0.0_qp .or. c-b(1) /= 0.0_qp) call abort() + end if +end program test_qp