| MCF_read | 
MCD_read | 
MCE_read |   
| MI_read | MBI_read | MSI_read | MLI_read | MQI_read |   
| MU_read | MUB_read | MUS_read | MUL_read | MUQ_read |  
  | 
| Funktion | eine Matrix im ASCII-Format aus einem Stream einlesen |  
  | 
| Syntax C/C++ | #include <MFstd.h> 
void MF_read( fMatrix MA, ui ht, ui len, FILE *stream ); |  
| C++ MatObj | #include <OptiVec.h> 
void matrix<T>::read( FILE *stream ); |  
| Pascal/Delphi | uses MFstd; 
{Delphi-Version:} 
  procedure MF_read( MA:fMatrix; ht, len:UIntSize; var Stream:TextFile ); 
{Turbo Pascal-Version:} 
  procedure MF_read( MA:fMatrix; ht, len:UIntSize; var Stream:Text ); |  
  | 
| CUDA-Funktion C/C++ | #include <cudaMFstd.h>
 int cudaMF_read( fMatrix d_MA, ui ht, ui len, FILE *stream );
 int cudaMF_read_buf( fMatrix d_MA, ui ht, ui len, FILE *stream, fVector h_Wk );
 |  
| CUDA-Funktion Pascal/Delphi | uses MFstd;
 function cudaMF_read( d_MA:fMatrix; ht, len:UIntSize; var Stream:TextFile ): IntBool;
 function cudaMF_read_buf( d_MA:fMatrix; ht, len:UIntSize; var Stream:TextFile; h_Wk:fVector ): IntBool;
 |  
  | 
| Beschreibung | Die Matrix A mit ht*len Elementen wird im ASCII-Format aus stream eingelesen. Normalerweise wird man diese Funktion verwenden, um Matrizen aus anderen Programmen zu importieren, die Zahlen nicht im PC-Maschinenformat speichern können. Man kann sie auch benutzen, um Matrizen wiederherzustellen, die zuvor mittels MF_write gespeichert wurden. Um Zwischenergebnisse zu speichern und wiederherzustellen, sollte man allerdings das Funktionenpaar MF_store / MF_recall unbedingt gegenüber MF_write / MF_read vorziehen (über die Gründe siehe MF_write).
 Komplexe Versionen:
 Real- und Imaginär-Teil dürfen (müssen aber nicht) in geschweifte { } oder runde Klammern ( ) eingeschlossen sein. Man muss allerdings konsequent sein: Entweder müssen alle oder gar kein Element eingeklammert sein.
 Ein Komma darf (muss aber nicht) zwischen Real- und Imaginärteil stehen. Der Imaginärteil muss stets explizit angegeben werden, auch wenn er gleich 0 sein sollte.
 Beispiele für gültige Formate sind:
 0.3 0.5    (weder Klammern noch trennendes Komma)
 0.3, 0.5    (keine Klammern; Komma zwischen Re und Im)
 {0.3 0.5}    (geschweifte Klammern; kein Komma)
 (0.3, 0.5)    (runde Klammern und Komma)
  |  
| C/C++-spezifisch: | Die zu lesenden Elemente müssen durch Whitespace (' ', '\n' oder '\t') voneinander getrennt sein. Zusätzlich ist ein (!) "Nicht-Whitespace"-Zeichen nach jedem Eintrag erlaubt, sofern es direkt auf die letzte Ziffer folgt. Nach ihm muss wiederum mindestens ein Whitespace-Zeichen folgen.
 |  
| Pascal/Delphi-spezifisch: | Die zu lesenden Elemente müssen durch Whitespace (' ', #13, or #9) voneinander getrennt sein.
 Während die C/C++-Version dieser Funktionen den Konventionen der C-Funktionen strtod, strtol usw. folgt, hat sich die Pascal/Delphi-Version nach den Regeln der Pascal/Delphi Funktion Read zu richten. Hierdurch wird die Pascal/Delphi-Version wesentlich weniger flexibel als die C/C++-Version:
 - es sind keine Trennzeichen außer dem Leerzeichen (' ') und #9 erlaubt,
 - überlaufende Eingabe-Zahlen werden nicht automatisch abgeschnitten.
 nur CUDA-Versionen: cudaM?_read_buf übernimmt einen Host-Vektor h_Wk als zusätzliches Argument. Dieser dient als Pufferspeicher und muss (mindestens) dieselbe Größe haben wie X. Hierdurch wird die interne Bereitstellung von Pufferspeicher bei cudaM?_read eingespart, so dass cudaM?_read_buf etwas schneller ist.
  |  
  | 
| Fehlerbehandlung | C/C++:
 Überlaufende Eingabezahlen werden stillschweigend auf ±HUGE_VAL gesetzt.
 Pascal/Delphi:
 Überlaufende oder anderweitig nicht den Format-Bestimmungen entsprechende Eingabezahlen führen zu einem I/O-Fehler. |  
  | 
| Rückgabewert | keiner, außCUDA-Variante; dort: 0, wenn fehlerfrei, sonst ungleich 0 |  
  | 
Querverweis | MF_write,   VF_nread,   MF_store,   MF_recall,   Kap. 14 |