Diferencia entre revisiones de «Matriz2fortran.sed»

De FJWiki
Saltar a: navegación, buscar
Línea 8: Línea 8:
 
  1 i = reshape((/ \&
 
  1 i = reshape((/ \&
 
  s/[0-9.][0-9.]*/&d0/g
 
  s/[0-9.][0-9.]*/&d0/g
  s/d0e\([-+][0-9]*\)d0/d\1/g
+
  s/d0[eEdD]\([-+]\?[0-9]*\)d0/d\1/g
 
  s/\t/,/g
 
  s/\t/,/g
 
  $! s/^.*$/\t&, \&/g
 
  $! s/^.*$/\t&, \&/g
Línea 22: Línea 22:
 
Ejemplo usando [[math2matriz.sed]]:
 
Ejemplo usando [[math2matriz.sed]]:
  
  $ echo "{{1.5,2},{3,4}}" | sed -f math2matriz.sed | sed -f matriz2fortran.sed
+
  $ echo "{{1.5,2E-5},{3e4,4}}" | sed -f math2matriz.sed | sed -f matriz2fortran.sed
 
  = reshape((/ &
 
  = reshape((/ &
         1.5d0,2d0, &
+
         1.5d0,2d-5, &
         3d0,4d0/), &
+
         3d4,4d0/), &
 
         (/n, n/) )
 
         (/n, n/) )
  

Revisión del 21:04 24 abr 2008

Script sed para transformar una matriz texto separada por tabulaciones a una expresión de creación de matriz en fortran, sólo hay que reemplazar al final las dimensiones. Devuelve los números con "d0" para expresar doble precisión.


matriz2fortran.sed

#Convierte una matriz por tabs en formato para mathematica

1 i = reshape((/ \&
s/[0-9.][0-9.]*/&d0/g
s/d0[eEdD]\([-+]\?[0-9]*\)d0/d\1/g
s/\t/,/g
$! s/^.*$/\t&, \&/g
$ {
s/^.*$/\t&\/), \&/g
a\
	(/n, n/) )
}


Ejemplo

Ejemplo usando math2matriz.sed:

$ echo "{{1.5,2E-5},{3e4,4}}" | sed -f math2matriz.sed | sed -f matriz2fortran.sed
= reshape((/ &
        1.5d0,2d-5, &
        3d4,4d0/), &
        (/n, n/) )


Ver también