Note that there are some explanatory texts on larger screens.

plurals
  1. POSyntax error on line if (m <= 0 .or. n <= 0) return
    primarykey
    data
    text
    <p>When I compile the following file with <code>f2c</code>, it fails with a noninformative syntax error message</p> <pre><code>f2c &lt; ../../libcruft/blas-xtra/ddot3.f &gt;ddot3.c ddot3: Error on line 37: syntax error </code></pre> <p><code>gfortran</code> compiles it without any error. Do you have an idea what can cause it? Do you know of any fortran compiler that would be strict as <code>f2c</code> and have good error messages?</p> <p>The file in question:</p> <pre><code>c Copyright (C) 2009-2012 VZLU Prague, a.s., Czech Republic c c Author: Jaroslav Hajek &lt;highegg@gmail.com&gt; c c This file is part of Octave. c c Octave 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 3 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, c but WITHOUT ANY WARRANTY; without even the implied warranty of c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the c GNU General Public License for more details. c c You should have received a copy of the GNU General Public License c along with this software; see the file COPYING. If not, see c &lt;http://www.gnu.org/licenses/&gt;. c subroutine ddot3(m,n,k,a,b,c) c purpose: a 3-dimensional dot product. c c = sum (a .* b, 2), where a and b are 3d arrays. c arguments: c m,n,k (in) the dimensions of a and b c a,b (in) double prec. input arrays of size (m,k,n) c c (out) double prec. output array, size (m,n) integer m,n,k,i,j,l double precision a(m,k,n),b(m,k,n) double precision c(m,n) double precision ddot external ddot c quick return if possible. if (m &lt;= 0 .or. n &lt;= 0) return if (m == 1) then c the column-major case. do j = 1,n c(1,j) = ddot(k,a(1,1,j),1,b(1,1,j),1) end do else c We prefer performance here, because that's what we generally c do by default in reduction functions. Besides, the accuracy c of xDOT is questionable. Hence, do a cache-aligned nested loop. do j = 1,n do i = 1,m c(i,j) = 0d0 end do do l = 1,k do i = 1,m c(i,j) = c(i,j) + a(i,l,j)*b(i,l,j) end do end do end do end if end subroutine </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload