!
&&
||
==
!=
>
>=
<
<=
real a(0:NN) .. x = a(3) ... ↓ double a[NN+1]; .. x = a[3];
real a(N) ... do i=1,N a(i)=0.0 end do ... x=a(3) ↓ double a[N]; ... for (i=0; i<N; i++) a[i] = 0.0; ... x = a[2]; または double a[N+1]; ... for (i=1; i<=5; i++) a[i] = 0.0; ... x = a[3];
real mat(3,3) x = mat(i,j) ↓ double mat[3][3]; x = mat[i][j];
real a(NDIM,NDIM) ... a(i,j)=むにゃ ... call inv(NDIM,3,a) .. subroutine inv(NDIM, N, a) integer NDIM,N real a(NDIM,*) ... ↓ double a[NBIG][NBIG]; ... a[i][j] = むにゃ ... inv(3,a); ... void inv(int n, double a[][NBIG])
double *a; ... a = malloc(sizeof(double) * n * n); if (a == NULL) ... ... a[i*3+j] = むにゃ ... inv(3,a); ... void inv(int n, double *a)
double *a[NDIM]; for (i = 0; i < 3; i++) { if ((a[i] = malloc(sizeof(double) * 3)) == NULL) { } } ... a[i][j] = むにゃ ... inv(3,a); ... void inv(int n, double **a)
real a(0:NN,M) ... x = a(0,j) ↓ double a[NN+1][M]; ... x = a[0][j];
stop ↓ exit(0); 正常終了の場合 あるいは exit(1); 異常終了の場合
L=j**2 n=j**3 m=j**4 x=y**0.5 z=y**(1.0/3.0) ↓ L=j*j; n=j*j*j; tmp = j*j; m=tmp*tmp; x=sqrt(x); z=pow(x,1.0/3.0)
%e
, %f
, %g
に。 I 変換は printf() の書式文
字列内では %d
に。
integer n; real x,r ... x=float(n) r=float(1)/float(n) call mysub(a, float(n)) ↓ int n; double x,r ... x=n; 自動的に型変換される。 r=1.0/n; 1.0 に合わせて n は double に型変換される mysub(a, (double)n); もしも mysub() にプロトタイプ宣言があれば キャストは不要である。