From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) by sourceware.org (Postfix) with ESMTPS id A6C6A3858C54; Fri, 2 Sep 2022 11:37:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A6C6A3858C54 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wr1-x431.google.com with SMTP id v16so1940861wrm.8; Fri, 02 Sep 2022 04:37:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:cc:date:message-id:subject:mime-version:from:from:to:cc:subject :date; bh=pCVy4ZkXqzhU6k1SbBM7Yv2mA3Gsxbkh5Fz6Mi7OdTQ=; b=H/comcPykoQxAghYJnMhAzuxIKTGGQ4Me2qrlAn/Y+GNNakCtN01VcJ0MEIgGmGq/K 3hIuJFdhbfgb4G0PR11aY/H8zI8EDwmO0Mztno8PBO9JustyqWqfhpTR+/0f6HmuNLBq +pa85Nu/cG+aRB2EdhMOZA82t+kr+t7MvlgNPhgouGY5wwrsarscjgs387iRMgwNHi4p 8G7HqhBwrmAJLHPG5VUfw3W3tqfoIzEvSGrOap/N+bnbJ6cp3MvlcS4ibLF5xDGvgwDb 5OgpUY/aqk+RWucUgTGYs30LC95xlHtmZoHG0AQzS/KdpcY2YnD1/2EyYaSwAEZGoTA6 Bglg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:cc:date:message-id:subject:mime-version:from:x-gm-message-state :from:to:cc:subject:date; bh=pCVy4ZkXqzhU6k1SbBM7Yv2mA3Gsxbkh5Fz6Mi7OdTQ=; b=0r/Iud10ZJG3Ufa0cRODJrS3tex6vF1OHM7M49aqJGzYfARr2SiaIHof3uLSvjdmeU WxGCqlaVU7lgSkT/3/zKVuO2JSpt83OTF0zC0gP6CjwQfKJOD+KSy74mKHWI7tt2pb/Q PBSPAKmJgWZoq430pfhSl3nmQWefoPe0BnwPX1NRqFhOauGcMi76B+PhYl5xiocizWjN 4hbeDPZ74E3MjEkcrB8uxra6+/pARcl5LNEVjxksu092qTLr5Qt2sDQ977gEFvQLmIsk YCd50pa+IwHCxgSuPkBytyrhv1CQzCyrcPb1Nyo6lcoeHeB/63YltKni59zDm07Io6Zw QBnw== X-Gm-Message-State: ACgBeo2dyT+jea7RV+/2RpiB+5fO/crzza1rDH0fueqtjnsogEHS2wcP BOznE5n2xsaj/dWJxsqtKXiGkNmTFZH5rg== X-Google-Smtp-Source: AA6agR7ORm5typE145bg17Fgbe3jDhl0jQkSKdvXY5btAWa1v+yhrGf5jfvC26Md2mx5n2rXYyC9JA== X-Received: by 2002:adf:f3cc:0:b0:226:e65e:3d62 with SMTP id g12-20020adff3cc000000b00226e65e3d62mr9595685wrp.351.1662118663897; Fri, 02 Sep 2022 04:37:43 -0700 (PDT) Received: from smtpclient.apple ([2a01:e34:ec28:8cb0:4043:c6cc:4e14:1048]) by smtp.gmail.com with ESMTPSA id f25-20020a1c6a19000000b003a840690609sm8895273wmc.36.2022.09.02.04.37.42 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 02 Sep 2022 04:37:43 -0700 (PDT) From: FX Content-Type: multipart/mixed; boundary="Apple-Mail=_4DB6927B-43F3-40D6-B5B0-83B17AB847FF" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\)) Subject: [PATCH] Fortran: add IEEE_QUIET_* and IEEE_SIGNALING_* comparisons Message-Id: <4E0DC1F3-FE18-4C6A-A767-E03A1BA6FCC6@gmail.com> Date: Fri, 2 Sep 2022 13:37:41 +0200 Cc: gcc-patches@gcc.gnu.org To: Fortran X-Mailer: Apple Mail (2.3696.120.41.1.1) X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --Apple-Mail=_4DB6927B-43F3-40D6-B5B0-83B17AB847FF Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Hi, These operations were added to Fortran 2018, and correspond to = well-defined IEEE comparison operations, with defined signaling = semantics for NaNs. All are implemented in terms of GCC expressions and = built-ins, with no library support needed. Bootstrapped and regtested on x86_64-linux, both 32- and 64-bit. Depends = on a patch currently under review for the middle-end = (https://gcc.gnu.org/pipermail/gcc-patches/2022-September/600840.html). OK to commit? FX --Apple-Mail=_4DB6927B-43F3-40D6-B5B0-83B17AB847FF Content-Disposition: attachment; filename=0001-Fortran-add-IEEE_QUIET_-and-IEEE_SIGNALING_-comparis.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0001-Fortran-add-IEEE_QUIET_-and-IEEE_SIGNALING_-comparis.patch" Content-Transfer-Encoding: quoted-printable =46rom=20525d068da6625ba8cfd15379b84a609b5a692233=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Francois-Xavier=20Coudert=20= =0ADate:=20Fri,=202=20Sep=202022=2013:27:38=20= +0200=0ASubject:=20[PATCH]=20Fortran:=20add=20IEEE_QUIET_*=20and=20= IEEE_SIGNALING_*=20comparisons=0A=0AThose=20operations=20were=20added=20= to=20Fortran=202018,=20and=20correspond=20to=0Awell-defined=20IEEE=20= comparison=20operations,=20with=20defined=20signaling=0Asemantics=20for=20= NaNs.=20All=20are=20implemented=20in=20terms=20of=20GCC=20expressions=20= and=0Abuilt-ins,=20with=20no=20library=20support=20needed.=0A=0A= gcc/fortran/=0A=0A=09*=20f95-lang.cc=20(gfc_init_builtin_functions):=20= Add=20__builtin_iseqsig.=0A=09*=20trans-intrinsic.cc=20= (conv_intrinsic_ieee_comparison):=20New=0A=09function.=0A=09= (gfc_conv_ieee_arithmetic_function):=20Handle=20IEEE=20comparisons.=0A=0A= gcc/testsuite/=0A=0A=09*=20gfortran.dg/ieee/comparisons_1.f90:=20New=20= test.=0A=09*=20gfortran.dg/ieee/comparisons_2.f90:=20New=20test.=0A=0A= libgfortran/=0A=09*=20ieee/ieee_arithmetic.F90:=20Add=20IEEE_QUIET_*=20= and=0A=09IEEE_SIGNALING_*=20functions.=0A---=0A=20= gcc/fortran/f95-lang.cc=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20|=20=20=202=20+=0A=20gcc/fortran/trans-intrinsic.cc=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20=2091=20++++++=0A=20= .../gfortran.dg/ieee/comparisons_1.f90=20=20=20=20=20=20=20=20|=20282=20= ++++++++++++++++++=0A=20.../gfortran.dg/ieee/comparisons_2.f90=20=20=20=20= =20=20=20=20|=20282=20++++++++++++++++++=0A=20= libgfortran/ieee/ieee_arithmetic.F90=20=20=20=20=20=20=20=20=20=20|=20=20= 69=20+++++=0A=205=20files=20changed,=20726=20insertions(+)=0A=20create=20= mode=20100644=20gcc/testsuite/gfortran.dg/ieee/comparisons_1.f90=0A=20= create=20mode=20100644=20= gcc/testsuite/gfortran.dg/ieee/comparisons_2.f90=0A=0Adiff=20--git=20= a/gcc/fortran/f95-lang.cc=20b/gcc/fortran/f95-lang.cc=0Aindex=20= 10ac8a95b87..361881d72c0=20100644=0A---=20a/gcc/fortran/f95-lang.cc=0A= +++=20b/gcc/fortran/f95-lang.cc=0A@@=20-1033,6=20+1033,8=20@@=20= gfc_init_builtin_functions=20(void)=0A=20=09=09=20=20=20=20=20=20= ATTR_CONST_NOTHROW_LEAF_LIST);=0A=20=20=20gfc_define_builtin=20= ("__builtin_isunordered",=20ftype,=20BUILT_IN_ISUNORDERED,=0A=20=09=09=20= =20=20=20=20=20"__builtin_isunordered",=20ATTR_CONST_NOTHROW_LEAF_LIST);=0A= +=20=20gfc_define_builtin=20("__builtin_iseqsig",=20ftype,=20= BUILT_IN_ISEQSIG,=0A+=09=09=20=20=20=20=20=20"__builtin_iseqsig",=20= ATTR_CONST_NOTHROW_LEAF_LIST);=0A=20=0A=20=0A=20#define=20= DEF_PRIMITIVE_TYPE(ENUM,=20VALUE)=20\=0Adiff=20--git=20= a/gcc/fortran/trans-intrinsic.cc=20b/gcc/fortran/trans-intrinsic.cc=0A= index=20ec116fff26e..4cb54baf5d2=20100644=0A---=20= a/gcc/fortran/trans-intrinsic.cc=0A+++=20= b/gcc/fortran/trans-intrinsic.cc=0A@@=20-10207,6=20+10207,93=20@@=20= conv_intrinsic_ieee_value=20(gfc_se=20*se,=20gfc_expr=20*expr)=0A=20}=0A=20= =0A=20=0A+/*=20Generate=20code=20for=20comparison=20functions=20= IEEE_QUIET_*=20and=0A+=20=20=20IEEE_SIGNALING_*.=20=20*/=0A+=0A+static=20= void=0A+conv_intrinsic_ieee_comparison=20(gfc_se=20*=20se,=20gfc_expr=20= *=20expr,=20int=20signaling,=0A+=09=09=09=09const=20char=20*name)=0A+{=0A= +=20=20tree=20args[2];=0A+=20=20tree=20arg1,=20arg2,=20res;=0A+=0A+=20=20= /*=20Evaluate=20arguments=20only=20once.=20=20*/=0A+=20=20= conv_ieee_function_args=20(se,=20expr,=20args,=202);=0A+=20=20arg1=20=3D=20= gfc_evaluate_now=20(args[0],=20&se->pre);=0A+=20=20arg2=20=3D=20= gfc_evaluate_now=20(args[1],=20&se->pre);=0A+=0A+=20=20if=20(startswith=20= (name,=20"eq"))=0A+=20=20=20=20{=0A+=20=20=20=20=20=20if=20(signaling)=0A= +=09res=20=3D=20build_call_expr_loc=20(input_location,=0A+=09=09=09=09=20= =20=20builtin_decl_explicit=20(BUILT_IN_ISEQSIG),=0A+=09=09=09=09=20=20=20= 2,=20arg1,=20arg2);=0A+=20=20=20=20=20=20else=0A+=09res=20=3D=20= fold_build2_loc=20(input_location,=20EQ_EXPR,=20logical_type_node,=0A+=09= =09=09=20=20=20=20=20=20=20arg1,=20arg2);=0A+=20=20=20=20}=0A+=20=20else=20= if=20(startswith=20(name,=20"ne"))=0A+=20=20=20=20{=0A+=20=20=20=20=20=20= if=20(signaling)=0A+=09{=0A+=09=20=20res=20=3D=20build_call_expr_loc=20= (input_location,=0A+=09=09=09=09=20=20=20=20=20builtin_decl_explicit=20= (BUILT_IN_ISEQSIG),=0A+=09=09=09=09=20=20=20=20=202,=20arg1,=20arg2);=0A= +=09=20=20res=20=3D=20fold_build1_loc=20(input_location,=20= TRUTH_NOT_EXPR,=0A+=09=09=09=09=20logical_type_node,=20res);=0A+=09}=0A+=20= =20=20=20=20=20else=0A+=09res=20=3D=20fold_build2_loc=20(input_location,=20= NE_EXPR,=20logical_type_node,=0A+=09=09=09=20=20=20=20=20=20=20arg1,=20= arg2);=0A+=20=20=20=20}=0A+=20=20else=20if=20(startswith=20(name,=20= "ge"))=0A+=20=20=20=20{=0A+=20=20=20=20=20=20if=20(signaling)=0A+=09res=20= =3D=20fold_build2_loc=20(input_location,=20GE_EXPR,=20logical_type_node,=0A= +=09=09=09=20=20=20=20=20=20=20arg1,=20arg2);=0A+=20=20=20=20=20=20else=0A= +=09res=20=3D=20build_call_expr_loc=20(input_location,=0A+=09=09=09=09=20= =20=20builtin_decl_explicit=20(BUILT_IN_ISGREATEREQUAL),=0A+=09=09=09=09=20= =20=202,=20arg1,=20arg2);=0A+=20=20=20=20}=0A+=20=20else=20if=20= (startswith=20(name,=20"gt"))=0A+=20=20=20=20{=0A+=20=20=20=20=20=20if=20= (signaling)=0A+=09res=20=3D=20fold_build2_loc=20(input_location,=20= GT_EXPR,=20logical_type_node,=0A+=09=09=09=20=20=20=20=20=20=20arg1,=20= arg2);=0A+=20=20=20=20=20=20else=0A+=09res=20=3D=20build_call_expr_loc=20= (input_location,=0A+=09=09=09=09=20=20=20builtin_decl_explicit=20= (BUILT_IN_ISGREATER),=0A+=09=09=09=09=20=20=202,=20arg1,=20arg2);=0A+=20=20= =20=20}=0A+=20=20else=20if=20(startswith=20(name,=20"le"))=0A+=20=20=20=20= {=0A+=20=20=20=20=20=20if=20(signaling)=0A+=09res=20=3D=20= fold_build2_loc=20(input_location,=20LE_EXPR,=20logical_type_node,=0A+=09= =09=09=20=20=20=20=20=20=20arg1,=20arg2);=0A+=20=20=20=20=20=20else=0A+=09= res=20=3D=20build_call_expr_loc=20(input_location,=0A+=09=09=09=09=20=20=20= builtin_decl_explicit=20(BUILT_IN_ISLESSEQUAL),=0A+=09=09=09=09=20=20=20= 2,=20arg1,=20arg2);=0A+=20=20=20=20}=0A+=20=20else=20if=20(startswith=20= (name,=20"lt"))=0A+=20=20=20=20{=0A+=20=20=20=20=20=20if=20(signaling)=0A= +=09res=20=3D=20fold_build2_loc=20(input_location,=20LT_EXPR,=20= logical_type_node,=0A+=09=09=09=20=20=20=20=20=20=20arg1,=20arg2);=0A+=20= =20=20=20=20=20else=0A+=09res=20=3D=20build_call_expr_loc=20= (input_location,=0A+=09=09=09=09=20=20=20builtin_decl_explicit=20= (BUILT_IN_ISLESS),=0A+=09=09=09=09=20=20=202,=20arg1,=20arg2);=0A+=20=20=20= =20}=0A+=20=20else=0A+=20=20=20=20gcc_unreachable=20();=0A+=0A+=20=20= se->expr=20=3D=20fold_convert=20(gfc_typenode_for_spec=20(&expr->ts),=20= res);=0A+}=0A+=0A+=0A+=0A=20/*=20Generate=20code=20for=20an=20intrinsic=20= function=20from=20the=20IEEE_ARITHMETIC=0A=20=20=20=20module.=20=20*/=0A=20= =0A@@=20-10241,6=20+10328,10=20@@=20gfc_conv_ieee_arithmetic_function=20= (gfc_se=20*=20se,=20gfc_expr=20*=20expr)=0A=20=20=20=20=20= conv_intrinsic_ieee_class=20(se,=20expr);=0A=20=20=20else=20if=20= (startswith=20(name,=20"ieee_value_")=20&&=20ISDIGIT=20(name[11]))=0A=20=20= =20=20=20conv_intrinsic_ieee_value=20(se,=20expr);=0A+=20=20else=20if=20= (startswith=20(name,=20"_gfortran_ieee_quiet_"))=0A+=20=20=20=20= conv_intrinsic_ieee_comparison=20(se,=20expr,=200,=20name=20+=2021);=0A+=20= =20else=20if=20(startswith=20(name,=20"_gfortran_ieee_signaling_"))=0A+=20= =20=20=20conv_intrinsic_ieee_comparison=20(se,=20expr,=201,=20name=20+=20= 25);=0A=20=20=20else=0A=20=20=20=20=20/*=20It=20is=20not=20among=20the=20= functions=20we=20translate=20directly.=20=20We=20return=0A=20=20=20=20=20= =20=20=20false,=20so=20a=20library=20function=20call=20is=20emitted.=20=20= */=0Adiff=20--git=20a/gcc/testsuite/gfortran.dg/ieee/comparisons_1.f90=20= b/gcc/testsuite/gfortran.dg/ieee/comparisons_1.f90=0Anew=20file=20mode=20= 100644=0Aindex=2000000000000..8e166ec234c=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gfortran.dg/ieee/comparisons_1.f90=0A@@=20-0,0=20+1,282=20= @@=0A+!=20{=20dg-do=20run=20}=0A+program=20foo=0A+=20=20=20use=20= ieee_arithmetic=0A+=20=20=20use=20iso_fortran_env=0A+=20=20=20implicit=20= none=0A+=0A+=20=20=20!=20This=20allows=20us=20to=20test=20REAL128=20if=20= it=20exists,=20and=20still=20compile=0A+=20=20=20!=20on=20platforms=20= were=20it=20is=20not=20present=0A+=20=20=20!=20= https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D89639=0A+=20=20=20= integer,=20parameter=20::=20large=20=3D=20merge(real128,=20real64,=20= real128=20>=200)=0A+=0A+=20=20=20real=20::=20rnan,=20rinf=0A+=20=20=20= double=20precision=20::=20dnan,=20dinf=0A+=20=20=20real(kind=3Dlarge)=20= ::=20lnan,=20linf=0A+=0A+=20=20=20rinf=20=3D=20ieee_value(0.,=20= ieee_positive_inf)=0A+=20=20=20rnan=20=3D=20ieee_value(0.,=20= ieee_quiet_nan)=0A+=0A+=20=20=20dinf=20=3D=20ieee_value(0.d0,=20= ieee_positive_inf)=0A+=20=20=20dnan=20=3D=20ieee_value(0.d0,=20= ieee_quiet_nan)=0A+=0A+=20=20=20linf=20=3D=20ieee_value(0._large,=20= ieee_positive_inf)=0A+=20=20=20lnan=20=3D=20ieee_value(0._large,=20= ieee_quiet_nan)=0A+=0A+=20=20=20if=20(.not.=20ieee_quiet_eq=20(0.,=20= 0.))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_quiet_eq=20(0.,=20= -0.))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_quiet_eq=20(1.,=20= 1.))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_quiet_eq=20(rinf,=20= rinf))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_quiet_eq=20(-rinf,=20= -rinf))=20call=20abort=0A+=20=20=20if=20(ieee_quiet_eq=20(rnan,=20rnan))=20= call=20abort=0A+=20=20=20if=20(ieee_quiet_eq=20(0.,=201.))=20call=20= abort=0A+=20=20=20if=20(ieee_quiet_eq=20(0.,=20-1.))=20call=20abort=0A+=20= =20=20if=20(ieee_quiet_eq=20(0.,=20rnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_eq=20(1.,=20rnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_eq=20(0.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_eq=20(1.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_eq=20(rinf,=20rnan))=20call=20abort=0A+=0A+=20=20=20if=20= (.not.=20ieee_quiet_eq=20(0.d0,=200.d0))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_eq=20(0.d0,=20-0.d0))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_eq=20(1.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_eq=20(dinf,=20dinf))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_eq=20(-dinf,=20-dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_eq=20(dnan,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_eq=20(0.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_eq=20(0.d0,=20-1.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_eq=20(0.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_eq=20(1.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_eq=20(0.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_eq=20(1.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_eq=20(dinf,=20dnan))=20call=20abort=0A+=0A+=20=20=20if=20= (.not.=20ieee_quiet_eq=20(0._large,=200._large))=20call=20abort=0A+=20=20= =20if=20(.not.=20ieee_quiet_eq=20(0._large,=20-0._large))=20call=20abort=0A= +=20=20=20if=20(.not.=20ieee_quiet_eq=20(1._large,=201._large))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_quiet_eq=20(linf,=20linf))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_quiet_eq=20(-linf,=20-linf))=20call=20= abort=0A+=20=20=20if=20(ieee_quiet_eq=20(lnan,=20lnan))=20call=20abort=0A= +=20=20=20if=20(ieee_quiet_eq=20(0._large,=201._large))=20call=20abort=0A= +=20=20=20if=20(ieee_quiet_eq=20(0._large,=20-1._large))=20call=20abort=0A= +=20=20=20if=20(ieee_quiet_eq=20(0._large,=20lnan))=20call=20abort=0A+=20= =20=20if=20(ieee_quiet_eq=20(1._large,=20lnan))=20call=20abort=0A+=20=20=20= if=20(ieee_quiet_eq=20(0._large,=20linf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_eq=20(1._large,=20linf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_eq=20(linf,=20lnan))=20call=20abort=0A+=0A+=0A+=20=20=20if=20= (ieee_quiet_ne=20(0.,=200.))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ne=20(0.,=20-0.))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ne=20(1.,=201.))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ne=20(rinf,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ne=20(-rinf,=20-rinf))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(rnan,=20rnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(0.,=201.))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(0.,=20-1.))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(0.,=20rnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(1.,=20rnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(0.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(1.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(rinf,=20rnan))=20call=20abort=0A+=0A+=20=20=20= if=20(ieee_quiet_ne=20(0.d0,=200.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ne=20(0.d0,=20-0.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ne=20(1.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ne=20(dinf,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ne=20(-dinf,=20-dinf))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(dnan,=20dnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(0.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(0.d0,=20-1.d0))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(0.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(1.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(0.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(1.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(dinf,=20dnan))=20call=20abort=0A+=0A+=20=20=20= if=20(ieee_quiet_ne=20(0._large,=200._large))=20call=20abort=0A+=20=20=20= if=20(ieee_quiet_ne=20(0._large,=20-0._large))=20call=20abort=0A+=20=20=20= if=20(ieee_quiet_ne=20(1._large,=201._large))=20call=20abort=0A+=20=20=20= if=20(ieee_quiet_ne=20(linf,=20linf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ne=20(-linf,=20-linf))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(lnan,=20lnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ne=20(0._large,=201._large))=20call=20abort=0A+=20=20= =20if=20(.not.=20ieee_quiet_ne=20(0._large,=20-1._large))=20call=20abort=0A= +=20=20=20if=20(.not.=20ieee_quiet_ne=20(0._large,=20lnan))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_quiet_ne=20(1._large,=20lnan))=20= call=20abort=0A+=20=20=20if=20(.not.=20ieee_quiet_ne=20(0._large,=20= linf))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_quiet_ne=20= (1._large,=20linf))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_ne=20(linf,=20lnan))=20call=20abort=0A+=0A+=0A+=20=20=20if=20= (.not.=20ieee_quiet_le=20(0.,=200.))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_le=20(0.,=20-0.))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_le=20(1.,=201.))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_le=20(rinf,=20rinf))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_le=20(-rinf,=20-rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_le=20(rnan,=20rnan))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_le=20(0.,=201.))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_le=20(0.,=20-1.))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_le=20(0.,=20rnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_le=20(1.,=20rnan))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_le=20(0.,=20rinf))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_le=20(1.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_le=20(rinf,=20rnan))=20call=20abort=0A+=0A+=20=20=20if=20= (.not.=20ieee_quiet_le=20(0.d0,=200.d0))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_le=20(0.d0,=20-0.d0))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_le=20(1.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_le=20(dinf,=20dinf))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_le=20(-dinf,=20-dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_le=20(dnan,=20dnan))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_le=20(0.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_le=20(0.d0,=20-1.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_le=20(0.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_le=20(1.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_le=20(0.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_le=20(1.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_le=20(dinf,=20dnan))=20call=20abort=0A+=0A+=20=20=20if=20= (.not.=20ieee_quiet_le=20(0._large,=200._large))=20call=20abort=0A+=20=20= =20if=20(.not.=20ieee_quiet_le=20(0._large,=20-0._large))=20call=20abort=0A= +=20=20=20if=20(.not.=20ieee_quiet_le=20(1._large,=201._large))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_quiet_le=20(linf,=20linf))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_quiet_le=20(-linf,=20-linf))=20call=20= abort=0A+=20=20=20if=20(ieee_quiet_le=20(lnan,=20lnan))=20call=20abort=0A= +=20=20=20if=20(.not.=20ieee_quiet_le=20(0._large,=201._large))=20call=20= abort=0A+=20=20=20if=20(ieee_quiet_le=20(0._large,=20-1._large))=20call=20= abort=0A+=20=20=20if=20(ieee_quiet_le=20(0._large,=20lnan))=20call=20= abort=0A+=20=20=20if=20(ieee_quiet_le=20(1._large,=20lnan))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_quiet_le=20(0._large,=20linf))=20= call=20abort=0A+=20=20=20if=20(.not.=20ieee_quiet_le=20(1._large,=20= linf))=20call=20abort=0A+=20=20=20if=20(ieee_quiet_le=20(linf,=20lnan))=20= call=20abort=0A+=0A+=0A+=20=20=20if=20(.not.=20ieee_quiet_ge=20(0.,=20= 0.))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_quiet_ge=20(0.,=20= -0.))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_quiet_ge=20(1.,=20= 1.))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_quiet_ge=20(rinf,=20= rinf))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_quiet_ge=20(-rinf,=20= -rinf))=20call=20abort=0A+=20=20=20if=20(ieee_quiet_ge=20(rnan,=20rnan))=20= call=20abort=0A+=20=20=20if=20(ieee_quiet_ge=20(0.,=201.))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_quiet_ge=20(0.,=20-1.))=20call=20= abort=0A+=20=20=20if=20(ieee_quiet_ge=20(0.,=20rnan))=20call=20abort=0A+=20= =20=20if=20(ieee_quiet_ge=20(1.,=20rnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ge=20(0.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ge=20(1.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ge=20(rinf,=20rnan))=20call=20abort=0A+=0A+=20=20=20if=20= (.not.=20ieee_quiet_ge=20(0.d0,=200.d0))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ge=20(0.d0,=20-0.d0))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ge=20(1.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ge=20(dinf,=20dinf))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_ge=20(-dinf,=20-dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ge=20(dnan,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ge=20(0.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_ge=20(0.d0,=20-1.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ge=20(0.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ge=20(1.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ge=20(0.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ge=20(1.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_ge=20(dinf,=20dnan))=20call=20abort=0A+=0A+=20=20=20if=20= (.not.=20ieee_quiet_ge=20(0._large,=200._large))=20call=20abort=0A+=20=20= =20if=20(.not.=20ieee_quiet_ge=20(0._large,=20-0._large))=20call=20abort=0A= +=20=20=20if=20(.not.=20ieee_quiet_ge=20(1._large,=201._large))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_quiet_ge=20(linf,=20linf))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_quiet_ge=20(-linf,=20-linf))=20call=20= abort=0A+=20=20=20if=20(ieee_quiet_ge=20(lnan,=20lnan))=20call=20abort=0A= +=20=20=20if=20(ieee_quiet_ge=20(0._large,=201._large))=20call=20abort=0A= +=20=20=20if=20(.not.=20ieee_quiet_ge=20(0._large,=20-1._large))=20call=20= abort=0A+=20=20=20if=20(ieee_quiet_ge=20(0._large,=20lnan))=20call=20= abort=0A+=20=20=20if=20(ieee_quiet_ge=20(1._large,=20lnan))=20call=20= abort=0A+=20=20=20if=20(ieee_quiet_ge=20(0._large,=20linf))=20call=20= abort=0A+=20=20=20if=20(ieee_quiet_ge=20(1._large,=20linf))=20call=20= abort=0A+=20=20=20if=20(ieee_quiet_ge=20(linf,=20lnan))=20call=20abort=0A= +=0A+=0A+=20=20=20if=20(ieee_quiet_lt=20(0.,=200.))=20call=20abort=0A+=20= =20=20if=20(ieee_quiet_lt=20(0.,=20-0.))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(1.,=201.))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(rinf,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(-rinf,=20-rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(rnan,=20rnan))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_lt=20(0.,=201.))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(0.,=20-1.))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(0.,=20rnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(1.,=20rnan))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_lt=20(0.,=20rinf))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_lt=20(1.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(rinf,=20rnan))=20call=20abort=0A+=0A+=20=20=20if=20= (ieee_quiet_lt=20(0.d0,=200.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(0.d0,=20-0.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(1.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(dinf,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(-dinf,=20-dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(dnan,=20dnan))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_lt=20(0.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(0.d0,=20-1.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(0.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(1.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_lt=20(0.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_lt=20(1.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(dinf,=20dnan))=20call=20abort=0A+=0A+=20=20=20if=20= (ieee_quiet_lt=20(0._large,=200._large))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(0._large,=20-0._large))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(1._large,=201._large))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(linf,=20linf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(-linf,=20-linf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(lnan,=20lnan))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_lt=20(0._large,=201._large))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(0._large,=20-1._large))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(0._large,=20lnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_lt=20(1._large,=20lnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_lt=20(0._large,=20linf))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_quiet_lt=20(1._large,=20linf))=20call=20abort=0A+=20=20= =20if=20(ieee_quiet_lt=20(linf,=20lnan))=20call=20abort=0A+=0A+=0A+=20=20= =20if=20(ieee_quiet_gt=20(0.,=200.))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(0.,=20-0.))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(1.,=201.))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(rinf,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(-rinf,=20-rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(rnan,=20rnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(0.,=201.))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_gt=20(0.,=20-1.))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(0.,=20rnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(1.,=20rnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(0.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(1.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(rinf,=20rnan))=20call=20abort=0A+=0A+=20=20=20if=20= (ieee_quiet_gt=20(0.d0,=200.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(0.d0,=20-0.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(1.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(dinf,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(-dinf,=20-dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(dnan,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(0.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_quiet_gt=20(0.d0,=20-1.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(0.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(1.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(0.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(1.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(dinf,=20dnan))=20call=20abort=0A+=0A+=20=20=20if=20= (ieee_quiet_gt=20(0._large,=200._large))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(0._large,=20-0._large))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(1._large,=201._large))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(linf,=20linf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(-linf,=20-linf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(lnan,=20lnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(0._large,=201._large))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_quiet_gt=20(0._large,=20-1._large))=20call=20abort=0A+=20=20= =20if=20(ieee_quiet_gt=20(0._large,=20lnan))=20call=20abort=0A+=20=20=20= if=20(ieee_quiet_gt=20(1._large,=20lnan))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(0._large,=20linf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(1._large,=20linf))=20call=20abort=0A+=20=20=20if=20= (ieee_quiet_gt=20(linf,=20lnan))=20call=20abort=0A+=0A+end=20program=20= foo=0Adiff=20--git=20a/gcc/testsuite/gfortran.dg/ieee/comparisons_2.f90=20= b/gcc/testsuite/gfortran.dg/ieee/comparisons_2.f90=0Anew=20file=20mode=20= 100644=0Aindex=2000000000000..788073f34a9=0A---=20/dev/null=0A+++=20= b/gcc/testsuite/gfortran.dg/ieee/comparisons_2.f90=0A@@=20-0,0=20+1,282=20= @@=0A+!=20{=20dg-do=20run=20}=0A+program=20foo=0A+=20=20=20use=20= ieee_arithmetic=0A+=20=20=20use=20iso_fortran_env=0A+=20=20=20implicit=20= none=0A+=0A+=20=20=20!=20This=20allows=20us=20to=20test=20REAL128=20if=20= it=20exists,=20and=20still=20compile=0A+=20=20=20!=20on=20platforms=20= were=20it=20is=20not=20present=0A+=20=20=20!=20= https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D89639=0A+=20=20=20= integer,=20parameter=20::=20large=20=3D=20merge(real128,=20real64,=20= real128=20>=200)=0A+=0A+=20=20=20real=20::=20rnan,=20rinf=0A+=20=20=20= double=20precision=20::=20dnan,=20dinf=0A+=20=20=20real(kind=3Dlarge)=20= ::=20lnan,=20linf=0A+=0A+=20=20=20rinf=20=3D=20ieee_value(0.,=20= ieee_positive_inf)=0A+=20=20=20rnan=20=3D=20ieee_value(0.,=20= ieee_quiet_nan)=0A+=0A+=20=20=20dinf=20=3D=20ieee_value(0.d0,=20= ieee_positive_inf)=0A+=20=20=20dnan=20=3D=20ieee_value(0.d0,=20= ieee_quiet_nan)=0A+=0A+=20=20=20linf=20=3D=20ieee_value(0._large,=20= ieee_positive_inf)=0A+=20=20=20lnan=20=3D=20ieee_value(0._large,=20= ieee_quiet_nan)=0A+=0A+=20=20=20if=20(.not.=20ieee_signaling_eq=20(0.,=20= 0.))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_eq=20(0.,=20= -0.))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_eq=20(1.,=20= 1.))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_eq=20(rinf,=20= rinf))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_eq=20= (-rinf,=20-rinf))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20= (rnan,=20rnan))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20= (0.,=201.))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20(0.,=20= -1.))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20(0.,=20rnan))=20= call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20(1.,=20rnan))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_eq=20(0.,=20rinf))=20call=20abort=0A= +=20=20=20if=20(ieee_signaling_eq=20(1.,=20rinf))=20call=20abort=0A+=20=20= =20if=20(ieee_signaling_eq=20(rinf,=20rnan))=20call=20abort=0A+=0A+=20=20= =20if=20(.not.=20ieee_signaling_eq=20(0.d0,=200.d0))=20call=20abort=0A+=20= =20=20if=20(.not.=20ieee_signaling_eq=20(0.d0,=20-0.d0))=20call=20abort=0A= +=20=20=20if=20(.not.=20ieee_signaling_eq=20(1.d0,=201.d0))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_signaling_eq=20(dinf,=20dinf))=20= call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_eq=20(-dinf,=20= -dinf))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20(dnan,=20= dnan))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20(0.d0,=20= 1.d0))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20(0.d0,=20= -1.d0))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20(0.d0,=20= dnan))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20(1.d0,=20= dnan))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20(0.d0,=20= dinf))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20(1.d0,=20= dinf))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20(dinf,=20= dnan))=20call=20abort=0A+=0A+=20=20=20if=20(.not.=20ieee_signaling_eq=20= (0._large,=200._large))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_signaling_eq=20(0._large,=20-0._large))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_eq=20(1._large,=201._large))=20call=20abort=0A= +=20=20=20if=20(.not.=20ieee_signaling_eq=20(linf,=20linf))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_signaling_eq=20(-linf,=20-linf))=20= call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20(lnan,=20lnan))=20= call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20(0._large,=20= 1._large))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_eq=20= (0._large,=20-1._large))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_eq=20(0._large,=20lnan))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_eq=20(1._large,=20lnan))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_eq=20(0._large,=20linf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_eq=20(1._large,=20linf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_eq=20(linf,=20lnan))=20call=20abort=0A+=0A+=0A+=20=20=20= if=20(ieee_signaling_ne=20(0.,=200.))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_ne=20(0.,=20-0.))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_ne=20(1.,=201.))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_ne=20(rinf,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_ne=20(-rinf,=20-rinf))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_signaling_ne=20(rnan,=20rnan))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_ne=20(0.,=201.))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_ne=20(0.,=20-1.))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_ne=20(0.,=20rnan))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_ne=20(1.,=20rnan))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_ne=20(0.,=20rinf))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_ne=20(1.,=20rinf))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_ne=20(rinf,=20rnan))=20call=20abort=0A+=0A+=20= =20=20if=20(ieee_signaling_ne=20(0.d0,=200.d0))=20call=20abort=0A+=20=20=20= if=20(ieee_signaling_ne=20(0.d0,=20-0.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_ne=20(1.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_ne=20(dinf,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_ne=20(-dinf,=20-dinf))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_signaling_ne=20(dnan,=20dnan))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_ne=20(0.d0,=201.d0))=20call=20abort=0A+=20=20= =20if=20(.not.=20ieee_signaling_ne=20(0.d0,=20-1.d0))=20call=20abort=0A+=20= =20=20if=20(.not.=20ieee_signaling_ne=20(0.d0,=20dnan))=20call=20abort=0A= +=20=20=20if=20(.not.=20ieee_signaling_ne=20(1.d0,=20dnan))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_signaling_ne=20(0.d0,=20dinf))=20= call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_ne=20(1.d0,=20= dinf))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_ne=20= (dinf,=20dnan))=20call=20abort=0A+=0A+=20=20=20if=20(ieee_signaling_ne=20= (0._large,=200._large))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_ne=20(0._large,=20-0._large))=20call=20abort=0A+=20=20=20= if=20(ieee_signaling_ne=20(1._large,=201._large))=20call=20abort=0A+=20=20= =20if=20(ieee_signaling_ne=20(linf,=20linf))=20call=20abort=0A+=20=20=20= if=20(ieee_signaling_ne=20(-linf,=20-linf))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_ne=20(lnan,=20lnan))=20call=20abort=0A+=20=20= =20if=20(.not.=20ieee_signaling_ne=20(0._large,=201._large))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_signaling_ne=20(0._large,=20= -1._large))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_ne=20= (0._large,=20lnan))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_signaling_ne=20(1._large,=20lnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_signaling_ne=20(0._large,=20linf))=20call=20abort=0A+=20=20= =20if=20(.not.=20ieee_signaling_ne=20(1._large,=20linf))=20call=20abort=0A= +=20=20=20if=20(.not.=20ieee_signaling_ne=20(linf,=20lnan))=20call=20= abort=0A+=0A+=0A+=20=20=20if=20(.not.=20ieee_signaling_le=20(0.,=200.))=20= call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_le=20(0.,=20-0.))=20= call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_le=20(1.,=201.))=20= call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_le=20(rinf,=20= rinf))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_le=20= (-rinf,=20-rinf))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_le=20= (rnan,=20rnan))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_signaling_le=20(0.,=201.))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_le=20(0.,=20-1.))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_le=20(0.,=20rnan))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_le=20(1.,=20rnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_signaling_le=20(0.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_signaling_le=20(1.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_le=20(rinf,=20rnan))=20call=20abort=0A+=0A+=20=20=20if=20= (.not.=20ieee_signaling_le=20(0.d0,=200.d0))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_le=20(0.d0,=20-0.d0))=20call=20abort=0A+=20=20= =20if=20(.not.=20ieee_signaling_le=20(1.d0,=201.d0))=20call=20abort=0A+=20= =20=20if=20(.not.=20ieee_signaling_le=20(dinf,=20dinf))=20call=20abort=0A= +=20=20=20if=20(.not.=20ieee_signaling_le=20(-dinf,=20-dinf))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_le=20(dnan,=20dnan))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_signaling_le=20(0.d0,=201.d0))=20= call=20abort=0A+=20=20=20if=20(ieee_signaling_le=20(0.d0,=20-1.d0))=20= call=20abort=0A+=20=20=20if=20(ieee_signaling_le=20(0.d0,=20dnan))=20= call=20abort=0A+=20=20=20if=20(ieee_signaling_le=20(1.d0,=20dnan))=20= call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_le=20(0.d0,=20= dinf))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_le=20= (1.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_le=20= (dinf,=20dnan))=20call=20abort=0A+=0A+=20=20=20if=20(.not.=20= ieee_signaling_le=20(0._large,=200._large))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_le=20(0._large,=20-0._large))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_signaling_le=20(1._large,=20= 1._large))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_le=20= (linf,=20linf))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_signaling_le=20(-linf,=20-linf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_le=20(lnan,=20lnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_signaling_le=20(0._large,=201._large))=20call=20abort=0A+=20= =20=20if=20(ieee_signaling_le=20(0._large,=20-1._large))=20call=20abort=0A= +=20=20=20if=20(ieee_signaling_le=20(0._large,=20lnan))=20call=20abort=0A= +=20=20=20if=20(ieee_signaling_le=20(1._large,=20lnan))=20call=20abort=0A= +=20=20=20if=20(.not.=20ieee_signaling_le=20(0._large,=20linf))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_signaling_le=20(1._large,=20linf))=20= call=20abort=0A+=20=20=20if=20(ieee_signaling_le=20(linf,=20lnan))=20= call=20abort=0A+=0A+=0A+=20=20=20if=20(.not.=20ieee_signaling_ge=20(0.,=20= 0.))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_ge=20(0.,=20= -0.))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_ge=20(1.,=20= 1.))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_ge=20(rinf,=20= rinf))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_ge=20= (-rinf,=20-rinf))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_ge=20= (rnan,=20rnan))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_ge=20= (0.,=201.))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_ge=20= (0.,=20-1.))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_ge=20(0.,=20= rnan))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_ge=20(1.,=20= rnan))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_ge=20(0.,=20= rinf))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_ge=20(1.,=20= rinf))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_ge=20(rinf,=20= rnan))=20call=20abort=0A+=0A+=20=20=20if=20(.not.=20ieee_signaling_ge=20= (0.d0,=200.d0))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_signaling_ge=20(0.d0,=20-0.d0))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_signaling_ge=20(1.d0,=201.d0))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_ge=20(dinf,=20dinf))=20call=20abort=0A+=20=20= =20if=20(.not.=20ieee_signaling_ge=20(-dinf,=20-dinf))=20call=20abort=0A= +=20=20=20if=20(ieee_signaling_ge=20(dnan,=20dnan))=20call=20abort=0A+=20= =20=20if=20(ieee_signaling_ge=20(0.d0,=201.d0))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_ge=20(0.d0,=20-1.d0))=20call=20abort=0A+=20=20= =20if=20(ieee_signaling_ge=20(0.d0,=20dnan))=20call=20abort=0A+=20=20=20= if=20(ieee_signaling_ge=20(1.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_ge=20(0.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_ge=20(1.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_ge=20(dinf,=20dnan))=20call=20abort=0A+=0A+=20=20=20if=20= (.not.=20ieee_signaling_ge=20(0._large,=200._large))=20call=20abort=0A+=20= =20=20if=20(.not.=20ieee_signaling_ge=20(0._large,=20-0._large))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_signaling_ge=20(1._large,=20= 1._large))=20call=20abort=0A+=20=20=20if=20(.not.=20ieee_signaling_ge=20= (linf,=20linf))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_signaling_ge=20(-linf,=20-linf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_ge=20(lnan,=20lnan))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_ge=20(0._large,=201._large))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_ge=20(0._large,=20-1._large))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_ge=20(0._large,=20lnan))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_ge=20(1._large,=20lnan))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_ge=20(0._large,=20linf))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_ge=20(1._large,=20linf))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_ge=20(linf,=20lnan))=20call=20= abort=0A+=0A+=0A+=20=20=20if=20(ieee_signaling_lt=20(0.,=200.))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_lt=20(0.,=20-0.))=20call=20abort=0A= +=20=20=20if=20(ieee_signaling_lt=20(1.,=201.))=20call=20abort=0A+=20=20=20= if=20(ieee_signaling_lt=20(rinf,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_lt=20(-rinf,=20-rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_lt=20(rnan,=20rnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_signaling_lt=20(0.,=201.))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_lt=20(0.,=20-1.))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_lt=20(0.,=20rnan))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_lt=20(1.,=20rnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_signaling_lt=20(0.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_signaling_lt=20(1.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_lt=20(rinf,=20rnan))=20call=20abort=0A+=0A+=20=20=20if=20= (ieee_signaling_lt=20(0.d0,=200.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_lt=20(0.d0,=20-0.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_lt=20(1.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_lt=20(dinf,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_lt=20(-dinf,=20-dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_lt=20(dnan,=20dnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_signaling_lt=20(0.d0,=201.d0))=20call=20abort=0A+=20=20=20= if=20(ieee_signaling_lt=20(0.d0,=20-1.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_lt=20(0.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_lt=20(1.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_signaling_lt=20(0.d0,=20dinf))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_lt=20(1.d0,=20dinf))=20call=20abort=0A+=20=20= =20if=20(ieee_signaling_lt=20(dinf,=20dnan))=20call=20abort=0A+=0A+=20=20= =20if=20(ieee_signaling_lt=20(0._large,=200._large))=20call=20abort=0A+=20= =20=20if=20(ieee_signaling_lt=20(0._large,=20-0._large))=20call=20abort=0A= +=20=20=20if=20(ieee_signaling_lt=20(1._large,=201._large))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_lt=20(linf,=20linf))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_lt=20(-linf,=20-linf))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_lt=20(lnan,=20lnan))=20call=20= abort=0A+=20=20=20if=20(.not.=20ieee_signaling_lt=20(0._large,=20= 1._large))=20call=20abort=0A+=20=20=20if=20(ieee_signaling_lt=20= (0._large,=20-1._large))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_lt=20(0._large,=20lnan))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_lt=20(1._large,=20lnan))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_signaling_lt=20(0._large,=20linf))=20call=20abort=0A+=20=20= =20if=20(.not.=20ieee_signaling_lt=20(1._large,=20linf))=20call=20abort=0A= +=20=20=20if=20(ieee_signaling_lt=20(linf,=20lnan))=20call=20abort=0A+=0A= +=0A+=20=20=20if=20(ieee_signaling_gt=20(0.,=200.))=20call=20abort=0A+=20= =20=20if=20(ieee_signaling_gt=20(0.,=20-0.))=20call=20abort=0A+=20=20=20= if=20(ieee_signaling_gt=20(1.,=201.))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(rinf,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(-rinf,=20-rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(rnan,=20rnan))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(0.,=201.))=20call=20abort=0A+=20=20=20if=20(.not.=20= ieee_signaling_gt=20(0.,=20-1.))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(0.,=20rnan))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(1.,=20rnan))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(0.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(1.,=20rinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(rinf,=20rnan))=20call=20abort=0A+=0A+=20=20=20if=20= (ieee_signaling_gt=20(0.d0,=200.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(0.d0,=20-0.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(1.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(dinf,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(-dinf,=20-dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(dnan,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(0.d0,=201.d0))=20call=20abort=0A+=20=20=20if=20= (.not.=20ieee_signaling_gt=20(0.d0,=20-1.d0))=20call=20abort=0A+=20=20=20= if=20(ieee_signaling_gt=20(0.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(1.d0,=20dnan))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(0.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(1.d0,=20dinf))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(dinf,=20dnan))=20call=20abort=0A+=0A+=20=20=20if=20= (ieee_signaling_gt=20(0._large,=200._large))=20call=20abort=0A+=20=20=20= if=20(ieee_signaling_gt=20(0._large,=20-0._large))=20call=20abort=0A+=20=20= =20if=20(ieee_signaling_gt=20(1._large,=201._large))=20call=20abort=0A+=20= =20=20if=20(ieee_signaling_gt=20(linf,=20linf))=20call=20abort=0A+=20=20=20= if=20(ieee_signaling_gt=20(-linf,=20-linf))=20call=20abort=0A+=20=20=20= if=20(ieee_signaling_gt=20(lnan,=20lnan))=20call=20abort=0A+=20=20=20if=20= (ieee_signaling_gt=20(0._large,=201._large))=20call=20abort=0A+=20=20=20= if=20(.not.=20ieee_signaling_gt=20(0._large,=20-1._large))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_gt=20(0._large,=20lnan))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_gt=20(1._large,=20lnan))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_gt=20(0._large,=20linf))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_gt=20(1._large,=20linf))=20call=20= abort=0A+=20=20=20if=20(ieee_signaling_gt=20(linf,=20lnan))=20call=20= abort=0A+=0A+end=20program=20foo=0Adiff=20--git=20= a/libgfortran/ieee/ieee_arithmetic.F90=20= b/libgfortran/ieee/ieee_arithmetic.F90=0Aindex=20= c8ef3e2faeb..2304a104b92=20100644=0A---=20= a/libgfortran/ieee/ieee_arithmetic.F90=0A+++=20= b/libgfortran/ieee/ieee_arithmetic.F90=0A@@=20-343,6=20+343,75=20@@=20= UNORDERED_MACRO(4,4)=0A=20=20=20end=20interface=0A=20=20=20public=20::=20= IEEE_UNORDERED=0A=20=0A+=20=20!=20IEEE_QUIET_*=20and=20IEEE_SIGNALING_*=20= comparison=20functions=0A+=0A+#define=20COMP_MACRO(TYPE,OP,K)=20\=0A+=20=20= elemental=20logical=20function=20\=0A+=20=20=20=20= _gfortran_ieee_/**/TYPE/**/_/**/OP/**/_/**/K=20(X,Y)=20;=20\=0A+=20=20=20= =20=20=20real(kind=20=3D=20K),=20intent(in)=20::=20X=20;=20\=0A+=20=20=20= =20=20=20real(kind=20=3D=20K),=20intent(in)=20::=20Y=20;=20\=0A+=20=20= end=20function=0A+=0A+#ifdef=20HAVE_GFC_REAL_16=0A+#=20=20define=20= EXPAND_COMP_MACRO_16(TYPE,OP)=20COMP_MACRO(TYPE,OP,16)=0A+#else=0A+#=20=20= define=20EXPAND_COMP_MACRO_16(TYPE,OP)=0A+#endif=0A+=0A+#undef=20= EXPAND_MACRO_10=0A+#ifdef=20HAVE_GFC_REAL_10=0A+#=20=20define=20= EXPAND_COMP_MACRO_10(TYPE,OP)=20COMP_MACRO(TYPE,OP,10)=0A+#else=0A+#=20=20= define=20EXPAND_COMP_MACRO_10(TYPE,OP)=0A+#endif=0A+=0A+#define=20= COMP_FUNCTION(TYPE,OP)=20\=0A+=20=20interface=20;=20\=0A+=20=20=20=20= COMP_MACRO(TYPE,OP,4)=20;=20\=0A+=20=20=20=20COMP_MACRO(TYPE,OP,8)=20;=20= \=0A+=20=20=20=20EXPAND_COMP_MACRO_10(TYPE,OP)=20;=20\=0A+=20=20=20=20= EXPAND_COMP_MACRO_16(TYPE,OP)=20;=20\=0A+=20=20end=20interface=0A+=0A= +#ifdef=20HAVE_GFC_REAL_16=0A+#=20=20define=20= EXPAND_INTER_MACRO_16(TYPE,OP)=20= _gfortran_ieee_/**/TYPE/**/_/**/OP/**/_16=0A+#else=0A+#=20=20define=20= EXPAND_INTER_MACRO_16(TYPE,OP)=0A+#endif=0A+=0A+#ifdef=20= HAVE_GFC_REAL_10=0A+#=20=20define=20EXPAND_INTER_MACRO_10(TYPE,OP)=20= _gfortran_ieee_/**/TYPE/**/_/**/OP/**/_10=0A+#else=0A+#=20=20define=20= EXPAND_INTER_MACRO_10(TYPE,OP)=0A+#endif=0A+=0A+#define=20= COMP_INTERFACE(TYPE,OP)=20\=0A+=20=20interface=20= IEEE_/**/TYPE/**/_/**/OP=20;=20\=0A+=20=20=20=20procedure=20\=0A+=20=20=20= =20=20=20EXPAND_INTER_MACRO_16(TYPE,OP)=20,=20\=0A+=20=20=20=20=20=20= EXPAND_INTER_MACRO_10(TYPE,OP)=20,=20\=0A+=20=20=20=20=20=20= _gfortran_ieee_/**/TYPE/**/_/**/OP/**/_8=20,=20\=0A+=20=20=20=20=20=20= _gfortran_ieee_/**/TYPE/**/_/**/OP/**/_4=20;=20\=0A+=20=20end=20= interface=20;=20\=0A+=20=20public=20::=20IEEE_/**/TYPE/**/_/**/OP=0A+=0A= +#define=20IEEE_COMPARISON(TYPE,OP)=20\=0A+=20=20COMP_FUNCTION(TYPE,OP)=20= ;=20\=0A+=20=20COMP_INTERFACE(TYPE,OP)=0A+=0A+=20=20= IEEE_COMPARISON(QUIET,EQ)=0A+=20=20IEEE_COMPARISON(QUIET,GE)=0A+=20=20= IEEE_COMPARISON(QUIET,GT)=0A+=20=20IEEE_COMPARISON(QUIET,LE)=0A+=20=20= IEEE_COMPARISON(QUIET,LT)=0A+=20=20IEEE_COMPARISON(QUIET,NE)=0A+=20=20= IEEE_COMPARISON(SIGNALING,EQ)=0A+=20=20IEEE_COMPARISON(SIGNALING,GE)=0A+=20= =20IEEE_COMPARISON(SIGNALING,GT)=0A+=20=20IEEE_COMPARISON(SIGNALING,LE)=0A= +=20=20IEEE_COMPARISON(SIGNALING,LT)=0A+=20=20= IEEE_COMPARISON(SIGNALING,NE)=0A+=0A=20=20=20!=20IEEE_LOGB=0A=20=0A=20=20= =20interface=0A--=20=0A2.25.1=0A=0A= --Apple-Mail=_4DB6927B-43F3-40D6-B5B0-83B17AB847FF--