From owner-freebsd-fortran@FreeBSD.ORG Thu Jul 11 08:09:29 2013 Return-Path: Delivered-To: fortran@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 0D2948A4 for ; Thu, 11 Jul 2013 08:09:29 +0000 (UTC) (envelope-from mexas@bristol.ac.uk) Received: from eu1sys200aog117.obsmtp.com (eu1sys200aog117.obsmtp.com [207.126.144.143]) by mx1.freebsd.org (Postfix) with ESMTP id 607131990 for ; Thu, 11 Jul 2013 08:09:28 +0000 (UTC) Received: from mail-ea0-f176.google.com ([209.85.215.176]) (using TLSv1) by eu1sys200aob117.postini.com ([207.126.147.11]) with SMTP ID DSNKUd5oNwAlEu/lRgrWR5U5xHDjf0qHq3OK@postini.com; Thu, 11 Jul 2013 08:09:28 UTC Received: by mail-ea0-f176.google.com with SMTP id z15so5472243ead.35 for ; Thu, 11 Jul 2013 01:09:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=sender:date:from:message-id:to:subject:cc:reply-to:in-reply-to :x-gm-message-state; bh=jpBK4roiXTRoSN5r4r+TY1rkQnj/VK1dABj9znS9lf4=; b=QRb1bfAKrmaNqoh0Jc+AbNc6UAC7/1pZfsCMQZq83EKByrcBMVKVJkoa2Bwxx9Aqhd 5f0EG9H6n5I/FJrGb11+KjsKjeyH7nUUjVp2xnburvDp2SGueKBMzSQ2pR665jl0nAj/ hQH+e3c5VTm1DjfvnnyGId1xVM2stMqpVsrpAyfkx/Z+E1zD+ENJwCfJGpn/CJijQasD opkhFnMfHDGvcVfIqUbYeuQkQA6olScpDxAiTH15xaNygxgHsYbXfHzYXHN8YVrSRRvn fgJIQfnjFT0PHtW3KGG7/w+dTWjXWPb0/0toKjzOEcSBuAHX/XySQLQOK9xzWi1LlQ9y hMqQ== X-Received: by 10.14.241.5 with SMTP id f5mr40567120eer.131.1373530166885; Thu, 11 Jul 2013 01:09:26 -0700 (PDT) X-Received: by 10.14.241.5 with SMTP id f5mr40567101eer.131.1373530166771; Thu, 11 Jul 2013 01:09:26 -0700 (PDT) Received: from mech-cluster241.men.bris.ac.uk (mech-cluster241.men.bris.ac.uk. [137.222.187.241]) by mx.google.com with ESMTPSA id w43sm67030772eez.6.2013.07.11.01.09.24 for (version=TLSv1.2 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 11 Jul 2013 01:09:25 -0700 (PDT) Sender: Anton Shterenlikht Received: from mech-cluster241.men.bris.ac.uk (localhost [127.0.0.1]) by mech-cluster241.men.bris.ac.uk (8.14.7/8.14.6) with ESMTP id r6B89MR5022262 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 11 Jul 2013 09:09:22 +0100 (BST) (envelope-from mexas@mech-cluster241.men.bris.ac.uk) Received: (from mexas@localhost) by mech-cluster241.men.bris.ac.uk (8.14.7/8.14.6/Submit) id r6B89Mwm022261; Thu, 11 Jul 2013 09:09:22 +0100 (BST) (envelope-from mexas) Date: Thu, 11 Jul 2013 09:09:22 +0100 (BST) From: Anton Shterenlikht Message-Id: <201307110809.r6B89Mwm022261@mech-cluster241.men.bris.ac.uk> To: mexas@bristol.ac.uk, sgk@troutmask.apl.washington.edu Subject: Re: gfortran46: Error: Type of argument 'z' in call to 'dimag' at (1) should be COMPLEX(16), not COMPLEX(8) In-Reply-To: <20130710232741.GA61961@troutmask.apl.washington.edu> X-Gm-Message-State: ALoCoQlb/ucrncHkCFKSoYBJ7EqD2OPnTBqn0akFFLaFNO4USrZpV2PH6kaIppqPVjhd3LP1Z/5qfOhNJc2wPV63ucboMpxQcBzvgv9x8TxpC2UCOrp+A/2H7B6vGJUrro5mfpIb20qeOCEAFjrSEsNU81ZCCQwzmQ== Cc: fortran@freebsd.org X-BeenThere: freebsd-fortran@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: mexas@bristol.ac.uk List-Id: Fortran on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Jul 2013 08:09:29 -0000 From sgk@troutmask.apl.washington.edu Thu Jul 11 02:17:08 2013 On Thu, Jul 11, 2013 at 12:15:28AM +0100, Anton Shterenlikht wrote: > These errors are from french/aster on amd64. > I think I need to rebuld lang/gcc after the > recent updates to binutils, but anyway, > which command line options to gfortran46 > would lead to this error? > > These routines are GNU extensions specifically for complex(8), > e.g.: http://gcc.gnu.org/onlinedocs/gcc-4.6.4/gfortran/AIMAG.html#AIMAG > > Messages de compilation > ======================= > /usr/ports/french/aster/work/aster-full-src-10.8.0/instdir/STA10.8/bibfor/algeline/dcargu.f:34.18: > > IF (DIMAG(C).GT.0.D0) THEN > 1 > Error: Type of argument 'z' in call to 'dimag' at (1) should > be COMPLEX(16), not COMPLEX(8) Need to see the declaration for C. My guess is that it is declared as 'complex c' or 'complex*8 c'. In either case, this is the single precision complex type. The program is using the specific intrinsic function dimag, which expects a double precision complex argument. The correct fixes are to properly declare the variables via Fortran's kind type parameter and to use generic intrinsic functions. $ cat dcargu.f FUNCTION DCARGU(C) IMPLICIT REAL*8 (A-H,O-Z) C----------------------------------------------------------------------- C CONFIGURATION MANAGEMENT OF EDF VERSION C MODIF ALGELINE DATE 14/11/2006 AUTEUR LEBOUVIER F.LEBOUVIER C ====================================================================== C COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG C THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY C IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY C THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR C (AT YOUR OPTION) ANY LATER VERSION. C C THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT C WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF C MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU C GENERAL PUBLIC LICENSE FOR MORE DETAILS. C C YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE C ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, C 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. C ====================================================================== C----------------------------------------------------------------------- C CALCUL DE L'ARGUMENT D'UN NOMBRE COMPLEXE C PAR CONVENTION ON AFFECTE 0.D0 SI C = (0.D0,0.D0) C----------------------------------------------------------------------- C IN : C : NOMBRE COMPLEXE DONT ON VEUT CALCULER L'ARGUMENT C----------------------------------------------------------------------- REAL*8 DCARGU COMPLEX*16 C C----------------------------------------------------------------------- PI = R8PI() C IF (DBLE(C).EQ.0.D0) THEN IF (DIMAG(C).GT.0.D0) THEN DCARGU = PI/2.D0 ELSE IF (DIMAG(C).LT.0.D0) THEN DCARGU = -PI/2.D0 ELSE DCARGU = 0.D0 ENDIF ELSE IF (DBLE(C).GT.0.D0) THEN DCARGU = DBLE(ATAN2(DIMAG(C),DBLE(C))) ELSE IF (DBLE(C).LT.0.D0) THEN DCARGU = DBLE(ATAN2(DIMAG(C),DBLE(C))) + PI ENDIF IF (DCARGU.LT.0.D0) DCARGU = DCARGU + 2.D0*PI C END $ $ gfortran46 -Wall -c dcargu.f $ So my guess is that in the port build, some other compiler options are used that cause the failure. I need to check this. And I've rebuilt binutils, lang/gcc, math/metis-edf (with the proposed patch). Also, french/aster builds fine on ia64 -current. Anton