mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-09-30 00:27:52 +00:00
Add a matrix input to ob-fortran.el
* lisp/ob-fortran.el: add a branch which handles nested lists * testing/examples/ob-fortran-test.org: add a test for matrix input * testing/lisp/test-ob-fortran.el: add a test for matrix input
This commit is contained in:
parent
e3cc1ca792
commit
d7e884d86c
|
@ -143,6 +143,12 @@ of the same value."
|
||||||
((stringp val)
|
((stringp val)
|
||||||
(format "character(len=%d), parameter :: %S = '%s'\n"
|
(format "character(len=%d), parameter :: %S = '%s'\n"
|
||||||
(length val) var val))
|
(length val) var val))
|
||||||
|
;; val is a matrix
|
||||||
|
((and (listp val) (listp (car val)))
|
||||||
|
(format "real, parameter :: %S(%d,%d) = transpose( reshape( %s , (/ %d, %d /) ) )\n"
|
||||||
|
var (length val) (length (car val))
|
||||||
|
(org-babel-fortran-transform-list val)
|
||||||
|
(length (car val)) (length val)))
|
||||||
((listp val)
|
((listp val)
|
||||||
(format "real, parameter :: %S(%d) = %s\n"
|
(format "real, parameter :: %S(%d) = %s\n"
|
||||||
var (length val) (org-babel-fortran-transform-list val)))
|
var (length val) (org-babel-fortran-transform-list val)))
|
||||||
|
|
|
@ -50,6 +50,28 @@ write (*, '(3f5.2)'), s
|
||||||
write (*, '(2f5.2)'), s
|
write (*, '(2f5.2)'), s
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* matrix
|
||||||
|
:PROPERTIES:
|
||||||
|
:ID: 3f73ab19-d25a-428d-8c26-e8c6aa933976
|
||||||
|
:END:
|
||||||
|
Real matrix as input
|
||||||
|
#+name: fortran-input-matrix1
|
||||||
|
| 0.0 | 42.0 |
|
||||||
|
| 0.0 | 0.0 |
|
||||||
|
| 0.0 | 0.0 |
|
||||||
|
|
||||||
|
#+name: fortran-input-matrix2
|
||||||
|
| 0.0 | 0.0 | 0.0 |
|
||||||
|
| 0.0 | 0.0 | 42.0 |
|
||||||
|
|
||||||
|
#+begin_src fortran :var s=fortran-input-matrix1 :results silent
|
||||||
|
write (*, '(i2)'), nint(s(1,2))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src fortran :var s=fortran-input-matrix2 :results silent
|
||||||
|
write (*, '(i2)'), nint(s(2,3))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* failing
|
* failing
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:ID: 891ead4a-f87a-473c-9ae0-1cf348bcd04f
|
:ID: 891ead4a-f87a-473c-9ae0-1cf348bcd04f
|
||||||
|
|
|
@ -68,6 +68,18 @@
|
||||||
(org-babel-next-src-block 2)
|
(org-babel-next-src-block 2)
|
||||||
(should (equal "1.00 2.00" (org-babel-execute-src-block)))))
|
(should (equal "1.00 2.00" (org-babel-execute-src-block)))))
|
||||||
|
|
||||||
|
(ert-deftest ob-fortran/list-matrix-from-table1 ()
|
||||||
|
"Test real matrix from a table"
|
||||||
|
(org-test-at-id "3f73ab19-d25a-428d-8c26-e8c6aa933976"
|
||||||
|
(org-babel-next-src-block 1)
|
||||||
|
(should (= 42 (org-babel-execute-src-block)))))
|
||||||
|
|
||||||
|
(ert-deftest ob-fortran/list-matrix-from-table2 ()
|
||||||
|
"Test real matrix from a table"
|
||||||
|
(org-test-at-id "3f73ab19-d25a-428d-8c26-e8c6aa933976"
|
||||||
|
(org-babel-next-src-block 2)
|
||||||
|
(should (= 42 (org-babel-execute-src-block)))))
|
||||||
|
|
||||||
(ert-deftest ob-fortran/no-variables-with-main ()
|
(ert-deftest ob-fortran/no-variables-with-main ()
|
||||||
"Test :var with explicit 'program'"
|
"Test :var with explicit 'program'"
|
||||||
(org-test-at-id "891ead4a-f87a-473c-9ae0-1cf348bcd04f"
|
(org-test-at-id "891ead4a-f87a-473c-9ae0-1cf348bcd04f"
|
||||||
|
|
Loading…
Reference in a new issue