Diferencia entre revisiones de «Matriz2fortran.sed»

De FJWiki
Saltar a: navegación, buscar
m
 
(No se muestran 2 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
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.
+
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. Los números que ya tengan notación científica son cambiados a notación científica con ''d''.
  
  
 
== matriz2fortran.sed ==
 
== matriz2fortran.sed ==
  
  #Convierte una matriz por tabs en formato para mathematica
+
  #Convierte una matriz por tabs en formato para fortran
 
   
 
   
 
  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/) )
  
Línea 32: Línea 32:
  
 
* [[math2matriz.sed]]
 
* [[math2matriz.sed]]
 +
* [[matriz2math.sed]]
 
* [[Enlaces:sed]]
 
* [[Enlaces:sed]]
  
 
[[Category:Sed_Scripts]]
 
[[Category:Sed_Scripts]]

Revisión actual del 22:39 3 jun 2009

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. Los números que ya tengan notación científica son cambiados a notación científica con d.


matriz2fortran.sed

#Convierte una matriz por tabs en formato para fortran

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