
fortranで,isnanという,変数がNaNか否か判定する関数がありますが,それについて教えていただきたいことがあります.
引数が"NaN"であるときとないときで,計算のやり方で場合わけをして計算をさせたいのですが,知り合いからもらったサンプルプログラムでは,
if(isnan(hikisu))then
NaNの場合の計算
else
そうでない場合の計算
endif
と書いてありました.これを参考にして計算コードを書いたのですが,digital visual fortranではコンパイルできたのですが,UNIXのコンパイラを使ったらコンパイルできませんでした.
こういう場合は,どのように書いたらよいのでしょうか?
また,isnanの型の宣言は,どのようにして行うのがよいのでしょうか.
No.3ベストアンサー
- 回答日時:
sxf90 って名前のFortran コンパイラを知らなかったので調べてみたところ
これ、スパコン用のコンパイラじゃないですか?
とすると、そのスパコン(SX-8?)でUNIXがうごいているとかいないとか以前に、
浮動小数点数のフォーマットが通常良くあるIEEE-754なのか
って疑問があるんですがどうなんでしょう。
どういうアルゴリズムとロジックでNaNが出てくるプログラムなのか
わかりませんが、NaNというデータ型を使えるのかどうか
ちょっと疑問です。
isnanなる関数の型はまあ
LOGICAL isnan(REAL)
とかじゃなかろうかと思いますが、たぶん自分で関数本体を書かなきゃいけないんじゃないかなあ。
本来,スパコンを使うような計算ではないのですが,エラーの意味が日本語で出てくるという理由で使ってみました.
sxf90のマニュアルを見てみたら,確かにありませんでした.
書き方を練り直してみます.ありがとうございました.
No.4
- 回答日時:
> 「IMPLICIT NONE文があるのに、名前isnanの型を明示的に宣言していない。
」IMPLICIT NONE文の意味を考えれば当然かと思いますけど。
#2さんも言っていますが、Fortranには、isnanなんていう組込み関数は存在しません。
NaNであるかどうかを調べるためのために、IEEE_ARITHMETICモジュール内にIEEE_IS_NAN関数がFortran 2003で追加されました。
まず、コンパイラのマニュアルを調べてこれらの関数が利用できるか確認する必要があります。
これらの関数が利用できない場合、自分自身との比較(hikisu .NE. hikisu)で判定できる可能性があります。
この方法でもうまくいかない場合は、isnan関数を自作するしかありません。
ありがとうございました.isnanがないとのことでした.
コンパイラのマニュアルを調べて,使える関数を探すか,コード自体を練り直して見ます.
No.2
- 回答日時:
多分Link時に未定義エラーになったというパターンだと思います。
また、UNIXのコンパイラというのは g77 か g90 あたりですか?
標準には isnan という組み込み関数はないっぽいので、digital visual Fortranで
コンパイルできたというのは、多分それが拡張として持っていたのでしょう。
それはさておき、Cのちょっとしたプログラムを書いて
Cのライブラリにあるだろう isnan を使ってしまうのが一番手っ取り早いと思います。
FortranプログラムとCプログラムをどうリンクするかは
お使いのシステムのマニュアルを参照してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- その他(お金・保険・資産運用) 至急!【Wolt】各メニューの価格設定の簡単な計算方法 3 2023/03/05 11:58
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- その他(プログラミング・Web制作) FORTRAN77の配列(除算) 2 2023/02/01 14:34
- Excel(エクセル) エクセル・スプレッドシートで、一定数を超えたらゼロから再累計する方法 8 2022/05/28 03:52
- Excel(エクセル) 図書カードの分配 7 2023/05/09 15:57
- 化学 化学のエンタルピ変化を求め方について ある例題では各物質のモール数を換算して計算することもあり、ある 1 2022/06/20 23:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
linuxのセキュリティ対策と致し...
-
C言語で長方形を作る
-
移植性の高いmakefileの作成
-
IF文の先のCONTINUEの意味(...
-
wavファイルの波形データについて
-
C++でアボート(Abort)で処理が...
-
変数(関数)名の頭に_
-
C++ で、「)」が必要 というエ...
-
Bluestacks内でダウンロードし...
-
65536は2の何乗なのでしょうか?
-
powered byの表記について
-
OS入ってる機器のソフト・アプ...
-
アルゴリズムとプロトコールの違い
-
読み込み中にアクセス違反が発...
-
バッチファイルでUSB挿入時に実行
-
CとFORTRANの計算速度はどちら...
-
Sublime Text 3でのFortranプロ...
-
正しい五十音順について
-
用語は分からない!
-
エクセルVBA 他の仕事を止...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0除算して、落ちるプログラムと...
-
C++ で、「)」が必要 というエ...
-
C++でアボート(Abort)で処理が...
-
io.hをincludeするとそのような...
-
コンパイラについて
-
コンパイルできない
-
Delphiの逆コンパイル
-
Eclipseの環境設定について
-
変数(関数)名の頭に_
-
関数の戻り値による変数の初期化
-
Visual C++とVisual C++.NETの違い
-
初心者はIDE使わないほうが良く...
-
fortranでのNaNについて
-
コンパイラフラグ(compiler fla...
-
sprintfを用いたフォーマット文...
-
C言語のワーニングメッセージの...
-
非商用のインテルコンパイラ
-
不要なインクルードファイルの検出
-
ccコマンドの使い方
-
ABAQUS ユーザーサブルーチン...
おすすめ情報