fortran sqrtコンパイルエラー

このQ&Aのポイント
  • fortran sqrtコンパイルエラーについて
  • コンパイルエラーの原因と解決方法について
  • コンパイルエラーの確認方法について
回答を見る
  • ベストアンサー

fortran sqrtコンパイルエラー

プログラムを書き直していて以下の様なエラーが出てしまいます。 以前sqrt関数を書いたときは以下の様なエラーは出てこなかったのですが、最近やたらFunctionのエラーがよく出ます。コンパイルに問題があるのでしょうか?自分のコンパイルを調べるにはどうしたらわかるのでしょうか?よろしくお願いします。 In file init.f90:52 rf = sqrt((nx-5)**2+(ny-5)**2+(nz-5)**2) 1 Error: Type of argument 'x' in call to 'sqrt' at (1) should be REAL(4), not INTEGER(4) In file init.f90:52 rf = sqrt((nx-5)**2+(ny-5)**2+(nz-5)**2) 1 Error: Function 'sqrt' at (1) has no implicit type

質問者が選んだベストアンサー

  • ベストアンサー
  • A88No8
  • ベストアンサー率52% (834/1602)
回答No.1

こんにちは  素直にエラーメッセージを理解するとsqrtの引数はInteger型じゃなくてReal型だ!と怒っているようですが..  実数型しか扱えないsqrt関数って考えにくいですけど fortran の場合は、実数型か複素数型でなければならない仕様なんですよね(^^; JIS X 3001-1:2009 (ISO/IEC 1539-1:2004)  実数型の場合 0.0以上でなければならないっていうし..

528612
質問者

お礼

ご指摘ありがとうございます。sqrtの引数を実数に訂正したらうまくコンパイルできました。ありがとうございました。

関連するQ&A

  • FORTRAN77(g77)で(D)CBRTがエラーになってしまいます

    FORTRAN77(g77)をVine Linux 4.2で使用しています。 立方根の計算をしたいのですが、コンパイル時に"(D)CBRT"がエラーになってしまいます。 原因・代替策など御助言いただければ幸いです。 なお、(D)SQRTは問題なくコンパイル・実行できました。 以下、テスト用ソースとそのコンパイル時のエラーメッセージです。 [ソース] program a implicit none real*8 n write(*,*)"n= ?" read(*,*)n write(*,*)DCBRT(n) stop end [エラーメッセージ] a.f: In program `a': a.f:6: write(*,*)DCBRT(n) ^ Invalid declaration of or reference to symbol `dcbrt' at (^) [initially seen at (^)] ※こちらの画面ではスペースがうまく入りませんので悪しからず。

  • Fortran コンパイルエラー

    Cygwin上でFortranを用いて流体の数値解析を行っています。 先輩から引き継いだシミュレーションコードなのでプログラムをいじらなくても実行できるだろうと思ったのですが、コンパイル時に以下のエラーが出てしまい、いろいろ試行錯誤しましたが自力では解決できませんでした。 エラーは次のとおりです。何かご存知の方アドバイス頂けたらありがたいです。○はスペースです。カンマの下に1があります。 op.f:13.21: ○101 format(i,4e) ○○○○○○1      Error:Nonnegative width reqired in format string at (1)

  • fortran dlog2

    プログラムの中で m = idnint(dlog2(fn)) という式を書いているのですが、コンパイルの際  m = idnint(dlog2(fn)) 1 Error: Function 'dlog2' at (1) has no implicit type とエラーが出てしまいます。dlog2は倍数精度の対数で計算する物ではないのでしょうか?どのように直してよいのか考えたのですが、様々試しても同じエラーの繰り返しです。どなたかわかる方がいらっしゃったら教えて下さい。よろしくお願いします。

  • Fortran コンパイルエラーについて

    Fortranでコンパイルを行ったところ下記のエラーが発生し、原因がわからずにいます。 Fortranに関しては全くの初心者です。 コマンドプロンプト ----------------- C:\>g95 aaa.f90 Warning(115):Line 100 of aaa.f90 is being truncated In file aaa.f90:100  else if(hnum(mnum(ic-1,jc-1)) .eq. 45 .and. basin_num(nr) .eq. anum(mnum(ic-1,jc-1)) .and. znum(mnum(ic-1,jc-1)) .eq. 'obs') then 1 Error:Unexpected junk after ELSE statement at (1) aaa.f90ファイルは他の方が作成したものでそのaaa.exeもあるので、見よう見まねで Fortranをインストールし、試みましたがエラーでEXEが作成されませんでした。 Fortranはv4.1.2(g95 0.93)、使用しているOSはWindows7Professional(32ビット)です。 エラーがでている行のコードしか記述できず申し訳ないのですが、エラーの意味だけでも教えていただけますでしょうか。 ご教示頂きますようよろしくお願いします。

  • fortran77

    プログラムを作っているのですが、 implicit noneを付けた場合の 関数f(x、y)の宣言の仕方がわかりません。 ググッていくつか出てきたのを試してみたのですが、error文が出てきて、 実行してもうまくいきません。 real x,y,f(x,y) real x,y function f(x,y) real function f(x,y) などです。 implicit noneを付けないとうまくいくのですが・・・・・・ 今後のためによろしくお願いします。

  • sqrtを知らないと言われます

    #include <stdio.h> #include <math.h> int main() { double x; for (x=0.0; x<=10.0; x+=1.0){ printf("The square root of %f is %f\n", sqrt(x)); } return 0; } をgcc -lm XXX.cでコンパイルしようとすると XXX.c:関数:'main'内: XXX.c:9:3: 警告:書式'%f'は対応した'double'引数が予期されます[-Wformat]/tmp/ccPq0KS7.o: In function 'main'  XXX.c: (text+0x2d) undefined reference to 'sqrt' collect2: ldはステータス1で終了しました、 となります。相当な素人ですがどなたか問題点をご指摘いただければと存じます。

  • C+のsqrt

    icpcの過去問(http://www.deqnotes.net/acmicpc/3006/ja)で、答えを #include <cmath> #include <iostream> using namespace std; #define max 1000000 int main(){ //int max = 100; int a,d,n,number[1000010]; for(int i=0;i<max;i++){ number[i] = 1; } number[0]=0;number[1]=0; for(int i=2;i<=sqrt(max)+1;i++){ if(number[i]){ for(int j=i*2;j<max;j=j+i){ number[j] = 0; } } } while(cin >> a >> d >>n,a||d||n){ int count =0; for(int i=a;i<=max;i=i+d){ if(number[i]){count ++; if(count == n){cout << i << endl;break;} } } } } と書いたところ、PKUで Main.cpp F:\temp\11386803.6056\Main.cpp(15) : error C2668: 'sqrt' : ambiguous call to overloaded function math.h(581): could be 'long double sqrt(long double)' math.h(533): or 'float sqrt(float)' math.h(128): or 'double sqrt(double)' while trying to match the argument list '(int)' F:\temp\11386803.6056\Main.cpp(16) : error C2108: subscript is not of integral type というコンパイルエラーがでます。 sqrtの前後で型が違っているのは分かるのですが、具体的にどうなおせばよいかわかりません。

  • コンパイル時のエラー

    毎度c言語の質問でお世話になっております。 ついにコンパイル方法が分かり、いろいろと オブジェクトファイルを作っていますが、 また、わからないことが出てきました。 コンパイルするとエラーになります。 このようにプログラミングすると下のようなエラーが 出てきます。 なぜなのでしょうか? 回答お願いします。 #include <stdio.h> main () { int i = 1; float f = 0.2; double d = 1.25; printf("変数i:%d f:%f d:%lf", i, f, d); return 0; } エラー内容 stray \129 in program stray @ in program   

  • mod_limitipconnのインストールでapxsのコンパイルエラー

    お世話になります。 環境-------------------- Redhat Linux Fedora 5 Apache/2.2.2 ------------------------ mod_limitipconnをインストールしたいのですが、 makeするとapxsのコンパイルエラーが起こりインストールできずにいます。 エラー内容は以下の通りです。 ------------------------ [root@www mod_limitipconn-0.04]# make apxs -c mod_limitipconn.c /usr/lib/apr-1/build/libtool --silent --mode=compile gcc -prefer-pic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -pthread -I/usr/include/httpd -I/usr/include/apr-1 -I/usr/include/apr-1 -c -o mod_limitipconn.lo mod_limitipconn.c && touch mod_limitipconn.slo mod_limitipconn.c:39: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'limitipconn_module' mod_limitipconn.c:43: error: expected specifier-qualifier-list before 'array_header' mod_limitipconn.c:49: error: expected ')' before '*' token mod_limitipconn.c: In function 'limitipconn_handler': --中略-- mod_limitipconn.c:176: warning: implicit declaration of function 'ap_log_reason' mod_limitipconn.c:178: warning: implicit declaration of function 'ap_table_setn' mod_limitipconn.c: In function 'no_limit_config_cmd': mod_limitipconn.c:208: warning: implicit declaration of function 'ap_push_array' mod_limitipconn.c:208: error: 'limitipconn_dir_config' has no member named 'no_limit' mod_limitipconn.c:208: warning: implicit declaration of function 'ap_pstrdup' mod_limitipconn.c:208: warning: assignment makes pointer from integer without a cast mod_limitipconn.c: In function 'excl_limit_config_cmd': mod_limitipconn.c:218: error: 'limitipconn_dir_config' has no member named 'excl_limit' mod_limitipconn.c:218: warning: assignment makes pointer from integer without a cast mod_limitipconn.c: At top level: mod_limitipconn.c:224: warning: missing braces around initializer mod_limitipconn.c:224: warning: (near initialization for 'limitipconn_cmds[0].func') mod_limitipconn.c:224: warning: initialization from incompatible pointer type mod_limitipconn.c:226: warning: initialization from incompatible pointer type mod_limitipconn.c:228: warning: initialization from incompatible pointer type mod_limitipconn.c:234: error: expected declaration specifiers or '...' before 'pool' mod_limitipconn.c: In function 'limitipconn_init': mod_limitipconn.c:236: warning: passing argument 4 of 'ap_log_error' makes integer from pointer without a cast mod_limitipconn.c:236: warning: passing argument 5 of 'ap_log_error' from incompatible pointer type mod_limitipconn.c:236: error: too few arguments to function 'ap_log_error' mod_limitipconn.c: At top level: mod_limitipconn.c:239: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'limitipconn_module' apxs:Error: Command failed with rc=65536 . make: *** [mod_limitipconn.so] Error 1 ------------- apache は DSOをサポートしています。 (httpd -l | grep mod_so.c で確認) どうぞ宜しくお願いいたします。

  • C言語、度々申し訳ございません。コンパイルエラー。

    いつも大変お世話になり誠にありがとうございます。 下記コードがコンパイルエラーになります。 どうしてでしょうか? 度々申し訳ございません。 ご回答の程宜しくお願い申し上げます。 コード #include <stdio.h> int main(void) { int i; printf("1~10までの偶数を出力します。\n"); for(i=1; i<=10; i++){ if((i % 2) == 0) print("%d\n", i); } return 0; } コンパイルエラー C:\MinGW>gcc test21.c -o test21 test21.c: In function 'main': test21.c:10:14: warning: implicit declaration of function 'print' [-Wimplicit-function-declaration] print("%d\n", i); ^~~~~ C:\Users\jump7\AppData\Local\Temp\ccmLpsET.o:test21.c:(.text+0x3f): undefined reference to `print' collect2.exe: error: ld returned 1 exit status 以上です。 度々申し訳ございません。 ご回答の程宜しくお願い申し上げます。

専門家に質問してみよう