cannam@95: <html lang="en"> cannam@95: <head> cannam@95: <title>Extended and quadruple precision in Fortran - FFTW 3.3.3</title> cannam@95: <meta http-equiv="Content-Type" content="text/html"> cannam@95: <meta name="description" content="FFTW 3.3.3"> cannam@95: <meta name="generator" content="makeinfo 4.13"> cannam@95: <link title="Top" rel="start" href="index.html#Top"> cannam@95: <link rel="up" href="Overview-of-Fortran-interface.html#Overview-of-Fortran-interface" title="Overview of Fortran interface"> cannam@95: <link rel="prev" href="Overview-of-Fortran-interface.html#Overview-of-Fortran-interface" title="Overview of Fortran interface"> cannam@95: <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> cannam@95: <!-- cannam@95: This manual is for FFTW cannam@95: (version 3.3.3, 25 November 2012). cannam@95: cannam@95: Copyright (C) 2003 Matteo Frigo. cannam@95: cannam@95: Copyright (C) 2003 Massachusetts Institute of Technology. cannam@95: cannam@95: Permission is granted to make and distribute verbatim copies of cannam@95: this manual provided the copyright notice and this permission cannam@95: notice are preserved on all copies. cannam@95: cannam@95: Permission is granted to copy and distribute modified versions of cannam@95: this manual under the conditions for verbatim copying, provided cannam@95: that the entire resulting derived work is distributed under the cannam@95: terms of a permission notice identical to this one. cannam@95: cannam@95: Permission is granted to copy and distribute translations of this cannam@95: manual into another language, under the above conditions for cannam@95: modified versions, except that this permission notice may be cannam@95: stated in a translation approved by the Free Software Foundation. cannam@95: --> cannam@95: <meta http-equiv="Content-Style-Type" content="text/css"> cannam@95: <style type="text/css"><!-- cannam@95: pre.display { font-family:inherit } cannam@95: pre.format { font-family:inherit } cannam@95: pre.smalldisplay { font-family:inherit; font-size:smaller } cannam@95: pre.smallformat { font-family:inherit; font-size:smaller } cannam@95: pre.smallexample { font-size:smaller } cannam@95: pre.smalllisp { font-size:smaller } cannam@95: span.sc { font-variant:small-caps } cannam@95: span.roman { font-family:serif; font-weight:normal; } cannam@95: span.sansserif { font-family:sans-serif; font-weight:normal; } cannam@95: --></style> cannam@95: </head> cannam@95: <body> cannam@95: <div class="node"> cannam@95: <a name="Extended-and-quadruple-precision-in-Fortran"></a> cannam@95: <p> cannam@95: Previous: <a rel="previous" accesskey="p" href="Overview-of-Fortran-interface.html#Overview-of-Fortran-interface">Overview of Fortran interface</a>, cannam@95: Up: <a rel="up" accesskey="u" href="Overview-of-Fortran-interface.html#Overview-of-Fortran-interface">Overview of Fortran interface</a> cannam@95: <hr> cannam@95: </div> cannam@95: cannam@95: <h4 class="subsection">7.1.1 Extended and quadruple precision in Fortran</h4> cannam@95: cannam@95: <p><a name="index-precision-515"></a> cannam@95: If FFTW is compiled in <code>long double</code> (extended) precision cannam@95: (see <a href="Installation-and-Customization.html#Installation-and-Customization">Installation and Customization</a>), you may be able to call the cannam@95: resulting <code>fftwl_</code> routines (see <a href="Precision.html#Precision">Precision</a>) from Fortran if cannam@95: your compiler supports the <code>C_LONG_DOUBLE_COMPLEX</code> type code. cannam@95: cannam@95: <p>Because some Fortran compilers do not support cannam@95: <code>C_LONG_DOUBLE_COMPLEX</code>, the <code>fftwl_</code> declarations are cannam@95: segregated into a separate interface file <code>fftw3l.f03</code>, which you cannam@95: should include <em>in addition</em> to <code>fftw3.f03</code> (which declares cannam@95: precision-independent ‘<samp><span class="samp">FFTW_</span></samp>’ constants): cannam@95: cannam@95: <p><a name="index-iso_005fc_005fbinding-516"></a> cannam@95: <pre class="example"> use, intrinsic :: iso_c_binding cannam@95: include 'fftw3.f03' cannam@95: include 'fftw3l.f03' cannam@95: </pre> cannam@95: <p>We also support using the nonstandard <code>__float128</code> cannam@95: quadruple-precision type provided by recent versions of <code>gcc</code> on cannam@95: 32- and 64-bit x86 hardware (see <a href="Installation-and-Customization.html#Installation-and-Customization">Installation and Customization</a>), cannam@95: using the corresponding <code>real(16)</code> and <code>complex(16)</code> types cannam@95: supported by <code>gfortran</code>. The quadruple-precision ‘<samp><span class="samp">fftwq_</span></samp>’ cannam@95: functions (see <a href="Precision.html#Precision">Precision</a>) are declared in a <code>fftw3q.f03</code> cannam@95: interface file, which should be included in addition to cannam@95: <code>fftw3l.f03</code>, as above. You should also link with cannam@95: <code>-lfftw3q -lquadmath -lm</code> as in C. cannam@95: cannam@95: <!-- --> cannam@95: </body></html> cannam@95: