summaryrefslogtreecommitdiff
path: root/modules/linear_algebra
diff options
context:
space:
mode:
Diffstat (limited to 'modules/linear_algebra')
-rwxr-xr-xmodules/linear_algebra/.libs/libscilinear_algebra-algo.abin0 -> 1256194 bytes
l---------modules/linear_algebra/.libs/libscilinear_algebra-algo.la1
-rwxr-xr-xmodules/linear_algebra/.libs/libscilinear_algebra.abin0 -> 1594752 bytes
l---------modules/linear_algebra/.libs/libscilinear_algebra.la1
-rwxr-xr-xmodules/linear_algebra/Makefile1876
-rwxr-xr-xmodules/linear_algebra/Makefile.am139
-rwxr-xr-xmodules/linear_algebra/Makefile.in1876
-rwxr-xr-xmodules/linear_algebra/etc/linear_algebra.quit10
-rwxr-xr-xmodules/linear_algebra/etc/linear_algebra.start13
-rwxr-xr-xmodules/linear_algebra/examples/intdgemm.c57
-rwxr-xr-xmodules/linear_algebra/examples/intdsyev.c95
-rwxr-xr-xmodules/linear_algebra/examples/intzgemm.c62
-rwxr-xr-xmodules/linear_algebra/examples/lapackscilab.sce56
-rwxr-xr-xmodules/linear_algebra/examples/readme.txt10
-rwxr-xr-xmodules/linear_algebra/help/en_US/addchapter.sce11
-rwxr-xr-xmodules/linear_algebra/help/en_US/eigen/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/en_US/eigen/balanc.xml106
-rwxr-xr-xmodules/linear_algebra/help/en_US/eigen/bdiag.xml106
-rwxr-xr-xmodules/linear_algebra/help/en_US/eigen/gschur.xml99
-rwxr-xr-xmodules/linear_algebra/help/en_US/eigen/gspec.xml45
-rwxr-xr-xmodules/linear_algebra/help/en_US/eigen/hess.xml97
-rwxr-xr-xmodules/linear_algebra/help/en_US/eigen/pbig.xml125
-rwxr-xr-xmodules/linear_algebra/help/en_US/eigen/projspec.xml90
-rwxr-xr-xmodules/linear_algebra/help/en_US/eigen/psmall.xml122
-rwxr-xr-xmodules/linear_algebra/help/en_US/eigen/schur.xml386
-rwxr-xr-xmodules/linear_algebra/help/en_US/eigen/spec.xml301
-rwxr-xr-xmodules/linear_algebra/help/en_US/eigen/sva.xml84
-rwxr-xr-xmodules/linear_algebra/help/en_US/eigen/svd.xml126
-rwxr-xr-xmodules/linear_algebra/help/en_US/factorization/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/en_US/factorization/givens.xml86
-rwxr-xr-xmodules/linear_algebra/help/en_US/factorization/householder.xml70
-rwxr-xr-xmodules/linear_algebra/help/en_US/factorization/sqroot.xml62
-rwxr-xr-xmodules/linear_algebra/help/en_US/kernel/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/en_US/kernel/colcomp.xml106
-rwxr-xr-xmodules/linear_algebra/help/en_US/kernel/fullrf.xml101
-rwxr-xr-xmodules/linear_algebra/help/en_US/kernel/fullrfk.xml74
-rwxr-xr-xmodules/linear_algebra/help/en_US/kernel/im_inv.xml107
-rwxr-xr-xmodules/linear_algebra/help/en_US/kernel/kernel.xml93
-rwxr-xr-xmodules/linear_algebra/help/en_US/kernel/range.xml94
-rwxr-xr-xmodules/linear_algebra/help/en_US/kernel/rowcomp.xml123
-rwxr-xr-xmodules/linear_algebra/help/en_US/linear/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/en_US/linear/aff2ab.xml150
-rwxr-xr-xmodules/linear_algebra/help/en_US/linear/chol.xml81
-rwxr-xr-xmodules/linear_algebra/help/en_US/linear/inv.xml105
-rwxr-xr-xmodules/linear_algebra/help/en_US/linear/linsolve.xml121
-rwxr-xr-xmodules/linear_algebra/help/en_US/linear/lsq.xml113
-rwxr-xr-xmodules/linear_algebra/help/en_US/linear/lu.xml154
-rwxr-xr-xmodules/linear_algebra/help/en_US/linear/pinv.xml83
-rwxr-xr-xmodules/linear_algebra/help/en_US/linear/qr.xml184
-rwxr-xr-xmodules/linear_algebra/help/en_US/linear/rankqr.xml150
-rwxr-xr-xmodules/linear_algebra/help/en_US/markov/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/en_US/markov/classmarkov.xml93
-rwxr-xr-xmodules/linear_algebra/help/en_US/markov/eigenmarkov.xml81
-rwxr-xr-xmodules/linear_algebra/help/en_US/markov/genmarkov.xml83
-rwxr-xr-xmodules/linear_algebra/help/en_US/matrix/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/en_US/matrix/cond.xml158
-rwxr-xr-xmodules/linear_algebra/help/en_US/matrix/det.xml104
-rwxr-xr-xmodules/linear_algebra/help/en_US/matrix/orth.xml76
-rwxr-xr-xmodules/linear_algebra/help/en_US/matrix/rank.xml87
-rwxr-xr-xmodules/linear_algebra/help/en_US/matrix/rcond.xml82
-rwxr-xr-xmodules/linear_algebra/help/en_US/matrix/rref.xml68
-rwxr-xr-xmodules/linear_algebra/help/en_US/matrix/trace.xml57
-rwxr-xr-xmodules/linear_algebra/help/en_US/pencil/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/en_US/pencil/companion.xml77
-rwxr-xr-xmodules/linear_algebra/help/en_US/pencil/ereduc.xml114
-rwxr-xr-xmodules/linear_algebra/help/en_US/pencil/fstair.xml157
-rwxr-xr-xmodules/linear_algebra/help/en_US/pencil/glever.xml118
-rwxr-xr-xmodules/linear_algebra/help/en_US/pencil/kroneck.xml159
-rwxr-xr-xmodules/linear_algebra/help/en_US/pencil/lyap.xml79
-rwxr-xr-xmodules/linear_algebra/help/en_US/pencil/pencan.xml105
-rwxr-xr-xmodules/linear_algebra/help/en_US/pencil/penlaur.xml114
-rwxr-xr-xmodules/linear_algebra/help/en_US/pencil/quaskro.xml134
-rwxr-xr-xmodules/linear_algebra/help/en_US/pencil/randpencil.xml110
-rwxr-xr-xmodules/linear_algebra/help/en_US/pencil/rowshuff.xml103
-rwxr-xr-xmodules/linear_algebra/help/en_US/pencil/sylv.xml90
-rwxr-xr-xmodules/linear_algebra/help/en_US/proj.xml72
-rwxr-xr-xmodules/linear_algebra/help/en_US/state_space/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/en_US/state_space/coff.xml97
-rwxr-xr-xmodules/linear_algebra/help/en_US/state_space/nlev.xml88
-rwxr-xr-xmodules/linear_algebra/help/en_US/subspaces/CHAPTER3
-rwxr-xr-xmodules/linear_algebra/help/en_US/subspaces/spaninter.xml91
-rwxr-xr-xmodules/linear_algebra/help/en_US/subspaces/spanplus.xml100
-rwxr-xr-xmodules/linear_algebra/help/en_US/subspaces/spantwo.xml110
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/addchapter.sce11
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/eigen/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/eigen/bdiag.xml111
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/eigen/gspec.xml69
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/eigen/hess.xml94
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/eigen/pbig.xml128
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/eigen/spec.xml211
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/eigen/sva.xml87
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/eigen/svd.xml132
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/factorization/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/factorization/givens.xml90
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/factorization/householder.xml71
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/factorization/sqroot.xml63
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/kernel/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/kernel/colcomp.xml108
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/kernel/fullrf.xml102
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/kernel/fullrfk.xml77
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/kernel/kernel.xml96
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/kernel/range.xml95
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/kernel/rowcomp.xml124
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/linear/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/linear/chol.xml80
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/linear/inv.xml112
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/linear/linsolve.xml121
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/linear/lu.xml119
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/linear/pinv.xml85
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/linear/qr.xml194
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/markov/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/matrix/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/matrix/cond.xml160
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/matrix/det.xml94
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/matrix/orth.xml78
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/matrix/rank.xml94
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/matrix/rcond.xml74
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/matrix/trace.xml58
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/pencil/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/pencil/companion.xml78
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/pencil/glever.xml123
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/pencil/lyap.xml82
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/proj.xml73
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/state_space/CHAPTER1
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/state_space/coff.xml99
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/state_space/nlev.xml88
-rwxr-xr-xmodules/linear_algebra/help/fr_FR/subspaces/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/addchapter.sce11
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/eigen/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/eigen/balanc.xml203
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/eigen/bdiag.xml189
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/eigen/gschur.xml180
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/eigen/gspec.xml79
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/eigen/hess.xml179
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/eigen/pbig.xml234
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/eigen/projspec.xml165
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/eigen/psmall.xml232
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/eigen/schur.xml711
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/eigen/spec.xml522
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/eigen/sva.xml155
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/eigen/svd.xml252
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/factorization/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/factorization/givens.xml162
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/factorization/householder.xml140
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/factorization/sqroot.xml105
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/kernel/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/kernel/colcomp.xml206
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/kernel/fullrf.xml198
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/kernel/fullrfk.xml143
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/kernel/im_inv.xml202
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/kernel/kernel.xml173
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/kernel/range.xml173
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/kernel/rowcomp.xml233
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/linear/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/linear/aff2ab.xml258
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/linear/chol.xml149
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/linear/inv.xml195
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/linear/linsolve.xml211
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/linear/lsq.xml192
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/linear/lu.xml299
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/linear/pinv.xml159
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/linear/qr.xml378
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/linear/rankqr.xml290
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/markov/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/markov/classmarkov.xml176
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/markov/eigenmarkov.xml150
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/markov/genmarkov.xml161
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/matrix/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/matrix/cond.xml292
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/matrix/det.xml212
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/matrix/orth.xml144
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/matrix/rank.xml157
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/matrix/rcond.xml145
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/matrix/rref.xml127
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/matrix/trace.xml103
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/pencil/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/pencil/companion.xml150
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/pencil/ereduc.xml223
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/pencil/fstair.xml354
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/pencil/glever.xml220
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/pencil/kroneck.xml281
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/pencil/lyap.xml143
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/pencil/pencan.xml191
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/pencil/penlaur.xml224
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/pencil/quaskro.xml249
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/pencil/randpencil.xml207
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/pencil/rowshuff.xml196
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/pencil/sylv.xml132
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/proj.xml129
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/state_space/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/state_space/coff.xml183
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/state_space/nlev.xml161
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/subspaces/CHAPTER3
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/subspaces/spaninter.xml169
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/subspaces/spanplus.xml184
-rwxr-xr-xmodules/linear_algebra/help/ja_JP/subspaces/spantwo.xml202
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/addchapter.sce11
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/eigen/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/eigen/balanc.xml109
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/eigen/bdiag.xml108
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/eigen/gschur.xml97
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/eigen/gspec.xml45
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/eigen/hess.xml91
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/eigen/pbig.xml125
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/eigen/projspec.xml93
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/eigen/psmall.xml120
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/eigen/schur.xml411
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/eigen/spec.xml277
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/eigen/sva.xml83
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/eigen/svd.xml132
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/factorization/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/factorization/givens.xml91
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/factorization/householder.xml79
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/factorization/sqroot.xml64
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/kernel/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/kernel/colcomp.xml112
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/kernel/fullrf.xml106
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/kernel/fullrfk.xml77
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/kernel/im_inv.xml110
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/kernel/kernel.xml99
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/kernel/range.xml95
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/kernel/rowcomp.xml132
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/linear/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/linear/aff2ab.xml162
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/linear/chol.xml85
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/linear/inv.xml109
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/linear/linsolve.xml129
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/linear/lsq.xml116
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/linear/lu.xml124
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/linear/pinv.xml83
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/linear/qr.xml200
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/linear/rankqr.xml147
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/markov/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/markov/classmarkov.xml102
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/markov/eigenmarkov.xml83
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/markov/genmarkov.xml89
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/matrix/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/matrix/cond.xml59
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/matrix/det.xml94
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/matrix/orth.xml76
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/matrix/rank.xml88
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/matrix/rcond.xml77
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/matrix/rref.xml73
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/matrix/trace.xml60
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/pencil/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/pencil/companion.xml79
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/pencil/ereduc.xml123
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/pencil/fstair.xml175
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/pencil/glever.xml119
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/pencil/kroneck.xml161
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/pencil/lyap.xml78
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/pencil/pencan.xml107
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/pencil/penlaur.xml123
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/pencil/quaskro.xml134
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/pencil/randpencil.xml117
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/pencil/rowshuff.xml111
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/pencil/sylv.xml77
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/proj.xml73
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/state_space/CHAPTER2
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/state_space/coff.xml99
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/state_space/nlev.xml90
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/subspaces/CHAPTER3
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/subspaces/spaninter.xml98
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/subspaces/spanplus.xml103
-rwxr-xr-xmodules/linear_algebra/help/pt_BR/subspaces/spantwo.xml119
-rwxr-xr-xmodules/linear_algebra/help/ru_RU/addchapter.sce11
-rwxr-xr-xmodules/linear_algebra/includes/dynlib_linear_algebra.h28
-rwxr-xr-xmodules/linear_algebra/includes/gschur.h60
-rwxr-xr-xmodules/linear_algebra/includes/gw_linear_algebra.h59
-rwxr-xr-xmodules/linear_algebra/includes/gw_linear_algebra2.h23
-rwxr-xr-xmodules/linear_algebra/includes/issymmetric.h38
-rwxr-xr-xmodules/linear_algebra/includes/schur.h188
-rwxr-xr-xmodules/linear_algebra/libscilinear_algebra-algo.la41
-rwxr-xr-xmodules/linear_algebra/libscilinear_algebra.la41
-rwxr-xr-xmodules/linear_algebra/license.txt65
-rwxr-xr-xmodules/linear_algebra/linear_algebra.iss47
-rwxr-xr-xmodules/linear_algebra/locales/ca_ES.po227
-rwxr-xr-xmodules/linear_algebra/locales/cs_CZ.po221
-rwxr-xr-xmodules/linear_algebra/locales/de_DE.po224
-rwxr-xr-xmodules/linear_algebra/locales/es_ES.po226
-rwxr-xr-xmodules/linear_algebra/locales/fr_FR.po249
-rwxr-xr-xmodules/linear_algebra/locales/it_IT.po268
-rwxr-xr-xmodules/linear_algebra/locales/ja_JP.po206
-rwxr-xr-xmodules/linear_algebra/locales/linear_algebra.pot341
-rwxr-xr-xmodules/linear_algebra/locales/pl_PL.po233
-rwxr-xr-xmodules/linear_algebra/locales/pt_BR.po229
-rwxr-xr-xmodules/linear_algebra/locales/ru_RU.po241
-rwxr-xr-xmodules/linear_algebra/locales/uk_UA.po266
-rwxr-xr-xmodules/linear_algebra/locales/zh_CN.po202
-rwxr-xr-xmodules/linear_algebra/locales/zh_TW.po269
-rwxr-xr-xmodules/linear_algebra/macros/aff2ab.binbin0 -> 4996 bytes
-rwxr-xr-xmodules/linear_algebra/macros/aff2ab.sci44
-rwxr-xr-xmodules/linear_algebra/macros/buildmacros.bat11
-rwxr-xr-xmodules/linear_algebra/macros/buildmacros.sce15
-rwxr-xr-xmodules/linear_algebra/macros/classmarkov.binbin0 -> 4984 bytes
-rwxr-xr-xmodules/linear_algebra/macros/classmarkov.sci46
-rwxr-xr-xmodules/linear_algebra/macros/cleanmacros.bat13
-rwxr-xr-xmodules/linear_algebra/macros/cmb_lin.binbin0 -> 1388 bytes
-rwxr-xr-xmodules/linear_algebra/macros/cmb_lin.sci19
-rwxr-xr-xmodules/linear_algebra/macros/coff.binbin0 -> 4360 bytes
-rwxr-xr-xmodules/linear_algebra/macros/coff.sci33
-rwxr-xr-xmodules/linear_algebra/macros/colcomp.binbin0 -> 5280 bytes
-rwxr-xr-xmodules/linear_algebra/macros/colcomp.sci36
-rwxr-xr-xmodules/linear_algebra/macros/companion.binbin0 -> 5824 bytes
-rwxr-xr-xmodules/linear_algebra/macros/companion.sci50
-rwxr-xr-xmodules/linear_algebra/macros/cond.binbin0 -> 8072 bytes
-rwxr-xr-xmodules/linear_algebra/macros/cond.sci58
-rwxr-xr-xmodules/linear_algebra/macros/diff.binbin0 -> 7412 bytes
-rwxr-xr-xmodules/linear_algebra/macros/diff.sci51
-rwxr-xr-xmodules/linear_algebra/macros/eigenmarkov.binbin0 -> 7740 bytes
-rwxr-xr-xmodules/linear_algebra/macros/eigenmarkov.sci49
-rwxr-xr-xmodules/linear_algebra/macros/fullrf.binbin0 -> 2904 bytes
-rwxr-xr-xmodules/linear_algebra/macros/fullrf.sci30
-rwxr-xr-xmodules/linear_algebra/macros/fullrfk.binbin0 -> 3424 bytes
-rwxr-xr-xmodules/linear_algebra/macros/fullrfk.sci38
-rwxr-xr-xmodules/linear_algebra/macros/genmarkov.binbin0 -> 9836 bytes
-rwxr-xr-xmodules/linear_algebra/macros/genmarkov.sci62
-rwxr-xr-xmodules/linear_algebra/macros/givens.binbin0 -> 3020 bytes
-rwxr-xr-xmodules/linear_algebra/macros/givens.sci34
-rwxr-xr-xmodules/linear_algebra/macros/glever.binbin0 -> 6888 bytes
-rwxr-xr-xmodules/linear_algebra/macros/glever.sci52
-rwxr-xr-xmodules/linear_algebra/macros/gschur.binbin0 -> 6232 bytes
-rwxr-xr-xmodules/linear_algebra/macros/gschur.sci47
-rwxr-xr-xmodules/linear_algebra/macros/gspec.binbin0 -> 1024 bytes
-rwxr-xr-xmodules/linear_algebra/macros/gspec.sci15
-rwxr-xr-xmodules/linear_algebra/macros/householder.binbin0 -> 2660 bytes
-rwxr-xr-xmodules/linear_algebra/macros/householder.sci25
-rwxr-xr-xmodules/linear_algebra/macros/im_inv.binbin0 -> 5888 bytes
-rwxr-xr-xmodules/linear_algebra/macros/im_inv.sci45
-rwxr-xr-xmodules/linear_algebra/macros/kernel.binbin0 -> 8160 bytes
-rwxr-xr-xmodules/linear_algebra/macros/kernel.sci65
-rwxr-xr-xmodules/linear_algebra/macros/kroneck.binbin0 -> 10736 bytes
-rwxr-xr-xmodules/linear_algebra/macros/kroneck.sci67
-rwxr-xr-xmodules/linear_algebra/macros/libbin0 -> 1396 bytes
-rwxr-xr-xmodules/linear_algebra/macros/linsolve.binbin0 -> 12040 bytes
-rwxr-xr-xmodules/linear_algebra/macros/linsolve.sci77
-rwxr-xr-xmodules/linear_algebra/macros/names46
-rwxr-xr-xmodules/linear_algebra/macros/nlev.binbin0 -> 7080 bytes
-rwxr-xr-xmodules/linear_algebra/macros/nlev.sci65
-rwxr-xr-xmodules/linear_algebra/macros/orth.binbin0 -> 860 bytes
-rwxr-xr-xmodules/linear_algebra/macros/orth.sci18
-rwxr-xr-xmodules/linear_algebra/macros/pbig.binbin0 -> 7044 bytes
-rwxr-xr-xmodules/linear_algebra/macros/pbig.sci49
-rwxr-xr-xmodules/linear_algebra/macros/pen2ea.binbin0 -> 440 bytes
-rwxr-xr-xmodules/linear_algebra/macros/pen2ea.sci14
-rwxr-xr-xmodules/linear_algebra/macros/pencan.binbin0 -> 3144 bytes
-rwxr-xr-xmodules/linear_algebra/macros/pencan.sci30
-rwxr-xr-xmodules/linear_algebra/macros/penlaur.binbin0 -> 5916 bytes
-rwxr-xr-xmodules/linear_algebra/macros/penlaur.sci43
-rwxr-xr-xmodules/linear_algebra/macros/pinv.binbin0 -> 4712 bytes
-rwxr-xr-xmodules/linear_algebra/macros/pinv.sci42
-rwxr-xr-xmodules/linear_algebra/macros/polar.binbin0 -> 2424 bytes
-rwxr-xr-xmodules/linear_algebra/macros/polar.sci29
-rwxr-xr-xmodules/linear_algebra/macros/proj.binbin0 -> 1356 bytes
-rwxr-xr-xmodules/linear_algebra/macros/proj.sci19
-rwxr-xr-xmodules/linear_algebra/macros/projspec.binbin0 -> 10112 bytes
-rwxr-xr-xmodules/linear_algebra/macros/projspec.sci61
-rwxr-xr-xmodules/linear_algebra/macros/psmall.binbin0 -> 7204 bytes
-rwxr-xr-xmodules/linear_algebra/macros/psmall.sci50
-rwxr-xr-xmodules/linear_algebra/macros/quaskro.binbin0 -> 8360 bytes
-rwxr-xr-xmodules/linear_algebra/macros/quaskro.sci52
-rwxr-xr-xmodules/linear_algebra/macros/randpencil.binbin0 -> 12780 bytes
-rwxr-xr-xmodules/linear_algebra/macros/randpencil.sci95
-rwxr-xr-xmodules/linear_algebra/macros/range.binbin0 -> 3936 bytes
-rwxr-xr-xmodules/linear_algebra/macros/range.sci34
-rwxr-xr-xmodules/linear_algebra/macros/rank.binbin0 -> 3448 bytes
-rwxr-xr-xmodules/linear_algebra/macros/rank.sci33
-rwxr-xr-xmodules/linear_algebra/macros/rowcomp.binbin0 -> 5748 bytes
-rwxr-xr-xmodules/linear_algebra/macros/rowcomp.sci46
-rwxr-xr-xmodules/linear_algebra/macros/rowshuff.binbin0 -> 7100 bytes
-rwxr-xr-xmodules/linear_algebra/macros/rowshuff.sci50
-rwxr-xr-xmodules/linear_algebra/macros/rref.binbin0 -> 7708 bytes
-rwxr-xr-xmodules/linear_algebra/macros/rref.sci45
-rwxr-xr-xmodules/linear_algebra/macros/spaninter.binbin0 -> 8480 bytes
-rwxr-xr-xmodules/linear_algebra/macros/spaninter.sci52
-rwxr-xr-xmodules/linear_algebra/macros/spanplus.binbin0 -> 5920 bytes
-rwxr-xr-xmodules/linear_algebra/macros/spanplus.sci40
-rwxr-xr-xmodules/linear_algebra/macros/spantwo.binbin0 -> 7576 bytes
-rwxr-xr-xmodules/linear_algebra/macros/spantwo.sci48
-rwxr-xr-xmodules/linear_algebra/macros/sqroot.binbin0 -> 3332 bytes
-rwxr-xr-xmodules/linear_algebra/macros/sqroot.sci24
-rwxr-xr-xmodules/linear_algebra/macros/squeeze.binbin0 -> 3316 bytes
-rwxr-xr-xmodules/linear_algebra/macros/squeeze.sci37
-rwxr-xr-xmodules/linear_algebra/macros/sva.binbin0 -> 3636 bytes
-rwxr-xr-xmodules/linear_algebra/macros/sva.sci32
-rwxr-xr-xmodules/linear_algebra/macros/trace.binbin0 -> 7540 bytes
-rwxr-xr-xmodules/linear_algebra/macros/trace.sci56
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/.dirstamp0
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-assembleEigenvectors.Plo198
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-gw_linear_algebra.Plo277
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-gw_linear_algebra2.Plo285
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_backslash.Plo236
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_balanc.Plo236
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_bdiag.Plo214
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_chol.Plo236
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_det.Plo235
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_dgeev.Plo216
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_dggev.Plo225
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_dsyev.Plo219
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_hess.Plo236
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_inv.Plo235
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_lsq.Plo235
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_lu.Plo235
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_norm.Plo310
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_qr.Plo235
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_rcond.Plo236
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_schur.Plo236
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_slash.Plo236
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_spec.Plo239
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_svd.Plo235
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_zgeev.Plo219
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_zggev.Plo225
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_zheev.Plo219
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.dirstamp0
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-assembleEigenvectors.obin0 -> 11776 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-gw_linear_algebra.obin0 -> 7256 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-gw_linear_algebra2.obin0 -> 8688 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_backslash.obin0 -> 9680 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_balanc.obin0 -> 13104 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_bdiag.obin0 -> 15496 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_chol.obin0 -> 11104 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_det.obin0 -> 11088 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_dgeev.obin0 -> 14416 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_dggev.obin0 -> 14120 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_dsyev.obin0 -> 11240 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_hess.obin0 -> 11104 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_inv.obin0 -> 11104 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_lsq.obin0 -> 12072 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_lu.obin0 -> 11088 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_norm.obin0 -> 23128 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_qr.obin0 -> 13448 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_rcond.obin0 -> 11112 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_schur.obin0 -> 18728 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_slash.obin0 -> 9656 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_spec.obin0 -> 14080 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_svd.obin0 -> 12728 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_zgeev.obin0 -> 14960 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_zggev.obin0 -> 30480 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_zheev.obin0 -> 13896 bytes
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/assembleEigenvectors.c226
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/assembleEigenvectors.h26
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/gw_linear_algebra.c49
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/gw_linear_algebra2.c57
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_chol.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_det.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_hess.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_inv.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_lu.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_norm.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_qr.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_schur.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_slash.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_spec.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_svd.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo12
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_backslash.c100
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_balanc.c131
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_bdiag.c137
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_chol.c55
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_det.c54
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_dgeev.c183
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_dggev.c235
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_dsyev.c134
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_hess.c53
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_inv.c55
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_lsq.c100
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_lu.c55
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_norm.c247
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_qr.c144
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_rcond.c57
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_schur.c289
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_slash.c97
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_spec.c143
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_svd.c137
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_zgeev.c174
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_zggev.c622
-rwxr-xr-xmodules/linear_algebra/sci_gateway/c/sci_zheev.c155
-rwxr-xr-xmodules/linear_algebra/sci_gateway/linear_algebra_gateway.xml50
-rwxr-xr-xmodules/linear_algebra/src/c/.deps/.dirstamp0
-rwxr-xr-xmodules/linear_algebra/src/c/.deps/libscilinear_algebra_algo_la-issymmetric.Plo192
-rwxr-xr-xmodules/linear_algebra/src/c/.deps/libscilinear_algebra_algo_la-norm.Plo176
-rwxr-xr-xmodules/linear_algebra/src/c/.deps/libscilinear_algebra_algo_la-schurtable.Plo71
-rwxr-xr-xmodules/linear_algebra/src/c/.dirstamp0
-rwxr-xr-xmodules/linear_algebra/src/c/.libs/libscilinear_algebra_algo_la-issymmetric.obin0 -> 9544 bytes
-rwxr-xr-xmodules/linear_algebra/src/c/.libs/libscilinear_algebra_algo_la-norm.obin0 -> 28880 bytes
-rwxr-xr-xmodules/linear_algebra/src/c/.libs/libscilinear_algebra_algo_la-schurtable.obin0 -> 18312 bytes
-rwxr-xr-xmodules/linear_algebra/src/c/Core_f_Import.def10
-rwxr-xr-xmodules/linear_algebra/src/c/DllmainLinear_algebra.c36
-rwxr-xr-xmodules/linear_algebra/src/c/core_Import.def34
-rwxr-xr-xmodules/linear_algebra/src/c/elementary_functions_f_Import.def11
-rwxr-xr-xmodules/linear_algebra/src/c/issymmetric.c128
-rwxr-xr-xmodules/linear_algebra/src/c/libscilinear_algebra_algo_la-issymmetric.lo12
-rwxr-xr-xmodules/linear_algebra/src/c/libscilinear_algebra_algo_la-norm.lo12
-rwxr-xr-xmodules/linear_algebra/src/c/libscilinear_algebra_algo_la-schurtable.lo12
-rwxr-xr-xmodules/linear_algebra/src/c/linear_FTables.h27
-rwxr-xr-xmodules/linear_algebra/src/c/linear_algebra.rc96
-rwxr-xr-xmodules/linear_algebra/src/c/linear_algebra.vcxproj288
-rwxr-xr-xmodules/linear_algebra/src/c/linear_algebra.vcxproj.filters171
-rwxr-xr-xmodules/linear_algebra/src/c/linear_algebra_f_Import.def56
-rwxr-xr-xmodules/linear_algebra/src/c/norm.c325
-rwxr-xr-xmodules/linear_algebra/src/c/norm.h30
-rwxr-xr-xmodules/linear_algebra/src/c/schurtable.c242
-rwxr-xr-xmodules/linear_algebra/src/c/slicot_f_Import.def15
-rwxr-xr-xmodules/linear_algebra/src/fortran/.deps/.dirstamp0
-rwxr-xr-xmodules/linear_algebra/src/fortran/.dirstamp0
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/DGELSY1.obin0 -> 23712 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/ZGELSY1.obin0 -> 25496 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/complexify.obin0 -> 14888 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/doldqr.obin0 -> 25336 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intddet.obin0 -> 19112 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdgebal.obin0 -> 16704 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdgecon.obin0 -> 18520 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdgees0.obin0 -> 18008 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdgees1.obin0 -> 23768 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdgehrd.obin0 -> 18872 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdgelsy.obin0 -> 21456 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdgeqpf3.obin0 -> 22672 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdgeqpf4.obin0 -> 21720 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdgesv3.obin0 -> 24720 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdgesv4.obin0 -> 26416 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdgesvd1.obin0 -> 22464 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdgesvd2.obin0 -> 22472 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdgetrf.obin0 -> 21840 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdgetri.obin0 -> 18928 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdggbal.obin0 -> 19808 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdgges.obin0 -> 21464 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdoldsvd.obin0 -> 24688 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intdpotrf.obin0 -> 14776 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intfschur.obin0 -> 22120 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intgschur.obin0 -> 25080 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intogschur.obin0 -> 25304 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intoschur.obin0 -> 21216 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intozgschur.obin0 -> 41424 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzdet.obin0 -> 19552 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzfschur.obin0 -> 22128 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgebal.obin0 -> 16696 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgecon.obin0 -> 18616 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgees0.obin0 -> 18288 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgees1.obin0 -> 20016 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgehrd.obin0 -> 19136 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgelsy.obin0 -> 21872 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgeqpf3.obin0 -> 23648 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgeqpf4.obin0 -> 22536 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgesv3.obin0 -> 25176 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgesv4.obin0 -> 26608 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgesvd1.obin0 -> 23352 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgesvd2.obin0 -> 22848 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgetrf.obin0 -> 22200 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgetri.obin0 -> 19016 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzggbal.obin0 -> 19832 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgges.obin0 -> 21528 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzgschur.obin0 -> 44304 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzoldsvd.obin0 -> 25328 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzpotrf.obin0 -> 14976 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/intzschur.obin0 -> 38832 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/scischur.obin0 -> 22320 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/writebuf.obin0 -> 10480 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/.libs/zoldqr.obin0 -> 26328 bytes
-rwxr-xr-xmodules/linear_algebra/src/fortran/Core_f_Import.def14
-rwxr-xr-xmodules/linear_algebra/src/fortran/DGELSY1.f410
-rwxr-xr-xmodules/linear_algebra/src/fortran/DGELSY1.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/ZGELSY1.f448
-rwxr-xr-xmodules/linear_algebra/src/fortran/ZGELSY1.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/common_f2c.c24
-rwxr-xr-xmodules/linear_algebra/src/fortran/complexify.f49
-rwxr-xr-xmodules/linear_algebra/src/fortran/complexify.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/core_Import.def35
-rwxr-xr-xmodules/linear_algebra/src/fortran/doldqr.f151
-rwxr-xr-xmodules/linear_algebra/src/fortran/doldqr.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/elementary_functions_Import.def9
-rwxr-xr-xmodules/linear_algebra/src/fortran/elementary_functions_f_Import.def8
-rwxr-xr-xmodules/linear_algebra/src/fortran/intddet.f100
-rwxr-xr-xmodules/linear_algebra/src/fortran/intddet.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgebal.f65
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgebal.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgecon.f75
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgecon.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgees0.f93
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgees0.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgees1.f157
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgees1.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgehrd.f102
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgehrd.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgelsy.f102
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgelsy.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgeqpf3.f142
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgeqpf3.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgeqpf4.f124
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgeqpf4.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgesv3.f140
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgesv3.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgesv4.f169
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgesv4.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgesvd1.f130
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgesvd1.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgesvd2.f134
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgesvd2.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgetrf.f126
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgetrf.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgetri.f83
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgetri.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdggbal.f91
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdggbal.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgges.f126
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdgges.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdoldsvd.f148
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdoldsvd.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdpotrf.f66
-rwxr-xr-xmodules/linear_algebra/src/fortran/intdpotrf.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intfschur.f124
-rwxr-xr-xmodules/linear_algebra/src/fortran/intfschur.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intgschur.f143
-rwxr-xr-xmodules/linear_algebra/src/fortran/intgschur.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intogschur.f162
-rwxr-xr-xmodules/linear_algebra/src/fortran/intogschur.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intoschur.f120
-rwxr-xr-xmodules/linear_algebra/src/fortran/intoschur.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intozgschur.f197
-rwxr-xr-xmodules/linear_algebra/src/fortran/intozgschur.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzdet.f96
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzdet.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzfschur.f127
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzfschur.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgebal.f64
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgebal.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgecon.f75
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgecon.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgees0.f93
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgees0.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgees1.f105
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgees1.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgehrd.f101
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgehrd.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgelsy.f100
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgelsy.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgeqpf3.f144
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgeqpf3.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgeqpf4.f129
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgeqpf4.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgesv3.f142
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgesv3.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgesv4.f173
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgesv4.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgesvd1.f138
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgesvd1.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgesvd2.f137
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgesvd2.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgetrf.f126
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgetrf.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgetri.f84
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgetri.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzggbal.f89
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzggbal.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgges.f127
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgges.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgschur.f211
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzgschur.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzoldsvd.f152
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzoldsvd.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzpotrf.f68
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzpotrf.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzschur.f183
-rwxr-xr-xmodules/linear_algebra/src/fortran/intzschur.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/issymmetric.f62
-rwxr-xr-xmodules/linear_algebra/src/fortran/linear_algebra_Import.def33
-rwxr-xr-xmodules/linear_algebra/src/fortran/linear_algebra_f.rc96
-rwxr-xr-xmodules/linear_algebra/src/fortran/linear_algebra_f.vfproj162
-rwxr-xr-xmodules/linear_algebra/src/fortran/linear_algebra_f2c.vcxproj399
-rwxr-xr-xmodules/linear_algebra/src/fortran/linear_algebra_f2c.vcxproj.filters376
-rwxr-xr-xmodules/linear_algebra/src/fortran/output_stream_Import.def7
-rwxr-xr-xmodules/linear_algebra/src/fortran/scischur.f67
-rwxr-xr-xmodules/linear_algebra/src/fortran/scischur.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/writebuf.f70
-rwxr-xr-xmodules/linear_algebra/src/fortran/writebuf.lo12
-rwxr-xr-xmodules/linear_algebra/src/fortran/zoldqr.f153
-rwxr-xr-xmodules/linear_algebra/src/fortran/zoldqr.lo12
-rwxr-xr-xmodules/linear_algebra/tests/benchmarks/bench_chol.tst23
-rwxr-xr-xmodules/linear_algebra/tests/benchmarks/bench_det.tst21
-rwxr-xr-xmodules/linear_algebra/tests/benchmarks/bench_escoufier.tst72
-rwxr-xr-xmodules/linear_algebra/tests/benchmarks/bench_inv.tst23
-rwxr-xr-xmodules/linear_algebra/tests/benchmarks/bench_matrix_1.tst25
-rwxr-xr-xmodules/linear_algebra/tests/benchmarks/bench_matrix_2.tst23
-rwxr-xr-xmodules/linear_algebra/tests/benchmarks/bench_matrix_3.tst22
-rwxr-xr-xmodules/linear_algebra/tests/benchmarks/bench_matrix_4.tst25
-rwxr-xr-xmodules/linear_algebra/tests/benchmarks/bench_spec.tst23
-rwxr-xr-xmodules/linear_algebra/tests/benchmarks/bench_sqroot.tst19
-rwxr-xr-xmodules/linear_algebra/tests/benchmarks/bench_sva.tst18
-rwxr-xr-xmodules/linear_algebra/tests/benchmarks/bench_svd_1.tst27
-rwxr-xr-xmodules/linear_algebra/tests/benchmarks/bench_svd_2.tst27
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_10178.dia.ref40
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_10178.tst50
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_10281.dia.ref25
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_10281.tst28
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_10519.dia.ref22
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_10519.tst24
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_10921.dia.ref26
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_10921.tst28
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_12121.dia.ref19
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_12121.tst23
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_12686.dia.ref18
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_12686.tst22
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_2523.dia.ref24
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_2523.tst33
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_2775.dia.ref23
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_2775.tst30
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_3312.dia.ref17
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_3312.tst20
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_3624.dia.ref16
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_3624.tst20
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_3652.dia.ref24
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_3652.tst29
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_3827.dia.ref16
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_3827.tst18
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_4042.dia.ref28
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_4042.tst33
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_4311.dia.ref15
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_4311.tst18
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_4405.dia.ref19
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_4405.tst20
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_4425.dia.ref29
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_4425.tst39
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_4759.dia.ref16
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_4759.tst23
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_5017.dia.ref173
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_5017.tst184
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_545.dia.ref37
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_545.tst41
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_6477.dia.ref38
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_6477.tst45
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_6783.dia.ref175
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_6783.tst192
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_7109.dia.ref21
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_7109.tst27
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_7485.dia.ref26
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_7485.tst32
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_7950.dia.ref43
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_7950.tst48
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_8820.dia.ref19
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_8820.tst20
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_9196.dia.ref86
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_9196.tst94
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_9204.dia.ref20
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_9204.tst25
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_F.dia.ref5
-rwxr-xr-xmodules/linear_algebra/tests/nonreg_tests/bug_F.tst13
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/balanc.dia.ref72
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/balanc.tst78
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/bdiag.dia.ref103
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/bdiag.tst121
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/chol.dia.ref37
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/chol.tst45
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/companion.dia.ref55
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/companion.tst57
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/cond.dia.ref61
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/cond.tst87
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/det.dia.ref122
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/det.tst98
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/gspec.dia.ref122
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/gspec.tst139
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/hess.dia.ref48
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/hess.tst53
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/inv.dia.ref56
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/inv.tst56
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/leftmatrixdiv.dia.ref121
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/leftmatrixdiv.tst149
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/lsq.dia.ref96
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/lsq.tst113
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/lu.dia.ref99
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/lu.tst106
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/norm.dia.ref139
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/norm.tst148
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/qr.dia.ref143
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/qr.tst184
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/rcond.dia.ref29
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/rcond.tst33
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/rdiv.dia.ref118
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/rdiv.tst138
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/schur.dia.ref407
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/schur.tst493
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/spec.dia.ref132
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/spec.tst153
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/squeeze.dia.ref31
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/squeeze.tst36
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/svd.dia.ref293
-rwxr-xr-xmodules/linear_algebra/tests/unit_tests/svd.tst376
798 files changed, 67463 insertions, 0 deletions
diff --git a/modules/linear_algebra/.libs/libscilinear_algebra-algo.a b/modules/linear_algebra/.libs/libscilinear_algebra-algo.a
new file mode 100755
index 000000000..538a0e5f7
--- /dev/null
+++ b/modules/linear_algebra/.libs/libscilinear_algebra-algo.a
Binary files differ
diff --git a/modules/linear_algebra/.libs/libscilinear_algebra-algo.la b/modules/linear_algebra/.libs/libscilinear_algebra-algo.la
new file mode 120000
index 000000000..335ced933
--- /dev/null
+++ b/modules/linear_algebra/.libs/libscilinear_algebra-algo.la
@@ -0,0 +1 @@
+../libscilinear_algebra-algo.la \ No newline at end of file
diff --git a/modules/linear_algebra/.libs/libscilinear_algebra.a b/modules/linear_algebra/.libs/libscilinear_algebra.a
new file mode 100755
index 000000000..d1de3f8d5
--- /dev/null
+++ b/modules/linear_algebra/.libs/libscilinear_algebra.a
Binary files differ
diff --git a/modules/linear_algebra/.libs/libscilinear_algebra.la b/modules/linear_algebra/.libs/libscilinear_algebra.la
new file mode 120000
index 000000000..b32b21f3a
--- /dev/null
+++ b/modules/linear_algebra/.libs/libscilinear_algebra.la
@@ -0,0 +1 @@
+../libscilinear_algebra.la \ No newline at end of file
diff --git a/modules/linear_algebra/Makefile b/modules/linear_algebra/Makefile
new file mode 100755
index 000000000..c27a152f9
--- /dev/null
+++ b/modules/linear_algebra/Makefile
@@ -0,0 +1,1876 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# modules/linear_algebra/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) 2006 - INRIA - Sylvestre LEDRU
+#
+# This file is distributed under the same license as the Scilab package.
+
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) 2006-2008 - INRIA - Sylvestre LEDRU <sylvestre.ledru@inria.fr>
+# Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre.marechal@inria.fr>
+#
+# This file must be used under the terms of the CeCILL.
+# This source file is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at
+# http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+#
+
+##########
+### Makefile included stuff
+### Target, variable, suffixes which are supposed to be useful in every makefile.am
+##########
+
+
+
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/scilab
+pkgincludedir = $(includedir)/scilab
+pkglibdir = $(libdir)/scilab
+pkglibexecdir = $(libexecdir)/scilab
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+DIST_COMMON = $(top_srcdir)/Makefile.incl.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/mkinstalldirs \
+ $(top_srcdir)/config/depcomp
+am__append_1 = java
+subdir = modules/linear_algebra
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/backtrace.m4 \
+ $(top_srcdir)/m4/compiler.m4 $(top_srcdir)/m4/curl.m4 \
+ $(top_srcdir)/m4/docbook.m4 $(top_srcdir)/m4/doxygen.m4 \
+ $(top_srcdir)/m4/fftw.m4 $(top_srcdir)/m4/fortran.m4 \
+ $(top_srcdir)/m4/giws.m4 $(top_srcdir)/m4/hdf5.m4 \
+ $(top_srcdir)/m4/intel_compiler.m4 \
+ $(top_srcdir)/m4/java-thirdparty.m4 $(top_srcdir)/m4/java.m4 \
+ $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/libsmath.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/macosx.m4 \
+ $(top_srcdir)/m4/mpi.m4 $(top_srcdir)/m4/ocaml.m4 \
+ $(top_srcdir)/m4/pcre.m4 $(top_srcdir)/m4/pkg.m4 \
+ $(top_srcdir)/m4/relocatable.m4 $(top_srcdir)/m4/swig.m4 \
+ $(top_srcdir)/m4/symlinks.m4 $(top_srcdir)/m4/tcltk.m4 \
+ $(top_srcdir)/m4/umfpack.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/modules/core/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(pkglibdir)" \
+ "$(DESTDIR)$(libscilinear_algebra_la_etcdir)" \
+ "$(DESTDIR)$(libscilinear_algebra_la_rootdir)" \
+ "$(DESTDIR)$(libscilinear_algebra_la_sci_gatewaydir)"
+LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES)
+libscilinear_algebra_algo_la_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 = src/fortran/intdggbal.lo src/fortran/intzgeqpf4.lo \
+ src/fortran/intzgehrd.lo src/fortran/intzgesvd1.lo \
+ src/fortran/intzfschur.lo src/fortran/intzgesvd2.lo \
+ src/fortran/intdgges.lo src/fortran/intgschur.lo \
+ src/fortran/intdgesv3.lo src/fortran/intdgesv4.lo \
+ src/fortran/DGELSY1.lo src/fortran/ZGELSY1.lo \
+ src/fortran/intozgschur.lo src/fortran/intdpotrf.lo \
+ src/fortran/intdoldsvd.lo src/fortran/intdgecon.lo \
+ src/fortran/zoldqr.lo src/fortran/intzgetrf.lo \
+ src/fortran/intoschur.lo src/fortran/complexify.lo \
+ src/fortran/intzgebal.lo src/fortran/intzgetri.lo \
+ src/fortran/intzggbal.lo src/fortran/intdgees0.lo \
+ src/fortran/intdgees1.lo src/fortran/intogschur.lo \
+ src/fortran/intzgges.lo src/fortran/intddet.lo \
+ src/fortran/intzgesv3.lo src/fortran/intzgesv4.lo \
+ src/fortran/intzpotrf.lo src/fortran/intzgecon.lo \
+ src/fortran/intzgschur.lo src/fortran/intzoldsvd.lo \
+ src/fortran/intdgelsy.lo src/fortran/intdgeqpf3.lo \
+ src/fortran/intfschur.lo src/fortran/intdgeqpf4.lo \
+ src/fortran/intdgesvd1.lo src/fortran/intdgehrd.lo \
+ src/fortran/intzgees0.lo src/fortran/intdgesvd2.lo \
+ src/fortran/intzgees1.lo src/fortran/intzdet.lo \
+ src/fortran/doldqr.lo src/fortran/scischur.lo \
+ src/fortran/intdgetrf.lo src/fortran/intzgelsy.lo \
+ src/fortran/intdgetri.lo src/fortran/intdgebal.lo \
+ src/fortran/intzschur.lo src/fortran/intzgeqpf3.lo \
+ src/fortran/writebuf.lo
+am__objects_2 = src/c/libscilinear_algebra_algo_la-schurtable.lo \
+ src/c/libscilinear_algebra_algo_la-issymmetric.lo \
+ src/c/libscilinear_algebra_algo_la-norm.lo
+am_libscilinear_algebra_algo_la_OBJECTS = $(am__objects_1) \
+ $(am__objects_2)
+libscilinear_algebra_algo_la_OBJECTS = \
+ $(am_libscilinear_algebra_algo_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+am__v_lt_1 =
+am_libscilinear_algebra_algo_la_rpath =
+#am_libscilinear_algebra_algo_la_rpath =
+libscilinear_algebra_la_DEPENDENCIES = libscilinear_algebra-algo.la
+am__objects_3 = \
+ sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_hess.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_slash.lo \
+ sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_det.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_lu.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_qr.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_schur.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_chol.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_spec.lo \
+ sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_inv.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_svd.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_norm.lo \
+ sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo
+am__objects_4 =
+am_libscilinear_algebra_la_OBJECTS = $(am__objects_3) $(am__objects_4)
+libscilinear_algebra_la_OBJECTS = \
+ $(am_libscilinear_algebra_la_OBJECTS)
+am_libscilinear_algebra_la_rpath =
+#am_libscilinear_algebra_la_rpath = -rpath \
+# $(pkglibdir)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/modules/core/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS)
+LTF77COMPILE = $(LIBTOOL) $(AM_V_lt) --tag=F77 $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS)
+AM_V_F77 = $(am__v_F77_$(V))
+am__v_F77_ = $(am__v_F77_$(AM_DEFAULT_VERBOSITY))
+am__v_F77_0 = @echo " F77 " $@;
+am__v_F77_1 =
+F77LD = $(F77)
+F77LINK = $(LIBTOOL) $(AM_V_lt) --tag=F77 $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(F77LD) $(AM_FFLAGS) $(FFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_F77LD = $(am__v_F77LD_$(V))
+am__v_F77LD_ = $(am__v_F77LD_$(AM_DEFAULT_VERBOSITY))
+am__v_F77LD_0 = @echo " F77LD " $@;
+am__v_F77LD_1 =
+SOURCES = $(libscilinear_algebra_algo_la_SOURCES) \
+ $(libscilinear_algebra_la_SOURCES)
+DIST_SOURCES = $(libscilinear_algebra_algo_la_SOURCES) \
+ $(libscilinear_algebra_la_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DATA = $(libscilinear_algebra_la_etc_DATA) \
+ $(libscilinear_algebra_la_root_DATA) \
+ $(libscilinear_algebra_la_sci_gateway_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/shashank/scilab-master_5.5.2/config/missing aclocal-1.14
+ALL_LINGUAS = en_US fr_FR zh_CN zh_TW ru_RU ca_ES de_DE es_ES pt_BR ja_JP it_IT uk_UA pl_PL cs_CZ
+ALL_LINGUAS_DOC = en_US fr_FR pt_BR ja_JP ru_RU
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+ANT = /usr/bin/ant
+ANTLR = /usr/share/java/antlr.jar
+AR = ar
+ARPACK_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -larpack
+ASM3 = /usr/share/java/asm3-3.3.2.jar
+AUTOCONF = ${SHELL} /home/shashank/scilab-master_5.5.2/config/missing autoconf
+AUTOHEADER = ${SHELL} /home/shashank/scilab-master_5.5.2/config/missing autoheader
+AUTOMAKE = ${SHELL} /home/shashank/scilab-master_5.5.2/config/missing automake-1.14
+AVALON_FRAMEWORK = /home/shashank/scilab-master_5.5.2/thirdparty/avalon-framework.jar
+AWK = mawk
+BATIK = /home/shashank/scilab-master_5.5.2/thirdparty/batik-all-1.7.jar
+BLAS_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lblas
+CC = gcc
+CCACHE =
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CHECKSTYLE =
+COBERTURA = /usr/share/java/cobertura.jar
+COMMONS_BEANUTILS =
+COMMONS_IO = /home/shashank/scilab-master_5.5.2/thirdparty/commons-io.jar
+COMMONS_LOGGING = /home/shashank/scilab-master_5.5.2/thirdparty/commons-logging.jar
+CPP = gcc -E
+CPPFLAGS =
+CURL_CFLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include
+CURL_CONFIG = /home/shashank/scilab-master_5.5.2/usr/bin/curl-config
+CURL_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lcurl -L/home/scilab/work/linux-prerequisites-sources/trunk/Dev-Tools/SE/Prerequirements/linux_x64/usr/lib -L/home/scilab/work/linux-prerequisites-sources/trunk/Dev-Tools/SE/Prerequirements/linux_x64/usr/lib -lssl -lcrypto -lrt -lz
+CURL_VERSION = libcurl 7.19.7
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEMOTOOLS_ENABLE = yes
+DEPDIR = .deps
+DLLTOOL = false
+DOCBOOK_ROOT = /home/shashank/scilab-master_5.5.2/thirdparty/docbook/
+DOXYGEN_BIN =
+DSYMUTIL =
+DUMPBIN =
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+ECJ = /home/shashank/scilab-master_5.5.2/thirdparty/ecj.jar
+EGREP = /bin/grep -E
+EXEEXT =
+F77 = gfortran
+FFLAGS = -g -O2
+FFTW3_LIB = -L/home/shashank/scilab-master_5.5.2/usr/lib -lfftw3
+FFTW_ENABLE = yes
+FGREP = /bin/grep -F
+FLEXDOCK = /home/shashank/scilab-master_5.5.2/thirdparty/flexdock-1.2.4.jar
+FLIBS = -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. -lpthread -ldl -lcurses -lgfortran -lm -lquadmath
+FOP = /home/shashank/scilab-master_5.5.2/thirdparty/fop.jar
+FREEHEP_GRAPHICS2D = /home/shashank/scilab-master_5.5.2/thirdparty/freehep-graphics2d.jar
+FREEHEP_GRAPHICSIO = /home/shashank/scilab-master_5.5.2/thirdparty/freehep-graphicsio.jar
+FREEHEP_GRAPHICSIO_EMF = /home/shashank/scilab-master_5.5.2/thirdparty/freehep-graphicsio-emf.jar
+FREEHEP_IO = /home/shashank/scilab-master_5.5.2/thirdparty/freehep-io.jar
+FREEHEP_UTIL = /home/shashank/scilab-master_5.5.2/thirdparty/freehep-util.jar
+GENHTML =
+GETTEXT_MACRO_VERSION = 0.19
+GIWS_BIN =
+GLUEGEN2_RT = /home/shashank/scilab-master_5.5.2/thirdparty/gluegen2-rt.jar
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GRAPHICS_ENABLE = yes
+GREP = /bin/grep
+GUI_ENABLE = yes
+HDF5_CFLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include
+HDF5_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lhdf5 -lhdf5_hl
+HELP_ENABLE = yes
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+INTLLIBS =
+INTL_MACOSX_LIBS =
+JAR = /usr/lib/jvm/java-8-openjdk-amd64/bin/jar
+JAVA = /usr/lib/jvm/java-8-openjdk-amd64/bin/java
+JAVAC = /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
+JAVAC_DEBUG = off
+JAVADOC = /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc
+JAVAH = /usr/lib/jvm/java-8-openjdk-amd64/bin/javah
+JAVASCI_ENABLE = yes
+JAVA_ENABLE = yes
+JAVA_G = /usr/lib/jvm/java-8-openjdk-amd64/bin/java
+JAVA_HOME = /usr/lib/jvm/java-8-openjdk-amd64
+JAVA_JNI_INCLUDE = -I/usr/lib/jvm/java-8-openjdk-amd64/include -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux
+JAVA_JNI_LIBS = -L/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64 -ljava -lverify -L/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server -ljvm
+JDB = /usr/lib/jvm/java-8-openjdk-amd64/bin/jdb
+JEUCLID_CORE = /home/shashank/scilab-master_5.5.2/thirdparty/jeuclid-core.jar
+JGRAPHX = /home/shashank/scilab-master_5.5.2/thirdparty/jgraphx.jar
+JHALL = /home/shashank/scilab-master_5.5.2/thirdparty/jhall.jar
+JLATEXMATH = /home/shashank/scilab-master_5.5.2/thirdparty/jlatexmath-1.0.3.jar
+JLATEXMATH_FOP = /home/shashank/scilab-master_5.5.2/thirdparty/jlatexmath-fop-1.0.3.jar
+JOGL2 = /home/shashank/scilab-master_5.5.2/thirdparty/jogl2.jar
+JROSETTA_API = /home/shashank/scilab-master_5.5.2/thirdparty/jrosetta-API.jar
+JROSETTA_ENGINE = /home/shashank/scilab-master_5.5.2/thirdparty/jrosetta-engine.jar
+JUNIT4 = /usr/share/java/junit4.jar
+LAPACK_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -llapack
+LCOV =
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = -Wl,--no-as-needed
+LIBICONV = -liconv
+LIBINTL =
+LIBM = -lm
+LIBOBJS =
+LIBS = -lpthread -ldl -lcurses -lm
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIPO =
+LN_S = ln -s
+LOGGING_LEVEL = SEVERE
+LOOKS = /home/shashank/scilab-master_5.5.2/thirdparty/looks-2.1.1.jar
+LTLIBICONV = -liconv
+LTLIBINTL =
+LTLIBOBJS =
+MAINT = #
+MAKEINFO = ${SHELL} /home/shashank/scilab-master_5.5.2/config/missing makeinfo
+MANIFEST_TOOL = :
+MATIO_CFLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include
+MATIO_ENABLE = yes
+MATIO_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lm -lz -lmatio -lhdf5
+MKDIR_P = /bin/mkdir -p
+MPI_ENABLE = no
+MSGCAT = /usr/bin/msgcat
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+NMEDIT =
+OBJDUMP = objdump
+OBJEXT = o
+OCAMLC = ocamlc
+OCAMLDEP = ocamldep
+OCAMLLEX = ocamllex
+OCAMLOPT = ocamlopt
+OCAMLYACC = ocamlyacc
+OPENMPI_CC =
+OPENMPI_CFLAGS =
+OPENMPI_CXX =
+OPENMPI_CXXFLAGS =
+OPENMPI_LIBS =
+OPENMP_CFLAGS = -fopenmp
+OPENMP_CXXFLAGS = -fopenmp
+OPENMP_ENABLE = yes
+OPENMP_LIBS = -lgomp -lstdc++
+OTOOL =
+OTOOL64 =
+PACKAGE = scilab
+PACKAGE_BUGREPORT = http://bugzilla.scilab.org/
+PACKAGE_NAME = Scilab
+PACKAGE_STRING = Scilab 5
+PACKAGE_TARNAME = scilab
+PACKAGE_URL =
+PACKAGE_VERSION = 5
+PATH_SEPARATOR = :
+PCRE_CFLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include
+PCRE_CONFIG = /home/shashank/scilab-master_5.5.2/usr/bin/pcre-config
+PCRE_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lpcreposix -lpcre
+PCRE_VERSION = 8.35
+PKG_CONFIG = /usr/bin/pkg-config
+POSUB = po
+POW_LIB =
+PYTHON =
+RANLIB = ranlib
+RELOCATABLE = no
+RT_LIB = -lrt
+SAXON = /home/shashank/scilab-master_5.5.2/thirdparty/saxon9he.jar
+SCILAB_BINARY_VERSION = 5.5.2
+SCILAB_LIBRARY_VERSION = 5:5:2
+SCILAB_VERSION_MAINTENANCE = 2
+SCILAB_VERSION_MAJOR = 5
+SCILAB_VERSION_MINOR = 5
+SCIRENDERER = ${modules.dir}/scirenderer/${build.jar.dir}/scirenderer.jar
+SCIRENDERER_CP = $SCILAB/modules/scirenderer/jar/scirenderer.jar
+SCI_CFLAGS = -D_LARGEFILE64_SOURCE -DNDEBUG -m64 -fno-stack-protector
+SCI_CXXFLAGS = -DNDEBUG -fno-stack-protector
+SCI_FFLAGS = -DNDEBUG -m64 -fPIC
+SCI_LDFLAGS =
+SED = /bin/sed
+SET_MAKE =
+SET_RELOCATABLE =
+SHELL = /bin/bash
+SKINLF = /home/shashank/scilab-master_5.5.2/thirdparty/skinlf.jar
+SPLINT = no
+STRIP = strip
+SWIG_BIN =
+SWIG_JAVA =
+SWIG_RUNTIME_LIBS_DIR =
+SWIG_SCILAB =
+TCLTK_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -ltk8.5 -L/home/shashank/scilab-master_5.5.2/usr/lib -ltcl8.5 -ldl
+TCL_INC_PATH = -I/home/shashank/scilab-master_5.5.2/usr/include
+TK_INC_PATH = -I/home/shashank/scilab-master_5.5.2/usr/include
+UMFPACK_CFLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include
+UMFPACK_ENABLE = yes
+UMFPACK_LIB = -L/home/shashank/scilab-master_5.5.2/usr/lib -lumfpack -lamd
+USE_NLS = yes
+VERSION = 5
+WITH_OCAML =
+WITH_TKSCI = yes
+XCOS_ENABLE = yes
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS =
+XMKMF =
+XMLGRAPHICS_COMMONS = /home/shashank/scilab-master_5.5.2/thirdparty/xmlgraphics-commons-1.4.jar
+XML_APIS_EXT = /home/shashank/scilab-master_5.5.2/thirdparty/xml-apis-ext.jar
+XML_CONFIG = /home/shashank/scilab-master_5.5.2/usr/bin/xml2-config
+XML_FLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include/libxml2
+XML_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lxml2 -L/home/scilab/work/linux-prerequisites-sources/trunk/Dev-Tools/SE/Prerequirements/linux_x64/usr/lib -lz -lm -ldl
+XML_VERSION = 2.9.1
+X_CFLAGS =
+X_EXTRA_LIBS =
+X_LIBS =
+X_PRE_LIBS =
+abs_builddir = /home/shashank/scilab-master_5.5.2/modules/linear_algebra
+abs_srcdir = /home/shashank/scilab-master_5.5.2/modules/linear_algebra
+abs_top_builddir = /home/shashank/scilab-master_5.5.2
+abs_top_srcdir = /home/shashank/scilab-master_5.5.2
+ac_ct_AR = ar
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DUMPBIN =
+ac_ct_F77 = gfortran
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias =
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+cxx_present = yes
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias =
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/shashank/scilab-master_5.5.2/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias =
+top_build_prefix = ../../
+top_builddir = ../..
+top_srcdir = ../..
+LINEAR_ALGEBRA_C_SOURCES = src/c/schurtable.c \
+src/c/issymmetric.c \
+src/c/norm.c
+
+LINEAR_ALGEBRA_FORTRAN_SOURCES = src/fortran/intdggbal.f \
+src/fortran/intzgeqpf4.f \
+src/fortran/intzgehrd.f \
+src/fortran/intzgesvd1.f \
+src/fortran/intzfschur.f \
+src/fortran/intzgesvd2.f \
+src/fortran/intdgges.f \
+src/fortran/intgschur.f \
+src/fortran/intdgesv3.f \
+src/fortran/intdgesv4.f \
+src/fortran/DGELSY1.f \
+src/fortran/ZGELSY1.f \
+src/fortran/intozgschur.f \
+src/fortran/intdpotrf.f \
+src/fortran/intdoldsvd.f \
+src/fortran/intdgecon.f \
+src/fortran/zoldqr.f \
+src/fortran/intzgetrf.f \
+src/fortran/intoschur.f \
+src/fortran/complexify.f \
+src/fortran/intzgebal.f \
+src/fortran/intzgetri.f \
+src/fortran/intzggbal.f \
+src/fortran/intdgees0.f \
+src/fortran/intdgees1.f \
+src/fortran/intogschur.f \
+src/fortran/intzgges.f \
+src/fortran/intddet.f \
+src/fortran/intzgesv3.f \
+src/fortran/intzgesv4.f \
+src/fortran/intzpotrf.f \
+src/fortran/intzgecon.f \
+src/fortran/intzgschur.f \
+src/fortran/intzoldsvd.f \
+src/fortran/intdgelsy.f \
+src/fortran/intdgeqpf3.f \
+src/fortran/intfschur.f \
+src/fortran/intdgeqpf4.f \
+src/fortran/intdgesvd1.f \
+src/fortran/intdgehrd.f \
+src/fortran/intzgees0.f \
+src/fortran/intdgesvd2.f \
+src/fortran/intzgees1.f \
+src/fortran/intzdet.f \
+src/fortran/doldqr.f \
+src/fortran/scischur.f \
+src/fortran/intdgetrf.f \
+src/fortran/intzgelsy.f \
+src/fortran/intdgetri.f \
+src/fortran/intdgebal.f \
+src/fortran/intzschur.f \
+src/fortran/intzgeqpf3.f \
+src/fortran/writebuf.f
+
+#src/fortran/issymmetric.f
+GATEWAY_C_SOURCES = sci_gateway/c/sci_backslash.c \
+sci_gateway/c/sci_hess.c \
+sci_gateway/c/sci_rcond.c \
+sci_gateway/c/sci_bdiag.c \
+sci_gateway/c/sci_slash.c \
+sci_gateway/c/gw_linear_algebra2.c \
+sci_gateway/c/sci_det.c \
+sci_gateway/c/sci_lu.c \
+sci_gateway/c/sci_balanc.c \
+sci_gateway/c/sci_qr.c \
+sci_gateway/c/sci_schur.c \
+sci_gateway/c/sci_chol.c \
+sci_gateway/c/sci_spec.c \
+sci_gateway/c/gw_linear_algebra.c \
+sci_gateway/c/sci_inv.c \
+sci_gateway/c/sci_svd.c \
+sci_gateway/c/sci_lsq.c \
+sci_gateway/c/sci_norm.c \
+sci_gateway/c/assembleEigenvectors.c \
+sci_gateway/c/sci_dgeev.c \
+sci_gateway/c/sci_dggev.c \
+sci_gateway/c/sci_dsyev.c \
+sci_gateway/c/sci_zgeev.c \
+sci_gateway/c/sci_zggev.c \
+sci_gateway/c/sci_zheev.c
+
+GATEWAY_FORTRAN_SOURCES =
+libscilinear_algebra_la_CPPFLAGS = -I$(srcdir)/includes/ \
+-I$(srcdir)/src/c/ \
+-I$(top_srcdir)/modules/output_stream/includes/ \
+-I$(top_srcdir)/modules/dynamic_link/includes/ \
+-I$(top_srcdir)/modules/api_scilab/includes/ \
+-I$(top_srcdir)/modules/elementary_functions/includes/ \
+-I$(top_srcdir)/modules/localization/includes/ \
+$(AM_CPPFLAGS)
+
+#pkglib_LTLIBRARIES = libscilinear_algebra.la
+noinst_LTLIBRARIES = libscilinear_algebra-algo.la libscilinear_algebra.la
+#noinst_LTLIBRARIES = libscilinear_algebra-algo.la
+libscilinear_algebra_algo_la_SOURCES = $(LINEAR_ALGEBRA_FORTRAN_SOURCES) $(LINEAR_ALGEBRA_C_SOURCES)
+libscilinear_algebra_la_SOURCES = $(GATEWAY_C_SOURCES) $(GATEWAY_FORTRAN_SOURCES)
+libscilinear_algebra_algo_la_CPPFLAGS = $(libscilinear_algebra_la_CPPFLAGS)
+
+# For the code check (splint)
+CHECK_SRC = $(LINEAR_ALGEBRA_C_SOURCES) $(GATEWAY_C_SOURCES)
+INCLUDE_FLAGS = $(libscilinear_algebra_la_CPPFLAGS)
+libscilinear_algebra_la_LIBADD = libscilinear_algebra-algo.la
+
+#### Target ######
+modulename = linear_algebra
+
+#### linear_algebra : Conf files ####
+libscilinear_algebra_la_rootdir = $(mydatadir)
+libscilinear_algebra_la_root_DATA = license.txt
+
+#### linear_algebra : init scripts ####
+libscilinear_algebra_la_etcdir = $(mydatadir)/etc
+libscilinear_algebra_la_etc_DATA = etc/linear_algebra.quit etc/linear_algebra.start
+#### linear_algebra : gateway declaration ####
+libscilinear_algebra_la_sci_gatewaydir = $(mydatadir)/sci_gateway
+libscilinear_algebra_la_sci_gateway_DATA = sci_gateway/linear_algebra_gateway.xml
+
+# Where all the Scilab stuff is installed (macros, help, ...)
+mydatadir = $(pkgdatadir)/modules/$(modulename)
+
+# Set AM_* SCI detected settings
+AM_CPPFLAGS = $(SCI_CPPFLAGS)
+AM_CFLAGS = $(SCI_CFLAGS)
+AM_CXXFLAGS = $(SCI_CXXFLAGS)
+# append includes to AM_FFLAGS to manage fortran includes
+AM_FFLAGS = $(SCI_FFLAGS) -I$(top_srcdir)/modules/core/includes/
+
+# Tag shared libraries with the Scilab version
+AM_LDFLAGS = $(SCI_LDFLAGS) -version-number $(SCILAB_LIBRARY_VERSION)
+
+# splint options
+SPLINT_OPTIONS = -weak -booltype BOOL
+
+########################### JAVA ######################################
+#### We are delegating java compilation to ant... Thanks to that
+#### the procedure will be the same with Microsoft Windows (C)
+#### and Linux/Unix
+#######################################################################
+TARGETS_ALL = $(am__append_1)
+
+################ MACROS ######################
+# Rule to build a macro
+# NOT USED AT THE MOMENT
+SUFFIXES = .sci
+
+########### INSTALL DOCUMENTATION ###################
+
+# Install documentation files into the right target
+# We do not use the automake mechanism (libxxxx_la_help_fr_DATA) because
+# automake needs the html files to be present which is not the case when
+# we are building Scilab
+
+# Where it should be installed
+pkgdocdir = $(mydatadir)
+
+# What is the mask of the help source
+DOCMASKXML = *.xml
+
+# What is the mask of the MathML sources
+DOCMASKMML = *.mml
+
+########### INSTALL DATA ###################
+# Install macros, help & demos
+# Where it should be installed
+pkgmacrosdir = $(mydatadir)
+# Which directory we process
+MACRODIRS = macros/
+# Mask of the Scilab sources macros
+MACROMASK = *.sci
+# Mask of the Scilab executable sources macros
+MACROBUILDMASK = *.sce
+# Mask of the Scilab compiled macros
+MACROBINMASK = *.bin
+# List of the standard directory for tests
+TESTS_DIR = tests/benchmarks tests/nonreg_tests tests/unit_tests tests/java
+# Where the demos should be installed
+pkgdemosdir = $(mydatadir)
+# List of the standard directory for demos
+DEMOS_DIR = demos
+# List of the standard directory for examples
+EXAMPLES_DIR = examples
+# Where to export JAVA archives (.jar)
+JARDIR = jar/
+# JAR files mask
+JARMASK = *.jar
+# Chapter file
+HELP_CHAPTERDIR = help/
+HELP_CHAPTERFILE = addchapter.sce
+HELP_CHAPTERLANG = en_US fr_FR pt_BR
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .sci .bin .c .f .lo .o .obj
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(top_srcdir)/Makefile.incl.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign modules/linear_algebra/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign modules/linear_algebra/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/Makefile.incl.am:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+src/fortran/$(am__dirstamp):
+ @$(MKDIR_P) src/fortran
+ @: > src/fortran/$(am__dirstamp)
+src/fortran/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/fortran/$(DEPDIR)
+ @: > src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdggbal.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgeqpf4.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgehrd.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgesvd1.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzfschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgesvd2.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgges.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intgschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgesv3.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgesv4.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/DGELSY1.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/ZGELSY1.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intozgschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdpotrf.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdoldsvd.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgecon.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/zoldqr.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgetrf.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intoschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/complexify.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgebal.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgetri.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzggbal.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgees0.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgees1.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intogschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgges.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intddet.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgesv3.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgesv4.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzpotrf.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgecon.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzoldsvd.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgelsy.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgeqpf3.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intfschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgeqpf4.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgesvd1.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgehrd.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgees0.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgesvd2.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgees1.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzdet.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/doldqr.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/scischur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgetrf.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgelsy.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgetri.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgebal.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgeqpf3.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/writebuf.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/c/$(am__dirstamp):
+ @$(MKDIR_P) src/c
+ @: > src/c/$(am__dirstamp)
+src/c/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/c/$(DEPDIR)
+ @: > src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscilinear_algebra_algo_la-schurtable.lo: \
+ src/c/$(am__dirstamp) src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscilinear_algebra_algo_la-issymmetric.lo: \
+ src/c/$(am__dirstamp) src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscilinear_algebra_algo_la-norm.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+
+libscilinear_algebra-algo.la: $(libscilinear_algebra_algo_la_OBJECTS) $(libscilinear_algebra_algo_la_DEPENDENCIES) $(EXTRA_libscilinear_algebra_algo_la_DEPENDENCIES)
+ $(AM_V_F77LD)$(F77LINK) $(am_libscilinear_algebra_algo_la_rpath) $(libscilinear_algebra_algo_la_OBJECTS) $(libscilinear_algebra_algo_la_LIBADD) $(LIBS)
+sci_gateway/c/$(am__dirstamp):
+ @$(MKDIR_P) sci_gateway/c
+ @: > sci_gateway/c/$(am__dirstamp)
+sci_gateway/c/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) sci_gateway/c/$(DEPDIR)
+ @: > sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_hess.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_slash.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_det.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_lu.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_qr.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_schur.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_chol.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_spec.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_inv.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_svd.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_norm.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+
+libscilinear_algebra.la: $(libscilinear_algebra_la_OBJECTS) $(libscilinear_algebra_la_DEPENDENCIES) $(EXTRA_libscilinear_algebra_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(am_libscilinear_algebra_la_rpath) $(libscilinear_algebra_la_OBJECTS) $(libscilinear_algebra_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f sci_gateway/c/*.$(OBJEXT)
+ -rm -f sci_gateway/c/*.lo
+ -rm -f src/c/*.$(OBJEXT)
+ -rm -f src/c/*.lo
+ -rm -f src/fortran/*.$(OBJEXT)
+ -rm -f src/fortran/*.lo
+
+distclean-compile:
+ -rm -f *.tab.c
+
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-assembleEigenvectors.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra2.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_backslash.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_balanc.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_bdiag.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_chol.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_det.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dgeev.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dggev.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dsyev.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_hess.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_inv.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lsq.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lu.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_norm.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_qr.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_rcond.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_schur.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_slash.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_spec.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_svd.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zgeev.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zggev.Plo
+include sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zheev.Plo
+include src/c/$(DEPDIR)/libscilinear_algebra_algo_la-issymmetric.Plo
+include src/c/$(DEPDIR)/libscilinear_algebra_algo_la-norm.Plo
+include src/c/$(DEPDIR)/libscilinear_algebra_algo_la-schurtable.Plo
+
+.c.o:
+ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ $(am__mv) $$depbase.Tpo $$depbase.Po
+# $(AM_V_CC)source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ $(am__mv) $$depbase.Tpo $$depbase.Po
+# $(AM_V_CC)source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ $(am__mv) $$depbase.Tpo $$depbase.Plo
+# $(AM_V_CC)source='$<' object='$@' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $<
+
+src/c/libscilinear_algebra_algo_la-schurtable.lo: src/c/schurtable.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscilinear_algebra_algo_la-schurtable.lo -MD -MP -MF src/c/$(DEPDIR)/libscilinear_algebra_algo_la-schurtable.Tpo -c -o src/c/libscilinear_algebra_algo_la-schurtable.lo `test -f 'src/c/schurtable.c' || echo '$(srcdir)/'`src/c/schurtable.c
+ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscilinear_algebra_algo_la-schurtable.Tpo src/c/$(DEPDIR)/libscilinear_algebra_algo_la-schurtable.Plo
+# $(AM_V_CC)source='src/c/schurtable.c' object='src/c/libscilinear_algebra_algo_la-schurtable.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscilinear_algebra_algo_la-schurtable.lo `test -f 'src/c/schurtable.c' || echo '$(srcdir)/'`src/c/schurtable.c
+
+src/c/libscilinear_algebra_algo_la-issymmetric.lo: src/c/issymmetric.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscilinear_algebra_algo_la-issymmetric.lo -MD -MP -MF src/c/$(DEPDIR)/libscilinear_algebra_algo_la-issymmetric.Tpo -c -o src/c/libscilinear_algebra_algo_la-issymmetric.lo `test -f 'src/c/issymmetric.c' || echo '$(srcdir)/'`src/c/issymmetric.c
+ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscilinear_algebra_algo_la-issymmetric.Tpo src/c/$(DEPDIR)/libscilinear_algebra_algo_la-issymmetric.Plo
+# $(AM_V_CC)source='src/c/issymmetric.c' object='src/c/libscilinear_algebra_algo_la-issymmetric.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscilinear_algebra_algo_la-issymmetric.lo `test -f 'src/c/issymmetric.c' || echo '$(srcdir)/'`src/c/issymmetric.c
+
+src/c/libscilinear_algebra_algo_la-norm.lo: src/c/norm.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscilinear_algebra_algo_la-norm.lo -MD -MP -MF src/c/$(DEPDIR)/libscilinear_algebra_algo_la-norm.Tpo -c -o src/c/libscilinear_algebra_algo_la-norm.lo `test -f 'src/c/norm.c' || echo '$(srcdir)/'`src/c/norm.c
+ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscilinear_algebra_algo_la-norm.Tpo src/c/$(DEPDIR)/libscilinear_algebra_algo_la-norm.Plo
+# $(AM_V_CC)source='src/c/norm.c' object='src/c/libscilinear_algebra_algo_la-norm.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscilinear_algebra_algo_la-norm.lo `test -f 'src/c/norm.c' || echo '$(srcdir)/'`src/c/norm.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo: sci_gateway/c/sci_backslash.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_backslash.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo `test -f 'sci_gateway/c/sci_backslash.c' || echo '$(srcdir)/'`sci_gateway/c/sci_backslash.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_backslash.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_backslash.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_backslash.c' object='sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo `test -f 'sci_gateway/c/sci_backslash.c' || echo '$(srcdir)/'`sci_gateway/c/sci_backslash.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_hess.lo: sci_gateway/c/sci_hess.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_hess.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_hess.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_hess.lo `test -f 'sci_gateway/c/sci_hess.c' || echo '$(srcdir)/'`sci_gateway/c/sci_hess.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_hess.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_hess.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_hess.c' object='sci_gateway/c/libscilinear_algebra_la-sci_hess.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_hess.lo `test -f 'sci_gateway/c/sci_hess.c' || echo '$(srcdir)/'`sci_gateway/c/sci_hess.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo: sci_gateway/c/sci_rcond.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_rcond.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo `test -f 'sci_gateway/c/sci_rcond.c' || echo '$(srcdir)/'`sci_gateway/c/sci_rcond.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_rcond.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_rcond.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_rcond.c' object='sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo `test -f 'sci_gateway/c/sci_rcond.c' || echo '$(srcdir)/'`sci_gateway/c/sci_rcond.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo: sci_gateway/c/sci_bdiag.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_bdiag.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo `test -f 'sci_gateway/c/sci_bdiag.c' || echo '$(srcdir)/'`sci_gateway/c/sci_bdiag.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_bdiag.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_bdiag.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_bdiag.c' object='sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo `test -f 'sci_gateway/c/sci_bdiag.c' || echo '$(srcdir)/'`sci_gateway/c/sci_bdiag.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_slash.lo: sci_gateway/c/sci_slash.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_slash.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_slash.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_slash.lo `test -f 'sci_gateway/c/sci_slash.c' || echo '$(srcdir)/'`sci_gateway/c/sci_slash.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_slash.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_slash.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_slash.c' object='sci_gateway/c/libscilinear_algebra_la-sci_slash.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_slash.lo `test -f 'sci_gateway/c/sci_slash.c' || echo '$(srcdir)/'`sci_gateway/c/sci_slash.c
+
+sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo: sci_gateway/c/gw_linear_algebra2.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra2.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo `test -f 'sci_gateway/c/gw_linear_algebra2.c' || echo '$(srcdir)/'`sci_gateway/c/gw_linear_algebra2.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra2.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra2.Plo
+# $(AM_V_CC)source='sci_gateway/c/gw_linear_algebra2.c' object='sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo `test -f 'sci_gateway/c/gw_linear_algebra2.c' || echo '$(srcdir)/'`sci_gateway/c/gw_linear_algebra2.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_det.lo: sci_gateway/c/sci_det.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_det.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_det.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_det.lo `test -f 'sci_gateway/c/sci_det.c' || echo '$(srcdir)/'`sci_gateway/c/sci_det.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_det.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_det.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_det.c' object='sci_gateway/c/libscilinear_algebra_la-sci_det.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_det.lo `test -f 'sci_gateway/c/sci_det.c' || echo '$(srcdir)/'`sci_gateway/c/sci_det.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_lu.lo: sci_gateway/c/sci_lu.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_lu.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lu.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_lu.lo `test -f 'sci_gateway/c/sci_lu.c' || echo '$(srcdir)/'`sci_gateway/c/sci_lu.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lu.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lu.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_lu.c' object='sci_gateway/c/libscilinear_algebra_la-sci_lu.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_lu.lo `test -f 'sci_gateway/c/sci_lu.c' || echo '$(srcdir)/'`sci_gateway/c/sci_lu.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo: sci_gateway/c/sci_balanc.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_balanc.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo `test -f 'sci_gateway/c/sci_balanc.c' || echo '$(srcdir)/'`sci_gateway/c/sci_balanc.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_balanc.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_balanc.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_balanc.c' object='sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo `test -f 'sci_gateway/c/sci_balanc.c' || echo '$(srcdir)/'`sci_gateway/c/sci_balanc.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_qr.lo: sci_gateway/c/sci_qr.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_qr.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_qr.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_qr.lo `test -f 'sci_gateway/c/sci_qr.c' || echo '$(srcdir)/'`sci_gateway/c/sci_qr.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_qr.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_qr.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_qr.c' object='sci_gateway/c/libscilinear_algebra_la-sci_qr.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_qr.lo `test -f 'sci_gateway/c/sci_qr.c' || echo '$(srcdir)/'`sci_gateway/c/sci_qr.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_schur.lo: sci_gateway/c/sci_schur.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_schur.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_schur.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_schur.lo `test -f 'sci_gateway/c/sci_schur.c' || echo '$(srcdir)/'`sci_gateway/c/sci_schur.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_schur.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_schur.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_schur.c' object='sci_gateway/c/libscilinear_algebra_la-sci_schur.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_schur.lo `test -f 'sci_gateway/c/sci_schur.c' || echo '$(srcdir)/'`sci_gateway/c/sci_schur.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_chol.lo: sci_gateway/c/sci_chol.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_chol.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_chol.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_chol.lo `test -f 'sci_gateway/c/sci_chol.c' || echo '$(srcdir)/'`sci_gateway/c/sci_chol.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_chol.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_chol.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_chol.c' object='sci_gateway/c/libscilinear_algebra_la-sci_chol.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_chol.lo `test -f 'sci_gateway/c/sci_chol.c' || echo '$(srcdir)/'`sci_gateway/c/sci_chol.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_spec.lo: sci_gateway/c/sci_spec.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_spec.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_spec.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_spec.lo `test -f 'sci_gateway/c/sci_spec.c' || echo '$(srcdir)/'`sci_gateway/c/sci_spec.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_spec.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_spec.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_spec.c' object='sci_gateway/c/libscilinear_algebra_la-sci_spec.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_spec.lo `test -f 'sci_gateway/c/sci_spec.c' || echo '$(srcdir)/'`sci_gateway/c/sci_spec.c
+
+sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo: sci_gateway/c/gw_linear_algebra.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo `test -f 'sci_gateway/c/gw_linear_algebra.c' || echo '$(srcdir)/'`sci_gateway/c/gw_linear_algebra.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra.Plo
+# $(AM_V_CC)source='sci_gateway/c/gw_linear_algebra.c' object='sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo `test -f 'sci_gateway/c/gw_linear_algebra.c' || echo '$(srcdir)/'`sci_gateway/c/gw_linear_algebra.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_inv.lo: sci_gateway/c/sci_inv.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_inv.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_inv.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_inv.lo `test -f 'sci_gateway/c/sci_inv.c' || echo '$(srcdir)/'`sci_gateway/c/sci_inv.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_inv.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_inv.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_inv.c' object='sci_gateway/c/libscilinear_algebra_la-sci_inv.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_inv.lo `test -f 'sci_gateway/c/sci_inv.c' || echo '$(srcdir)/'`sci_gateway/c/sci_inv.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_svd.lo: sci_gateway/c/sci_svd.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_svd.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_svd.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_svd.lo `test -f 'sci_gateway/c/sci_svd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_svd.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_svd.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_svd.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_svd.c' object='sci_gateway/c/libscilinear_algebra_la-sci_svd.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_svd.lo `test -f 'sci_gateway/c/sci_svd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_svd.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo: sci_gateway/c/sci_lsq.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lsq.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo `test -f 'sci_gateway/c/sci_lsq.c' || echo '$(srcdir)/'`sci_gateway/c/sci_lsq.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lsq.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lsq.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_lsq.c' object='sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo `test -f 'sci_gateway/c/sci_lsq.c' || echo '$(srcdir)/'`sci_gateway/c/sci_lsq.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_norm.lo: sci_gateway/c/sci_norm.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_norm.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_norm.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_norm.lo `test -f 'sci_gateway/c/sci_norm.c' || echo '$(srcdir)/'`sci_gateway/c/sci_norm.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_norm.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_norm.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_norm.c' object='sci_gateway/c/libscilinear_algebra_la-sci_norm.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_norm.lo `test -f 'sci_gateway/c/sci_norm.c' || echo '$(srcdir)/'`sci_gateway/c/sci_norm.c
+
+sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo: sci_gateway/c/assembleEigenvectors.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-assembleEigenvectors.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo `test -f 'sci_gateway/c/assembleEigenvectors.c' || echo '$(srcdir)/'`sci_gateway/c/assembleEigenvectors.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-assembleEigenvectors.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-assembleEigenvectors.Plo
+# $(AM_V_CC)source='sci_gateway/c/assembleEigenvectors.c' object='sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo `test -f 'sci_gateway/c/assembleEigenvectors.c' || echo '$(srcdir)/'`sci_gateway/c/assembleEigenvectors.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo: sci_gateway/c/sci_dgeev.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dgeev.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo `test -f 'sci_gateway/c/sci_dgeev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dgeev.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dgeev.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dgeev.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_dgeev.c' object='sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo `test -f 'sci_gateway/c/sci_dgeev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dgeev.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo: sci_gateway/c/sci_dggev.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dggev.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo `test -f 'sci_gateway/c/sci_dggev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dggev.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dggev.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dggev.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_dggev.c' object='sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo `test -f 'sci_gateway/c/sci_dggev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dggev.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo: sci_gateway/c/sci_dsyev.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dsyev.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo `test -f 'sci_gateway/c/sci_dsyev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dsyev.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dsyev.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dsyev.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_dsyev.c' object='sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo `test -f 'sci_gateway/c/sci_dsyev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dsyev.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo: sci_gateway/c/sci_zgeev.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zgeev.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo `test -f 'sci_gateway/c/sci_zgeev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zgeev.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zgeev.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zgeev.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_zgeev.c' object='sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo `test -f 'sci_gateway/c/sci_zgeev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zgeev.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo: sci_gateway/c/sci_zggev.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zggev.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo `test -f 'sci_gateway/c/sci_zggev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zggev.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zggev.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zggev.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_zggev.c' object='sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo `test -f 'sci_gateway/c/sci_zggev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zggev.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo: sci_gateway/c/sci_zheev.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zheev.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo `test -f 'sci_gateway/c/sci_zheev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zheev.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zheev.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zheev.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_zheev.c' object='sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo `test -f 'sci_gateway/c/sci_zheev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zheev.c
+
+.f.o:
+ $(AM_V_F77)$(F77COMPILE) -c -o $@ $<
+
+.f.obj:
+ $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.f.lo:
+ $(AM_V_F77)$(LTF77COMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+ -rm -rf sci_gateway/c/.libs sci_gateway/c/_libs
+ -rm -rf src/c/.libs src/c/_libs
+ -rm -rf src/fortran/.libs src/fortran/_libs
+install-libscilinear_algebra_la_etcDATA: $(libscilinear_algebra_la_etc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscilinear_algebra_la_etc_DATA)'; test -n "$(libscilinear_algebra_la_etcdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscilinear_algebra_la_etcdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscilinear_algebra_la_etcdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscilinear_algebra_la_etcdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscilinear_algebra_la_etcdir)" || exit $$?; \
+ done
+
+uninstall-libscilinear_algebra_la_etcDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscilinear_algebra_la_etc_DATA)'; test -n "$(libscilinear_algebra_la_etcdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscilinear_algebra_la_etcdir)'; $(am__uninstall_files_from_dir)
+install-libscilinear_algebra_la_rootDATA: $(libscilinear_algebra_la_root_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscilinear_algebra_la_root_DATA)'; test -n "$(libscilinear_algebra_la_rootdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscilinear_algebra_la_rootdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscilinear_algebra_la_rootdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscilinear_algebra_la_rootdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscilinear_algebra_la_rootdir)" || exit $$?; \
+ done
+
+uninstall-libscilinear_algebra_la_rootDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscilinear_algebra_la_root_DATA)'; test -n "$(libscilinear_algebra_la_rootdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscilinear_algebra_la_rootdir)'; $(am__uninstall_files_from_dir)
+install-libscilinear_algebra_la_sci_gatewayDATA: $(libscilinear_algebra_la_sci_gateway_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscilinear_algebra_la_sci_gateway_DATA)'; test -n "$(libscilinear_algebra_la_sci_gatewaydir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscilinear_algebra_la_sci_gatewaydir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscilinear_algebra_la_sci_gatewaydir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscilinear_algebra_la_sci_gatewaydir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscilinear_algebra_la_sci_gatewaydir)" || exit $$?; \
+ done
+
+uninstall-libscilinear_algebra_la_sci_gatewayDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscilinear_algebra_la_sci_gateway_DATA)'; test -n "$(libscilinear_algebra_la_sci_gatewaydir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscilinear_algebra_la_sci_gatewaydir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA) all-local
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(libscilinear_algebra_la_etcdir)" "$(DESTDIR)$(libscilinear_algebra_la_rootdir)" "$(DESTDIR)$(libscilinear_algebra_la_sci_gatewaydir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+ -rm -f sci_gateway/c/$(am__dirstamp)
+ -rm -f src/c/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/c/$(am__dirstamp)
+ -rm -f src/fortran/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/fortran/$(am__dirstamp)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local \
+ clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf sci_gateway/c/$(DEPDIR) src/c/$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-local distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local \
+ install-libscilinear_algebra_la_etcDATA \
+ install-libscilinear_algebra_la_rootDATA \
+ install-libscilinear_algebra_la_sci_gatewayDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am: install-html-local
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf sci_gateway/c/$(DEPDIR) src/c/$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libscilinear_algebra_la_etcDATA \
+ uninstall-libscilinear_algebra_la_rootDATA \
+ uninstall-libscilinear_algebra_la_sci_gatewayDATA \
+ uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am \
+ check-local clean clean-generic clean-libtool clean-local \
+ clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-local distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-data-local install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-html-local install-info \
+ install-info-am install-libscilinear_algebra_la_etcDATA \
+ install-libscilinear_algebra_la_rootDATA \
+ install-libscilinear_algebra_la_sci_gatewayDATA install-man \
+ install-pdf install-pdf-am install-pkglibLTLIBRARIES \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am \
+ uninstall-libscilinear_algebra_la_etcDATA \
+ uninstall-libscilinear_algebra_la_rootDATA \
+ uninstall-libscilinear_algebra_la_sci_gatewayDATA \
+ uninstall-pkglibLTLIBRARIES
+
+
+# This target enables tests for Scilab
+check-local: $(top_builddir)/scilab-bin test
+ if test -d $(mydatadir)/tests; then \
+ @COMMAND="try test_run('$(modulename)');catch exit(-1);end;exit(0)"; export LANG=C; $(top_builddir)/bin/scilab -nwni -nb -e "$$COMMAND"; \
+ fi
+check-code:
+ if test -f build.xml; then \
+ $(ANT) checkstyle; \
+ fi
+ if test -x "$(SPLINT)"; then \
+ $(SPLINT) $(SPLINT_OPTIONS) -I$(top_srcdir)/modules/core/includes/ -I$(top_srcdir)/libs/MALLOC/includes/ -I$(top_srcdir)/modules/localization/includes/ $(INCLUDE_FLAGS) $(CHECK_SRC); \
+ fi
+java:
+# Some configurations needs to export JAVA_HOME in the current env
+ @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
+ if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+ if test -f build.xml -a $$USEANT -eq 1; then \
+ $(ANT); \
+ fi
+
+clean-java:
+# Some configurations needs to export JAVA_HOME in the current env
+ @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
+ if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+ if test -f build.xml -a $$USEANT -eq 1; then \
+ $(ANT) clean; \
+ fi;
+
+# If the user request for the SWIG generation of the wrappers Java => C/C++
+# We call the target swig-build on the variable SWIG_WRAPPERS
+
+#swig: $(SWIG_WRAPPERS)
+# @SWIG_PACKAGENAME=org.scilab.modules.$(modulename); \
+# SWIG_OUTDIR=src/java/org/scilab/modules/$(modulename)/; \
+# if test -n "$(SWIG_WRAPPERS)"; then \
+# for file in $(SWIG_WRAPPERS) ; do \
+# echo "Swig process of $$file (Java) ..."; \
+# $(SWIG_BIN) $(SWIG_JAVA) -package $$SWIG_PACKAGENAME -outdir $$SWIG_OUTDIR $$file; \
+# done; \
+# fi
+
+#swig-scilab: $(SWIG_SCILAB_WRAPPERS)
+# @SWIG_OUTDIR=src/swig/; \
+# if test -n "$(SWIG_SCILAB_WRAPPERS)"; then \
+# for file in $(SWIG_SCILAB_WRAPPERS) ; do \
+# echo "Swig process of $$file (Scilab) ..."; \
+# $(SWIG_BIN) $(SWIG_SCILAB) -outdir $$SWIG_OUTDIR $$file; \
+# done; \
+# fi
+
+# If the user request for the SWIG generation of the wrappers Java => C/C++
+# We call the target swig-build on the variable SWIG_WRAPPERS
+
+#giws: $(GIWS_WRAPPERS)
+# @GIWS_OUTPUTDIR=src/jni/; \
+# MANDATORY_OPTIONS="--throws-exception-on-error --description-file"; \
+# if test -n "$(GIWS_WRAPPERS)"; then \
+# for file in $(GIWS_WRAPPERS) ; do \
+# echo "GIWS process of $$file ..."; \
+# if test -z "$(GIWS_OPTIONS)"; then \
+# $(GIWS_BIN) --disable-return-size-array --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
+# else \
+# echo "Custom GIWS call with '$$GIWS_OPTIONS'"; \
+# $(GIWS_BIN) $$GIWS_OPTIONS --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
+# fi \
+# done; \
+# fi
+
+#giws-exception:
+# @GIWS_OUTPUTDIR=src/jni/;\
+# echo "GIWS: Generation of exception class ..."; \
+# $(GIWS_BIN) --generate-exception-class --output-dir $$GIWS_OUTPUTDIR
+
+macros:
+ -@( if test ! -x $(top_builddir)/scilab-bin; then \
+ echo "Error : Cannot build $< : Scilab has not been built"; \
+ else \
+ $(top_builddir)/bin/scilab -ns -nwni -e "exec('macros/buildmacros.sce');quit;";\
+ fi)
+
+# Removes the macros
+clean-macros:
+# Removes macros (*.bin generated from .sci)
+ @for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
+ echo "rm -f $(builddir)/$$dir/$(MACROBINMASK)"; \
+ rm -f $(builddir)/$$dir/$(MACROBINMASK); \
+ done
+
+test:
+# More tests could be added here
+ @if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+ if test -f build.xml -a $$USEANT -eq 1; then \
+ $(ANT) test; \
+ fi
+
+all-local: $(TARGETS_ALL)
+
+.sci.bin:
+ -@( if test ! -x $(top_builddir)/scilab-bin; then \
+ echo "Error : Cannot build $< : Scilab has not been build"; \
+ else \
+ echo "Creating $@"; \
+ $(top_builddir)/bin/scilab -ns -nwni -e "exec('$(abs_srcdir)/$<');save('$(abs_srcdir)/$@');exit;"; \
+ fi )
+
+install-html-local:
+
+install-data-local-local:
+# Mainly for javasci
+ @if test -d $(srcdir)/javadoc; then \
+ cp -R $(srcdir)/javadoc $(DESTDIR)/$(mydatadir)/; \
+ fi
+# If the user wants the help sources to be installed
+ @echo "-------- Install of XML sources of help files --------"; \
+ for lang in $(ALL_LINGUAS); do \
+ if test -d $(srcdir)/help/$$lang; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/$$lang && \
+ if ls -lLd $(srcdir)/help/$$lang/$(DOCMASKXML) >/dev/null 2>&1; then \
+ for file in $(srcdir)/help/$$lang/$(DOCMASKXML) ; do \
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/$$lang" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/$$lang ; \
+ done ; \
+ fi; \
+ fi; \
+ done; \
+ @echo "-------- Install of MathML sources --------"; \
+ if test -d $(srcdir)/help/mml/; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/mml/ && \
+ if ls -lLd $(srcdir)/help/mml/$(DOCMASKMML) >/dev/null 2>&1; then \
+ for file in $(srcdir)/help/mml/$(DOCMASKMML) ; do \
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/mml" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/mml ; \
+ done ; \
+ fi; \
+ fi
+install-data-local:
+# Install the tests
+ @echo "-------- Install tests (if any) --------"; \
+ for dir in $(TESTS_DIR) $(TESTS_DIREXT) ; do \
+ if test -d $(srcdir)/$$dir/; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
+ for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
+ if test -d "$(srcdir)/$$dir/$$file"; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir/$$file; \
+ $(mkinstalldirs) "$(DESTDIR)$(pkgmacrosdir)/$$dir/$$file"; \
+ else \
+ echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
+ $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
+ fi \
+ done; \
+ fi; \
+ done
+# Install the help chapter
+ @echo "-------- Install the help chapter (if any) --------"; \
+ for lang in $(HELP_CHAPTERLANG); do \
+ HELPFILE=$(srcdir)/$(HELP_CHAPTERDIR)$$lang/$(HELP_CHAPTERFILE); \
+ if test -f $$HELPFILE; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
+ echo $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
+ $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
+ fi; \
+ done
+# Install the demos & examples
+ @echo "-------- Install demos & examples (if any) --------"; \
+ for dir in $(DEMOS_DIR) $(DEMOS_DIREXT) $(EXAMPLES_DIR) $(EXAMPLES_DIREXT) ; do \
+ if test -d $(srcdir)/$$dir/; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir && \
+ for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
+ if test -d "$(srcdir)/$$dir/$$file"; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir/$$file; \
+ $(mkinstalldirs) "$(DESTDIR)$(pkgdocdir)/$$dir/$$file"; \
+ else \
+ echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
+ $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
+ fi \
+ done; \
+ fi; \
+ done
+# Install the macros
+ @echo "-------- Install macros (if any) --------"; \
+ for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
+ $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
+ if test -d $(srcdir)/$$dir/; then \
+ FILELIST="$(srcdir)/$$dir/$(MACROMASK) $(srcdir)/$$dir/$(MACROBINMASK) $(srcdir)/$$dir/$(MACROBUILDMASK) $(srcdir)/$$dir/names $(srcdir)/$$dir/lib";\
+ if test -n "$(MACROSSPECIALEXT)"; then \
+ specialExtDir=""; \
+ for specialExt in $(MACROSSPECIALEXT); do \
+ specialExtDir="$$specialExtDir $(srcdir)/$$dir/$$specialExt"; \
+ done; \
+ FILELIST="$$FILELIST $$specialExtDir"; \
+ fi; \
+ for file in `ls -1 $$FILELIST 2>/dev/null`; do \
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgmacrosdir)/$$dir" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgmacrosdir)/$$dir ; \
+ done; \
+ fi; \
+ done
+# Install java files (.jar)
+ @if ls -lLd $(srcdir)/$(JARDIR)$(JARMASK) >/dev/null 2>&1; then \
+ echo "-------- Install jar files --------"; \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(JARDIR); \
+ for file in $(srcdir)/$(JARDIR)$(JARMASK); do\
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/$(JARDIR)" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/$(JARDIR) ; \
+ done ; \
+ fi
+
+########### CLEAN ###################
+# Clean help (generated automatically by Scilab)
+# It used to clean the macro (clean-macros) but this was causing
+# make clean && make to fail Scilab startup
+clean-local: clean-java
+#clean-local:
+
+distclean-local:
+ rm -f $(builddir)/help/*/.last_successful_build_javaHelp $(builddir)/help/*/.list_*
+
+.PHONY: macros java swig giws
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/modules/linear_algebra/Makefile.am b/modules/linear_algebra/Makefile.am
new file mode 100755
index 000000000..4728d3a30
--- /dev/null
+++ b/modules/linear_algebra/Makefile.am
@@ -0,0 +1,139 @@
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) 2006 - INRIA - Sylvestre LEDRU
+#
+# This file is distributed under the same license as the Scilab package.
+
+
+LINEAR_ALGEBRA_C_SOURCES = src/c/schurtable.c \
+src/c/issymmetric.c \
+src/c/norm.c
+
+LINEAR_ALGEBRA_FORTRAN_SOURCES = src/fortran/intdggbal.f \
+src/fortran/intzgeqpf4.f \
+src/fortran/intzgehrd.f \
+src/fortran/intzgesvd1.f \
+src/fortran/intzfschur.f \
+src/fortran/intzgesvd2.f \
+src/fortran/intdgges.f \
+src/fortran/intgschur.f \
+src/fortran/intdgesv3.f \
+src/fortran/intdgesv4.f \
+src/fortran/DGELSY1.f \
+src/fortran/ZGELSY1.f \
+src/fortran/intozgschur.f \
+src/fortran/intdpotrf.f \
+src/fortran/intdoldsvd.f \
+src/fortran/intdgecon.f \
+src/fortran/zoldqr.f \
+src/fortran/intzgetrf.f \
+src/fortran/intoschur.f \
+src/fortran/complexify.f \
+src/fortran/intzgebal.f \
+src/fortran/intzgetri.f \
+src/fortran/intzggbal.f \
+src/fortran/intdgees0.f \
+src/fortran/intdgees1.f \
+src/fortran/intogschur.f \
+src/fortran/intzgges.f \
+src/fortran/intddet.f \
+src/fortran/intzgesv3.f \
+src/fortran/intzgesv4.f \
+src/fortran/intzpotrf.f \
+src/fortran/intzgecon.f \
+src/fortran/intzgschur.f \
+src/fortran/intzoldsvd.f \
+src/fortran/intdgelsy.f \
+src/fortran/intdgeqpf3.f \
+src/fortran/intfschur.f \
+src/fortran/intdgeqpf4.f \
+src/fortran/intdgesvd1.f \
+src/fortran/intdgehrd.f \
+src/fortran/intzgees0.f \
+src/fortran/intdgesvd2.f \
+src/fortran/intzgees1.f \
+src/fortran/intzdet.f \
+src/fortran/doldqr.f \
+src/fortran/scischur.f \
+src/fortran/intdgetrf.f \
+src/fortran/intzgelsy.f \
+src/fortran/intdgetri.f \
+src/fortran/intdgebal.f \
+src/fortran/intzschur.f \
+src/fortran/intzgeqpf3.f \
+src/fortran/writebuf.f
+#src/fortran/issymmetric.f
+
+GATEWAY_C_SOURCES = sci_gateway/c/sci_backslash.c \
+sci_gateway/c/sci_hess.c \
+sci_gateway/c/sci_rcond.c \
+sci_gateway/c/sci_bdiag.c \
+sci_gateway/c/sci_slash.c \
+sci_gateway/c/gw_linear_algebra2.c \
+sci_gateway/c/sci_det.c \
+sci_gateway/c/sci_lu.c \
+sci_gateway/c/sci_balanc.c \
+sci_gateway/c/sci_qr.c \
+sci_gateway/c/sci_schur.c \
+sci_gateway/c/sci_chol.c \
+sci_gateway/c/sci_spec.c \
+sci_gateway/c/gw_linear_algebra.c \
+sci_gateway/c/sci_inv.c \
+sci_gateway/c/sci_svd.c \
+sci_gateway/c/sci_lsq.c \
+sci_gateway/c/sci_norm.c \
+sci_gateway/c/assembleEigenvectors.c \
+sci_gateway/c/sci_dgeev.c \
+sci_gateway/c/sci_dggev.c \
+sci_gateway/c/sci_dsyev.c \
+sci_gateway/c/sci_zgeev.c \
+sci_gateway/c/sci_zggev.c \
+sci_gateway/c/sci_zheev.c
+
+GATEWAY_FORTRAN_SOURCES =
+
+libscilinear_algebra_la_CPPFLAGS = -I$(srcdir)/includes/ \
+-I$(srcdir)/src/c/ \
+-I$(top_srcdir)/modules/output_stream/includes/ \
+-I$(top_srcdir)/modules/dynamic_link/includes/ \
+-I$(top_srcdir)/modules/api_scilab/includes/ \
+-I$(top_srcdir)/modules/elementary_functions/includes/ \
+-I$(top_srcdir)/modules/localization/includes/ \
+$(AM_CPPFLAGS)
+
+if MAINTAINER_MODE
+pkglib_LTLIBRARIES = libscilinear_algebra.la
+noinst_LTLIBRARIES = libscilinear_algebra-algo.la
+else
+noinst_LTLIBRARIES = libscilinear_algebra-algo.la libscilinear_algebra.la
+endif
+
+
+
+libscilinear_algebra_algo_la_SOURCES = $(LINEAR_ALGEBRA_FORTRAN_SOURCES) $(LINEAR_ALGEBRA_C_SOURCES)
+libscilinear_algebra_la_SOURCES = $(GATEWAY_C_SOURCES) $(GATEWAY_FORTRAN_SOURCES)
+libscilinear_algebra_algo_la_CPPFLAGS = $(libscilinear_algebra_la_CPPFLAGS)
+
+# For the code check (splint)
+CHECK_SRC= $(LINEAR_ALGEBRA_C_SOURCES) $(GATEWAY_C_SOURCES)
+INCLUDE_FLAGS = $(libscilinear_algebra_la_CPPFLAGS)
+
+libscilinear_algebra_la_LIBADD = libscilinear_algebra-algo.la
+
+#### Target ######
+modulename=linear_algebra
+
+
+#### linear_algebra : Conf files ####
+libscilinear_algebra_la_rootdir = $(mydatadir)
+libscilinear_algebra_la_root_DATA = license.txt
+
+
+#### linear_algebra : init scripts ####
+libscilinear_algebra_la_etcdir = $(mydatadir)/etc
+libscilinear_algebra_la_etc_DATA = etc/linear_algebra.quit etc/linear_algebra.start
+#### linear_algebra : gateway declaration ####
+libscilinear_algebra_la_sci_gatewaydir = $(mydatadir)/sci_gateway
+libscilinear_algebra_la_sci_gateway_DATA = sci_gateway/linear_algebra_gateway.xml
+
+
+include $(top_srcdir)/Makefile.incl.am
diff --git a/modules/linear_algebra/Makefile.in b/modules/linear_algebra/Makefile.in
new file mode 100755
index 000000000..cce2c3c4a
--- /dev/null
+++ b/modules/linear_algebra/Makefile.in
@@ -0,0 +1,1876 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) 2006 - INRIA - Sylvestre LEDRU
+#
+# This file is distributed under the same license as the Scilab package.
+
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) 2006-2008 - INRIA - Sylvestre LEDRU <sylvestre.ledru@inria.fr>
+# Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre.marechal@inria.fr>
+#
+# This file must be used under the terms of the CeCILL.
+# This source file is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at
+# http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+#
+
+##########
+### Makefile included stuff
+### Target, variable, suffixes which are supposed to be useful in every makefile.am
+##########
+
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(top_srcdir)/Makefile.incl.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/mkinstalldirs \
+ $(top_srcdir)/config/depcomp
+@NEED_JAVA_TRUE@am__append_1 = java
+subdir = modules/linear_algebra
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/backtrace.m4 \
+ $(top_srcdir)/m4/compiler.m4 $(top_srcdir)/m4/curl.m4 \
+ $(top_srcdir)/m4/docbook.m4 $(top_srcdir)/m4/doxygen.m4 \
+ $(top_srcdir)/m4/fftw.m4 $(top_srcdir)/m4/fortran.m4 \
+ $(top_srcdir)/m4/giws.m4 $(top_srcdir)/m4/hdf5.m4 \
+ $(top_srcdir)/m4/intel_compiler.m4 \
+ $(top_srcdir)/m4/java-thirdparty.m4 $(top_srcdir)/m4/java.m4 \
+ $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/libsmath.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/macosx.m4 \
+ $(top_srcdir)/m4/mpi.m4 $(top_srcdir)/m4/ocaml.m4 \
+ $(top_srcdir)/m4/pcre.m4 $(top_srcdir)/m4/pkg.m4 \
+ $(top_srcdir)/m4/relocatable.m4 $(top_srcdir)/m4/swig.m4 \
+ $(top_srcdir)/m4/symlinks.m4 $(top_srcdir)/m4/tcltk.m4 \
+ $(top_srcdir)/m4/umfpack.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/modules/core/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(pkglibdir)" \
+ "$(DESTDIR)$(libscilinear_algebra_la_etcdir)" \
+ "$(DESTDIR)$(libscilinear_algebra_la_rootdir)" \
+ "$(DESTDIR)$(libscilinear_algebra_la_sci_gatewaydir)"
+LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES)
+libscilinear_algebra_algo_la_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 = src/fortran/intdggbal.lo src/fortran/intzgeqpf4.lo \
+ src/fortran/intzgehrd.lo src/fortran/intzgesvd1.lo \
+ src/fortran/intzfschur.lo src/fortran/intzgesvd2.lo \
+ src/fortran/intdgges.lo src/fortran/intgschur.lo \
+ src/fortran/intdgesv3.lo src/fortran/intdgesv4.lo \
+ src/fortran/DGELSY1.lo src/fortran/ZGELSY1.lo \
+ src/fortran/intozgschur.lo src/fortran/intdpotrf.lo \
+ src/fortran/intdoldsvd.lo src/fortran/intdgecon.lo \
+ src/fortran/zoldqr.lo src/fortran/intzgetrf.lo \
+ src/fortran/intoschur.lo src/fortran/complexify.lo \
+ src/fortran/intzgebal.lo src/fortran/intzgetri.lo \
+ src/fortran/intzggbal.lo src/fortran/intdgees0.lo \
+ src/fortran/intdgees1.lo src/fortran/intogschur.lo \
+ src/fortran/intzgges.lo src/fortran/intddet.lo \
+ src/fortran/intzgesv3.lo src/fortran/intzgesv4.lo \
+ src/fortran/intzpotrf.lo src/fortran/intzgecon.lo \
+ src/fortran/intzgschur.lo src/fortran/intzoldsvd.lo \
+ src/fortran/intdgelsy.lo src/fortran/intdgeqpf3.lo \
+ src/fortran/intfschur.lo src/fortran/intdgeqpf4.lo \
+ src/fortran/intdgesvd1.lo src/fortran/intdgehrd.lo \
+ src/fortran/intzgees0.lo src/fortran/intdgesvd2.lo \
+ src/fortran/intzgees1.lo src/fortran/intzdet.lo \
+ src/fortran/doldqr.lo src/fortran/scischur.lo \
+ src/fortran/intdgetrf.lo src/fortran/intzgelsy.lo \
+ src/fortran/intdgetri.lo src/fortran/intdgebal.lo \
+ src/fortran/intzschur.lo src/fortran/intzgeqpf3.lo \
+ src/fortran/writebuf.lo
+am__objects_2 = src/c/libscilinear_algebra_algo_la-schurtable.lo \
+ src/c/libscilinear_algebra_algo_la-issymmetric.lo \
+ src/c/libscilinear_algebra_algo_la-norm.lo
+am_libscilinear_algebra_algo_la_OBJECTS = $(am__objects_1) \
+ $(am__objects_2)
+libscilinear_algebra_algo_la_OBJECTS = \
+ $(am_libscilinear_algebra_algo_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+@MAINTAINER_MODE_FALSE@am_libscilinear_algebra_algo_la_rpath =
+@MAINTAINER_MODE_TRUE@am_libscilinear_algebra_algo_la_rpath =
+libscilinear_algebra_la_DEPENDENCIES = libscilinear_algebra-algo.la
+am__objects_3 = \
+ sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_hess.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_slash.lo \
+ sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_det.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_lu.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_qr.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_schur.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_chol.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_spec.lo \
+ sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_inv.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_svd.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_norm.lo \
+ sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo \
+ sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo
+am__objects_4 =
+am_libscilinear_algebra_la_OBJECTS = $(am__objects_3) $(am__objects_4)
+libscilinear_algebra_la_OBJECTS = \
+ $(am_libscilinear_algebra_la_OBJECTS)
+@MAINTAINER_MODE_FALSE@am_libscilinear_algebra_la_rpath =
+@MAINTAINER_MODE_TRUE@am_libscilinear_algebra_la_rpath = -rpath \
+@MAINTAINER_MODE_TRUE@ $(pkglibdir)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/modules/core/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS)
+LTF77COMPILE = $(LIBTOOL) $(AM_V_lt) --tag=F77 $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS)
+AM_V_F77 = $(am__v_F77_@AM_V@)
+am__v_F77_ = $(am__v_F77_@AM_DEFAULT_V@)
+am__v_F77_0 = @echo " F77 " $@;
+am__v_F77_1 =
+F77LD = $(F77)
+F77LINK = $(LIBTOOL) $(AM_V_lt) --tag=F77 $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(F77LD) $(AM_FFLAGS) $(FFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_F77LD = $(am__v_F77LD_@AM_V@)
+am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@)
+am__v_F77LD_0 = @echo " F77LD " $@;
+am__v_F77LD_1 =
+SOURCES = $(libscilinear_algebra_algo_la_SOURCES) \
+ $(libscilinear_algebra_la_SOURCES)
+DIST_SOURCES = $(libscilinear_algebra_algo_la_SOURCES) \
+ $(libscilinear_algebra_la_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DATA = $(libscilinear_algebra_la_etc_DATA) \
+ $(libscilinear_algebra_la_root_DATA) \
+ $(libscilinear_algebra_la_sci_gateway_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+ALL_LINGUAS_DOC = @ALL_LINGUAS_DOC@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANT = @ANT@
+ANTLR = @ANTLR@
+AR = @AR@
+ARPACK_LIBS = @ARPACK_LIBS@
+ASM3 = @ASM3@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AVALON_FRAMEWORK = @AVALON_FRAMEWORK@
+AWK = @AWK@
+BATIK = @BATIK@
+BLAS_LIBS = @BLAS_LIBS@
+CC = @CC@
+CCACHE = @CCACHE@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECKSTYLE = @CHECKSTYLE@
+COBERTURA = @COBERTURA@
+COMMONS_BEANUTILS = @COMMONS_BEANUTILS@
+COMMONS_IO = @COMMONS_IO@
+COMMONS_LOGGING = @COMMONS_LOGGING@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CFLAGS = @CURL_CFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CURL_LIBS = @CURL_LIBS@
+CURL_VERSION = @CURL_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEMOTOOLS_ENABLE = @DEMOTOOLS_ENABLE@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOCBOOK_ROOT = @DOCBOOK_ROOT@
+DOXYGEN_BIN = @DOXYGEN_BIN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ECJ = @ECJ@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FFTW3_LIB = @FFTW3_LIB@
+FFTW_ENABLE = @FFTW_ENABLE@
+FGREP = @FGREP@
+FLEXDOCK = @FLEXDOCK@
+FLIBS = @FLIBS@
+FOP = @FOP@
+FREEHEP_GRAPHICS2D = @FREEHEP_GRAPHICS2D@
+FREEHEP_GRAPHICSIO = @FREEHEP_GRAPHICSIO@
+FREEHEP_GRAPHICSIO_EMF = @FREEHEP_GRAPHICSIO_EMF@
+FREEHEP_IO = @FREEHEP_IO@
+FREEHEP_UTIL = @FREEHEP_UTIL@
+GENHTML = @GENHTML@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GIWS_BIN = @GIWS_BIN@
+GLUEGEN2_RT = @GLUEGEN2_RT@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GRAPHICS_ENABLE = @GRAPHICS_ENABLE@
+GREP = @GREP@
+GUI_ENABLE = @GUI_ENABLE@
+HDF5_CFLAGS = @HDF5_CFLAGS@
+HDF5_LIBS = @HDF5_LIBS@
+HELP_ENABLE = @HELP_ENABLE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAC_DEBUG = @JAVAC_DEBUG@
+JAVADOC = @JAVADOC@
+JAVAH = @JAVAH@
+JAVASCI_ENABLE = @JAVASCI_ENABLE@
+JAVA_ENABLE = @JAVA_ENABLE@
+JAVA_G = @JAVA_G@
+JAVA_HOME = @JAVA_HOME@
+JAVA_JNI_INCLUDE = @JAVA_JNI_INCLUDE@
+JAVA_JNI_LIBS = @JAVA_JNI_LIBS@
+JDB = @JDB@
+JEUCLID_CORE = @JEUCLID_CORE@
+JGRAPHX = @JGRAPHX@
+JHALL = @JHALL@
+JLATEXMATH = @JLATEXMATH@
+JLATEXMATH_FOP = @JLATEXMATH_FOP@
+JOGL2 = @JOGL2@
+JROSETTA_API = @JROSETTA_API@
+JROSETTA_ENGINE = @JROSETTA_ENGINE@
+JUNIT4 = @JUNIT4@
+LAPACK_LIBS = @LAPACK_LIBS@
+LCOV = @LCOV@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOGGING_LEVEL = @LOGGING_LEVEL@
+LOOKS = @LOOKS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MATIO_CFLAGS = @MATIO_CFLAGS@
+MATIO_ENABLE = @MATIO_ENABLE@
+MATIO_LIBS = @MATIO_LIBS@
+MKDIR_P = @MKDIR_P@
+MPI_ENABLE = @MPI_ENABLE@
+MSGCAT = @MSGCAT@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLDEP = @OCAMLDEP@
+OCAMLLEX = @OCAMLLEX@
+OCAMLOPT = @OCAMLOPT@
+OCAMLYACC = @OCAMLYACC@
+OPENMPI_CC = @OPENMPI_CC@
+OPENMPI_CFLAGS = @OPENMPI_CFLAGS@
+OPENMPI_CXX = @OPENMPI_CXX@
+OPENMPI_CXXFLAGS = @OPENMPI_CXXFLAGS@
+OPENMPI_LIBS = @OPENMPI_LIBS@
+OPENMP_CFLAGS = @OPENMP_CFLAGS@
+OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@
+OPENMP_ENABLE = @OPENMP_ENABLE@
+OPENMP_LIBS = @OPENMP_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PCRE_CFLAGS = @PCRE_CFLAGS@
+PCRE_CONFIG = @PCRE_CONFIG@
+PCRE_LIBS = @PCRE_LIBS@
+PCRE_VERSION = @PCRE_VERSION@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PYTHON = @PYTHON@
+RANLIB = @RANLIB@
+RELOCATABLE = @RELOCATABLE@
+RT_LIB = @RT_LIB@
+SAXON = @SAXON@
+SCILAB_BINARY_VERSION = @SCILAB_BINARY_VERSION@
+SCILAB_LIBRARY_VERSION = @SCILAB_LIBRARY_VERSION@
+SCILAB_VERSION_MAINTENANCE = @SCILAB_VERSION_MAINTENANCE@
+SCILAB_VERSION_MAJOR = @SCILAB_VERSION_MAJOR@
+SCILAB_VERSION_MINOR = @SCILAB_VERSION_MINOR@
+SCIRENDERER = @SCIRENDERER@
+SCIRENDERER_CP = @SCIRENDERER_CP@
+SCI_CFLAGS = @SCI_CFLAGS@
+SCI_CXXFLAGS = @SCI_CXXFLAGS@
+SCI_FFLAGS = @SCI_FFLAGS@
+SCI_LDFLAGS = @SCI_LDFLAGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SET_RELOCATABLE = @SET_RELOCATABLE@
+SHELL = @SHELL@
+SKINLF = @SKINLF@
+SPLINT = @SPLINT@
+STRIP = @STRIP@
+SWIG_BIN = @SWIG_BIN@
+SWIG_JAVA = @SWIG_JAVA@
+SWIG_RUNTIME_LIBS_DIR = @SWIG_RUNTIME_LIBS_DIR@
+SWIG_SCILAB = @SWIG_SCILAB@
+TCLTK_LIBS = @TCLTK_LIBS@
+TCL_INC_PATH = @TCL_INC_PATH@
+TK_INC_PATH = @TK_INC_PATH@
+UMFPACK_CFLAGS = @UMFPACK_CFLAGS@
+UMFPACK_ENABLE = @UMFPACK_ENABLE@
+UMFPACK_LIB = @UMFPACK_LIB@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WITH_OCAML = @WITH_OCAML@
+WITH_TKSCI = @WITH_TKSCI@
+XCOS_ENABLE = @XCOS_ENABLE@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+XMKMF = @XMKMF@
+XMLGRAPHICS_COMMONS = @XMLGRAPHICS_COMMONS@
+XML_APIS_EXT = @XML_APIS_EXT@
+XML_CONFIG = @XML_CONFIG@
+XML_FLAGS = @XML_FLAGS@
+XML_LIBS = @XML_LIBS@
+XML_VERSION = @XML_VERSION@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cxx_present = @cxx_present@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+LINEAR_ALGEBRA_C_SOURCES = src/c/schurtable.c \
+src/c/issymmetric.c \
+src/c/norm.c
+
+LINEAR_ALGEBRA_FORTRAN_SOURCES = src/fortran/intdggbal.f \
+src/fortran/intzgeqpf4.f \
+src/fortran/intzgehrd.f \
+src/fortran/intzgesvd1.f \
+src/fortran/intzfschur.f \
+src/fortran/intzgesvd2.f \
+src/fortran/intdgges.f \
+src/fortran/intgschur.f \
+src/fortran/intdgesv3.f \
+src/fortran/intdgesv4.f \
+src/fortran/DGELSY1.f \
+src/fortran/ZGELSY1.f \
+src/fortran/intozgschur.f \
+src/fortran/intdpotrf.f \
+src/fortran/intdoldsvd.f \
+src/fortran/intdgecon.f \
+src/fortran/zoldqr.f \
+src/fortran/intzgetrf.f \
+src/fortran/intoschur.f \
+src/fortran/complexify.f \
+src/fortran/intzgebal.f \
+src/fortran/intzgetri.f \
+src/fortran/intzggbal.f \
+src/fortran/intdgees0.f \
+src/fortran/intdgees1.f \
+src/fortran/intogschur.f \
+src/fortran/intzgges.f \
+src/fortran/intddet.f \
+src/fortran/intzgesv3.f \
+src/fortran/intzgesv4.f \
+src/fortran/intzpotrf.f \
+src/fortran/intzgecon.f \
+src/fortran/intzgschur.f \
+src/fortran/intzoldsvd.f \
+src/fortran/intdgelsy.f \
+src/fortran/intdgeqpf3.f \
+src/fortran/intfschur.f \
+src/fortran/intdgeqpf4.f \
+src/fortran/intdgesvd1.f \
+src/fortran/intdgehrd.f \
+src/fortran/intzgees0.f \
+src/fortran/intdgesvd2.f \
+src/fortran/intzgees1.f \
+src/fortran/intzdet.f \
+src/fortran/doldqr.f \
+src/fortran/scischur.f \
+src/fortran/intdgetrf.f \
+src/fortran/intzgelsy.f \
+src/fortran/intdgetri.f \
+src/fortran/intdgebal.f \
+src/fortran/intzschur.f \
+src/fortran/intzgeqpf3.f \
+src/fortran/writebuf.f
+
+#src/fortran/issymmetric.f
+GATEWAY_C_SOURCES = sci_gateway/c/sci_backslash.c \
+sci_gateway/c/sci_hess.c \
+sci_gateway/c/sci_rcond.c \
+sci_gateway/c/sci_bdiag.c \
+sci_gateway/c/sci_slash.c \
+sci_gateway/c/gw_linear_algebra2.c \
+sci_gateway/c/sci_det.c \
+sci_gateway/c/sci_lu.c \
+sci_gateway/c/sci_balanc.c \
+sci_gateway/c/sci_qr.c \
+sci_gateway/c/sci_schur.c \
+sci_gateway/c/sci_chol.c \
+sci_gateway/c/sci_spec.c \
+sci_gateway/c/gw_linear_algebra.c \
+sci_gateway/c/sci_inv.c \
+sci_gateway/c/sci_svd.c \
+sci_gateway/c/sci_lsq.c \
+sci_gateway/c/sci_norm.c \
+sci_gateway/c/assembleEigenvectors.c \
+sci_gateway/c/sci_dgeev.c \
+sci_gateway/c/sci_dggev.c \
+sci_gateway/c/sci_dsyev.c \
+sci_gateway/c/sci_zgeev.c \
+sci_gateway/c/sci_zggev.c \
+sci_gateway/c/sci_zheev.c
+
+GATEWAY_FORTRAN_SOURCES =
+libscilinear_algebra_la_CPPFLAGS = -I$(srcdir)/includes/ \
+-I$(srcdir)/src/c/ \
+-I$(top_srcdir)/modules/output_stream/includes/ \
+-I$(top_srcdir)/modules/dynamic_link/includes/ \
+-I$(top_srcdir)/modules/api_scilab/includes/ \
+-I$(top_srcdir)/modules/elementary_functions/includes/ \
+-I$(top_srcdir)/modules/localization/includes/ \
+$(AM_CPPFLAGS)
+
+@MAINTAINER_MODE_TRUE@pkglib_LTLIBRARIES = libscilinear_algebra.la
+@MAINTAINER_MODE_FALSE@noinst_LTLIBRARIES = libscilinear_algebra-algo.la libscilinear_algebra.la
+@MAINTAINER_MODE_TRUE@noinst_LTLIBRARIES = libscilinear_algebra-algo.la
+libscilinear_algebra_algo_la_SOURCES = $(LINEAR_ALGEBRA_FORTRAN_SOURCES) $(LINEAR_ALGEBRA_C_SOURCES)
+libscilinear_algebra_la_SOURCES = $(GATEWAY_C_SOURCES) $(GATEWAY_FORTRAN_SOURCES)
+libscilinear_algebra_algo_la_CPPFLAGS = $(libscilinear_algebra_la_CPPFLAGS)
+
+# For the code check (splint)
+CHECK_SRC = $(LINEAR_ALGEBRA_C_SOURCES) $(GATEWAY_C_SOURCES)
+INCLUDE_FLAGS = $(libscilinear_algebra_la_CPPFLAGS)
+libscilinear_algebra_la_LIBADD = libscilinear_algebra-algo.la
+
+#### Target ######
+modulename = linear_algebra
+
+#### linear_algebra : Conf files ####
+libscilinear_algebra_la_rootdir = $(mydatadir)
+libscilinear_algebra_la_root_DATA = license.txt
+
+#### linear_algebra : init scripts ####
+libscilinear_algebra_la_etcdir = $(mydatadir)/etc
+libscilinear_algebra_la_etc_DATA = etc/linear_algebra.quit etc/linear_algebra.start
+#### linear_algebra : gateway declaration ####
+libscilinear_algebra_la_sci_gatewaydir = $(mydatadir)/sci_gateway
+libscilinear_algebra_la_sci_gateway_DATA = sci_gateway/linear_algebra_gateway.xml
+
+# Where all the Scilab stuff is installed (macros, help, ...)
+mydatadir = $(pkgdatadir)/modules/$(modulename)
+
+# Set AM_* SCI detected settings
+AM_CPPFLAGS = $(SCI_CPPFLAGS)
+AM_CFLAGS = $(SCI_CFLAGS)
+AM_CXXFLAGS = $(SCI_CXXFLAGS)
+# append includes to AM_FFLAGS to manage fortran includes
+AM_FFLAGS = $(SCI_FFLAGS) -I$(top_srcdir)/modules/core/includes/
+
+# Tag shared libraries with the Scilab version
+AM_LDFLAGS = $(SCI_LDFLAGS) -version-number $(SCILAB_LIBRARY_VERSION)
+
+# splint options
+SPLINT_OPTIONS = -weak -booltype BOOL
+
+########################### JAVA ######################################
+#### We are delegating java compilation to ant... Thanks to that
+#### the procedure will be the same with Microsoft Windows (C)
+#### and Linux/Unix
+#######################################################################
+TARGETS_ALL = $(am__append_1)
+
+################ MACROS ######################
+# Rule to build a macro
+# NOT USED AT THE MOMENT
+SUFFIXES = .sci
+
+########### INSTALL DOCUMENTATION ###################
+
+# Install documentation files into the right target
+# We do not use the automake mechanism (libxxxx_la_help_fr_DATA) because
+# automake needs the html files to be present which is not the case when
+# we are building Scilab
+
+# Where it should be installed
+pkgdocdir = $(mydatadir)
+
+# What is the mask of the help source
+DOCMASKXML = *.xml
+
+# What is the mask of the MathML sources
+DOCMASKMML = *.mml
+
+########### INSTALL DATA ###################
+# Install macros, help & demos
+# Where it should be installed
+pkgmacrosdir = $(mydatadir)
+# Which directory we process
+MACRODIRS = macros/
+# Mask of the Scilab sources macros
+MACROMASK = *.sci
+# Mask of the Scilab executable sources macros
+MACROBUILDMASK = *.sce
+# Mask of the Scilab compiled macros
+MACROBINMASK = *.bin
+# List of the standard directory for tests
+TESTS_DIR = tests/benchmarks tests/nonreg_tests tests/unit_tests tests/java
+# Where the demos should be installed
+pkgdemosdir = $(mydatadir)
+# List of the standard directory for demos
+DEMOS_DIR = demos
+# List of the standard directory for examples
+EXAMPLES_DIR = examples
+# Where to export JAVA archives (.jar)
+JARDIR = jar/
+# JAR files mask
+JARMASK = *.jar
+# Chapter file
+HELP_CHAPTERDIR = help/
+HELP_CHAPTERFILE = addchapter.sce
+HELP_CHAPTERLANG = en_US fr_FR pt_BR
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .sci .bin .c .f .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.incl.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign modules/linear_algebra/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign modules/linear_algebra/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/Makefile.incl.am:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+src/fortran/$(am__dirstamp):
+ @$(MKDIR_P) src/fortran
+ @: > src/fortran/$(am__dirstamp)
+src/fortran/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/fortran/$(DEPDIR)
+ @: > src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdggbal.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgeqpf4.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgehrd.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgesvd1.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzfschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgesvd2.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgges.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intgschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgesv3.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgesv4.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/DGELSY1.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/ZGELSY1.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intozgschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdpotrf.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdoldsvd.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgecon.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/zoldqr.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgetrf.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intoschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/complexify.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgebal.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgetri.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzggbal.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgees0.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgees1.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intogschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgges.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intddet.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgesv3.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgesv4.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzpotrf.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgecon.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzoldsvd.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgelsy.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgeqpf3.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intfschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgeqpf4.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgesvd1.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgehrd.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgees0.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgesvd2.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgees1.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzdet.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/doldqr.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/scischur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgetrf.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgelsy.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgetri.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intdgebal.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzschur.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/intzgeqpf3.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/fortran/writebuf.lo: src/fortran/$(am__dirstamp) \
+ src/fortran/$(DEPDIR)/$(am__dirstamp)
+src/c/$(am__dirstamp):
+ @$(MKDIR_P) src/c
+ @: > src/c/$(am__dirstamp)
+src/c/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/c/$(DEPDIR)
+ @: > src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscilinear_algebra_algo_la-schurtable.lo: \
+ src/c/$(am__dirstamp) src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscilinear_algebra_algo_la-issymmetric.lo: \
+ src/c/$(am__dirstamp) src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscilinear_algebra_algo_la-norm.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+
+libscilinear_algebra-algo.la: $(libscilinear_algebra_algo_la_OBJECTS) $(libscilinear_algebra_algo_la_DEPENDENCIES) $(EXTRA_libscilinear_algebra_algo_la_DEPENDENCIES)
+ $(AM_V_F77LD)$(F77LINK) $(am_libscilinear_algebra_algo_la_rpath) $(libscilinear_algebra_algo_la_OBJECTS) $(libscilinear_algebra_algo_la_LIBADD) $(LIBS)
+sci_gateway/c/$(am__dirstamp):
+ @$(MKDIR_P) sci_gateway/c
+ @: > sci_gateway/c/$(am__dirstamp)
+sci_gateway/c/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) sci_gateway/c/$(DEPDIR)
+ @: > sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_hess.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_slash.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_det.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_lu.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_qr.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_schur.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_chol.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_spec.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_inv.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_svd.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_norm.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+
+libscilinear_algebra.la: $(libscilinear_algebra_la_OBJECTS) $(libscilinear_algebra_la_DEPENDENCIES) $(EXTRA_libscilinear_algebra_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(am_libscilinear_algebra_la_rpath) $(libscilinear_algebra_la_OBJECTS) $(libscilinear_algebra_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f sci_gateway/c/*.$(OBJEXT)
+ -rm -f sci_gateway/c/*.lo
+ -rm -f src/c/*.$(OBJEXT)
+ -rm -f src/c/*.lo
+ -rm -f src/fortran/*.$(OBJEXT)
+ -rm -f src/fortran/*.lo
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-assembleEigenvectors.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra2.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_backslash.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_balanc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_bdiag.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_chol.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_det.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dgeev.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dggev.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dsyev.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_hess.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_inv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lsq.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lu.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_norm.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_qr.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_rcond.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_schur.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_slash.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_spec.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_svd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zgeev.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zggev.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zheev.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscilinear_algebra_algo_la-issymmetric.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscilinear_algebra_algo_la-norm.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscilinear_algebra_algo_la-schurtable.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+src/c/libscilinear_algebra_algo_la-schurtable.lo: src/c/schurtable.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscilinear_algebra_algo_la-schurtable.lo -MD -MP -MF src/c/$(DEPDIR)/libscilinear_algebra_algo_la-schurtable.Tpo -c -o src/c/libscilinear_algebra_algo_la-schurtable.lo `test -f 'src/c/schurtable.c' || echo '$(srcdir)/'`src/c/schurtable.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscilinear_algebra_algo_la-schurtable.Tpo src/c/$(DEPDIR)/libscilinear_algebra_algo_la-schurtable.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/c/schurtable.c' object='src/c/libscilinear_algebra_algo_la-schurtable.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscilinear_algebra_algo_la-schurtable.lo `test -f 'src/c/schurtable.c' || echo '$(srcdir)/'`src/c/schurtable.c
+
+src/c/libscilinear_algebra_algo_la-issymmetric.lo: src/c/issymmetric.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscilinear_algebra_algo_la-issymmetric.lo -MD -MP -MF src/c/$(DEPDIR)/libscilinear_algebra_algo_la-issymmetric.Tpo -c -o src/c/libscilinear_algebra_algo_la-issymmetric.lo `test -f 'src/c/issymmetric.c' || echo '$(srcdir)/'`src/c/issymmetric.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscilinear_algebra_algo_la-issymmetric.Tpo src/c/$(DEPDIR)/libscilinear_algebra_algo_la-issymmetric.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/c/issymmetric.c' object='src/c/libscilinear_algebra_algo_la-issymmetric.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscilinear_algebra_algo_la-issymmetric.lo `test -f 'src/c/issymmetric.c' || echo '$(srcdir)/'`src/c/issymmetric.c
+
+src/c/libscilinear_algebra_algo_la-norm.lo: src/c/norm.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscilinear_algebra_algo_la-norm.lo -MD -MP -MF src/c/$(DEPDIR)/libscilinear_algebra_algo_la-norm.Tpo -c -o src/c/libscilinear_algebra_algo_la-norm.lo `test -f 'src/c/norm.c' || echo '$(srcdir)/'`src/c/norm.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscilinear_algebra_algo_la-norm.Tpo src/c/$(DEPDIR)/libscilinear_algebra_algo_la-norm.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/c/norm.c' object='src/c/libscilinear_algebra_algo_la-norm.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscilinear_algebra_algo_la-norm.lo `test -f 'src/c/norm.c' || echo '$(srcdir)/'`src/c/norm.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo: sci_gateway/c/sci_backslash.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_backslash.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo `test -f 'sci_gateway/c/sci_backslash.c' || echo '$(srcdir)/'`sci_gateway/c/sci_backslash.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_backslash.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_backslash.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_backslash.c' object='sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo `test -f 'sci_gateway/c/sci_backslash.c' || echo '$(srcdir)/'`sci_gateway/c/sci_backslash.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_hess.lo: sci_gateway/c/sci_hess.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_hess.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_hess.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_hess.lo `test -f 'sci_gateway/c/sci_hess.c' || echo '$(srcdir)/'`sci_gateway/c/sci_hess.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_hess.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_hess.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_hess.c' object='sci_gateway/c/libscilinear_algebra_la-sci_hess.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_hess.lo `test -f 'sci_gateway/c/sci_hess.c' || echo '$(srcdir)/'`sci_gateway/c/sci_hess.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo: sci_gateway/c/sci_rcond.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_rcond.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo `test -f 'sci_gateway/c/sci_rcond.c' || echo '$(srcdir)/'`sci_gateway/c/sci_rcond.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_rcond.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_rcond.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_rcond.c' object='sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo `test -f 'sci_gateway/c/sci_rcond.c' || echo '$(srcdir)/'`sci_gateway/c/sci_rcond.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo: sci_gateway/c/sci_bdiag.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_bdiag.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo `test -f 'sci_gateway/c/sci_bdiag.c' || echo '$(srcdir)/'`sci_gateway/c/sci_bdiag.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_bdiag.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_bdiag.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_bdiag.c' object='sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo `test -f 'sci_gateway/c/sci_bdiag.c' || echo '$(srcdir)/'`sci_gateway/c/sci_bdiag.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_slash.lo: sci_gateway/c/sci_slash.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_slash.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_slash.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_slash.lo `test -f 'sci_gateway/c/sci_slash.c' || echo '$(srcdir)/'`sci_gateway/c/sci_slash.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_slash.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_slash.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_slash.c' object='sci_gateway/c/libscilinear_algebra_la-sci_slash.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_slash.lo `test -f 'sci_gateway/c/sci_slash.c' || echo '$(srcdir)/'`sci_gateway/c/sci_slash.c
+
+sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo: sci_gateway/c/gw_linear_algebra2.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra2.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo `test -f 'sci_gateway/c/gw_linear_algebra2.c' || echo '$(srcdir)/'`sci_gateway/c/gw_linear_algebra2.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra2.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra2.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/gw_linear_algebra2.c' object='sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo `test -f 'sci_gateway/c/gw_linear_algebra2.c' || echo '$(srcdir)/'`sci_gateway/c/gw_linear_algebra2.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_det.lo: sci_gateway/c/sci_det.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_det.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_det.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_det.lo `test -f 'sci_gateway/c/sci_det.c' || echo '$(srcdir)/'`sci_gateway/c/sci_det.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_det.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_det.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_det.c' object='sci_gateway/c/libscilinear_algebra_la-sci_det.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_det.lo `test -f 'sci_gateway/c/sci_det.c' || echo '$(srcdir)/'`sci_gateway/c/sci_det.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_lu.lo: sci_gateway/c/sci_lu.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_lu.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lu.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_lu.lo `test -f 'sci_gateway/c/sci_lu.c' || echo '$(srcdir)/'`sci_gateway/c/sci_lu.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lu.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lu.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_lu.c' object='sci_gateway/c/libscilinear_algebra_la-sci_lu.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_lu.lo `test -f 'sci_gateway/c/sci_lu.c' || echo '$(srcdir)/'`sci_gateway/c/sci_lu.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo: sci_gateway/c/sci_balanc.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_balanc.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo `test -f 'sci_gateway/c/sci_balanc.c' || echo '$(srcdir)/'`sci_gateway/c/sci_balanc.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_balanc.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_balanc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_balanc.c' object='sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo `test -f 'sci_gateway/c/sci_balanc.c' || echo '$(srcdir)/'`sci_gateway/c/sci_balanc.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_qr.lo: sci_gateway/c/sci_qr.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_qr.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_qr.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_qr.lo `test -f 'sci_gateway/c/sci_qr.c' || echo '$(srcdir)/'`sci_gateway/c/sci_qr.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_qr.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_qr.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_qr.c' object='sci_gateway/c/libscilinear_algebra_la-sci_qr.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_qr.lo `test -f 'sci_gateway/c/sci_qr.c' || echo '$(srcdir)/'`sci_gateway/c/sci_qr.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_schur.lo: sci_gateway/c/sci_schur.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_schur.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_schur.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_schur.lo `test -f 'sci_gateway/c/sci_schur.c' || echo '$(srcdir)/'`sci_gateway/c/sci_schur.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_schur.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_schur.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_schur.c' object='sci_gateway/c/libscilinear_algebra_la-sci_schur.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_schur.lo `test -f 'sci_gateway/c/sci_schur.c' || echo '$(srcdir)/'`sci_gateway/c/sci_schur.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_chol.lo: sci_gateway/c/sci_chol.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_chol.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_chol.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_chol.lo `test -f 'sci_gateway/c/sci_chol.c' || echo '$(srcdir)/'`sci_gateway/c/sci_chol.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_chol.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_chol.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_chol.c' object='sci_gateway/c/libscilinear_algebra_la-sci_chol.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_chol.lo `test -f 'sci_gateway/c/sci_chol.c' || echo '$(srcdir)/'`sci_gateway/c/sci_chol.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_spec.lo: sci_gateway/c/sci_spec.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_spec.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_spec.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_spec.lo `test -f 'sci_gateway/c/sci_spec.c' || echo '$(srcdir)/'`sci_gateway/c/sci_spec.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_spec.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_spec.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_spec.c' object='sci_gateway/c/libscilinear_algebra_la-sci_spec.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_spec.lo `test -f 'sci_gateway/c/sci_spec.c' || echo '$(srcdir)/'`sci_gateway/c/sci_spec.c
+
+sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo: sci_gateway/c/gw_linear_algebra.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo `test -f 'sci_gateway/c/gw_linear_algebra.c' || echo '$(srcdir)/'`sci_gateway/c/gw_linear_algebra.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-gw_linear_algebra.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/gw_linear_algebra.c' object='sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo `test -f 'sci_gateway/c/gw_linear_algebra.c' || echo '$(srcdir)/'`sci_gateway/c/gw_linear_algebra.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_inv.lo: sci_gateway/c/sci_inv.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_inv.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_inv.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_inv.lo `test -f 'sci_gateway/c/sci_inv.c' || echo '$(srcdir)/'`sci_gateway/c/sci_inv.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_inv.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_inv.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_inv.c' object='sci_gateway/c/libscilinear_algebra_la-sci_inv.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_inv.lo `test -f 'sci_gateway/c/sci_inv.c' || echo '$(srcdir)/'`sci_gateway/c/sci_inv.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_svd.lo: sci_gateway/c/sci_svd.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_svd.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_svd.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_svd.lo `test -f 'sci_gateway/c/sci_svd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_svd.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_svd.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_svd.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_svd.c' object='sci_gateway/c/libscilinear_algebra_la-sci_svd.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_svd.lo `test -f 'sci_gateway/c/sci_svd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_svd.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo: sci_gateway/c/sci_lsq.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lsq.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo `test -f 'sci_gateway/c/sci_lsq.c' || echo '$(srcdir)/'`sci_gateway/c/sci_lsq.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lsq.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_lsq.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_lsq.c' object='sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo `test -f 'sci_gateway/c/sci_lsq.c' || echo '$(srcdir)/'`sci_gateway/c/sci_lsq.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_norm.lo: sci_gateway/c/sci_norm.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_norm.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_norm.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_norm.lo `test -f 'sci_gateway/c/sci_norm.c' || echo '$(srcdir)/'`sci_gateway/c/sci_norm.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_norm.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_norm.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_norm.c' object='sci_gateway/c/libscilinear_algebra_la-sci_norm.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_norm.lo `test -f 'sci_gateway/c/sci_norm.c' || echo '$(srcdir)/'`sci_gateway/c/sci_norm.c
+
+sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo: sci_gateway/c/assembleEigenvectors.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-assembleEigenvectors.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo `test -f 'sci_gateway/c/assembleEigenvectors.c' || echo '$(srcdir)/'`sci_gateway/c/assembleEigenvectors.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-assembleEigenvectors.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-assembleEigenvectors.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/assembleEigenvectors.c' object='sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo `test -f 'sci_gateway/c/assembleEigenvectors.c' || echo '$(srcdir)/'`sci_gateway/c/assembleEigenvectors.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo: sci_gateway/c/sci_dgeev.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dgeev.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo `test -f 'sci_gateway/c/sci_dgeev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dgeev.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dgeev.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dgeev.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_dgeev.c' object='sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo `test -f 'sci_gateway/c/sci_dgeev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dgeev.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo: sci_gateway/c/sci_dggev.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dggev.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo `test -f 'sci_gateway/c/sci_dggev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dggev.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dggev.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dggev.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_dggev.c' object='sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo `test -f 'sci_gateway/c/sci_dggev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dggev.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo: sci_gateway/c/sci_dsyev.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dsyev.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo `test -f 'sci_gateway/c/sci_dsyev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dsyev.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dsyev.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_dsyev.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_dsyev.c' object='sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo `test -f 'sci_gateway/c/sci_dsyev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dsyev.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo: sci_gateway/c/sci_zgeev.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zgeev.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo `test -f 'sci_gateway/c/sci_zgeev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zgeev.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zgeev.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zgeev.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_zgeev.c' object='sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo `test -f 'sci_gateway/c/sci_zgeev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zgeev.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo: sci_gateway/c/sci_zggev.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zggev.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo `test -f 'sci_gateway/c/sci_zggev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zggev.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zggev.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zggev.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_zggev.c' object='sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo `test -f 'sci_gateway/c/sci_zggev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zggev.c
+
+sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo: sci_gateway/c/sci_zheev.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zheev.Tpo -c -o sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo `test -f 'sci_gateway/c/sci_zheev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zheev.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zheev.Tpo sci_gateway/c/$(DEPDIR)/libscilinear_algebra_la-sci_zheev.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_zheev.c' object='sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscilinear_algebra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo `test -f 'sci_gateway/c/sci_zheev.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zheev.c
+
+.f.o:
+ $(AM_V_F77)$(F77COMPILE) -c -o $@ $<
+
+.f.obj:
+ $(AM_V_F77)$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.f.lo:
+ $(AM_V_F77)$(LTF77COMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+ -rm -rf sci_gateway/c/.libs sci_gateway/c/_libs
+ -rm -rf src/c/.libs src/c/_libs
+ -rm -rf src/fortran/.libs src/fortran/_libs
+install-libscilinear_algebra_la_etcDATA: $(libscilinear_algebra_la_etc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscilinear_algebra_la_etc_DATA)'; test -n "$(libscilinear_algebra_la_etcdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscilinear_algebra_la_etcdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscilinear_algebra_la_etcdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscilinear_algebra_la_etcdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscilinear_algebra_la_etcdir)" || exit $$?; \
+ done
+
+uninstall-libscilinear_algebra_la_etcDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscilinear_algebra_la_etc_DATA)'; test -n "$(libscilinear_algebra_la_etcdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscilinear_algebra_la_etcdir)'; $(am__uninstall_files_from_dir)
+install-libscilinear_algebra_la_rootDATA: $(libscilinear_algebra_la_root_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscilinear_algebra_la_root_DATA)'; test -n "$(libscilinear_algebra_la_rootdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscilinear_algebra_la_rootdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscilinear_algebra_la_rootdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscilinear_algebra_la_rootdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscilinear_algebra_la_rootdir)" || exit $$?; \
+ done
+
+uninstall-libscilinear_algebra_la_rootDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscilinear_algebra_la_root_DATA)'; test -n "$(libscilinear_algebra_la_rootdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscilinear_algebra_la_rootdir)'; $(am__uninstall_files_from_dir)
+install-libscilinear_algebra_la_sci_gatewayDATA: $(libscilinear_algebra_la_sci_gateway_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscilinear_algebra_la_sci_gateway_DATA)'; test -n "$(libscilinear_algebra_la_sci_gatewaydir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscilinear_algebra_la_sci_gatewaydir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscilinear_algebra_la_sci_gatewaydir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscilinear_algebra_la_sci_gatewaydir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscilinear_algebra_la_sci_gatewaydir)" || exit $$?; \
+ done
+
+uninstall-libscilinear_algebra_la_sci_gatewayDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscilinear_algebra_la_sci_gateway_DATA)'; test -n "$(libscilinear_algebra_la_sci_gatewaydir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscilinear_algebra_la_sci_gatewaydir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA) all-local
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(libscilinear_algebra_la_etcdir)" "$(DESTDIR)$(libscilinear_algebra_la_rootdir)" "$(DESTDIR)$(libscilinear_algebra_la_sci_gatewaydir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+ -rm -f sci_gateway/c/$(am__dirstamp)
+ -rm -f src/c/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/c/$(am__dirstamp)
+ -rm -f src/fortran/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/fortran/$(am__dirstamp)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local \
+ clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf sci_gateway/c/$(DEPDIR) src/c/$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-local distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local \
+ install-libscilinear_algebra_la_etcDATA \
+ install-libscilinear_algebra_la_rootDATA \
+ install-libscilinear_algebra_la_sci_gatewayDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am: install-html-local
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf sci_gateway/c/$(DEPDIR) src/c/$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libscilinear_algebra_la_etcDATA \
+ uninstall-libscilinear_algebra_la_rootDATA \
+ uninstall-libscilinear_algebra_la_sci_gatewayDATA \
+ uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am \
+ check-local clean clean-generic clean-libtool clean-local \
+ clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-local distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-data-local install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-html-local install-info \
+ install-info-am install-libscilinear_algebra_la_etcDATA \
+ install-libscilinear_algebra_la_rootDATA \
+ install-libscilinear_algebra_la_sci_gatewayDATA install-man \
+ install-pdf install-pdf-am install-pkglibLTLIBRARIES \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am \
+ uninstall-libscilinear_algebra_la_etcDATA \
+ uninstall-libscilinear_algebra_la_rootDATA \
+ uninstall-libscilinear_algebra_la_sci_gatewayDATA \
+ uninstall-pkglibLTLIBRARIES
+
+
+# This target enables tests for Scilab
+check-local: $(top_builddir)/scilab-bin test
+ if test -d $(mydatadir)/tests; then \
+ @COMMAND="try test_run('$(modulename)');catch exit(-1);end;exit(0)"; export LANG=C; $(top_builddir)/bin/scilab -nwni -nb -e "$$COMMAND"; \
+ fi
+check-code:
+ if test -f build.xml; then \
+ $(ANT) checkstyle; \
+ fi
+ if test -x "$(SPLINT)"; then \
+ $(SPLINT) $(SPLINT_OPTIONS) -I$(top_srcdir)/modules/core/includes/ -I$(top_srcdir)/libs/MALLOC/includes/ -I$(top_srcdir)/modules/localization/includes/ $(INCLUDE_FLAGS) $(CHECK_SRC); \
+ fi
+@NEED_JAVA_TRUE@java:
+# Some configurations needs to export JAVA_HOME in the current env
+@NEED_JAVA_TRUE@ @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
+@NEED_JAVA_TRUE@ if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+@NEED_JAVA_TRUE@ if test -f build.xml -a $$USEANT -eq 1; then \
+@NEED_JAVA_TRUE@ $(ANT); \
+@NEED_JAVA_TRUE@ fi
+
+@NEED_JAVA_TRUE@clean-java:
+# Some configurations needs to export JAVA_HOME in the current env
+@NEED_JAVA_TRUE@ @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
+@NEED_JAVA_TRUE@ if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+@NEED_JAVA_TRUE@ if test -f build.xml -a $$USEANT -eq 1; then \
+@NEED_JAVA_TRUE@ $(ANT) clean; \
+@NEED_JAVA_TRUE@ fi;
+
+# If the user request for the SWIG generation of the wrappers Java => C/C++
+# We call the target swig-build on the variable SWIG_WRAPPERS
+
+@SWIG_TRUE@swig: $(SWIG_WRAPPERS)
+@SWIG_TRUE@ @SWIG_PACKAGENAME=org.scilab.modules.$(modulename); \
+@SWIG_TRUE@ SWIG_OUTDIR=src/java/org/scilab/modules/$(modulename)/; \
+@SWIG_TRUE@ if test -n "$(SWIG_WRAPPERS)"; then \
+@SWIG_TRUE@ for file in $(SWIG_WRAPPERS) ; do \
+@SWIG_TRUE@ echo "Swig process of $$file (Java) ..."; \
+@SWIG_TRUE@ $(SWIG_BIN) $(SWIG_JAVA) -package $$SWIG_PACKAGENAME -outdir $$SWIG_OUTDIR $$file; \
+@SWIG_TRUE@ done; \
+@SWIG_TRUE@ fi
+
+@SWIG_TRUE@swig-scilab: $(SWIG_SCILAB_WRAPPERS)
+@SWIG_TRUE@ @SWIG_OUTDIR=src/swig/; \
+@SWIG_TRUE@ if test -n "$(SWIG_SCILAB_WRAPPERS)"; then \
+@SWIG_TRUE@ for file in $(SWIG_SCILAB_WRAPPERS) ; do \
+@SWIG_TRUE@ echo "Swig process of $$file (Scilab) ..."; \
+@SWIG_TRUE@ $(SWIG_BIN) $(SWIG_SCILAB) -outdir $$SWIG_OUTDIR $$file; \
+@SWIG_TRUE@ done; \
+@SWIG_TRUE@ fi
+
+# If the user request for the SWIG generation of the wrappers Java => C/C++
+# We call the target swig-build on the variable SWIG_WRAPPERS
+
+@GIWS_TRUE@giws: $(GIWS_WRAPPERS)
+@GIWS_TRUE@ @GIWS_OUTPUTDIR=src/jni/; \
+@GIWS_TRUE@ MANDATORY_OPTIONS="--throws-exception-on-error --description-file"; \
+@GIWS_TRUE@ if test -n "$(GIWS_WRAPPERS)"; then \
+@GIWS_TRUE@ for file in $(GIWS_WRAPPERS) ; do \
+@GIWS_TRUE@ echo "GIWS process of $$file ..."; \
+@GIWS_TRUE@ if test -z "$(GIWS_OPTIONS)"; then \
+@GIWS_TRUE@ $(GIWS_BIN) --disable-return-size-array --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
+@GIWS_TRUE@ else \
+@GIWS_TRUE@ echo "Custom GIWS call with '$$GIWS_OPTIONS'"; \
+@GIWS_TRUE@ $(GIWS_BIN) $$GIWS_OPTIONS --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
+@GIWS_TRUE@ fi \
+@GIWS_TRUE@ done; \
+@GIWS_TRUE@ fi
+
+@GIWS_TRUE@giws-exception:
+@GIWS_TRUE@ @GIWS_OUTPUTDIR=src/jni/;\
+@GIWS_TRUE@ echo "GIWS: Generation of exception class ..."; \
+@GIWS_TRUE@ $(GIWS_BIN) --generate-exception-class --output-dir $$GIWS_OUTPUTDIR
+
+macros:
+ -@( if test ! -x $(top_builddir)/scilab-bin; then \
+ echo "Error : Cannot build $< : Scilab has not been built"; \
+ else \
+ $(top_builddir)/bin/scilab -ns -nwni -e "exec('macros/buildmacros.sce');quit;";\
+ fi)
+
+# Removes the macros
+clean-macros:
+# Removes macros (*.bin generated from .sci)
+ @for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
+ echo "rm -f $(builddir)/$$dir/$(MACROBINMASK)"; \
+ rm -f $(builddir)/$$dir/$(MACROBINMASK); \
+ done
+
+test:
+# More tests could be added here
+ @if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+ if test -f build.xml -a $$USEANT -eq 1; then \
+ $(ANT) test; \
+ fi
+
+all-local: $(TARGETS_ALL)
+
+.sci.bin:
+ -@( if test ! -x $(top_builddir)/scilab-bin; then \
+ echo "Error : Cannot build $< : Scilab has not been build"; \
+ else \
+ echo "Creating $@"; \
+ $(top_builddir)/bin/scilab -ns -nwni -e "exec('$(abs_srcdir)/$<');save('$(abs_srcdir)/$@');exit;"; \
+ fi )
+
+install-html-local:
+
+install-data-local-local:
+# Mainly for javasci
+ @if test -d $(srcdir)/javadoc; then \
+ cp -R $(srcdir)/javadoc $(DESTDIR)/$(mydatadir)/; \
+ fi
+# If the user wants the help sources to be installed
+@INSTALL_HELP_XML_TRUE@ @echo "-------- Install of XML sources of help files --------"; \
+@INSTALL_HELP_XML_TRUE@ for lang in $(ALL_LINGUAS); do \
+@INSTALL_HELP_XML_TRUE@ if test -d $(srcdir)/help/$$lang; then \
+@INSTALL_HELP_XML_TRUE@ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/$$lang && \
+@INSTALL_HELP_XML_TRUE@ if ls -lLd $(srcdir)/help/$$lang/$(DOCMASKXML) >/dev/null 2>&1; then \
+@INSTALL_HELP_XML_TRUE@ for file in $(srcdir)/help/$$lang/$(DOCMASKXML) ; do \
+@INSTALL_HELP_XML_TRUE@ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/$$lang" ; \
+@INSTALL_HELP_XML_TRUE@ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/$$lang ; \
+@INSTALL_HELP_XML_TRUE@ done ; \
+@INSTALL_HELP_XML_TRUE@ fi; \
+@INSTALL_HELP_XML_TRUE@ fi; \
+@INSTALL_HELP_XML_TRUE@ done; \
+@INSTALL_HELP_XML_TRUE@ @echo "-------- Install of MathML sources --------"; \
+@INSTALL_HELP_XML_TRUE@ if test -d $(srcdir)/help/mml/; then \
+@INSTALL_HELP_XML_TRUE@ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/mml/ && \
+@INSTALL_HELP_XML_TRUE@ if ls -lLd $(srcdir)/help/mml/$(DOCMASKMML) >/dev/null 2>&1; then \
+@INSTALL_HELP_XML_TRUE@ for file in $(srcdir)/help/mml/$(DOCMASKMML) ; do \
+@INSTALL_HELP_XML_TRUE@ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/mml" ; \
+@INSTALL_HELP_XML_TRUE@ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/mml ; \
+@INSTALL_HELP_XML_TRUE@ done ; \
+@INSTALL_HELP_XML_TRUE@ fi; \
+@INSTALL_HELP_XML_TRUE@ fi
+install-data-local:
+# Install the tests
+ @echo "-------- Install tests (if any) --------"; \
+ for dir in $(TESTS_DIR) $(TESTS_DIREXT) ; do \
+ if test -d $(srcdir)/$$dir/; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
+ for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
+ if test -d "$(srcdir)/$$dir/$$file"; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir/$$file; \
+ $(mkinstalldirs) "$(DESTDIR)$(pkgmacrosdir)/$$dir/$$file"; \
+ else \
+ echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
+ $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
+ fi \
+ done; \
+ fi; \
+ done
+# Install the help chapter
+ @echo "-------- Install the help chapter (if any) --------"; \
+ for lang in $(HELP_CHAPTERLANG); do \
+ HELPFILE=$(srcdir)/$(HELP_CHAPTERDIR)$$lang/$(HELP_CHAPTERFILE); \
+ if test -f $$HELPFILE; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
+ echo $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
+ $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
+ fi; \
+ done
+# Install the demos & examples
+ @echo "-------- Install demos & examples (if any) --------"; \
+ for dir in $(DEMOS_DIR) $(DEMOS_DIREXT) $(EXAMPLES_DIR) $(EXAMPLES_DIREXT) ; do \
+ if test -d $(srcdir)/$$dir/; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir && \
+ for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
+ if test -d "$(srcdir)/$$dir/$$file"; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir/$$file; \
+ $(mkinstalldirs) "$(DESTDIR)$(pkgdocdir)/$$dir/$$file"; \
+ else \
+ echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
+ $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
+ fi \
+ done; \
+ fi; \
+ done
+# Install the macros
+ @echo "-------- Install macros (if any) --------"; \
+ for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
+ $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
+ if test -d $(srcdir)/$$dir/; then \
+ FILELIST="$(srcdir)/$$dir/$(MACROMASK) $(srcdir)/$$dir/$(MACROBINMASK) $(srcdir)/$$dir/$(MACROBUILDMASK) $(srcdir)/$$dir/names $(srcdir)/$$dir/lib";\
+ if test -n "$(MACROSSPECIALEXT)"; then \
+ specialExtDir=""; \
+ for specialExt in $(MACROSSPECIALEXT); do \
+ specialExtDir="$$specialExtDir $(srcdir)/$$dir/$$specialExt"; \
+ done; \
+ FILELIST="$$FILELIST $$specialExtDir"; \
+ fi; \
+ for file in `ls -1 $$FILELIST 2>/dev/null`; do \
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgmacrosdir)/$$dir" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgmacrosdir)/$$dir ; \
+ done; \
+ fi; \
+ done
+# Install java files (.jar)
+ @if ls -lLd $(srcdir)/$(JARDIR)$(JARMASK) >/dev/null 2>&1; then \
+ echo "-------- Install jar files --------"; \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(JARDIR); \
+ for file in $(srcdir)/$(JARDIR)$(JARMASK); do\
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/$(JARDIR)" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/$(JARDIR) ; \
+ done ; \
+ fi
+
+########### CLEAN ###################
+# Clean help (generated automatically by Scilab)
+# It used to clean the macro (clean-macros) but this was causing
+# make clean && make to fail Scilab startup
+@NEED_JAVA_TRUE@clean-local: clean-java
+@NEED_JAVA_FALSE@clean-local:
+
+distclean-local:
+ rm -f $(builddir)/help/*/.last_successful_build_javaHelp $(builddir)/help/*/.list_*
+
+.PHONY: macros java swig giws
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/modules/linear_algebra/etc/linear_algebra.quit b/modules/linear_algebra/etc/linear_algebra.quit
new file mode 100755
index 000000000..ab83f0c89
--- /dev/null
+++ b/modules/linear_algebra/etc/linear_algebra.quit
@@ -0,0 +1,10 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
diff --git a/modules/linear_algebra/etc/linear_algebra.start b/modules/linear_algebra/etc/linear_algebra.start
new file mode 100755
index 000000000..f12730d24
--- /dev/null
+++ b/modules/linear_algebra/etc/linear_algebra.start
@@ -0,0 +1,13 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2006-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+//Load functions libraries
+// =============================================================================
+load('SCI/modules/linear_algebra/macros/lib');
+
diff --git a/modules/linear_algebra/examples/intdgemm.c b/modules/linear_algebra/examples/intdgemm.c
new file mode 100755
index 000000000..d2036fc4d
--- /dev/null
+++ b/modules/linear_algebra/examples/intdgemm.c
@@ -0,0 +1,57 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) INRIA
+* Copyright (C) DIGITEO - 2010 - Allan CORNET
+*
+* This file is released under the 3-clause BSD license. See COPYING-BSD.
+*/
+/* -------------------------------------------------------------------------- */
+/* WARNING:this gateway uses old scilab api and it does not work with Scilab 6*/
+/* see help api_scilab for more information. */
+/* -------------------------------------------------------------------------- */
+#include "stack-c.h"
+#include "Scierror.h"
+/* -------------------------------------------------------------------------- */
+/* Usage: C = dgemm(alfa, A, B, betha, C) */
+/* -------------------------------------------------------------------------- */
+extern int C2F(dgemm)(char *, char *, int *, int *, int *,
+ double *, double *, int *, double *, int *,
+ double *, double *, int *);
+/* -------------------------------------------------------------------------- */
+int intdgemm(char* fname)
+{
+ int lalfa = 0, m1 = 0, n1 = 0, m = 0, n = 0, k = 0;
+ int mA = 0, nA = 0, lA = 0, mB = 0, nB = 0, lB = 0, m4 = 0, n4 = 0, lbeta = 0;
+ int mC = 0, nC = 0, lC = 0;
+
+ int minlhs = 1, minrhs = 5, maxlhs = 1, maxrhs = 5;
+
+ CheckRhs(minrhs, maxrhs) ;
+ CheckLhs(minlhs, maxlhs) ;
+
+ GetRhsVar(1, MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &lalfa); /* alpha */
+ CheckScalar(1, m1, n1);
+
+ GetRhsVar(2, MATRIX_OF_DOUBLE_DATATYPE, &mA, &nA, &lA); /* A */
+ GetRhsVar(3, MATRIX_OF_DOUBLE_DATATYPE, &mB, &nB, &lB); /* B */
+
+ GetRhsVar(4, MATRIX_OF_DOUBLE_DATATYPE, &m4, &n4, &lbeta); /* beta */
+ CheckScalar(4, m4, n4);
+
+ GetRhsVar(5, MATRIX_OF_DOUBLE_DATATYPE, &mC, &nC, &lC); /* C */
+
+ m = mA;
+ n = nB;
+ if (nA != mB || mA != mC || nB != nC )
+ {
+ Scierror(999, "%f: invalid matrix dims\n", fname);
+ }
+
+ k = nA;
+ C2F(dgemm)("n", "n", &m , &n , &k, stk(lalfa),
+ stk(lA), &mA , stk(lB), &mB , stk(lbeta) , stk(lC), &mC);
+ /* Return C (#5) */
+ LhsVar(1) = 5;
+ return(0);
+}
+/* -------------------------------------------------------------------------- */
diff --git a/modules/linear_algebra/examples/intdsyev.c b/modules/linear_algebra/examples/intdsyev.c
new file mode 100755
index 000000000..8a56ee99b
--- /dev/null
+++ b/modules/linear_algebra/examples/intdsyev.c
@@ -0,0 +1,95 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) INRIA
+* Copyright (C) DIGITEO - 2010 - Allan CORNET
+*
+* This file is released under the 3-clause BSD license. See COPYING-BSD.
+*/
+/* -------------------------------------------------------------------------- */
+/* WARNING:this gateway uses old scilab api and it does not work with Scilab 6*/
+/* see help api_scilab for more information. */
+/* -------------------------------------------------------------------------- */
+#include "sciprint.h"
+#include "Scierror.h"
+#include "stack-c.h"
+#include "machine.h"
+#include "core_math.h"
+/* -------------------------------------------------------------------------- */
+/* SUBROUTINE DSYEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO ) */
+/* [w,U] = dsyev(A) */
+/* w = dsyev(A) */
+/* -------------------------------------------------------------------------- */
+extern int C2F(dsyev)();
+/* -------------------------------------------------------------------------- */
+int intdsyev(char* fname)
+{
+ int M = 0, N = 0, lA = 0;
+ int NLHS = 0;
+ int un = 1;
+ int WORK = 0, lWORK = 0, LWORKMIN = 0, LWORK = 0, INFO = 0;
+ int LDA = 0, lw = 0;
+ int A = 1, W = 2;
+
+ static int minlhs = 1, minrhs = 1, maxlhs = 2, maxrhs = 1;
+ CheckRhs(minrhs, maxrhs) ;
+ CheckLhs(minlhs, maxlhs) ;
+
+ /*--------------------A---------------------------*/
+ GetRhsVar(A, MATRIX_OF_DOUBLE_DATATYPE, &M, &N, &lA);
+ /* To be done: Check A symmetric and Real*/
+ NLHS = Lhs;
+ switch ( NLHS )
+ {
+
+ case 2:
+ /* [w,U]=dsyev(A) */
+ CreateVar(W, MATRIX_OF_DOUBLE_DATATYPE, &N, &un, &lw);
+ WORK = 3;
+ LWORKMIN = Max(1, 3 * N - 1);
+ LWORK = LWORKMIN;
+ /* LWORK=C2F(maxvol)(&WORK, "d", 1L); max memory currently available */
+ if (LWORK < LWORKMIN)
+ {
+ sciprint("not enough memory (use stacksize)");
+ SciError(9999);
+ };
+ CreateVar(3, MATRIX_OF_DOUBLE_DATATYPE, &LWORK, &un, &lWORK);
+ LDA = Max(1, N);
+ C2F(dsyev)("V", "L", &N, stk(lA), &LDA, stk(lw), stk(lWORK), &LWORK, &INFO);
+ if (INFO != 0)
+ {
+ C2F(errorinfo)("dsyev ", &INFO, 5L);
+ }
+ LhsVar(1) = A;
+ LhsVar(2) = W;
+ return 0;
+ break;
+
+ case 1:
+ /* w=dsyev(A) */
+ CreateVar(W, MATRIX_OF_DOUBLE_DATATYPE, &N, &un, &lw);
+ WORK = 3;
+ LWORKMIN = Max(1, 3 * N - 1);
+ LWORK = C2F(maxvol)(&WORK, "d", 1L); /* max memory currently available */
+ if (LWORK < LWORKMIN)
+ {
+ sciprint("not enough memory (use stacksize)");
+ SciError(9999);
+ };
+ CreateVar(3, MATRIX_OF_DOUBLE_DATATYPE, &LWORK, &un, &lWORK);
+ LDA = Max(1, N);
+ C2F(dsyev)("N", "L", &N, stk(lA), &LDA, stk(lw), stk(lWORK), &LWORK, &INFO);
+ if (INFO != 0)
+ {
+ C2F(errorinfo)("dsyev ", &INFO, 5L);
+ }
+ LhsVar(1) = W;
+ return 0;
+ break;
+
+ default:
+ return 0;
+ }
+ return(0);
+}
+/* -------------------------------------------------------------------------- */
diff --git a/modules/linear_algebra/examples/intzgemm.c b/modules/linear_algebra/examples/intzgemm.c
new file mode 100755
index 000000000..82ffce07e
--- /dev/null
+++ b/modules/linear_algebra/examples/intzgemm.c
@@ -0,0 +1,62 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) INRIA
+* Copyright (C) DIGITEO - 2010 - Allan CORNET
+*
+* This file is released under the 3-clause BSD license. See COPYING-BSD.
+*/
+/* -------------------------------------------------------------------------- */
+/* WARNING:this gateway uses old scilab api and it does not work with Scilab 6*/
+/* see help api_scilab for more information. */
+/* -------------------------------------------------------------------------- */
+#include "machine.h"
+#include "Scierror.h"
+#include "stack-c.h"
+/* -------------------------------------------------------------------------- */
+/* Ex: alfa = 1+%i;
+ betha = alfa;
+ A = rand(2,2) + %i * rand(2,2);
+ B = A;
+ C = A;
+ Usage: C = zgemm(alfa, A, B, betha, C)
+*/
+/* -------------------------------------------------------------------------- */
+extern int C2F(zgemm)();
+/* -------------------------------------------------------------------------- */
+int intzgemm(char* fname)
+{
+ int lalfa = 0, m1 = 0, n1 = 0, m = 0, n = 0, k = 0;
+ int mA = 0, nA = 0, lA = 0, mB = 0, nB = 0, lB = 0;
+ int m4 = 0, n4 = 0, lbeta = 0, mC = 0, nC = 0, lC = 0;
+
+ int minlhs = 1, minrhs = 5, maxlhs = 1, maxrhs = 5;
+
+ CheckRhs(minrhs, maxrhs) ;
+ CheckLhs(minlhs, maxlhs) ;
+
+ GetRhsVar(1, MATRIX_OF_COMPLEX_DATATYPE, &m1, &n1, &lalfa); /* alpha */
+ CheckScalar(1, m1, n1);
+
+ GetRhsVar(2, MATRIX_OF_COMPLEX_DATATYPE, &mA, &nA, &lA); /* A */
+ GetRhsVar(3, MATRIX_OF_COMPLEX_DATATYPE, &mB, &nB, &lB); /* B */
+
+ GetRhsVar(4, MATRIX_OF_COMPLEX_DATATYPE, &m4, &n4, &lbeta); /* betha */
+ CheckScalar(4, m4, n4);
+
+ GetRhsVar(5, MATRIX_OF_COMPLEX_DATATYPE, &mC, &nC, &lC); /* C */
+
+ m = mA;
+ n = nB;
+ if (nA != mB || mA != mC || nB != nC )
+ {
+ Scierror(999, "%f: invalid matrix dims\n", fname);
+ }
+
+ k = nA;
+ C2F(zgemm)("n", "n", &m , &n , &k, zstk(lalfa),
+ zstk(lA), &mA , zstk(lB), &mB , zstk(lbeta) , zstk(lC), &mC);
+ /* Return C (#5) */
+ LhsVar(1) = 5;
+ return(0);
+}
+/* -------------------------------------------------------------------------- */
diff --git a/modules/linear_algebra/examples/lapackscilab.sce b/modules/linear_algebra/examples/lapackscilab.sce
new file mode 100755
index 000000000..11f7a1297
--- /dev/null
+++ b/modules/linear_algebra/examples/lapackscilab.sce
@@ -0,0 +1,56 @@
+//
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) DIGITEO - 2010 - Allan CORNET
+//
+// This file is released under the 3-clause BSD license. See COPYING-BSD.
+//
+
+//
+// A example to call some lapack routines
+// dgemm, zgemm, dsyev
+
+// WARNING:these gateways use old scilab api and it does not work with Scilab 6*/
+// see help api_scilab for more information.
+
+
+ilib_verbose(0);
+setenv("__USE_DEPRECATED_STACK_FUNCTIONS__","YES");
+
+curdir = pwd();
+file_path = get_file_path("lapackscilab.sce");
+chdir(file_path);
+
+files_functions = ["intdgemm.c";
+"intzgemm.c";
+"intdsyev.c"];
+
+table_functions = ["dgemm", "intdgemm";
+"zgemm", "intzgemm";
+"dsyev", "intdsyev"];
+
+ilib_build("lapackexample", table_functions, files_functions, []);
+exec loader.sce;
+
+Alfa = 2;
+Beta = 3;
+m = 3;
+n = 4;
+C = ones(m, n);
+k = 2;
+A = ones(m, k);
+B = ones(k, n);
+C1 = dgemm(Alfa, A, B, Beta, C);
+if norm(C1 - (Alfa * A * B + Beta * C)) > %eps then pause,end
+
+A = [1/2^10, 1/2^10; 2^10, 2^10];
+A = rand(3,3);
+if norm(max(real(dsyev(A))) - max(real(spec(A))) ) > %eps * 1e15 then pause,end
+
+alfa = 1 + %i;
+betha = alfa;
+A = rand(2,2) + %i * rand(2,2);
+B = A;
+C = A;
+C = zgemm(alfa, A, B, betha, C)
+
+cd(curdir); \ No newline at end of file
diff --git a/modules/linear_algebra/examples/readme.txt b/modules/linear_algebra/examples/readme.txt
new file mode 100755
index 000000000..18f048d29
--- /dev/null
+++ b/modules/linear_algebra/examples/readme.txt
@@ -0,0 +1,10 @@
+Template (example) interface for a few Lapack routines.
+
+These gateways use old scilab api and it does not work with Scilab 6.
+See help api_scilab for more information.
+
+to test :
+
+ exec SCI/modules/linear_algebra/examples/lapackscilab.sce
+
+Allan CORNET - DIGITEO - 2010
diff --git a/modules/linear_algebra/help/en_US/addchapter.sce b/modules/linear_algebra/help/en_US/addchapter.sce
new file mode 100755
index 000000000..a33120d03
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/addchapter.sce
@@ -0,0 +1,11 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+add_help_chapter("Linear Algebra",SCI+"/modules/linear_algebra/help/en_US",%T);
+
diff --git a/modules/linear_algebra/help/en_US/eigen/CHAPTER b/modules/linear_algebra/help/en_US/eigen/CHAPTER
new file mode 100755
index 000000000..88f8bc42b
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/eigen/CHAPTER
@@ -0,0 +1,2 @@
+title = Eigenvalue and Singular Value
+
diff --git a/modules/linear_algebra/help/en_US/eigen/balanc.xml b/modules/linear_algebra/help/en_US/eigen/balanc.xml
new file mode 100755
index 000000000..3f79b79c8
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/eigen/balanc.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="balanc">
+ <refnamediv>
+ <refname>balanc</refname>
+ <refpurpose>matrix or pencil balancing</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Ab,X]=balanc(A)
+ [Eb,Ab,X,Y]=balanc(E,A)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A: </term>
+ <listitem>
+ <para>a real square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X: </term>
+ <listitem>
+ <para>a real square invertible matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E: </term>
+ <listitem>
+ <para>
+ a real square matrix (same dimension as <literal>A</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Y: </term>
+ <listitem>
+ <para>a real square invertible matrix.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Balance a square matrix to improve
+ its condition number.
+ </para>
+ <para>
+ <literal>[Ab,X] = balanc(A)</literal> finds a similarity transformation
+ <literal>X</literal> such that
+ </para>
+ <para>
+ <literal>Ab = inv(X)*A*X</literal> has approximately equal row and column norms.
+ </para>
+ <para>
+ For matrix pencils,balancing is done for improving the
+ generalized eigenvalue problem.
+ </para>
+ <para>
+ <literal>[Eb,Ab,X,Y] = balanc(E,A)</literal> returns left and right transformations <literal>X</literal> and <literal>Y</literal>
+ such that <literal>Eb=inv(X)*E*Y, Ab=inv(X)*A*Y</literal>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Remark</title>
+ <para>
+ Balancing is made in the functions <literal>bdiag</literal> and <literal>spec</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=[1/2^10,1/2^10;2^10,2^10];
+[Ab,X]=balanc(A);
+norm(A(1,:))/norm(A(2,:))
+norm(Ab(1,:))/norm(Ab(2,:))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="bdiag">bdiag</link>
+ </member>
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/eigen/bdiag.xml b/modules/linear_algebra/help/en_US/eigen/bdiag.xml
new file mode 100755
index 000000000..4cc6433e8
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/eigen/bdiag.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="bdiag">
+ <refnamediv>
+ <refname>bdiag</refname>
+ <refpurpose>block diagonalization, generalized eigenvectors</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Ab [,X [,bs]]]=bdiag(A [,rmax])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real or complex square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rmax</term>
+ <listitem>
+ <para>real number</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Ab</term>
+ <listitem>
+ <para>real or complex square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>real or complex non-singular matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>bs</term>
+ <listitem>
+ <para>vector of integers</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <programlisting role=""><![CDATA[
+[Ab [,X [,bs]]]=bdiag(A [,rmax])
+ ]]></programlisting>
+ <para>
+ performs the block-diagonalization of matrix <literal>A</literal>. bs
+ gives the structure of the blocks (respective sizes of the
+ blocks). <literal>X</literal> is the change of basis i.e
+ <literal>Ab = inv(X)*A*X</literal>is block diagonal.
+ </para>
+ <para>
+ <literal>rmax</literal> controls the conditioning of <literal>X</literal>; the
+ default value is the l1 norm of <literal>A</literal>.
+ </para>
+ <para>
+ To get a diagonal form (if it exists) choose a large value for
+ <literal>rmax</literal> (<literal>rmax=1/%eps</literal> for example).
+ Generically (for real random A) the blocks are (1x1) and (2x2) and
+ <literal>X</literal> is the matrix of eigenvectors.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+//Real case: 1x1 and 2x2 blocks
+a=rand(5,5);[ab,x,bs]=bdiag(a);ab
+
+//Complex case: complex 1x1 blocks
+[ab,x,bs]=bdiag(a+%i*0);ab
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ <member>
+ <link linkend="sylv">sylv</link>
+ </member>
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ <member>
+ <link linkend="sysdiag">sysdiag</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/eigen/gschur.xml b/modules/linear_algebra/help/en_US/eigen/gschur.xml
new file mode 100755
index 000000000..2c9d2ae15
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/eigen/gschur.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" scilab:needs-examples="no" xml:id="gschur">
+ <refnamediv>
+ <refname>gschur</refname>
+ <refpurpose>
+ generalized Schur form. <emphasis role="bold">This function is obsolete.</emphasis>
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[As,Es]=gschur(A,E)
+ [As,Es,Q,Z]=gschur(A,E)
+ [As,Es,Z,dim] = gschur(A,E,flag)
+ [As,Es,Z,dim]= gschur(A,E,extern)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Description</title>
+ <para>
+ This function is obsolete and is now included in the <literal>schur</literal>
+ function. In most cases the <literal>gschur</literal> function will still work as
+ before, but it will be removed in the future release.
+ </para>
+ <para>
+ The first three syntaxes can be replaced by
+ </para>
+ <programlisting role=""><![CDATA[
+[As,Es]=schur(A,E)
+[As,Es,Q,Z]=schur(A,E);Q=Q' //NOTE THE TRANPOSITION HERE
+[As,Es,Z,dim] = schur(A,E,flag)
+ ]]></programlisting>
+ <para>
+ The last syntax requires little more adaptations:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>if</term>
+ <listitem>
+ <para>extern is a scilab function the new calling sequence
+ should be <literal>[As,Es,Z,dim]= schur(A,E,Nextern)</literal> with
+ Nextern defined as follow:
+ </para>
+ <programlisting role=""><![CDATA[
+function t=Nextern(R)
+if R(2)==0 then
+ t=extern([1,R(1),R(3)])==1
+else
+ c=(R(1)+%i*R(2))/R(3)
+ t=extern([2,real(c+c'),real(c*c')])==1
+end
+endfunction
+ ]]></programlisting>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>if</term>
+ <listitem>
+ <para>extern is the name of an external function coded in Fortran or C
+ the new calling sequence should be <literal>[As,Es,Z,dim]= schur(A,E,'nextern')</literal> with nextern defined as follow:
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <programlisting role=""><![CDATA[
+logical function nextern(ar,ai,beta)
+double precision ar,ai,beta
+integer r,extern
+if (ai.eq.0.0d0) then
+ r=extern(1,ar,beta,0.0d0,0.0d0)
+else
+ r=extern(2,0.0d0,0.0d0,2.0d0*ar,ar*ar+ai*ai)
+endif
+nextern=r.eq.1
+end
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="external">external</link>
+ </member>
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/eigen/gspec.xml b/modules/linear_algebra/help/en_US/eigen/gspec.xml
new file mode 100755
index 000000000..a5c5043a0
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/eigen/gspec.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" scilab:needs-examples="no" xml:id="gspec">
+ <refnamediv>
+ <refname>gspec</refname>
+ <refpurpose>
+ eigenvalues of matrix pencil. <emphasis role="bold">This function is obsolete.</emphasis>
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[al,be]=gspec(A,E)
+ [al,be,Z]=gspec(A,E)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Description</title>
+ <para>
+ This function is now included in the <literal>spec</literal> function.
+ the calling syntax must be replaced by
+ </para>
+ <programlisting role=""><![CDATA[
+[al,be]=spec(A,E)
+[al,be,Z]=spec(A,E)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/eigen/hess.xml b/modules/linear_algebra/help/en_US/eigen/hess.xml
new file mode 100755
index 000000000..5f6add49f
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/eigen/hess.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="hess">
+ <refnamediv>
+ <refname>hess</refname>
+ <refpurpose>Hessenberg form</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>H = hess(A)
+ [U,H] = hess(A)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real or complex square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>H</term>
+ <listitem>
+ <para>real or complex square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>U</term>
+ <listitem>
+ <para>orthogonal or unitary square matrix</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>[U,H] = hess(A)</literal> produces a unitary matrix
+ <literal>U</literal> and a Hessenberg matrix <literal>H</literal> so that
+ <literal>A = U*H*U'</literal> and <literal>U'*U</literal> =
+ Identity. By itself, <literal>hess(A)</literal> returns <literal>H</literal>.
+ </para>
+ <para>
+ The Hessenberg form of a matrix is zero below the first
+ subdiagonal. If the matrix is symmetric or Hermitian, the form is
+ tridiagonal.
+ </para>
+ </refsection>
+ <refsection>
+ <title>References</title>
+ <para>
+ hess function is based on the Lapack routines
+ DGEHRD, DORGHR for real matrices and ZGEHRD, ZORGHR for the complex case.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);[U,H]=hess(A);
+and( abs(U*H*U'-A)<1.d-10 )
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="contr">contr</link>
+ </member>
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>
+ <literal>hess</literal> function is based on the Lapack routines
+ DGEHRD, DORGHR for real matrices and ZGEHRD, ZORGHR for the
+ complex case.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/eigen/pbig.xml b/modules/linear_algebra/help/en_US/eigen/pbig.xml
new file mode 100755
index 000000000..0d7f8a772
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/eigen/pbig.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="pbig">
+ <refnamediv>
+ <refname>pbig</refname>
+ <refpurpose>eigen-projection</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Q,M]=pbig(A,thres,flag)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>thres</term>
+ <listitem>
+ <para>real number</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ character string (<literal>'c'</literal> or <literal>'d'</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q,M</term>
+ <listitem>
+ <para>real matrices</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Projection on eigen-subspace associated with eigenvalues with real
+ part &gt;= <literal>thres</literal> (<literal>flag='c'</literal>) or
+ with magnitude &gt;= <literal>thres</literal>
+ (<literal>flag='d'</literal>).
+ </para>
+ <para>
+ The projection is defined by <literal>Q*M</literal>, <literal>Q</literal> is
+ full column rank, <literal>M</literal> is full row rank and
+ <literal>M*Q=eye</literal>.
+ </para>
+ <para>
+ If <literal>flag='c'</literal>, the eigenvalues of
+ <literal>M*A*Q</literal> = eigenvalues of <literal>A</literal> with real part
+ &gt;= <literal>thres</literal>.
+ </para>
+ <para>
+ If <literal>flag='d'</literal>, the eigenvalues of
+ <literal>M*A*Q</literal> = eigenvalues of <literal>A</literal> with magnitude
+ &gt;= <literal>thres</literal>.
+ </para>
+ <para>
+ If <literal>flag='c'</literal> and if <literal>[Q1,M1]</literal> =
+ full rank factorization (<literal>fullrf</literal>) of
+ <literal>eye()-Q*M</literal> then eigenvalues of <literal>M1*A*Q1</literal> =
+ eigenvalues of <literal>A</literal> with real part &lt;
+ <literal>thres</literal>.
+ </para>
+ <para>
+ If <literal>flag='d'</literal> and if <literal>[Q1,M1]</literal> =
+ full rank factorization (<literal>fullrf</literal>) of
+ <literal>eye()-Q*M</literal> then eigenvalues of <literal>M1*A*Q1</literal> =
+ eigenvalues of <literal>A</literal> with magnitude &lt;
+ <literal>thres</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=diag([1,2,3]);X=rand(A);A=inv(X)*A*X;
+[Q,M]=pbig(A,1.5,'d');
+spec(M*A*Q)
+[Q1,M1]=fullrf(eye()-Q*M);
+spec(M1*A*Q1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="psmall">psmall</link>
+ </member>
+ <member>
+ <link linkend="projspec">projspec</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>
+ <literal>pbig</literal> is based on the ordered schur form (scilab
+ function <literal>schur</literal>).
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/eigen/projspec.xml b/modules/linear_algebra/help/en_US/eigen/projspec.xml
new file mode 100755
index 000000000..d79f4573f
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/eigen/projspec.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="projspec">
+ <refnamediv>
+ <refname>projspec</refname>
+ <refpurpose>spectral operators</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[S,P,D,i]=projspec(A)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>S, P, D</term>
+ <listitem>
+ <para>square matrices</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i</term>
+ <listitem>
+ <para>
+ integer (index of the zero eigenvalue of <literal>A</literal>).
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Spectral characteristics of <literal>A</literal> at 0.
+ </para>
+ <para>
+ <literal>S</literal> = reduced resolvent at 0 (<literal>S</literal> = -Drazin_inverse(<literal>A</literal>)).
+ </para>
+ <para>
+ <literal>P</literal> = spectral projection at 0.
+ </para>
+ <para>
+ <literal>D</literal> = nilpotent operator at 0.
+ </para>
+ <para>
+ <literal>index</literal> = index of the 0 eigenvalue.
+ </para>
+ <para>
+ One has <literal>(s*eye()-A)^(-1) = D^(i-1)/s^i +... + D/s^2 + P/s - S - s*S^2 -...</literal>
+ around the singularity s=0.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+deff('j=jdrn(n)','j=zeros(n,n);for k=1:n-1;j(k,k+1)=1;end')
+A=sysdiag(jdrn(3),jdrn(2),rand(2,2));X=rand(7,7);
+A=X*A*inv(X);
+[S,P,D,index]=projspec(A);
+index //size of J-block
+trace(P) //sum of dimensions of J-blocks
+A*S-(eye()-P)
+norm(D^index,1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="coff">coff</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/eigen/psmall.xml b/modules/linear_algebra/help/en_US/eigen/psmall.xml
new file mode 100755
index 000000000..c3823df65
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/eigen/psmall.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="psmall">
+ <refnamediv>
+ <refname>psmall</refname>
+ <refpurpose>spectral projection</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Q,M]=psmall(A,thres,flag)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>thres</term>
+ <listitem>
+ <para>real number</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ character string (<literal>'c'</literal> or <literal>'d'</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q,M</term>
+ <listitem>
+ <para>real matrices</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Projection on eigen-subspace associated with eigenvalues with real
+ part &lt; <literal>thres</literal> (<literal>flag='c'</literal>) or
+ with modulus &lt; <literal>thres</literal>
+ (<literal>flag='d'</literal>).
+ </para>
+ <para>
+ The projection is defined by <literal>Q*M</literal>, <literal>Q</literal> is
+ full column rank, <literal>M</literal> is full row rank and
+ <literal>M*Q=eye</literal>.
+ </para>
+ <para>
+ If <literal>flag='c'</literal>, the eigenvalues of
+ <literal>M*A*Q</literal> = eigenvalues of <literal>A</literal> with real part
+ &lt; <literal>thres</literal>.
+ </para>
+ <para>
+ If <literal>flag='d'</literal>, the eigenvalues of
+ <literal>M*A*Q</literal> = eigenvalues of <literal>A</literal> with magnitude
+ &lt; <literal>thres</literal>.
+ </para>
+ <para>
+ If <literal>flag='c'</literal> and if <literal>[Q1,M1]</literal> =
+ full rank factorization (<literal>fullrf</literal>) of
+ <literal>eye()-Q*M</literal> then eigenvalues of <literal>M1*A*Q1</literal> =
+ eigenvalues of <literal>A</literal> with real part &gt;=
+ <literal>thres</literal>.
+ </para>
+ <para>
+ If <literal>flag='d'</literal> and if <literal>[Q1,M1]</literal> =
+ full rank factorization (<literal>fullrf</literal>) of
+ <literal>eye()-Q*M</literal> then eigenvalues of <literal>M1*A*Q1</literal> =
+ eigenvalues of <literal>A</literal> with magnitude &gt;=
+ <literal>thres</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=diag([1,2,3]);X=rand(A);A=inv(X)*A*X;
+[Q,M]=psmall(A,2.5,'d');
+spec(M*A*Q)
+[Q1,M1]=fullrf(eye()-Q*M);
+spec(M1*A*Q1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="pbig">pbig</link>
+ </member>
+ <member>
+ <link linkend="proj">proj</link>
+ </member>
+ <member>
+ <link linkend="projspec">projspec</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>
+ This function is based on the ordered schur form (scilab
+ function <literal>schur</literal>).
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/eigen/schur.xml b/modules/linear_algebra/help/en_US/eigen/schur.xml
new file mode 100755
index 000000000..fe17a979c
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/eigen/schur.xml
@@ -0,0 +1,386 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="schur">
+ <refnamediv>
+ <refname>schur</refname>
+ <refpurpose>[ordered] Schur decomposition of matrix and pencils</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[U,T] = schur(A)
+ [U,dim [,T] ]=schur(A,flag)
+ [U,dim [,T] ]=schur(A,extern1)
+
+ [As,Es [,Q,Z]]=schur(A,E)
+ [As,Es [,Z,dim]] = schur(A,E,flag)
+ [Z,dim] = schur(A,E,flag)
+ [As,Es [,Z,dim]]= schur(A,E,extern2)
+ [Z,dim]= schur(A,E,extern2)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real or complex square matrix.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E</term>
+ <listitem>
+ <para>
+ real or complex square matrix with same dimensions as <literal> A</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ character string (<literal>'c'</literal> or <literal>'d'</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>extern1</term>
+ <listitem>
+ <para>an ``external'', see below</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>extern2</term>
+ <listitem>
+ <para>an ``external'', see below</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>U</term>
+ <listitem>
+ <para>orthogonal or unitary square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q</term>
+ <listitem>
+ <para>orthogonal or unitary square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Z</term>
+ <listitem>
+ <para>orthogonal or unitary square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>T</term>
+ <listitem>
+ <para>upper triangular or quasi-triangular square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>As</term>
+ <listitem>
+ <para>upper triangular or quasi-triangular square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Es</term>
+ <listitem>
+ <para>upper triangular square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dim</term>
+ <listitem>
+ <para>integer</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Schur forms, ordered Schur forms of matrices and pencils
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>MATRIX SCHUR FORM</term>
+ <listitem>
+ <variablelist>
+ <varlistentry>
+ <term>Usual schur form:</term>
+ <listitem>
+ <para>
+ <literal>[U,T] = schur(A)</literal> produces a Schur matrix
+ <literal>T</literal> and a unitary matrix <literal>U</literal> so that
+ <literal>A = U*T*U'</literal> and <literal>U'*U = eye(U)</literal>. By itself, schur(<literal>A</literal>) returns
+ <literal>T</literal>. If <literal>A</literal> is complex, the Complex
+ Schur Form is returned in matrix
+ <literal>T</literal>. The Complex Schur Form is upper triangular with
+ the eigenvalues of <literal>A</literal> on the diagonal. If
+ <literal>A</literal> is real, the Real Schur Form is returned. The Real
+ Schur Form has the real eigenvalues on the diagonal and the
+ complex eigenvalues in 2-by-2 blocks on the diagonal.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Ordered Schur forms</term>
+ <listitem>
+ <para>
+ <literal>[U,dim]=schur(A,'c')</literal> returns an unitary
+ matrix <literal>U</literal> which transforms <literal>A</literal> into schur
+ form. In addition, the dim first columns of <literal>U</literal> make
+ a basis of the eigenspace of <literal>A</literal> associated with
+ eigenvalues with negative real parts (stable "continuous
+ time" eigenspace).
+ </para>
+ <para>
+ <literal>[U,dim]=schur(A,'d')</literal> returns an unitary
+ matrix <literal>U</literal> which transforms <literal>A</literal> into schur
+ form. In addition, the <literal>dim</literal> first columns of
+ <literal>U</literal> span a basis of the eigenspace of <literal>A</literal>
+ associated with eigenvalues with magnitude lower than 1 (stable
+ "discrete time" eigenspace).
+ </para>
+ <para>
+ <literal>[U,dim]=schur(A,extern1)</literal> returns an unitary matrix
+ <literal>U</literal> which transforms <literal>A</literal> into schur form.
+ In addition, the <literal>dim</literal> first columns of
+ <literal>U</literal> span a basis of the eigenspace of <literal>A</literal>
+ associated with the eigenvalues which are selected by the
+ external function <literal>extern1</literal> (see external for
+ details). This external can be described by a Scilab function
+ or by C or Fortran procedure:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>a Scilab function</term>
+ <listitem>
+ <para>
+ If <literal>extern1</literal> is described by a Scilab function, it
+ should have the following calling sequence:
+ <literal>s=extern1(Ev)</literal>, where <literal>Ev</literal> is an eigenvalue and
+ <literal>s</literal> a boolean.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a C or Fortran procedure</term>
+ <listitem>
+ <para>
+ If <literal>extern1</literal> is described by a C or Fortran function it
+ should have the following calling sequence:
+ <literal>int extern1(double *EvR, double *EvI)</literal>
+ where <literal>EvR</literal> and <literal>EvI</literal> are eigenvalue real and complex parts.
+ a true or non zero returned value stands for selected eigenvalue.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PENCIL SCHUR FORMS</term>
+ <listitem>
+ <variablelist>
+ <varlistentry>
+ <term>Usual Pencil Schur form</term>
+ <listitem>
+ <para>
+ <literal>[As,Es] = schur(A,E)</literal> produces a quasi triangular
+ <literal>As</literal> matrix and a triangular <literal>Es</literal> matrix
+ which are the generalized Schur form of the pair <literal>A, E</literal>.
+ </para>
+ <para>
+ <literal>[As,Es,Q,Z] = schur(A,E)</literal>
+ returns in addition two unitary matrices
+ <literal>Q</literal> and <literal>Z</literal> such that
+ <literal>As=Q'*A*Z</literal> and <literal>Es=Q'*E*Z</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Ordered Schur forms:</term>
+ <listitem>
+ <para>
+ <literal>[As,Es,Z,dim] = schur(A,E,'c')</literal>
+ returns the real generalized
+ Schur form of the pencil <literal>s*E-A</literal>. In addition, the dim first columns
+ of <literal>Z</literal> span a basis of the right eigenspace associated with
+ eigenvalues with negative real parts (stable "continuous
+ time" generalized eigenspace).
+ </para>
+ <para>
+ <literal>[As,Es,Z,dim] = schur(A,E,'d')</literal>
+ </para>
+ <para>
+ returns the real generalized
+ Schur form of the pencil <literal>s*E-A</literal>. In addition, the dim first columns
+ of <literal>Z</literal> make a basis of the right eigenspace associated with
+ eigenvalues with magnitude lower than 1 (stable "discrete
+ time" generalized eigenspace).
+ </para>
+ <para>
+ <literal>[As,Es,Z,dim] = schur(A,E,extern2)</literal>
+ </para>
+ <para>
+ returns the real generalized Schur form of the pencil <literal>s*E-A</literal>.
+ In addition, the dim first columns
+ of <literal>Z</literal> make a basis of the right eigenspace associated with
+ eigenvalues of the pencil which are selected according to a
+ rule which is given by the function <literal>extern2</literal>. (see external
+ for details). This external can be described by a Scilab
+ function or by C or Fortran procedure:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>A Scilab function</term>
+ <listitem>
+ <para>
+ If <literal>extern2</literal> is described by a Scilab function, it should
+ have the following calling sequence:
+ <literal>s=extern2(Alpha,Beta)</literal>, where <literal>Alpha</literal> and
+ <literal>Beta</literal> defines a generalized eigenvalue and
+ <literal>s</literal> a boolean.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>C or Fortran procedure</term>
+ <listitem>
+ <para>
+ if external <literal>extern2</literal> is described by a C or a
+ Fortran procedure, it should have the following calling
+ sequence:
+ </para>
+ <para>
+ <literal>int extern2(double *AlphaR, double *AlphaI, double *Beta)</literal>
+ </para>
+ <para>
+ if <literal>A</literal> and <literal>E</literal> are real and
+ </para>
+ <para>
+ <literal>int extern2(double *AlphaR, double *AlphaI, double *BetaR, double *BetaI)</literal>
+ </para>
+ <para>
+ if <literal>A</literal> or <literal>E</literal> are complex.
+ <literal>Alpha</literal>, and <literal>Beta</literal> defines the generalized eigenvalue.
+ a true or non zero returned value stands for selected generalized eigenvalue.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>References</title>
+ <para>
+ Matrix schur form computations are based on the Lapack routines DGEES and ZGEES.
+ </para>
+ <para>
+ Pencil schur form computations are based on the Lapack routines DGGES and ZGGES.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+//SCHUR FORM OF A MATRIX
+//----------------------
+A=diag([-0.9,-2,2,0.9]);X=rand(A);A=inv(X)*A*X;
+[U,T]=schur(A);T
+
+[U,dim,T]=schur(A,'c');
+T(1:dim,1:dim) //stable cont. eigenvalues
+
+function t=mytest(Ev),t=abs(Ev)<0.95,endfunction
+[U,dim,T]=schur(A,mytest);
+T(1:dim,1:dim)
+
+// The same function in C (a Compiler is required)
+cd TMPDIR;
+C=['int mytest(double *EvR, double *EvI) {' //the C code
+ 'if (*EvR * *EvR + *EvI * *EvI < 0.9025) return 1;'
+ 'else return 0; }';]
+mputl(C,TMPDIR+'/mytest.c')
+
+
+//build and link
+lp=ilib_for_link('mytest','mytest.c',[],'c');
+link(lp,'mytest','c');
+
+//run it
+[U,dim,T]=schur(A,'mytest');
+//SCHUR FORM OF A PENCIL
+//----------------------
+F=[-1,%s, 0, 1;
+ 0,-1,5-%s, 0;
+ 0, 0,2+%s, 0;
+ 1, 0, 0, -2+%s];
+A=coeff(F,0);E=coeff(F,1);
+[As,Es,Q,Z]=schur(A,E);
+Q'*F*Z //It is As+%s*Es
+
+
+[As,Es,Z,dim] = schur(A,E,'c')
+function t=mytest(Alpha,Beta),t=real(Alpha)<0,endfunction
+[As,Es,Z,dim] = schur(A,E,mytest)
+
+//the same function in Fortran (a Compiler is required)
+ftn=['integer function mytestf(ar,ai,b)' //the fortran code
+ 'double precision ar,ai,b'
+ 'mytestf=0'
+ 'if(ar.lt.0.0d0) mytestf=1'
+ 'end']
+mputl(' '+ftn,TMPDIR+'/mytestf.f')
+
+//build and link
+lp=ilib_for_link('mytestf','mytestf.f',[],'F');
+link(lp,'mytestf','f');
+
+//run it
+
+[As,Es,Z,dim] = schur(A,E,'mytestf')
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ <member>
+ <link linkend="bdiag">bdiag</link>
+ </member>
+ <member>
+ <link linkend="ricc">ricc</link>
+ </member>
+ <member>
+ <link linkend="pbig">pbig</link>
+ </member>
+ <member>
+ <link linkend="psmall">psmall</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/eigen/spec.xml b/modules/linear_algebra/help/en_US/eigen/spec.xml
new file mode 100755
index 000000000..4565a68fd
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/eigen/spec.xml
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="spec" xml:lang="en">
+ <refnamediv>
+ <refname>spec</refname>
+ <refpurpose>eigenvalues of matrices and pencils</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>evals=spec(A)
+ [R,diagevals]=spec(A)
+
+ evals=spec(A,B)
+ [alpha,beta]=spec(A,B)
+ [alpha,beta,Z]=spec(A,B)
+ [alpha,beta,Q,Z]=spec(A,B)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real or complex square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>B</term>
+ <listitem>
+ <para>real or complex square matrix with same dimensions as
+ <literal> A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>evals</term>
+ <listitem>
+ <para>real or complex vector, the eigenvalues</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>diagevals</term>
+ <listitem>
+ <para>real or complex diagonal matrix (eigenvalues along the
+ diagonal)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>alpha</term>
+ <listitem>
+ <para>real or complex vector, al./be gives the eigenvalues</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>beta</term>
+ <listitem>
+ <para>real vector, al./be gives the eigenvalues</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>R</term>
+ <listitem>
+ <para>real or complex invertible square matrix, matrix right
+ eigenvectors.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>L</term>
+ <listitem>
+ <para>real or complex invertible square matrix, pencil left
+ eigenvectors.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>R</term>
+ <listitem>
+ <para>real or complex invertible square matrix, pencil right
+ eigenvectors.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <variablelist>
+ <varlistentry>
+ <term>evals=spec(A)</term>
+ <listitem>
+ <para>
+ returns in vector <literal>evals</literal> the
+ eigenvalues.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[R,diagevals] =spec(A)</term>
+ <listitem>
+ <para>
+ returns in the diagonal matrix <literal>evals</literal> the
+ eigenvalues and in <literal>R</literal> the right
+ eigenvectors.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>evals=spec(A,B)</term>
+ <listitem>
+ <para>returns the spectrum of the matrix pencil A - s B, i.e. the
+ roots of the polynomial matrix s B - A.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[alpha,beta] = spec(A,B)</term>
+ <listitem>
+ <para>
+ returns the spectrum of the matrix pencil <literal>A- s
+ B
+ </literal>
+ ,i.e. the roots of the polynomial matrix <literal>A - s
+ B
+ </literal>
+ .Generalized eigenvalues alpha and beta are so that the
+ matrix <literal>A - alpha./beta B</literal> is a singular matrix.
+ The eigenvalues are given by <literal>al./be</literal> and if
+ <literal>beta(i) = 0</literal> the ith eigenvalue is at infinity.
+ (For <literal>B = eye(A), alpha./beta</literal> is
+ <literal>spec(A)</literal>). It is usually represented as the pair
+ (alpha,beta), as there is a reasonable interpretation for beta=0,
+ and even for both being zero.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[alpha,beta,R] = spec(A,B)</term>
+ <listitem>
+ <para>
+ returns in addition the matrix <literal>R</literal> of
+ generalized right eigenvectors of the pencil.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[al,be,L,R] = spec(A,B)</term>
+ <listitem>
+ <para>
+ returns in addition the matrix <literal>L</literal> and
+ <literal>R</literal> of generalized left and right eigenvectors of
+ the pencil.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[al,be,Z] = spec(A,E)</term>
+ <listitem>
+ <para>
+ returns the matrix <literal>Z</literal> of right
+ generalized eigen vectors.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[al,be,Q,Z] = spec(A,E)</term>
+ <listitem>
+ <para>
+ returns the matrices <literal>Q</literal>
+ and <literal>Z</literal> of right and left generalized
+ eigen vectors.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>For big full / sparse matrix, you can use the Arnoldi module.</para>
+ </refsection>
+ <refsection>
+ <title>References</title>
+ <para>Matrix eigenvalues computations are based on the Lapack
+ routines
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>DGEEV and ZGEEV when the matrix are not symmetric,</para>
+ </listitem>
+ <listitem>
+ <para>DSYEV and ZHEEV when the matrix are symmetric.</para>
+ </listitem>
+ </itemizedlist>
+ <para>A complex symmetric matrix has conjugate offdiagonal terms and real
+ diagonal terms.
+ </para>
+ <para>Pencil eigenvalues computations are based on the Lapack routines
+ DGGEV and ZGGEV.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Real and complex matrices</title>
+ <para>It must be noticed that the type of the output variables, such as
+ evals or R for example, is not necessarily the same as the type of the
+ input matrices A and B. In the following paragraph, we analyse the type of
+ the output variables in the case where one computes the eigenvalues and
+ eigenvectors of one single matrix A.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>Real A matrix</para>
+ <itemizedlist>
+ <listitem>
+ <para>Symetric</para>
+ <para>The eigenvalues and the eigenvectors are real.</para>
+ </listitem>
+ <listitem>
+ <para>Not symmetric</para>
+ <para>The eigenvalues and eigenvectors are complex.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>Complex A matrix</para>
+ <itemizedlist>
+ <listitem>
+ <para>Symetric</para>
+ <para>The eigenvalues are real but the eigenvectors are
+ complex.
+ </para>
+ </listitem>
+ <listitem>
+ <para>Not symmetric</para>
+ <para>The eigenvalues and the eigenvectors are complex.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+// MATRIX EIGENVALUES
+A=diag([1,2,3]);
+X=rand(3,3);
+A=inv(X)*A*X;
+spec(A)
+
+x=poly(0,'x');
+pol=det(x*eye()-A)
+roots(pol)
+
+[S,X]=bdiag(A);
+clean(inv(X)*A*X)
+
+// PENCIL EIGENVALUES
+A=rand(3,3);
+[al,be,R] = spec(A,eye(A));
+al./be
+clean(inv(R)*A*R) //displaying the eigenvalues (generic matrix)
+A=A+%i*rand(A);
+E=rand(A);
+roots(det(A-%s*E)) //complex case
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="poly">poly</link>
+ </member>
+ <member>
+ <link linkend="det">det</link>
+ </member>
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ <member>
+ <link linkend="bdiag">bdiag</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="dsaupd">dsaupd</link>
+ </member>
+ <member>
+ <link linkend="dnaupd">dnaupd</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/eigen/sva.xml b/modules/linear_algebra/help/en_US/eigen/sva.xml
new file mode 100755
index 000000000..4fd62c45c
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/eigen/sva.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="sva">
+ <refnamediv>
+ <refname>sva</refname>
+ <refpurpose>singular value approximation</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[U,s,V]=sva(A,k)
+ [U,s,V]=sva(A,tol)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real or complex matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>k</term>
+ <listitem>
+ <para>integer</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>nonnegative real number</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Singular value approximation.
+ </para>
+ <para>
+ <literal>[U,S,V]=sva(A,k)</literal> with <literal>k</literal> an integer
+ &gt;=1, returns <literal>U,S</literal> and <literal>V</literal> such that
+ <literal>B=U*S*V'</literal> is the best L2 approximation of
+ <literal>A</literal> with rank(<literal>B</literal>)=<literal>k</literal>.
+ </para>
+ <para>
+ <literal>[U,S,V]=sva(A,tol)</literal> with <literal>tol</literal> a real
+ number, returns <literal>U,S</literal> and <literal>V</literal> such that
+ <literal>B=U*S*V'</literal> such that L2-norm of <literal>A-B</literal>
+ is at most <literal>tol</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,4)*rand(4,5);
+[U,s,V]=sva(A,2);
+B=U*s*V';
+svd(A)
+svd(B)
+clean(svd(A-B))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/eigen/svd.xml b/modules/linear_algebra/help/en_US/eigen/svd.xml
new file mode 100755
index 000000000..24c626e38
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/eigen/svd.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="svd">
+ <refnamediv>
+ <refname>svd</refname>
+ <refpurpose>singular value decomposition</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>s=svd(X)
+ [U,S,V]=svd(X)
+ [U,S,V]=svd(X,0) (obsolete)
+ [U,S,V]=svd(X,"e")
+ [U,S,V,rk]=svd(X [,tol])
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>a real or complex matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>s</term>
+ <listitem>
+ <para>real vector (singular values)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>S</term>
+ <listitem>
+ <para>real diagonal matrix (singular values)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>U,V</term>
+ <listitem>
+ <para>orthogonal or unitary square matrices (singular vectors).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>real number</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>[U,S,V] = svd(X)</literal> produces a diagonal matrix
+ <literal>S</literal> , of the same dimension as <literal>X</literal> and with
+ nonnegative diagonal elements in decreasing order, and unitary
+ matrices <literal>U</literal> and <literal>V</literal> so that <literal>X = U*S*V'</literal>.
+ </para>
+ <para>
+ <literal>[U,S,V] = svd(X,0)</literal> produces the "economy
+ size" decomposition. If <literal>X</literal> is m-by-n with m &gt;
+ n, then only the first n columns of <literal>U</literal> are computed
+ and <literal>S</literal> is n-by-n.
+ </para>
+ <para>
+ <literal>s= svd(X)</literal> by itself, returns a vector <literal>s</literal>
+ containing the singular values.
+ </para>
+ <para>
+ <literal>[U,S,V,rk]=svd(X,tol)</literal> gives in addition <literal>rk</literal>, the numerical rank of <literal>X</literal> i.e. the number of
+ singular values larger than <literal>tol</literal>.
+ </para>
+ <para>
+ The default value of <literal>tol</literal> is the same as in <literal>rank</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+X=rand(4,2)*rand(2,4)
+svd(X)
+sqrt(spec(X*X'))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rank">rank</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="sva">sva</link>
+ </member>
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>
+ svd decompositions are based on the Lapack routines DGESVD for
+ real matrices and ZGESVD for the complex case.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/factorization/CHAPTER b/modules/linear_algebra/help/en_US/factorization/CHAPTER
new file mode 100755
index 000000000..e6daeb8eb
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/factorization/CHAPTER
@@ -0,0 +1,2 @@
+title = Factorization
+
diff --git a/modules/linear_algebra/help/en_US/factorization/givens.xml b/modules/linear_algebra/help/en_US/factorization/givens.xml
new file mode 100755
index 000000000..355899ae0
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/factorization/givens.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="givens">
+ <refnamediv>
+ <refname>givens</refname>
+ <refpurpose>Givens transformation</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>U=givens(xy)
+ U=givens(x,y)
+ [U,c]=givens(xy)
+ [U,c]=givens(x,y)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>x,y</term>
+ <listitem>
+ <para>two real or complex numbers</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>xy</term>
+ <listitem>
+ <para> real or complex size 2 column vector</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>U</term>
+ <listitem>
+ <para>2x2 unitary matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>c</term>
+ <listitem>
+ <para> real or complex size 2 column vector</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>U= givens(x, y)</literal> or <literal>U = givens(xy)</literal> with <literal>xy = [x;y]</literal>
+ returns a <literal>2</literal>x<literal>2</literal> unitary matrix <literal>U</literal> such that:
+ </para>
+ <para>
+ <literal>U*xy=[r;0]=c</literal>.
+ </para>
+ <para>
+ <note>
+ Note that <literal>givens(x,y)</literal> and <literal>givens([x;y])</literal> are equivalent.
+ </note>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=[3,4;5,6];
+U=givens(A(:,1));
+U*A
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/factorization/householder.xml b/modules/linear_algebra/help/en_US/factorization/householder.xml
new file mode 100755
index 000000000..c664395a9
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/factorization/householder.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="householder">
+ <refnamediv>
+ <refname>householder</refname>
+ <refpurpose>Householder orthogonal reflexion matrix</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>u=householder(v [,w])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>v</term>
+ <listitem>
+ <para>real or complex column vector</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>w</term>
+ <listitem>
+ <para>
+ real or complex column vector with same size as <literal>v</literal>. Default value is <literal>eye(v)</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>u</term>
+ <listitem>
+ <para>real or complex column vector</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ given 2 column vectors <literal>v</literal>, <literal> w</literal> of same size, <literal>householder(v,w)</literal> returns a unitary
+ column vector <literal>u</literal>, such that <literal> (eye()-2*u*u')*v</literal> is proportional to <literal>w</literal>.
+ <literal>(eye()-2*u*u')</literal> is the orthogonal Householder reflexion matrix .
+ </para>
+ <para>
+ <literal>w</literal> default value is <literal> eye(v)</literal>. In this case vector <literal> (eye()-2*u*u')*v</literal> is the
+ vector <literal> eye(v)*norm(v)</literal>.
+ </para>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="givens">givens</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/factorization/sqroot.xml b/modules/linear_algebra/help/en_US/factorization/sqroot.xml
new file mode 100755
index 000000000..e248970f3
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/factorization/sqroot.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="sqroot">
+ <refnamediv>
+ <refname>sqroot</refname>
+ <refpurpose>W*W' hermitian factorization</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>sqroot(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>symmetric non negative definite real or complex matrix</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ returns W such that <literal>X=W*W'</literal> (uses SVD).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+X=rand(5,2)*rand(2,5);X=X*X';
+W=sqroot(X)
+norm(W*W'-X,1)
+
+X=rand(5,2)+%i*rand(5,2);X=X*X';
+W=sqroot(X)
+norm(W*W'-X,1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="chol">chol</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/kernel/CHAPTER b/modules/linear_algebra/help/en_US/kernel/CHAPTER
new file mode 100755
index 000000000..be67920e1
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/kernel/CHAPTER
@@ -0,0 +1,2 @@
+title = Kernel
+
diff --git a/modules/linear_algebra/help/en_US/kernel/colcomp.xml b/modules/linear_algebra/help/en_US/kernel/colcomp.xml
new file mode 100755
index 000000000..7d658352e
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/kernel/colcomp.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="colcomp">
+ <refnamediv>
+ <refname>colcomp</refname>
+ <refpurpose>column compression, kernel, nullspace</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[W,rk]=colcomp(A [,flag] [,tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real or complex matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>character string</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>real number</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>W</term>
+ <listitem>
+ <para>square non-singular matrix (change of basis)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk</term>
+ <listitem>
+ <para>
+ integer (rank of <literal>A</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Column compression of <literal>A</literal>: <literal>Ac = A*W</literal> is
+ column compressed i.e
+ </para>
+ <para>
+ <literal>Ac=[0,Af]</literal> with <literal>Af</literal> full column rank,
+ rank(<literal>Af</literal>) = rank(<literal>A</literal>) = <literal>rk</literal>.
+ </para>
+ <para>
+ <literal>flag</literal> and <literal>tol</literal> are optional parameters: <literal>flag = 'qr'</literal>
+ or <literal>'svd'</literal> (default is <literal>'svd'</literal>).
+ </para>
+ <para>
+ <literal>tol</literal> = tolerance parameter (of order <literal>%eps</literal> as default value).
+ </para>
+ <para>
+ The <literal>ma-rk</literal> first columns of <literal>W</literal> span the kernel of <literal>A</literal>
+ when <literal>size(A)=(na,ma)</literal>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,5);
+[X,r]=colcomp(A);
+norm(A*X(:,1:$-r),1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ <member>
+ <link linkend="fullrfk">fullrfk</link>
+ </member>
+ <member>
+ <link linkend="kernel">kernel</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/kernel/fullrf.xml b/modules/linear_algebra/help/en_US/kernel/fullrf.xml
new file mode 100755
index 000000000..0343f81dc
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/kernel/fullrf.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="fullrf">
+ <refnamediv>
+ <refname>fullrf</refname>
+ <refpurpose>full rank factorization</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Q,M,rk]=fullrf(A,[tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real or complex matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>real number (threshold for rank determination)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q,M</term>
+ <listitem>
+ <para>real or complex matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk</term>
+ <listitem>
+ <para>
+ integer (rank of <literal>A</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Full rank factorization : <literal>fullrf</literal> returns <literal>Q</literal> and <literal>M</literal> such
+ that <literal>A = Q*M</literal>
+ with range(<literal>Q</literal>)=range(<literal>A</literal>) and ker(<literal>M</literal>)=ker(<literal>A</literal>),
+ <literal>Q</literal> full column rank , <literal>M</literal> full row rank,
+ <literal>rk = rank(A) = #columns(Q) = #rows(M)</literal>.
+ </para>
+ <para>
+ <literal>tol</literal> is an optional real parameter (default value is <literal>sqrt(%eps)</literal>).
+ The rank <literal>rk</literal> of <literal>A</literal> is defined as the number of singular values
+ larger than <literal>norm(A)*tol</literal>.
+ </para>
+ <para>
+ If A is symmetric, <literal>fullrf</literal> returns <literal>M=Q'</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,5);
+[Q,M]=fullrf(A);
+norm(Q*M-A,1)
+[X,d]=rowcomp(A);Y=X';
+svd([A,Y(:,1:d),Q]) //span(Q) = span(A) = span(Y(:,1:2))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="fullrfk">fullrfk</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/kernel/fullrfk.xml b/modules/linear_algebra/help/en_US/kernel/fullrfk.xml
new file mode 100755
index 000000000..f060add2e
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/kernel/fullrfk.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="fullrfk">
+ <refnamediv>
+ <refname>fullrfk</refname>
+ <refpurpose>full rank factorization of A^k</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Bk,Ck]=fullrfk(A,k)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real or complex matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>k</term>
+ <listitem>
+ <para>integer</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Bk,Ck</term>
+ <listitem>
+ <para>real or complex matrices</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ This function computes the full rank factorization of <literal>A^k</literal> i.e.
+ <literal>Bk*Ck=A^k</literal> where <literal>Bk</literal> is full column rank and <literal>Ck</literal> full row rank.
+ One has range(<literal>Bk</literal>)=range(<literal>A^k</literal>) and ker(<literal>Ck</literal>)=ker(<literal>A^k</literal>).
+ </para>
+ <para>
+ For <literal>k=1</literal>, <literal>fullrfk</literal> is equivalent to <literal>fullrf</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,5);[Bk,Ck]=fullrfk(A,3);
+norm(Bk*Ck-A^3,1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ <member>
+ <link linkend="range">range</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/kernel/im_inv.xml b/modules/linear_algebra/help/en_US/kernel/im_inv.xml
new file mode 100755
index 000000000..2e288855e
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/kernel/im_inv.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="im_inv">
+ <refnamediv>
+ <refname>im_inv</refname>
+ <refpurpose>inverse image</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[X,dim]=im_inv(A,B [,tol])
+ [X,dim,Y]=im_inv(A,B, [,tol])
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A,B</term>
+ <listitem>
+ <para>two real or complex matrices with equal number of columns</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>
+ orthogonal or unitary square matrix of order equal to the number of columns of <literal>A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dim</term>
+ <listitem>
+ <para>integer (dimension of subspace)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Y</term>
+ <listitem>
+ <para>
+ orthogonal matrix of order equal to the number of rows of <literal>A</literal> and <literal>B</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>[X,dim]=im_inv(A,B)</literal> computes <literal>(A^-1)(B)</literal>
+ i.e vectors whose image through <literal>A</literal> are in
+ range(<literal>B</literal>)
+ </para>
+ <para>
+ The <literal>dim</literal> first columns of <literal>X</literal> span
+ <literal>(A^-1)(B)</literal>
+ </para>
+ <para>
+ <literal>tol</literal> is a threshold used to test if subspace inclusion;
+ default value is <literal>tol = 100*%eps</literal>.
+ If <literal>Y</literal> is returned, then <literal>[Y*A*X,Y*B]</literal> is partitioned as follows:
+ <literal>[A11,A12;0,A22]</literal>,<literal>[B1;0]</literal>
+ </para>
+ <para>
+ where <literal>B1</literal> has full row rank (equals
+ <literal>rank(B)</literal>) and <literal>A22</literal> has full column rank
+ and has <literal>dim</literal> columns.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=[rand(2,5);[zeros(3,4),rand(3,1)]];B=[[1,1;1,1];zeros(3,2)];
+W=rand(5,5);A=W*A;B=W*B;
+[X,dim]=im_inv(A,B)
+svd([A*X(:,1:dim),B]) //vectors A*X(:,1:dim) belong to range(B)
+[X,dim,Y]=im_inv(A,B);[Y*A*X,Y*B]
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="spaninter">spaninter</link>
+ </member>
+ <member>
+ <link linkend="spanplus">spanplus</link>
+ </member>
+ <member>
+ <link linkend="linsolve">linsolve</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/kernel/kernel.xml b/modules/linear_algebra/help/en_US/kernel/kernel.xml
new file mode 100755
index 000000000..f891512d1
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/kernel/kernel.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="kernel">
+ <refnamediv>
+ <refname>kernel</refname>
+ <refpurpose>kernel, null space</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>W=kernel(A [,tol,[,flag])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>full real or complex matrix or real sparse matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ character string <literal>'svd'</literal> (default) or <literal>'qr'</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>real number</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>W</term>
+ <listitem>
+ <para>full column rank matrix</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>W=kernel(A)</literal> returns the kernel (null space) of <literal>A</literal>, and <literal>size(W,2)</literal> is the nullity of A.
+ If A has full column rank then an empty matrix [] is returned.
+ </para>
+ <para>
+ <literal>flag</literal> and <literal>tol</literal> are optional parameters: <literal>flag = 'qr'</literal>
+ or <literal>'svd'</literal> (default is <literal>'svd'</literal>).
+ </para>
+ <para>
+ <literal>tol</literal> = tolerance parameter (of order <literal>%eps</literal> as default value).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(3,1)*rand(1,3);
+A*kernel(A)
+A=sparse(A);
+clean(A*kernel(A))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ <member>
+ <link linkend="fullrfk">fullrfk</link>
+ </member>
+ <member>
+ <link linkend="linsolve">linsolve</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/kernel/range.xml b/modules/linear_algebra/help/en_US/kernel/range.xml
new file mode 100755
index 000000000..b8def609f
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/kernel/range.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="range">
+ <refnamediv>
+ <refname>range</refname>
+ <refpurpose>range (span) of A^k</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[X,dim]=range(A,k)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>k</term>
+ <listitem>
+ <para>integer</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>orthonormal real matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dim</term>
+ <listitem>
+ <para>integer (dimension of subspace)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Computation of Range <literal>A^k</literal> ; the first dim rows of <literal>X</literal> span the
+ range of <literal>A^k</literal>. The last rows of <literal>X</literal> span the
+ orthogonal complement of the range. <literal>X*X'</literal> is the Identity matrix
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(4,2)*rand(2,4); // 4 column vectors, 2 independent.
+[X,dim]=range(A,1);dim // compute the range
+
+y1=A*rand(4,1); //a vector which is in the range of A
+y2=rand(4,1); //a vector which is not in the range of A
+norm(X(dim+1:$,:)*y1) //the last entries are zeros, y1 is in the range of A
+norm(X(dim+1:$,:)*y2) //the last entries are not zeros
+
+I=X(1:dim,:)' //I is a basis of the range
+coeffs=X(1:dim,:)*y1 // components of y1 relative to the I basis
+
+norm(I*coeffs-y1) //check
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fullrfk">fullrfk</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>
+ The <literal>range</literal> function is based on the <link linkend="rowcomp">rowcomp</link> function
+ which uses the <link linkend="svd">svd</link> decomposition.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/kernel/rowcomp.xml b/modules/linear_algebra/help/en_US/kernel/rowcomp.xml
new file mode 100755
index 000000000..f012c21f6
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/kernel/rowcomp.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="rowcomp">
+ <refnamediv>
+ <refname>rowcomp</refname>
+ <refpurpose>row compression, range</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[W,rk]=rowcomp(A [,flag [,tol]])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real or complex matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>optional character string, with possible values
+ <literal>'svd'</literal> or <literal>'qr'</literal>. The default value is <literal>'svd'</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>optional real non negative number. The default value is
+ <literal>sqrt(%eps)*norm(A,1)</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>W</term>
+ <listitem>
+ <para>square non-singular matrix (change of basis)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk</term>
+ <listitem>
+ <para>
+ integer (rank of <literal>A</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Row compression of <literal>A</literal>. <literal>Ac = W*A</literal> is a row compressed matrix: i.e.
+ <literal>Ac=[Af;0]</literal> with <literal>Af</literal> full row rank.
+ </para>
+ <para>
+ <literal>flag</literal> and <literal>tol</literal> are optional parameters: <literal>flag='qr'</literal>
+ or <literal>'svd'</literal> (default <literal>'svd'</literal>).
+ </para>
+ <para>
+ <literal>tol</literal> is a tolerance parameter.
+ </para>
+ <para>
+ The <literal>rk</literal> first columns of <literal>W'</literal> span the range of
+ <literal>A</literal>.
+ </para>
+ <para>
+ The <literal>rk</literal> first (top) rows of <literal>W</literal> span the row
+ range of <literal>A</literal>.
+ </para>
+ <para>
+ A non zero vector <literal>x</literal> belongs to range(<literal>A</literal>) iff
+ <literal>W*x</literal> is row compressed in accordance with <literal>Ac</literal>
+ i.e the norm of its last components is small w.r.t its first
+ components.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,4); // 4 col. vectors, 2 independent.
+[X,dim]=rowcomp(A);Xp=X';
+svd([Xp(:,1:dim),A]) //span(A) = span(Xp(:,1:dim)
+x=A*rand(4,1); //x belongs to span(A)
+y=X*x
+norm(y(dim+1:$))/norm(y(1:dim)) // small
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ <member>
+ <link linkend="fullrfk">fullrfk</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>
+ The <literal>rowcomp</literal> function is based on the <link linkend="svd">svd</link> or
+ <link linkend="qr">qr</link> decompositions.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/linear/CHAPTER b/modules/linear_algebra/help/en_US/linear/CHAPTER
new file mode 100755
index 000000000..7d9d9cf49
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/linear/CHAPTER
@@ -0,0 +1,2 @@
+title = Linear Equations
+
diff --git a/modules/linear_algebra/help/en_US/linear/aff2ab.xml b/modules/linear_algebra/help/en_US/linear/aff2ab.xml
new file mode 100755
index 000000000..756469256
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/linear/aff2ab.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="aff2ab">
+ <refnamediv>
+ <refname>aff2ab</refname>
+ <refpurpose>linear (affine) function to A,b conversion</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[A,b]=aff2ab(afunction,dimX,D [,flag])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>afunction</term>
+ <listitem>
+ <para>
+ a scilab function <literal> Y =fct(X,D) </literal> where <literal>X, D, Y</literal> are <literal>list</literal> of matrices
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dimX</term>
+ <listitem>
+ <para>
+ a p x 2 integer matrix (<literal>p</literal> is the number of matrices in <literal>X</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>D</term>
+ <listitem>
+ <para>
+ a <literal>list</literal> of real matrices (or any other valid Scilab object).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ optional parameter (<literal>flag='f'</literal> or <literal>flag='sp'</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>a real matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>b</term>
+ <listitem>
+ <para>
+ a real vector having same row dimension as <literal>A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>aff2ab</literal> returns the matrix representation of an affine
+ function (in the canonical basis).
+ </para>
+ <para>
+ <literal>afunction</literal> is a function with imposed syntax:
+ <literal> Y=afunction(X,D) </literal> where <literal> X=list(X1,X2,...,Xp) </literal> is
+ a list of p real matrices, and <literal> Y=list(Y1,...,Yq) </literal> is
+ a list of q real real matrices which depend linearly of
+ the <literal> Xi</literal>'s. The (optional) input <literal> D</literal> contains
+ parameters needed to compute Y as a function of X.
+ (It is generally a list of matrices).
+ </para>
+ <para>
+ <literal> dimX</literal> is a p x 2 matrix: <literal>dimX(i)=[nri,nci]</literal>
+ is the actual number of rows and columns of matrix <literal>Xi</literal>.
+ These dimensions determine <literal>na</literal>, the column dimension of
+ the resulting matrix <literal>A</literal>: <literal>na=nr1*nc1 +...+ nrp*ncp</literal>.
+ </para>
+ <para>
+ If the optional parameter <literal>flag='sp'</literal> the resulting <literal>A</literal>
+ matrix is returned as a sparse matrix.
+ </para>
+ <para>
+ This function is useful to solve a system of linear equations
+ where the unknown variables are matrices.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+// Lyapunov equation solver (one unknown variable, one constraint)
+deff('Y=lyapunov(X,D)','[A,Q]=D(:);Xm=X(:); Y=list(A''*Xm+Xm*A-Q)')
+A=rand(3,3);Q=rand(3,3);Q=Q+Q';D=list(A,Q);dimX=[3,3];
+[Aly,bly]=aff2ab(lyapunov,dimX,D);
+[Xl,kerA]=linsolve(Aly,bly); Xv=vec2list(Xl,dimX); lyapunov(Xv,D)
+Xm=Xv(:); A'*Xm+Xm*A-Q
+
+// Lyapunov equation solver with redundant constraint X=X'
+// (one variable, two constraints) D is global variable
+deff('Y=ly2(X,D)','[A,Q]=D(:);Xm=X(:); Y=list(A''*Xm+Xm*A-Q,Xm''-Xm)')
+A=rand(3,3);Q=rand(3,3);Q=Q+Q';D=list(A,Q);dimX=[3,3];
+[Aly,bly]=aff2ab(ly2,dimX,D);
+[Xl,kerA]=linsolve(Aly,bly); Xv=vec2list(Xl,dimX); ly2(Xv,D)
+
+// Francis equations
+// Find matrices X1 and X2 such that:
+// A1*X1 - X1*A2 + B*X2 -A3 = 0
+// D1*X1 -D2 = 0
+deff('Y=bruce(X,D)','[A1,A2,A3,B,D1,D2]=D(:),...
+[X1,X2]=X(:);Y=list(A1*X1-X1*A2+B*X2-A3,D1*X1-D2)')
+A1=[-4,10;-1,2];A3=[1;2];B=[0;1];A2=1;D1=[0,1];D2=1;
+D=list(A1,A2,A3,B,D1,D2);
+[n1,m1]=size(A1);[n2,m2]=size(A2);[n3,m3]=size(B);
+dimX=[[m1,n2];[m3,m2]];
+[Af,bf]=aff2ab(bruce,dimX,D);
+[Xf,KerAf]=linsolve(Af,bf);Xsol=vec2list(Xf,dimX)
+bruce(Xsol,D)
+
+// Find all X which commute with A
+deff('y=f(X,D)','y=list(D(:)*X(:)-X(:)*D(:))')
+A=rand(3,3);dimX=[3,3];[Af,bf]=aff2ab(f,dimX,list(A));
+[Xf,KerAf]=linsolve(Af,bf);[p,q]=size(KerAf);
+Xsol=vec2list(Xf+KerAf*rand(q,1),dimX);
+C=Xsol(:); A*C-C*A
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="linsolve">linsolve</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/linear/chol.xml b/modules/linear_algebra/help/en_US/linear/chol.xml
new file mode 100755
index 000000000..a0a37f1de
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/linear/chol.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="chol">
+ <refnamediv>
+ <refname>chol</refname>
+ <refpurpose>Cholesky factorization</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[R]=chol(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>a symmetric positive definite real or complex matrix.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ If <literal>X</literal> is positive definite, then <literal>R = chol(X)</literal> produces an upper
+ triangular matrix <literal>R</literal> such that <literal>R'*R = X</literal>.
+ </para>
+ <para>
+ <literal>chol(X)</literal> uses only the diagonal and upper triangle of <literal>X</literal>.
+ The lower triangular is assumed to be the (complex conjugate)
+ transpose of the upper.
+ </para>
+ </refsection>
+ <refsection>
+ <title>References</title>
+ <para>
+ Cholesky decomposition is based on the Lapack routines
+ DPOTRF for real matrices and ZPOTRF for the complex case.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+W=rand(5,5)+%i*rand(5,5);
+X=W*W';
+R=chol(X);
+norm(R'*R-X)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spchol">spchol</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="bdiag">bdiag</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/linear/inv.xml b/modules/linear_algebra/help/en_US/linear/inv.xml
new file mode 100755
index 000000000..1589972e7
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/linear/inv.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="inv">
+ <refnamediv>
+ <refname>inv</refname>
+ <refpurpose>matrix inverse</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>inv(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>real or complex square matrix, polynomial matrix, rational matrix in transfer or state-space representation.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>inv(X)</literal> is the inverse of the square matrix <literal>X</literal>. A warning
+ message is printed if <literal>X</literal> is badly scaled or nearly singular.
+ </para>
+ <para>
+ For polynomial matrices or rational matrices in transfer representation,
+ <literal>inv(X)</literal> is equivalent to <literal>invr(X)</literal>.
+ </para>
+ <para>
+ For linear systems in state-space representation (<literal>syslin</literal> list),
+ <literal>invr(X)</literal> is equivalent to <literal>invsyslin(X)</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>References</title>
+ <para>
+ <literal>inv</literal> function for matrices of numbers is based on the Lapack routines
+ DGETRF, DGETRI for real matrices and ZGETRF, ZGETRI for the complex case.
+ For polynomial matrix and rational function matrix <literal>inv</literal> is based on the <literal>invr</literal>
+ Scilab function.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);inv(A)*A
+
+x=poly(0,'x');
+A=[x,1,x;x^2,2,1+x;1,2,3];inv(A)*A
+
+A=[1/x,2;2+x,2/(1+x)]
+inv(A)*A
+
+A=ssrand(2,2,3);
+W=inv(A)*A
+clean(ss2tf(W))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="slash">slash</link>
+ </member>
+ <member>
+ <link linkend="backslash">backslash</link>
+ </member>
+ <member>
+ <link linkend="pinv">pinv</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="lufact">lufact</link>
+ </member>
+ <member>
+ <link linkend="lusolve">lusolve</link>
+ </member>
+ <member>
+ <link linkend="invr">invr</link>
+ </member>
+ <member>
+ <link linkend="coff">coff</link>
+ </member>
+ <member>
+ <link linkend="coffg">coffg</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/linear/linsolve.xml b/modules/linear_algebra/help/en_US/linear/linsolve.xml
new file mode 100755
index 000000000..01df2dc47
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/linear/linsolve.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="linsolve">
+ <refnamediv>
+ <refname>linsolve</refname>
+ <refpurpose>linear equation solver</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[x0,kerA]=linsolve(A,b [,x0])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>
+ a <literal>na x ma</literal> real matrix (possibly sparse)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>b</term>
+ <listitem>
+ <para>
+ a <literal>na x 1</literal> vector (same row dimension as <literal>A</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>x0</term>
+ <listitem>
+ <para>a real vector</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>kerA</term>
+ <listitem>
+ <para>
+ a <literal>ma x k</literal> real matrix
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>linsolve</literal> computes all the solutions to <literal> A*x+b=0</literal>.
+ </para>
+ <para>
+ <literal>x0</literal> is a particular solution (if any) and <literal> kerA= </literal>nullspace
+ of <literal>A</literal>. Any <literal>x=x0+kerA*w</literal> with arbitrary <literal>w</literal> satisfies
+ <literal> A*x+b=0</literal>.
+ </para>
+ <para>
+ If compatible <literal>x0</literal> is given on entry, <literal>x0</literal> is returned. If not
+ a compatible <literal>x0</literal>, if any, is returned.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,3)*rand(3,8);
+b=A*ones(8,1);[x,kerA]=linsolve(A,b);A*x+b //compatible b
+b=ones(5,1);[x,kerA]=linsolve(A,b);A*x+b //uncompatible b
+A=rand(5,5);[x,kerA]=linsolve(A,b), -inv(A)*b //x is unique
+
+// Benchmark with other linear sparse solver:
+[A,descr,ref,mtype] = ReadHBSparse(SCI+"/modules/umfpack/examples/bcsstk24.rsa");
+
+b = zeros(size(A,1),1);
+
+tic();
+res = umfpack(A,'\',b);
+mprintf('\ntime needed to solve the system with umfpack: %.3f\n',toc());
+
+tic();
+res = linsolve(A,b);
+mprintf('\ntime needed to solve the system with linsolve: %.3f\n',toc());
+
+tic();
+res = A\b;
+mprintf('\ntime needed to solve the system with the backslash operator: %.3f\n',toc());
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="inv">inv</link>
+ </member>
+ <member>
+ <link linkend="pinv">pinv</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="im_inv">im_inv</link>
+ </member>
+ <member>
+ <link linkend="umfpack">umfpack</link>
+ </member>
+ <member>
+ <link linkend="backslash">backslash</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/linear/lsq.xml b/modules/linear_algebra/help/en_US/linear/lsq.xml
new file mode 100755
index 000000000..1060d605b
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/linear/lsq.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="lsq">
+ <refnamediv>
+ <refname>lsq</refname>
+ <refpurpose>linear least square problems. </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>X=lsq(A,B [,tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>Real or complex (m x n) matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>B</term>
+ <listitem>
+ <para>real or complex (m x p) matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>positive scalar, used to determine the effective rank of A
+ (defined as the order of the largest leading triangular
+ submatrix R11 in the QR factorization with pivoting of A,
+ whose estimated condition number &lt;= 1/tol. The tol default value is
+ set to <literal>sqrt(%eps)</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>real or complex (n x p) matrix</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>X=lsq(A,B)</literal> computes the minimum norm least square solution of
+ the equation <literal>A*X=B</literal>, while <literal>X=A \ B</literal> compute a least square
+ solution with at at most <literal>rank(A)</literal> nonzero components per column.
+ </para>
+ </refsection>
+ <refsection>
+ <title>References</title>
+ <para>
+ <literal>lsq</literal> function is based on the LApack functions DGELSY for
+ real matrices and ZGELSY for complex matrices.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+//Build the data
+x=(1:10)';
+
+y1=3*x+4.5+3*rand(x,'normal');
+y2=1.8*x+0.5+2*rand(x,'normal');
+plot2d(x,[y1,y2],[-2,-3])
+//Find the linear regression
+A=[x,ones(x)];B=[y1,y2];
+X=lsq(A,B);
+
+y1e=X(1,1)*x+X(2,1);
+y2e=X(1,2)*x+X(2,2);
+plot2d(x,[y1e,y2e],[2,3])
+
+//Difference between lsq(A,b) and A\b
+A=rand(4,2)*rand(2,3);//a rank 2 matrix
+b=rand(4,1);
+X1=lsq(A,b)
+X2=A\b
+[A*X1-b, A*X2-b] //the residuals are the same
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="backslash">backslash</link>
+ </member>
+ <member>
+ <link linkend="inv">inv</link>
+ </member>
+ <member>
+ <link linkend="pinv">pinv</link>
+ </member>
+ <member>
+ <link linkend="rank">rank</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/linear/lu.xml b/modules/linear_algebra/help/en_US/linear/lu.xml
new file mode 100755
index 000000000..2da9ad568
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/linear/lu.xml
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ * Copyright (C) 2009 - Digiteo - Michael Baudin
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="lu">
+ <refnamediv>
+ <refname>lu</refname>
+ <refpurpose>LU factorization with pivoting</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[L,U]= lu(A)
+ [L,U,E]= lu(A)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real or complex matrix (m x n).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>L</term>
+ <listitem>
+ <para> real or complex matrices (m x min(m,n)).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>U</term>
+ <listitem>
+ <para>real or complex matrices (min(m,n) x n ).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E</term>
+ <listitem>
+ <para>a (n x n) permutation matrix.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>[L,U]= lu(A)</literal> produces two matrices <literal>L</literal> and
+ <literal>U</literal> such that <literal>A = L*U</literal> with <literal>U</literal>
+ upper triangular and <literal>L</literal> a general matrix without any particular
+ structure. In fact, the matrix <literal>A</literal> is factored as <literal>E*A=B*U</literal>
+ where the matrix <literal>B</literal> is lower triangular
+ and the matrix <literal>L</literal> is computed from <literal>L=E'*B</literal>.
+ </para>
+ <para>
+ If <literal>A</literal> has rank <literal>k</literal>, rows <literal>k+1</literal> to
+ <literal>n</literal> of <literal>U</literal> are zero.
+ </para>
+ <para>
+ <literal>[L,U,E]= lu(A)</literal> produces three matrices <literal>L</literal>, <literal>U</literal> and
+ <literal>E</literal> such that <literal>E*A = L*U</literal> with
+ <literal>U</literal> upper triangular and <literal>E*L</literal> lower
+ triangular for a permutation matrix <literal>E</literal>.
+ </para>
+ <para>
+ If <literal>A</literal> is a real matrix, using the function
+ <literal>lufact</literal> and <literal>luget</literal> it is possible to obtain
+ the permutation matrices and also when <literal>A</literal> is not full
+ rank the column compression of the matrix <literal>L</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Example #1</title>
+ <para>
+ In the following example, we create the Hilbert matrix of size 4 and
+ factor it with A=LU. Notice that the matrix L is not lower triangular.
+ To get a lower triangular L matrix, we should have given the
+ output argument E to Scilab.
+ </para>
+ <programlisting role="example"><![CDATA[
+a = testmatrix("hilb",4);
+[l,u]=lu(a)
+norm(l*u-a)
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title>Example #2</title>
+ <para>
+ In the following example, we create the Hilbert matrix of size 4 and
+ factor it with EA=LU. Notice that the matrix L is lower triangular.
+ </para>
+ <programlisting role="example"><![CDATA[
+a = testmatrix("hilb",4);
+[l,u,e]=lu(a)
+norm(l*u-e*a)
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title>Example #3</title>
+ <para>
+ The following example shows how to use the lufact and luget functions.
+ </para>
+ <programlisting role="example"><![CDATA[
+a=rand(4,4);
+[l,u]=lu(a)
+norm(l*u-a)
+
+[h,rk]=lufact(sparse(a))
+[P,L,U,Q]=luget(h);
+ludel(h)
+P=full(P);
+L=full(L);
+U=full(U);
+Q=full(Q);
+norm(P*L*U*Q-a)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="lufact">lufact</link>
+ </member>
+ <member>
+ <link linkend="luget">luget</link>
+ </member>
+ <member>
+ <link linkend="lusolve">lusolve</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>
+ lu decompositions are based on the Lapack routines DGETRF for real
+ matrices and ZGETRF for the complex case.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/linear/pinv.xml b/modules/linear_algebra/help/en_US/linear/pinv.xml
new file mode 100755
index 000000000..af87b920b
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/linear/pinv.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="pinv">
+ <refnamediv>
+ <refname>pinv</refname>
+ <refpurpose>pseudoinverse</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>pinv(A,[tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real or complex matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>real number</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>X= pinv(A)</literal> produces a matrix <literal>X</literal> of the
+ same dimensions as <literal>A'</literal> such that:
+ </para>
+ <para>
+ <literal>A*X*A = A, X*A*X = X</literal> and both
+ <literal>A*X</literal> and <literal>X*A</literal> are Hermitian .
+ </para>
+ <para>
+ The computation is based on SVD and any singular values
+ lower than a tolerance are treated as zero: this tolerance
+ is accessed by <literal>X=pinv(A,tol)</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,4);
+norm(A*pinv(A)*A-A,1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rank">rank</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>
+ <literal>pinv</literal> function is based on the singular value decomposition
+ (Scilab function <literal>svd</literal>).
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/linear/qr.xml b/modules/linear_algebra/help/en_US/linear/qr.xml
new file mode 100755
index 000000000..52b3bb433
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/linear/qr.xml
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="qr">
+ <refnamediv>
+ <refname>qr</refname>
+ <refpurpose>QR decomposition</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Q,R]=qr(X [,"e"])
+ [Q,R,E]=qr(X [,"e"])
+ [Q,R,rk,E]=qr(X [,tol])
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>real or complex matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>nonnegative real number</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q</term>
+ <listitem>
+ <para>square orthogonal or unitary matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>R</term>
+ <listitem>
+ <para>
+ matrix with same dimensions as <literal>X</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E</term>
+ <listitem>
+ <para>permutation matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk</term>
+ <listitem>
+ <para>
+ integer (QR-rank of <literal>X</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <variablelist>
+ <varlistentry>
+ <term>[Q,R] = qr(X)</term>
+ <listitem>
+ <para>
+ produces an upper triangular matrix <literal>R</literal> of the same dimension as <literal>X</literal> and an orthogonal (unitary in the complex case) matrix <literal>Q</literal> so that <literal>X = Q*R</literal>. <literal>[Q,R] = qr(X,"e")</literal> produces an "economy size": If <literal>X</literal> is m-by-n with m &gt; n, then only the first n columns of <literal>Q</literal> are computed as well as the first n rows of <literal>R</literal>.
+ </para>
+ <para>
+ From <literal>Q*R = X</literal> , it follows that
+ the kth column of the matrix <literal>X</literal>, is expressed as a linear combination
+ of the k first columns of <literal>Q</literal> (with coefficients <literal> R(1,k), ..., R(k,k) </literal>). The k first columns of <literal>Q</literal> make an orthogonal basis
+ of the subspace spanned by the k first comumns of <literal>X</literal>. If column <literal>k</literal>
+ of <literal>X</literal> (i.e. <literal>X(:,k)</literal> ) is a linear combination of the first
+ <literal>p</literal> columns of <literal>X</literal>, then the entries <literal>R(p+1,k), ..., R(k,k)</literal>
+ are zero. It this situation, <literal>R</literal> is upper trapezoidal. If <literal>X</literal> has
+ rank <literal>rk</literal>, rows <literal>R(rk+1,:), R(rk+2,:), ...</literal> are zeros.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[Q,R,E] = qr(X)</term>
+ <listitem>
+ <para>
+ produces a (column) permutation matrix <literal>E</literal>, an upper
+ triangular <literal>R</literal> with decreasing diagonal elements and an
+ orthogonal (or unitary) <literal>Q</literal> so that <literal>X*E = Q*R</literal>.
+ If <literal>rk</literal> is the rank of <literal>X</literal>, the
+ <literal>rk</literal> first entries along the main diagonal of
+ <literal>R</literal>, i.e. <literal>R(1,1), R(2,2), ..., R(rk,rk)</literal>
+ are all different from zero. <literal>[Q,R,E] = qr(X,"e")</literal>
+ produces an "economy size":
+ If <literal>X</literal> is m-by-n with m &gt; n, then only the first n
+ columns of <literal>Q</literal> are computed as well as the first n
+ rows of <literal>R</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[Q,R,rk,E] = qr(X ,tol)</term>
+ <listitem>
+ <para>
+ returns <literal>rk</literal> = rank estimate of <literal>X</literal> i.e. <literal>rk</literal> is the number of diagonal elements in <literal>R</literal> which are larger than a given threshold <literal>tol</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[Q,R,rk,E] = qr(X) </term>
+ <listitem>
+ <para>
+ returns <literal>rk</literal> = rank estimate of <literal>X</literal>
+ i.e. <literal>rk</literal> is the number of diagonal elements in
+ <literal>R</literal> which are larger than
+ <literal>tol=R(1,1)*%eps*max(size(R))</literal>. See <literal>rankqr</literal>
+ for a rank revealing QR factorization, using the condition number
+ of <literal>R</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+// QR factorization, generic case
+// X is tall (full rank)
+X=rand(5,2);[Q,R]=qr(X); [Q'*X R]
+
+//X is fat (full rank)
+X=rand(2,3);[Q,R]=qr(X); [Q'*X R]
+
+//Column 4 of X is a linear combination of columns 1 and 2:
+X=rand(8,5);X(:,4)=X(:,1)+X(:,2); [Q,R]=qr(X); R, R(:,4)
+
+//X has rank 2, rows 3 to $ of R are zero:
+X=rand(8,2)*rand(2,5);[Q,R]=qr(X); R
+
+//Evaluating the rank rk: column pivoting ==> rk first
+//diagonal entries of R are non zero :
+A=rand(5,2)*rand(2,5);
+[Q,R,rk,E] = qr(A,1.d-10);
+norm(Q'*A-R)
+svd([A,Q(:,1:rk)]) //span(A) =span(Q(:,1:rk))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rankqr">rankqr</link>
+ </member>
+ <member>
+ <link linkend="rank">rank</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>
+ qr decomposition is based the Lapack routines DGEQRF, DGEQPF,
+ DORGQR for the real matrices and ZGEQRF, ZGEQPF, ZORGQR for the
+ complex case.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/linear/rankqr.xml b/modules/linear_algebra/help/en_US/linear/rankqr.xml
new file mode 100755
index 000000000..3532b3daa
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/linear/rankqr.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="rankqr">
+ <refnamediv>
+ <refname>rankqr</refname>
+ <refpurpose>rank revealing QR factorization</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Q,R,JPVT,RANK,SVAL]=rankqr(A, [RCOND,JPVT])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real or complex matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>RCOND</term>
+ <listitem>
+ <para>real number used to determine the effective rank of
+ <literal>A</literal>, which is defined as the order of the largest leading
+ triangular submatrix <literal>R11</literal> in the QR factorization with
+ pivoting of<literal>A</literal>, whose estimated condition number &lt;
+ <literal>1/RCOND</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>JPVT</term>
+ <listitem>
+ <para>
+ integer vector on entry, if <literal>JPVT(i)</literal> is not 0, the
+ <literal>i</literal>-th column of <literal> A</literal> is permuted to the front
+ of <literal>AP</literal>, otherwise column <literal>i</literal> is a free
+ column. On exit, if <literal>JPVT(i) = k</literal>, then the
+ <literal>i</literal>-th column of <literal>A*P</literal> was the
+ <literal>k</literal>-th column of <literal>A</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>RANK</term>
+ <listitem>
+ <para>
+ the effective rank of <literal>A</literal>, i.e., the order of the
+ submatrix <literal>R11</literal>. This is the same as the order of the
+ submatrix <literal>T1</literal> in the complete orthogonal factorization
+ of <literal>A</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SVAL</term>
+ <listitem>
+ <para>real vector with 3 components; The estimates of some of the
+ singular values of the triangular factor <literal>R</literal>.
+ </para>
+ <para>
+ <literal>SVAL(1)</literal> is the largest singular value of
+ <literal>R(1:RANK,1:RANK)</literal>;
+ </para>
+ <para>
+ <literal>SVAL(2)</literal> is the
+ smallest singular value of <literal>R(1:RANK,1:RANK)</literal>;
+ </para>
+ <para>
+ <literal>SVAL(3)</literal> is the smallest singular value of
+ <literal>R(1:RANK+1,1:RANK+1)</literal>, if <literal>RANK</literal> &lt; <literal>MIN(M,N)</literal>,
+ or of <literal>R(1:RANK,1:RANK)</literal>, otherwise.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ To compute (optionally) a rank-revealing QR factorization of a real
+ general M-by-N real or complex matrix <literal>A</literal>, which may be
+ rank-deficient, and estimate its effective rank using incremental
+ condition estimation.
+ </para>
+ <para>
+ The routine uses a QR factorization with column pivoting:
+ </para>
+ <programlisting role=""><![CDATA[
+A * P = Q * R, where R = [ R11 R12 ],
+ [ 0 R22 ]
+ ]]></programlisting>
+ <para>
+ with <literal>R11</literal> defined as the largest leading submatrix whose
+ estimated condition number is less than <literal>1/RCOND</literal>. The
+ order of <literal>R11</literal>, <literal>RANK</literal>, is the effective rank of
+ <literal>A</literal>.
+ </para>
+ <para>
+ If the triangular factorization is a rank-revealing one (which will be
+ the case if the leading columns were well- conditioned), then
+ <literal>SVAL(1)</literal> will also be an estimate for the largest singular
+ value of <literal>A</literal>, and <literal>SVAL(2)</literal> and
+ <literal>SVAL(3)</literal> will be estimates for the <literal>RANK</literal>-th
+ and <literal>(RANK+1)</literal>-st singular values of <literal>A</literal>,
+ respectively.
+ </para>
+ <para>
+ By examining these values, one can confirm that the
+ rank is well defined with respect to the chosen value of
+ <literal>RCOND</literal>. The ratio <literal>SVAL(1)/SVAL(2)</literal> is an
+ estimate of the condition number of <literal>R(1:RANK,1:RANK)</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,3)*rand(3,7);
+[Q,R,JPVT,RANK,SVAL]=rankqr(A,%eps)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="rank">rank</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>
+ Slicot library routines MB03OD, ZB03OD.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/markov/CHAPTER b/modules/linear_algebra/help/en_US/markov/CHAPTER
new file mode 100755
index 000000000..c29eb913c
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/markov/CHAPTER
@@ -0,0 +1,2 @@
+title = Markov Matrices
+
diff --git a/modules/linear_algebra/help/en_US/markov/classmarkov.xml b/modules/linear_algebra/help/en_US/markov/classmarkov.xml
new file mode 100755
index 000000000..a80312508
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/markov/classmarkov.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="classmarkov">
+ <refnamediv>
+ <refname>classmarkov</refname>
+ <refpurpose>recurrent and transient classes of Markov matrix</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[perm,rec,tr,indsRec,indsT]=classmarkov(M)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>M</term>
+ <listitem>
+ <para>real N x N Markov matrix. Sum of entries in each row should add to one.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>perm</term>
+ <listitem>
+ <para>integer permutation vector.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rec, tr</term>
+ <listitem>
+ <para>integer vector, number (number of states in each recurrent classes, number of transient states).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>indsRec,indsT</term>
+ <listitem>
+ <para>integer vectors. (Indexes of recurrent and transient states).</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Returns a permutation vector <literal>perm</literal> such that
+ </para>
+ <programlisting role=""><![CDATA[
+M(perm,perm) = [M11 0 0 0 0 0]
+ [0 M22 0 0 0]
+ [0 0 M33 0]
+ [ ... ]
+ [0 0 Mrr 0]
+ [* * * Q]
+ ]]></programlisting>
+ <para>
+ Each <literal>Mii</literal> is a Markov matrix of dimension <literal>rec(i) i=1,..,r</literal>.
+ <literal>Q</literal> is sub-Markov matrix of dimension <literal>tr</literal>.
+ States 1 to sum(rec) are recurrent and states from r+1 to n
+ are transient.
+ One has <literal>perm=[indsRec,indsT]</literal> where indsRec is a vector of size sum(rec)
+ and indsT is a vector of size tr.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+//P has two recurrent classes (with 2 and 1 states) 2 transient states
+P=genmarkov([2,1],2,'perm')
+[perm,rec,tr,indsRec,indsT]=classmarkov(P);
+P(perm,perm)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="genmarkov">genmarkov</link>
+ </member>
+ <member>
+ <link linkend="eigenmarkov">eigenmarkov</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/markov/eigenmarkov.xml b/modules/linear_algebra/help/en_US/markov/eigenmarkov.xml
new file mode 100755
index 000000000..950937188
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/markov/eigenmarkov.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="eigenmarkov">
+ <refnamediv>
+ <refname>eigenmarkov</refname>
+ <refpurpose>normalized left and right Markov eigenvectors</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[M,Q]=eigenmarkov(P)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>P</term>
+ <listitem>
+ <para>real N x N Markov matrix. Sum of entries in each row should add to one.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>M</term>
+ <listitem>
+ <para>real matrix with N columns.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q</term>
+ <listitem>
+ <para>real matrix with N rows.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Returns normalized left and right eigenvectors
+ associated with the eigenvalue 1 of the Markov transition matrix P.
+ If the multiplicity of this eigenvalue is m and P
+ is N x N, M is a m x N matrix and Q a N x m matrix.
+ M(k,:) is the probability distribution vector associated with the kth
+ ergodic set (recurrent class). M(k,x) is zero if x is not in the
+ k-th recurrent class.
+ Q(x,k) is the probability to end in the k-th recurrent class starting
+ from x. If <literal>P^k</literal> converges for large <literal>k</literal> (no eigenvalues on the
+ unit circle except 1), then the limit is <literal>Q*M</literal> (eigenprojection).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+//P has two recurrent classes (with 2 and 1 states) 2 transient states
+P=genmarkov([2,1],2)
+[M,Q]=eigenmarkov(P);
+P*Q-Q
+Q*M-P^20
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="genmarkov">genmarkov</link>
+ </member>
+ <member>
+ <link linkend="classmarkov">classmarkov</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/markov/genmarkov.xml b/modules/linear_algebra/help/en_US/markov/genmarkov.xml
new file mode 100755
index 000000000..edf5baeeb
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/markov/genmarkov.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="genmarkov">
+ <refnamediv>
+ <refname>genmarkov</refname>
+ <refpurpose>generates random markov matrix with recurrent and transient classes</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>M=genmarkov(rec,tr)
+ M=genmarkov(rec,tr,flag)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>rec</term>
+ <listitem>
+ <para>integer row vector (its dimension is the number of recurrent classes).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tr</term>
+ <listitem>
+ <para>integer (number of transient states)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>M</term>
+ <listitem>
+ <para>real Markov matrix. Sum of entries in each row should add to one.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ string <literal>'perm'</literal>. If given, a random permutation of the states is done.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Returns in M a random Markov transition probability matrix
+ with <literal>size(rec,1)</literal> recurrent classes with <literal>rec(1),...rec($)</literal>
+ entries respectively and tr transient states.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+//P has two recurrent classes (with 2 and 1 states) 2 transient states
+P=genmarkov([2,1],2,'perm')
+[perm,rec,tr,indsRec,indsT]=classmarkov(P);
+P(perm,perm)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="classmarkov">classmarkov</link>
+ </member>
+ <member>
+ <link linkend="eigenmarkov">eigenmarkov</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/matrix/CHAPTER b/modules/linear_algebra/help/en_US/matrix/CHAPTER
new file mode 100755
index 000000000..bb89125cd
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/matrix/CHAPTER
@@ -0,0 +1,2 @@
+title = Matrix Analysis
+
diff --git a/modules/linear_algebra/help/en_US/matrix/cond.xml b/modules/linear_algebra/help/en_US/matrix/cond.xml
new file mode 100755
index 000000000..4c85c76c1
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/matrix/cond.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ * Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="cond">
+ <refnamediv>
+ <refname>cond</refname>
+ <refpurpose>condition number</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>
+ c = cond(X)
+ c = cond(X, p)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>real or complex matrix. If c = cond(X, p), X must be real or complex square matrix.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>p</term>
+ <listitem>
+ <para>scalar or string (type of norm) (default value = 2).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>c</term>
+ <listitem>
+ <para>real scalar, the condition number.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <variablelist>
+ <varlistentry>
+ <term>c = cond(X)</term>
+ <listitem>
+ <para>
+ returns condition number in 2-norm.<literal>cond(X)</literal> is the ratio of the
+ largest singular value of <literal>X</literal> to the smallest.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>c = cond(X, p)</term>
+ <listitem>
+ <para>
+ returns condition number in p-norm : <literal>norm(X, p) * norm(inv(X), p)</literal>.
+ If <literal>p</literal> is specified, <literal>p</literal> can be equal to :
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ p = 1. <literal>cond(X, p)</literal> returns condition number in 1-norm.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ p = 2. <literal>cond(X, p)</literal> returns condition number in 2-norm.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ p = %inf or 'inf'. <literal>cond(X, p)</literal> returns condition number in infinity norm.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ p = 'fro'. <literal>cond(X, p)</literal> returns condition number in Frobenius norm.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example">
+ <![CDATA[
+A=testmatrix('hilb',6);
+// condition number in 2-norm
+cond(A)
+cond(A, 2)
+
+// condition number in 1-norm
+cond(A, 1)
+
+// condition number in infinity norm
+cond(A, %inf)
+
+// condition number in Frobenius norm
+cond(A, 'fro')
+ ]]>
+ </programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rcond">rcond</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="norm">norm</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>History</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revdescription>
+ <para>
+ Calling <literal>cond(X)</literal>, where <literal>X</literal> is
+ non square matrix, is now managed. For example:
+ </para>
+ <programlisting role="">
+ <![CDATA[
+X = [1 0; 1 -1; 0 1];
+cond(X)
+ ]]>
+ </programlisting>
+ <para>
+ Calling <literal>cond(X, p)</literal> allows to calculate p-norm
+ condition number. For example:
+ </para>
+ <programlisting role="">
+ <![CDATA[
+X = [1 -6 0; 1 0 -4;1 0 2];
+cond(X, 1) // condition number in 1-norm (p = 1)
+ ]]>
+ </programlisting>
+ </revdescription>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/matrix/det.xml b/modules/linear_algebra/help/en_US/matrix/det.xml
new file mode 100755
index 000000000..10d6965a0
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/matrix/det.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="det">
+ <refnamediv>
+ <refname>det</refname>
+ <refpurpose>determinant</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>det(X)
+ [e,m]=det(X)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>real or complex square matrix, polynomial or rational matrix.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>m</term>
+ <listitem>
+ <para>real or complex number, the determinant base 10 mantissae</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>e</term>
+ <listitem>
+ <para>integer, the determinant base 10 exponent</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>det(X)</literal> ( <literal>m*10^e</literal> is the determinant of the square matrix <literal>X</literal>.
+ </para>
+ <para>
+ For polynomial matrix <literal>det(X)</literal> is equivalent to <literal>determ(X)</literal>.
+ </para>
+ <para>
+ For rational matrices <literal>det(X)</literal> is equivalent to <literal>detr(X)</literal>.
+ </para>
+ <para>
+ <important>
+ The <literal>det</literal> and <literal>detr</literal> functions don't use the same algorithm.
+ For a rational fraction, <literal>det(X)</literal> is overloaded by <literal>%r_det(X)</literal> which is based on the <literal>determ</literal> function.
+ <literal>detr()</literal> uses the Leverrier method.
+ </important>
+ <warning>
+ Sometimes the <literal>det</literal> and <literal>detr</literal> functions may return different values for rational matrices.
+ In such cases you should set rational simplification mode off by using <code>simp_mode(%f)</code> to get the same result.
+ </warning>
+ </para>
+ </refsection>
+ <refsection>
+ <title>References</title>
+ <para>
+ det computations are based on the Lapack routines
+ DGETRF for real matrices and ZGETRF for the complex case.
+ </para>
+ <para>
+ Concerning sparse matrices, the determinant is obtained from LU factorization of umfpack library.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+x=poly(0,'x');
+det([x,1+x;2-x,x^2])
+w=ssrand(2,2,4);roots(det(systmat(w))),trzeros(w) //zeros of linear system
+A=rand(3,3);
+det(A), prod(spec(A))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="detr">detr</link>
+ </member>
+ <member>
+ <link linkend="determ">determ</link>
+ </member>
+ <member>
+ <link linkend="simp_mode">simp_mode</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/matrix/orth.xml b/modules/linear_algebra/help/en_US/matrix/orth.xml
new file mode 100755
index 000000000..a0c7c36eb
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/matrix/orth.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="orth">
+ <refnamediv>
+ <refname>orth</refname>
+ <refpurpose>orthogonal basis</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>Q=orth(A)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real or complex matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q</term>
+ <listitem>
+ <para>real or complex matrix</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>Q=orth(A)</literal> returns <literal>Q</literal>, an orthogonal
+ basis for the span of <literal>A</literal>. Range(<literal>Q</literal>) =
+ Range(<literal>A</literal>) and <literal>Q'*Q=eye</literal>.
+ </para>
+ <para>
+ The number of columns of <literal>Q</literal> is the rank of
+ <literal>A</literal> as determined by the QR algorithm.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,3)*rand(3,4);
+[X,dim]=rowcomp(A);X=X';
+svd([orth(A),X(:,1:dim)])
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="range">range</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/matrix/rank.xml b/modules/linear_algebra/help/en_US/matrix/rank.xml
new file mode 100755
index 000000000..ec651a774
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/matrix/rank.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="rank">
+ <refnamediv>
+ <refname>rank</refname>
+ <refpurpose>rank</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[i]=rank(X)
+ [i]=rank(X,tol)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>real or complex matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>nonnegative real number</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>rank(X)</literal> is the numerical rank of <literal>X</literal>
+ i.e. the number of singular values of X that are larger than
+ <literal>norm(size(X),'inf') * norm(X) * %eps</literal>.
+ </para>
+ <para>
+ <literal>rank(X,tol)</literal> is the number of singular values of
+ <literal>X</literal> that are larger than <literal>tol</literal>.
+ </para>
+ <para>
+ <note>
+ Note that the default value of <literal>tol</literal> is proportional to
+ <literal>norm(X)</literal>. As a consequence
+ <literal>rank([1.d-80,0;0,1.d-80])</literal> is 2 !.
+ </note>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+rank([1.d-80,0;0,1.d-80])
+rank([1,0;0,1.d-80])
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="lu">lu</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/matrix/rcond.xml b/modules/linear_algebra/help/en_US/matrix/rcond.xml
new file mode 100755
index 000000000..4d95cb28d
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/matrix/rcond.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ * Copyright (C) 2010 - DIGITEO - Michael Baudin
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="rcond">
+ <refnamediv>
+ <refname>rcond</refname>
+ <refpurpose>inverse condition number</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>rcond(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>real or complex square matrix</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>rcond(X)</literal> is an estimate for the reciprocal of the
+ condition of <literal>X</literal> in the 1-norm.
+ </para>
+ <para>
+ If <literal>X</literal> is well conditioned, <literal>rcond(X)</literal> is close to 1.
+ If not, <literal>rcond(X)</literal> is close to 0.
+ </para>
+ <para>
+ We compute the 1-norm of A with Lapack/DLANGE, compute its LU decomposition with Lapack/DGETRF
+ and finally estimate the condition with Lapack/DGECON.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=diag([1:10]);
+rcond(A)
+A(1,1)=0.000001;
+rcond(A)
+ ]]></programlisting>
+ <para>
+ Estimating the 1-norm inverse condition number with <literal>rcond</literal> is
+ much faster than computing the 2-norm condition number with <literal>cond</literal>.
+ As a trade-off, <literal>rcond</literal> may be less reliable.
+ </para>
+ <programlisting role="example"><![CDATA[
+ A=ones(1000,1000);
+ timer();cond(A);timer()
+ timer();1/rcond(A);timer()
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="cond">cond</link>
+ </member>
+ <member>
+ <link linkend="inv">inv</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/matrix/rref.xml b/modules/linear_algebra/help/en_US/matrix/rref.xml
new file mode 100755
index 000000000..d2d1f7774
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/matrix/rref.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="rref">
+ <refnamediv>
+ <refname>rref</refname>
+ <refpurpose>computes matrix row echelon form by lu transformations</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>R=rref(A)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para> m x n matrix with scalar entries</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>R</term>
+ <listitem>
+ <para> m x n matrix,row echelon form of a</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>rref</literal> computes the row echelon form of the given matrix by left lu
+ decomposition. If ones need the transformation used just call
+ <literal>X=rref([A,eye(m,m)])</literal> the row echelon form <literal>R</literal> is <literal>X(:,1:n)</literal> and
+ the left transformation <literal>L</literal> is given by <literal>X(:,n+1:n+m)</literal> such as <literal>L*A=R</literal>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=[1 2;3 4;5 6];
+X=rref([A,eye(3,3)]);
+R=X(:,1:2)
+L=X(:,3:5);L*A
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="lu">lu</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/matrix/trace.xml b/modules/linear_algebra/help/en_US/matrix/trace.xml
new file mode 100755
index 000000000..84ba1e20c
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/matrix/trace.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="trace">
+ <refnamediv>
+ <refname>trace</refname>
+ <refpurpose>trace</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>trace(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>real or complex square matrix, polynomial or rational matrix.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>trace(X)</literal> is the trace of the matrix <literal>X</literal>.
+ </para>
+ <para>
+ Same as <literal>sum(diag(X))</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);
+trace(A)-sum(spec(A))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="det">det</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/pencil/CHAPTER b/modules/linear_algebra/help/en_US/pencil/CHAPTER
new file mode 100755
index 000000000..86d1da116
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/pencil/CHAPTER
@@ -0,0 +1,2 @@
+title = Matrix Pencil
+
diff --git a/modules/linear_algebra/help/en_US/pencil/companion.xml b/modules/linear_algebra/help/en_US/pencil/companion.xml
new file mode 100755
index 000000000..0509be671
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/pencil/companion.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="companion">
+ <refnamediv>
+ <refname>companion</refname>
+ <refpurpose>companion matrix</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>A=companion(p)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>p</term>
+ <listitem>
+ <para>polynomial or vector of polynomials</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>square matrix</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Returns a matrix <literal>A</literal> with characteristic polynomial equal
+ to <literal>p</literal> if <literal>p</literal> is monic. If <literal>p</literal> is not monic
+ the characteristic polynomial of <literal>A</literal> is equal to
+ <literal>p/c</literal> where <literal>c</literal> is the coefficient of largest degree
+ in <literal>p</literal>.
+ </para>
+ <para>
+ If <literal>p</literal> is a vector of monic polynomials, <literal>A</literal> is block diagonal,
+ and the characteristic polynomial of the ith block is <literal>p(i)</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+s=poly(0,'s');
+p=poly([1,2,3,4,1],'s','c')
+det(s*eye()-companion(p))
+roots(p)
+spec(companion(p))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ <member>
+ <link linkend="poly">poly</link>
+ </member>
+ <member>
+ <link linkend="randpencil">randpencil</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/pencil/ereduc.xml b/modules/linear_algebra/help/en_US/pencil/ereduc.xml
new file mode 100755
index 000000000..40a83b693
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/pencil/ereduc.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="ereduc">
+ <refnamediv>
+ <refname>ereduc</refname>
+ <refpurpose>computes matrix column echelon form by qz transformations</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[E,Q,Z [,stair [,rk]]]=ereduc(X,tol)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>m x n matrix with real entries.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>real positive scalar.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E</term>
+ <listitem>
+ <para>column echelon form matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q</term>
+ <listitem>
+ <para>m x m unitary matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Z</term>
+ <listitem>
+ <para>n x n unitary matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>stair</term>
+ <listitem>
+ <para>vector of indexes,</para>
+ <variablelist>
+ <varlistentry>
+ <term>* </term>
+ <listitem>
+ <para>
+ <literal>ISTAIR(i) = + j</literal> if the boundary element <literal>E(i,j)</literal> is a corner point.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>* </term>
+ <listitem>
+ <para>
+ <literal>ISTAIR(i) = - j</literal> if the boundary element <literal>E(i,j)</literal> is not a corner point.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ <literal>(i=1,...,M)</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk</term>
+ <listitem>
+ <para>integer, estimated rank of the matrix</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Given an <literal>m x n</literal> matrix <literal>X</literal> (not necessarily regular) the function
+ ereduc computes a unitary transformed matrix <literal>E=Q*X*Z</literal> which is in
+ column echelon form (trapezoidal form). Furthermore the rank of
+ matrix <literal>X</literal> is determined.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+X=[1 2 3;4 5 6]
+[E,Q,Z ,stair ,rk]=ereduc(X,1.d-15)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fstair">fstair</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/pencil/fstair.xml b/modules/linear_algebra/help/en_US/pencil/fstair.xml
new file mode 100755
index 000000000..9d43f915b
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/pencil/fstair.xml
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="fstair">
+ <refnamediv>
+ <refname>fstair</refname>
+ <refpurpose>computes pencil column echelon form by qz transformations</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[AE,EE,QE,ZE,blcks,muk,nuk,muk0,nuk0,mnei]=fstair(A,E,Q,Z,stair,rk,tol)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>m x n matrix with real entries.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>real positive scalar.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E</term>
+ <listitem>
+ <para>column echelon form matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q</term>
+ <listitem>
+ <para>m x m unitary matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Z</term>
+ <listitem>
+ <para>n x n unitary matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>stair</term>
+ <listitem>
+ <para>vector of indexes (see ereduc)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk</term>
+ <listitem>
+ <para>integer, estimated rank of the matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>AE</term>
+ <listitem>
+ <para>m x n matrix with real entries.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>EE</term>
+ <listitem>
+ <para>column echelon form matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>QE</term>
+ <listitem>
+ <para>m x m unitary matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>ZE</term>
+ <listitem>
+ <para>n x n unitary matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nblcks</term>
+ <listitem>
+ <para>
+ is the number of submatrices having full row rank &gt;= 0 detected in matrix <literal>A</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>muk: </term>
+ <listitem>
+ <para>integer array of dimension (n). Contains the column dimensions mu(k) (k=1,...,nblcks) of the submatrices having full column rank in the pencil sE(eps)-A(eps)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nuk: </term>
+ <listitem>
+ <para>integer array of dimension (m+1). Contains the row dimensions nu(k) (k=1,...,nblcks) of the submatrices having full row rank in the pencil sE(eps)-A(eps)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>muk0: </term>
+ <listitem>
+ <para>integer array of dimension (n). Contains the column dimensions mu(k) (k=1,...,nblcks) of the submatrices having full column rank in the pencil sE(eps,inf)-A(eps,inf)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nuk: </term>
+ <listitem>
+ <para>integer array of dimension (m+1). Contains the row dimensions nu(k) (k=1,...,nblcks) of the submatrices having full row rank in the pencil sE(eps,inf)-A(eps,inf)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>mnei: </term>
+ <listitem>
+ <para>integer array of dimension (4). mnei(1) = row dimension of sE(eps)-A(eps)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Given a pencil <literal>sE-A</literal> where matrix <literal>E</literal> is in column echelon form the
+ function <literal>fstair</literal> computes according to the wishes of the user a
+ unitary transformed pencil <literal>QE(sEE-AE)ZE</literal> which is more or less similar
+ to the generalized Schur form of the pencil <literal>sE-A</literal>.
+ The function yields also part of the Kronecker structure of
+ the given pencil.
+ </para>
+ <para>
+ <literal>Q,Z</literal> are the unitary matrices used to compute the pencil where E
+ is in column echelon form (see ereduc)
+ </para>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="quaskro">quaskro</link>
+ </member>
+ <member>
+ <link linkend="ereduc">ereduc</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/pencil/glever.xml b/modules/linear_algebra/help/en_US/pencil/glever.xml
new file mode 100755
index 000000000..cd3d577df
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/pencil/glever.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="glever">
+ <refnamediv>
+ <refname>glever</refname>
+ <refpurpose>inverse of matrix pencil</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Bfs,Bis,chis]=glever(E,A [,s])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>E, A</term>
+ <listitem>
+ <para>two real square matrices of same dimensions</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>s</term>
+ <listitem>
+ <para>
+ character string (default value '<literal>s</literal>')
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Bfs,Bis</term>
+ <listitem>
+ <para>two polynomial matrices</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chis</term>
+ <listitem>
+ <para>polynomial</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Computation of
+ </para>
+ <para>
+ <literal>(s*E-A)^-1</literal>
+ </para>
+ <para>
+ by generalized Leverrier's algorithm for a matrix pencil.
+ </para>
+ <programlisting role=""><![CDATA[
+(s*E-A)^-1 = (Bfs/chis) - Bis.
+ ]]></programlisting>
+ <para>
+ <literal>chis</literal> = characteristic polynomial (up to a multiplicative constant).
+ </para>
+ <para>
+ <literal>Bfs</literal> = numerator polynomial matrix.
+ </para>
+ <para>
+ <literal>Bis</literal>
+ = polynomial matrix ( - expansion of <literal>(s*E-A)^-1</literal> at infinity).
+ </para>
+ <para>
+ Note the - sign before <literal>Bis</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Caution</title>
+ <para>
+ This function uses <literal>cleanp</literal> to simplify <literal>Bfs,Bis</literal> and <literal>chis</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+s=%s;F=[-1,s,0,0;0,-1,0,0;0,0,s-2,0;0,0,0,s-1];
+[Bfs,Bis,chis]=glever(F)
+inv(F)-((Bfs/chis) - Bis)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rowshuff">rowshuff</link>
+ </member>
+ <member>
+ <link linkend="det">det</link>
+ </member>
+ <member>
+ <link linkend="invr">invr</link>
+ </member>
+ <member>
+ <link linkend="coffg">coffg</link>
+ </member>
+ <member>
+ <link linkend="pencan">pencan</link>
+ </member>
+ <member>
+ <link linkend="penlaur">penlaur</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/pencil/kroneck.xml b/modules/linear_algebra/help/en_US/pencil/kroneck.xml
new file mode 100755
index 000000000..68488e0e7
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/pencil/kroneck.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="kroneck">
+ <refnamediv>
+ <refname>kroneck</refname>
+ <refpurpose>Kronecker form of matrix pencil</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(F)
+ [Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(E,A)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>F</term>
+ <listitem>
+ <para>
+ real matrix pencil <literal>F=s*E-A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E,A</term>
+ <listitem>
+ <para>two real matrices of same dimensions</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q,Z</term>
+ <listitem>
+ <para>two square orthogonal matrices</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Qd,Zd</term>
+ <listitem>
+ <para>two vectors of integers</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>numbeps,numeta</term>
+ <listitem>
+ <para>two vectors of integers</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Kronecker form of matrix pencil: <literal>kroneck</literal> computes two
+ orthogonal matrices <literal>Q, Z</literal> which put the pencil <literal>F=s*E -A</literal> into
+ upper-triangular form:
+ </para>
+ <programlisting role=""><![CDATA[
+ | sE(eps)-A(eps) | X | X | X |
+ |----------------|----------------|------------|---------------|
+ | O | sE(inf)-A(inf) | X | X |
+Q(sE-A)Z = |---------------------------------|----------------------------|
+ | | | | |
+ | 0 | 0 | sE(f)-A(f) | X |
+ |--------------------------------------------------------------|
+ | | | | |
+ | 0 | 0 | 0 | sE(eta)-A(eta)|
+ ]]></programlisting>
+ <para>
+ The dimensions of the four blocks are given by:
+ </para>
+ <para>
+ <literal>eps=Qd(1) x Zd(1)</literal>, <literal>inf=Qd(2) x Zd(2)</literal>,
+ <literal>f = Qd(3) x Zd(3)</literal>, <literal>eta=Qd(4)xZd(4)</literal>
+ </para>
+ <para>
+ The <literal>inf</literal> block contains the infinite modes of
+ the pencil.
+ </para>
+ <para>
+ The <literal>f</literal> block contains the finite modes of
+ the pencil
+ </para>
+ <para>
+ The structure of epsilon and eta blocks are given by:
+ </para>
+ <para>
+ <literal>numbeps(1)</literal> = <literal>#</literal> of eps blocks of size 0 x 1
+ </para>
+ <para>
+ <literal>numbeps(2)</literal> = <literal>#</literal> of eps blocks of size 1 x 2
+ </para>
+ <para>
+ <literal>numbeps(3)</literal> = <literal>#</literal> of eps blocks of size 2 x 3 etc...
+ </para>
+ <para>
+ <literal>numbeta(1)</literal> = <literal>#</literal> of eta blocks of size 1 x 0
+ </para>
+ <para>
+ <literal>numbeta(2)</literal> = <literal>#</literal> of eta blocks of size 2 x 1
+ </para>
+ <para>
+ <literal>numbeta(3)</literal> = <literal>#</literal> of eta blocks of size 3 x 2 etc...
+ </para>
+ <para>
+ The code is taken from T. Beelen (Slicot-WGS group).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+F=randpencil([1,1,2],[2,3],[-1,3,1],[0,3]);
+Q=rand(17,17);Z=rand(18,18);F=Q*F*Z;
+//random pencil with eps1=1,eps2=1,eps3=1; 2 J-blocks @ infty
+//with dimensions 2 and 3
+//3 finite eigenvalues at -1,3,1 and eta1=0,eta2=3
+[Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(F);
+[Qd(1),Zd(1)] //eps. part is sum(epsi) x (sum(epsi) + number of epsi)
+[Qd(2),Zd(2)] //infinity part
+[Qd(3),Zd(3)] //finite part
+[Qd(4),Zd(4)] //eta part is (sum(etai) + number(eta1)) x sum(etai)
+numbeps
+numbeta
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="gschur">gschur</link>
+ </member>
+ <member>
+ <link linkend="gspec">gspec</link>
+ </member>
+ <member>
+ <link linkend="systmat">systmat</link>
+ </member>
+ <member>
+ <link linkend="pencan">pencan</link>
+ </member>
+ <member>
+ <link linkend="randpencil">randpencil</link>
+ </member>
+ <member>
+ <link linkend="trzeros">trzeros</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/pencil/lyap.xml b/modules/linear_algebra/help/en_US/pencil/lyap.xml
new file mode 100755
index 000000000..46874bc8e
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/pencil/lyap.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="lyap">
+ <refnamediv>
+ <refname>lyap</refname>
+ <refpurpose>Lyapunov equation</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[X]=lyap(A,C,'c')
+ [X]=lyap(A,C,'d')
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A, C</term>
+ <listitem>
+ <para>
+ real square matrices, <literal>C</literal> must be symmetric
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>X= lyap(A,C,flag)</literal> solves the continuous time or
+ discrete time matrix Lyapunov matrix equation:
+ </para>
+ <programlisting role=""><![CDATA[
+A'*X + X*A = C ( flag='c' )
+A'*X*A - X = C ( flag='d' )
+ ]]></programlisting>
+ <para>
+ <note>
+ Note that a unique solution exist if and only if an eigenvalue of <literal>A</literal> is
+ not an eigenvalue of <literal>-A</literal> (<literal>flag='c'</literal>) or 1 over an eigenvalue of <literal>A</literal>
+ (<literal>flag='d'</literal>).
+ </note>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(4,4);C=rand(A);C=C+C';
+X=lyap(A,C,'c');
+A'*X + X*A -C
+X=lyap(A,C,'d');
+A'*X*A - X -C
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="sylv">sylv</link>
+ </member>
+ <member>
+ <link linkend="ctr_gram">ctr_gram</link>
+ </member>
+ <member>
+ <link linkend="obs_gram">obs_gram</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/pencil/pencan.xml b/modules/linear_algebra/help/en_US/pencil/pencan.xml
new file mode 100755
index 000000000..77a19a64e
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/pencil/pencan.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="pencan">
+ <refnamediv>
+ <refname>pencan</refname>
+ <refpurpose>canonical form of matrix pencil</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Q,M,i1]=pencan(Fs)
+ [Q,M,i1]=pencan(E,A)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>Fs</term>
+ <listitem>
+ <para>
+ a regular pencil <literal>s*E-A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E,A</term>
+ <listitem>
+ <para>two real square matrices</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q,M</term>
+ <listitem>
+ <para>two non-singular real matrices</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i1</term>
+ <listitem>
+ <para>integer</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Given the regular pencil <literal>Fs=s*E-A</literal>, <literal>pencan</literal> returns matrices <literal>Q</literal>
+ and <literal>M</literal>
+ such than <literal>M*(s*E-A)*Q</literal> is in "canonical" form.
+ </para>
+ <para>
+ <literal>M*E*Q</literal> is a block matrix
+ </para>
+ <programlisting role=""><![CDATA[
+[I,0;
+ 0,N]
+ ]]></programlisting>
+ <para>
+ with <literal>N</literal> nilpotent and <literal>i1</literal> = size of the <literal>I</literal> matrix above.
+ </para>
+ <para>
+ <literal>M*A*Q</literal> is a block matrix:
+ </para>
+ <programlisting role=""><![CDATA[
+[Ar,0;
+ 0,I]
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+F=randpencil([],[1,2],[1,2,3],[]);
+F=rand(6,6)*F*rand(6,6);
+[Q,M,i1]=pencan(F);
+W=clean(M*F*Q)
+roots(det(W(1:i1,1:i1)))
+det(W($-2:$,$-2:$))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="glever">glever</link>
+ </member>
+ <member>
+ <link linkend="penlaur">penlaur</link>
+ </member>
+ <member>
+ <link linkend="rowshuff">rowshuff</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/pencil/penlaur.xml b/modules/linear_algebra/help/en_US/pencil/penlaur.xml
new file mode 100755
index 000000000..00392641b
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/pencil/penlaur.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="penlaur">
+ <refnamediv>
+ <refname>penlaur</refname>
+ <refpurpose>Laurent coefficients of matrix pencil</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Si,Pi,Di,order]=penlaur(Fs)
+ [Si,Pi,Di,order]=penlaur(E,A)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>Fs</term>
+ <listitem>
+ <para>
+ a regular pencil <literal>s*E-A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E, A</term>
+ <listitem>
+ <para>two real square matrices</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Si,Pi,Di</term>
+ <listitem>
+ <para>three real square matrices</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>order</term>
+ <listitem>
+ <para>integer</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>penlaur</literal> computes the first Laurent coefficients of <literal>(s*E-A)^-1</literal> at
+ infinity.
+ </para>
+ <para>
+ <literal>(s*E-A)^-1 = ... + Si/s - Pi - s*Di + ...</literal> at <literal>s</literal> = infinity.
+ </para>
+ <para>
+ <literal>order</literal> = order of the singularity (order=index-1).
+ </para>
+ <para>
+ The matrix pencil <literal>Fs=s*E-A</literal> should be invertible.
+ </para>
+ <para>
+ For a index-zero pencil, <literal>Pi, Di,...</literal> are zero and <literal>Si=inv(E)</literal>.
+ </para>
+ <para>
+ For a index-one pencil (order=0),<literal>Di</literal> =0.
+ </para>
+ <para>
+ For higher-index pencils, the terms <literal> -s^2 Di(2), -s^3 Di(3),... </literal> are given by:
+ </para>
+ <para>
+ <literal> Di(2)=Di*A*Di</literal>, <literal> Di(3)=Di*A*Di*A*Di</literal> (up
+ to <literal>Di(order)</literal>).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Remark</title>
+ <para>
+ Experimental version: troubles when bad conditioning of <literal>so*E-A</literal>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+F=randpencil([],[1,2],[1,2,3],[]);
+F=rand(6,6)*F*rand(6,6);[E,A]=pen2ea(F);
+[Si,Pi,Di]=penlaur(F);
+[Bfs,Bis,chis]=glever(F);
+norm(coeff(Bis,1)-Di,1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="glever">glever</link>
+ </member>
+ <member>
+ <link linkend="pencan">pencan</link>
+ </member>
+ <member>
+ <link linkend="rowshuff">rowshuff</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/pencil/quaskro.xml b/modules/linear_algebra/help/en_US/pencil/quaskro.xml
new file mode 100755
index 000000000..d16e81dcd
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/pencil/quaskro.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="quaskro">
+ <refnamediv>
+ <refname>quaskro</refname>
+ <refpurpose>quasi-Kronecker form</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(F)
+ [Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(E,A)
+ [Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(F,tol)
+ [Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(E,A,tol)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>F</term>
+ <listitem>
+ <para>
+ real matrix pencil <literal>F=s*E-A</literal> (<literal>s=poly(0,'s')</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E,A</term>
+ <listitem>
+ <para>two real matrices of same dimensions</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>a real number (tolerance, default value=1.d-10)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q,Z</term>
+ <listitem>
+ <para>two square orthogonal matrices</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Qd,Zd</term>
+ <listitem>
+ <para>two vectors of integers</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>numbeps</term>
+ <listitem>
+ <para>vector of integers</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Quasi-Kronecker form of matrix pencil: <literal>quaskro</literal> computes two
+ orthogonal matrices <literal>Q, Z</literal> which put the pencil <literal>F=s*E -A</literal> into
+ upper-triangular form:
+ </para>
+ <programlisting role=""><![CDATA[
+ | sE(eps)-A(eps) | X | X |
+ |----------------|----------------|------------|
+ | O | sE(inf)-A(inf) | X |
+Q(sE-A)Z = |=================================|============|
+ | | |
+ | O | sE(r)-A(r) |
+ ]]></programlisting>
+ <para>
+ The dimensions of the blocks are given by:
+ </para>
+ <para>
+ <literal>eps=Qd(1) x Zd(1)</literal>, <literal>inf=Qd(2) x Zd(2)</literal>,
+ <literal>r = Qd(3) x Zd(3)</literal>
+ </para>
+ <para>
+ The <literal>inf</literal> block contains the infinite modes of
+ the pencil.
+ </para>
+ <para>
+ The <literal>f</literal> block contains the finite modes of
+ the pencil
+ </para>
+ <para>
+ The structure of epsilon blocks are given by:
+ </para>
+ <para>
+ <literal>numbeps(1)</literal> = <literal>#</literal> of eps blocks of size 0 x 1
+ </para>
+ <para>
+ <literal>numbeps(2)</literal> = <literal>#</literal> of eps blocks of size 1 x 2
+ </para>
+ <para>
+ <literal>numbeps(3)</literal> = <literal>#</literal> of eps blocks of size 2 x 3 etc...
+ </para>
+ <para>
+ The complete (four blocks) Kronecker form is given by
+ the function <literal>kroneck</literal> which calls <literal>quaskro</literal> on
+ the (pertransposed) pencil <literal>sE(r)-A(r)</literal>.
+ </para>
+ <para>
+ The code is taken from T. Beelen
+ </para>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="kroneck">kroneck</link>
+ </member>
+ <member>
+ <link linkend="gschur">gschur</link>
+ </member>
+ <member>
+ <link linkend="gspec">gspec</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/pencil/randpencil.xml b/modules/linear_algebra/help/en_US/pencil/randpencil.xml
new file mode 100755
index 000000000..c60dd7a9a
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/pencil/randpencil.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="randpencil">
+ <refnamediv>
+ <refname>randpencil</refname>
+ <refpurpose>random pencil</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>F=randpencil(eps,infi,fin,eta)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>eps</term>
+ <listitem>
+ <para>vector of integers</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>infi</term>
+ <listitem>
+ <para>vector of integers</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>fin</term>
+ <listitem>
+ <para>real vector, or monic polynomial, or vector of monic polynomial</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>eta</term>
+ <listitem>
+ <para>vector of integers</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>F</term>
+ <listitem>
+ <para>
+ real matrix pencil <literal>F=s*E-A</literal> (<literal>s=poly(0,'s')</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Utility function.
+ <literal>F=randpencil(eps,infi,fin,eta)</literal> returns a random pencil <literal>F</literal>
+ with given Kronecker structure. The structure is given by:
+ <literal>eps=[eps1,...,epsk]</literal>: structure of epsilon blocks (size eps1x(eps1+1),....)
+ <literal>fin=[l1,...,ln]</literal> set of finite eigenvalues (assumed real) (possibly [])
+ <literal>infi=[k1,...,kp]</literal> size of J-blocks at infinity
+ <literal>ki&gt;=1</literal> (infi=[] if no J blocks).
+ <literal>eta=[eta1,...,etap]</literal>: structure ofeta blocks (size eta1+1)xeta1,...)
+ </para>
+ <para>
+ <literal>epsi</literal>'s should be &gt;=0, <literal>etai</literal>'s should be &gt;=0, <literal>infi</literal>'s should
+ be &gt;=1.
+ </para>
+ <para>
+ If <literal>fin</literal> is a (monic) polynomial, the finite block admits the roots of
+ <literal>fin</literal> as eigenvalues.
+ </para>
+ <para>
+ If <literal>fin</literal> is a vector of polynomial, they are the finite elementary
+ divisors of <literal>F</literal> i.e. the roots of <literal>p(i)</literal> are finite
+ eigenvalues of <literal>F</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+F=randpencil([0,1],[2],[-1,0,1],[3]);
+[Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(F);
+Qd, Zd
+s=poly(0,'s');
+F=randpencil([],[1,2],s^3-2,[]); //regular pencil
+det(F)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="kroneck">kroneck</link>
+ </member>
+ <member>
+ <link linkend="pencan">pencan</link>
+ </member>
+ <member>
+ <link linkend="penlaur">penlaur</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/pencil/rowshuff.xml b/modules/linear_algebra/help/en_US/pencil/rowshuff.xml
new file mode 100755
index 000000000..713c0a70f
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/pencil/rowshuff.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="rowshuff">
+ <refnamediv>
+ <refname>rowshuff</refname>
+ <refpurpose>shuffle algorithm</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Ws,Fs1]=rowshuff(Fs, [alfa])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>Fs</term>
+ <listitem>
+ <para>
+ square real pencil <literal>Fs = s*E-A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Ws</term>
+ <listitem>
+ <para>polynomial matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Fs1</term>
+ <listitem>
+ <para>
+ square real pencil <literal>F1s = s*E1 -A1</literal> with <literal>E1</literal> non-singular
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>alfa</term>
+ <listitem>
+ <para>
+ real number (<literal>alfa = 0</literal> is the default value)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Shuffle algorithm: Given the pencil <literal>Fs=s*E-A</literal>, returns Ws=W(s)
+ (square polynomial matrix) such that:
+ </para>
+ <para>
+ <literal> Fs1 = s*E1-A1 = W(s)*(s*E-A) </literal> is a pencil with non singular <literal>E1</literal> matrix.
+ </para>
+ <para>
+ This is possible iff the pencil <literal>Fs = s*E-A</literal> is regular (i.e. invertible).
+ The degree of <literal>Ws</literal> is equal to the index of the pencil.
+ </para>
+ <para>
+ The poles at infinity of <literal>Fs</literal> are put to <literal>alfa</literal> and the zeros of <literal>Ws</literal> are at <literal>alfa</literal>.
+ </para>
+ <para>
+ Note that <literal>(s*E-A)^-1 = (s*E1-A1)^-1 * W(s) = (W(s)*(s*E-A))^-1 *W(s)</literal>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+F=randpencil([],[2],[1,2,3],[]);
+F=rand(5,5)*F*rand(5,5); // 5 x 5 regular pencil with 3 evals at 1,2,3
+[Ws,F1]=rowshuff(F,-1);
+[E1,A1]=pen2ea(F1);
+svd(E1) //E1 non singular
+roots(det(Ws))
+clean(inv(F)-inv(F1)*Ws,1.d-7)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="pencan">pencan</link>
+ </member>
+ <member>
+ <link linkend="glever">glever</link>
+ </member>
+ <member>
+ <link linkend="penlaur">penlaur</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/pencil/sylv.xml b/modules/linear_algebra/help/en_US/pencil/sylv.xml
new file mode 100755
index 000000000..4b6d85939
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/pencil/sylv.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="sylv">
+ <refnamediv>
+ <refname>sylv</refname>
+ <refpurpose>Sylvester equation.</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>sylv(A, B, C, flag)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A,B,C</term>
+ <listitem>
+ <para>three real matrices of appropriate dimensions.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ character string (<literal>'c'</literal> or <literal>'d'</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>X= sylv(A, B, C, 'c')</literal> computes <literal>X</literal>, solution
+ of the "continuous time" Sylvester equation
+ </para>
+ <programlisting role=""><![CDATA[
+A*X+X*B = C
+ ]]></programlisting>
+ <para>
+ <literal>X=sylv(A, B, C, 'd')</literal> computes <literal>X</literal>, solution
+ of the modified "discrete time" Sylvester equation
+ </para>
+ <programlisting role=""><![CDATA[
+A*X*B+X = C
+ ]]></programlisting>
+ <para>
+ <literal>X=-sylv(-A, B, C, 'd')</literal> computes <literal>X</literal>, solution
+ of the real "discrete time" Sylvester equation
+ </para>
+ <programlisting role=""><![CDATA[
+A*X*B-X = C
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+// Continuous time Sylvester equation:
+A = rand(4, 4); C = rand(4, 3); B = rand(3, 3);
+X = sylv(A, B, C, 'c');
+norm(A*X+X*B-C)
+
+// Modified Discrete time Sylvester equation:
+X = sylv(A, B, C, 'd');
+norm(A*X*B+X-C)
+
+// Real Discrete time Sylvester equation:
+X = -sylv(-A, B, C, 'd');
+norm(A*X*B-X-C)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="lyap">lyap</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/proj.xml b/modules/linear_algebra/help/en_US/proj.xml
new file mode 100755
index 000000000..0797774a1
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/proj.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="proj">
+ <refnamediv>
+ <refname>proj</refname>
+ <refpurpose>projection</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>P = proj(X1,X2)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>X1,X2</term>
+ <listitem>
+ <para>two real matrices with equal number of columns</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>P</term>
+ <listitem>
+ <para>
+ real projection matrix (<literal>P^2=P</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>P</literal> is the projection on <literal>X2</literal> parallel to <literal>X1</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+X1=rand(5,2);X2=rand(5,3);
+P=proj(X1,X2);
+norm(P^2-P,1)
+trace(P) // This is dim(X2)
+[Q,M]=fullrf(P);
+svd([Q,X2]) // span(Q) = span(X2)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="projspec">projspec</link>
+ </member>
+ <member>
+ <link linkend="orth">orth</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/state_space/CHAPTER b/modules/linear_algebra/help/en_US/state_space/CHAPTER
new file mode 100755
index 000000000..a0b62cdee
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/state_space/CHAPTER
@@ -0,0 +1,2 @@
+title = State-Space Matrices
+
diff --git a/modules/linear_algebra/help/en_US/state_space/coff.xml b/modules/linear_algebra/help/en_US/state_space/coff.xml
new file mode 100755
index 000000000..2944ddac1
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/state_space/coff.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="coff">
+ <refnamediv>
+ <refname>coff</refname>
+ <refpurpose>resolvent (cofactor method) </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[N,d]=coff(M [,var])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>M</term>
+ <listitem>
+ <para>square real matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>var</term>
+ <listitem>
+ <para>character string</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>N</term>
+ <listitem>
+ <para>
+ polynomial matrix (same size as <literal>M</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d</term>
+ <listitem>
+ <para>
+ polynomial (characteristic polynomial <literal>poly(A,'s')</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>coff</literal> computes R=<literal>(s*eye()-M)^-1</literal> for <literal>M</literal> a real matrix.
+ R is given by <literal>N/d</literal>.
+ </para>
+ <para>
+ <literal>N</literal> = numerator polynomial matrix.
+ </para>
+ <para>
+ <literal>d</literal> = common denominator.
+ </para>
+ <para>
+ <literal>var</literal> character string ('<literal>s</literal>' if omitted)
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+M=[1,2;0,3];
+[N,d]=coff(M)
+N/d
+inv(%s*eye()-M)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="coffg">coffg</link>
+ </member>
+ <member>
+ <link linkend="ss2tf">ss2tf</link>
+ </member>
+ <member>
+ <link linkend="nlev">nlev</link>
+ </member>
+ <member>
+ <link linkend="poly">poly</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/state_space/nlev.xml b/modules/linear_algebra/help/en_US/state_space/nlev.xml
new file mode 100755
index 000000000..5d8bd89ad
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/state_space/nlev.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="nlev">
+ <refnamediv>
+ <refname>nlev</refname>
+ <refpurpose>Leverrier's algorithm</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[num,den]=nlev(A,z [,rmax])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>real square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>z</term>
+ <listitem>
+ <para>character string</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rmax</term>
+ <listitem>
+ <para>
+ optional parameter (see <literal>bdiag</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>[num,den]=nlev(A,z [,rmax])</literal> computes
+ <literal>(z*eye()-A)^(-1)</literal>
+ </para>
+ <para>
+ by block diagonalization of A followed by Leverrier's algorithm
+ on each block.
+ </para>
+ <para>
+ This algorithm is better than the usual leverrier algorithm but
+ still not perfect!
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);x=poly(0,'x');
+[NUM,den]=nlev(A,'x')
+clean(den-poly(A,'x'))
+clean(NUM/den-inv(x*eye()-A))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="coff">coff</link>
+ </member>
+ <member>
+ <link linkend="coffg">coffg</link>
+ </member>
+ <member>
+ <link linkend="glever">glever</link>
+ </member>
+ <member>
+ <link linkend="ss2tf">ss2tf</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/subspaces/CHAPTER b/modules/linear_algebra/help/en_US/subspaces/CHAPTER
new file mode 100755
index 000000000..d87d9ca5e
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/subspaces/CHAPTER
@@ -0,0 +1,3 @@
+title = Subspaces
+
+
diff --git a/modules/linear_algebra/help/en_US/subspaces/spaninter.xml b/modules/linear_algebra/help/en_US/subspaces/spaninter.xml
new file mode 100755
index 000000000..650b9dba2
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/subspaces/spaninter.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="spaninter">
+ <refnamediv>
+ <refname>spaninter</refname>
+ <refpurpose>subspace intersection</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[X,dim]=spaninter(A,B [,tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A, B</term>
+ <listitem>
+ <para>two real or complex matrices with equal number of rows</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>orthogonal or unitary square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dim</term>
+ <listitem>
+ <para>
+ integer, dimension of subspace range(<literal>A</literal>) inter range(<literal>B</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ computes the intersection of range(<literal>A</literal>) and range(<literal>B</literal>).
+ </para>
+ <para>
+ The first <literal>dim</literal> columns of <literal>X</literal> span this intersection i.e.
+ <literal>X(:,1:dim)</literal> is an orthogonal basis for
+ </para>
+ <para>
+ range(<literal>A</literal>) inter range(<literal>B</literal>)
+ </para>
+ <para>
+ In the <literal>X</literal> basis <literal>A</literal> and <literal>B</literal> are respectively represented by:
+ </para>
+ <para>
+ <literal>X'*A</literal> and <literal>X'*B</literal>.
+ </para>
+ <para>
+ <literal>tol</literal> is a threshold (<literal>sqrt(%eps)</literal> is the default value).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,3)*rand(3,4); // A is 5 x 4, rank=3
+B=[A(:,2),rand(5,1)]*rand(2,2);
+[X,dim]=spaninter(A,B);
+X1=X(:,1:dim); //The intersection
+svd(A),svd([X1,A]) // X1 in span(A)
+svd(B),svd([B,X1]) // X1 in span(B)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spanplus">spanplus</link>
+ </member>
+ <member>
+ <link linkend="spantwo">spantwo</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/subspaces/spanplus.xml b/modules/linear_algebra/help/en_US/subspaces/spanplus.xml
new file mode 100755
index 000000000..276ccdb50
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/subspaces/spanplus.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="spanplus">
+ <refnamediv>
+ <refname>spanplus</refname>
+ <refpurpose>sum of subspaces</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[X,dim,dima]=spanplus(A,B[,tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A, B</term>
+ <listitem>
+ <para>two real or complex matrices with equal number of rows</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>orthogonal or unitary square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dim, dima</term>
+ <listitem>
+ <para>integers, dimension of subspaces</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>nonnegative real number</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ computes a basis X such that:
+ </para>
+ <para>
+ the first <literal>dima</literal> columns of <literal>X</literal> span Range(<literal>A</literal>)
+ and the following (<literal>dim-dima</literal>) columns make a basis of <literal>A+B</literal>
+ relative to <literal>A</literal>.
+ </para>
+ <para>
+ The <literal>dim</literal> first columns of <literal>X</literal> make a basis for <literal>A+B</literal>.
+ </para>
+ <para>
+ One has the following canonical form for <literal>[A,B]</literal>:
+ </para>
+ <programlisting role=""><![CDATA[
+ [*,*] (dima rows)
+X'*[A,B]=[0,*] (dim-dima rows)
+ [0,0]
+ ]]></programlisting>
+ <para>
+ <literal>tol</literal> is an optional argument (see function code).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(6,2)*rand(2,5); // rank(A)=2
+B=[A(:,1),rand(6,2)]*rand(3,3); //two additional independent vectors
+[X,dim,dimA]=spanplus(A,B);
+dimA
+dim
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spaninter">spaninter</link>
+ </member>
+ <member>
+ <link linkend="im_inv">im_inv</link>
+ </member>
+ <member>
+ <link linkend="spantwo">spantwo</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/en_US/subspaces/spantwo.xml b/modules/linear_algebra/help/en_US/subspaces/spantwo.xml
new file mode 100755
index 000000000..7be745d6d
--- /dev/null
+++ b/modules/linear_algebra/help/en_US/subspaces/spantwo.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="spantwo">
+ <refnamediv>
+ <refname>spantwo</refname>
+ <refpurpose>sum and intersection of subspaces</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Xp,dima,dimb,dim]=spantwo(A,B, [tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A, B</term>
+ <listitem>
+ <para>two real or complex matrices with equal number of rows</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Xp</term>
+ <listitem>
+ <para>square non-singular matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dima, dimb, dim</term>
+ <listitem>
+ <para>integers, dimension of subspaces</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>nonnegative real number</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Given two matrices <literal>A</literal> and <literal>B</literal> with same number of rows,
+ returns a square matrix <literal>Xp</literal> (non singular but not necessarily orthogonal)
+ such that :
+ </para>
+ <programlisting role=""><![CDATA[
+ [A1, 0] (dim-dimb rows)
+Xp*[A,B]=[A2,B2] (dima+dimb-dim rows)
+ [0, B3] (dim-dima rows)
+ [0 , 0]
+ ]]></programlisting>
+ <para>
+ The first <literal>dima</literal> columns of <literal>inv(Xp)</literal> span range(<literal>A</literal>).
+ </para>
+ <para>
+ Columns <literal>dim-dimb+1</literal> to <literal>dima</literal> of <literal>inv(Xp)</literal> span the
+ intersection of range(A) and range(B).
+ </para>
+ <para>
+ The <literal>dim</literal> first columns of <literal>inv(Xp)</literal> span
+ range(<literal>A</literal>)+range(<literal>B</literal>).
+ </para>
+ <para>
+ Columns <literal>dim-dimb+1</literal> to <literal>dim</literal> of <literal>inv(Xp)</literal> span
+ range(<literal>B</literal>).
+ </para>
+ <para>
+ Matrix <literal>[A1;A2]</literal> has full row rank (=rank(A)). Matrix <literal>[B2;B3]</literal> has
+ full row rank (=rank(B)). Matrix <literal>[A2,B2]</literal> has full row rank (=rank(A inter B)). Matrix <literal>[A1,0;A2,B2;0,B3]</literal> has full row rank (=rank(A+B)).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=[1,0,0,4;
+ 5,6,7,8;
+ 0,0,11,12;
+ 0,0,0,16];
+B=[1,2,0,0]';C=[4,0,0,1];
+Sl=ss2ss(syslin('c',A,B,C),rand(A));
+[no,X]=contr(Sl('A'),Sl('B'));CO=X(:,1:no); //Controllable part
+[uo,Y]=unobs(Sl('A'),Sl('C'));UO=Y(:,1:uo); //Unobservable part
+[Xp,dimc,dimu,dim]=spantwo(CO,UO); //Kalman decomposition
+Slcan=ss2ss(Sl,inv(Xp));
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spanplus">spanplus</link>
+ </member>
+ <member>
+ <link linkend="spaninter">spaninter</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/addchapter.sce b/modules/linear_algebra/help/fr_FR/addchapter.sce
new file mode 100755
index 000000000..6da99e965
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/addchapter.sce
@@ -0,0 +1,11 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+add_help_chapter("Algèbre Lineaire",SCI+"/modules/linear_algebra/help/fr_FR",%T);
+
diff --git a/modules/linear_algebra/help/fr_FR/eigen/CHAPTER b/modules/linear_algebra/help/fr_FR/eigen/CHAPTER
new file mode 100755
index 000000000..88f8bc42b
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/eigen/CHAPTER
@@ -0,0 +1,2 @@
+title = Eigenvalue and Singular Value
+
diff --git a/modules/linear_algebra/help/fr_FR/eigen/bdiag.xml b/modules/linear_algebra/help/fr_FR/eigen/bdiag.xml
new file mode 100755
index 000000000..a7dc9f342
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/eigen/bdiag.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="bdiag">
+ <refnamediv>
+ <refname>bdiag</refname>
+ <refpurpose>bloc-diagonalisation, vecteurs propres généralisés </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[Ab [,X [,bs]]]=bdiag(A [,rmax])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice carrée réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rmax </term>
+ <listitem>
+ <para>nombre réel
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Ab </term>
+ <listitem>
+ <para>matrice carrée réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X </term>
+ <listitem>
+ <para>matrice régulière, réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>bs </term>
+ <listitem>
+ <para>vecteur d'entiers
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <programlisting role=""><![CDATA[
+[Ab [,X [,bs]]]=bdiag(A [,rmax])
+ ]]></programlisting>
+ <para>
+ <literal>[Ab [,X [,bs]]]=bdiag(A [,rmax])</literal> calcule la forme
+ bloc-diagonale de <literal>A</literal>. bs précise la structure des
+ blocs (tailles respectives des blocs). <literal>X</literal> est la
+ matrice de changement de base, c'est à dire que <literal>Ab =
+ inv(X)*A*X
+ </literal>
+ est bloc-diagonale.
+ </para>
+ <para>
+ <literal>rmax</literal> contrôle le conditionnement de <literal>X</literal>;
+ la valeur par défaut est la norme l1 de <literal>A</literal>.
+ </para>
+ <para>
+ Pour obtenir une forme diagonale (si celle-ci existe) choisissez
+ une valeur élevée de <literal>rmax</literal> (<literal>rmax=1/%eps</literal>
+ par exemple). Pour une matrice réelle quelconque, les blocs sont
+ de taille (1x1) ou (2x2) et <literal>X</literal> est la matrice des
+ vecteurs propres.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+// Cas réel: blocs 1x1 et 2x2
+a=rand(5,5);[ab,x,bs]=bdiag(a);ab
+// Cas complexe : blocs complexes 1x1
+[ab,x,bs]=bdiag(a+%i*0);ab
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ <member>
+ <link linkend="sylv">sylv</link>
+ </member>
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/eigen/gspec.xml b/modules/linear_algebra/help/fr_FR/eigen/gspec.xml
new file mode 100755
index 000000000..d7e856080
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/eigen/gspec.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="gspec">
+ <refnamediv>
+ <refname>gspec</refname>
+ <refpurpose>valeurs propres d'un faisceau de matrices (obsolete) </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[al,be]=gspec(A,E)
+ [al,be,Z]=gspec(A,E)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A, E </term>
+ <listitem>
+ <para>matrices carrées réelles de mêmes dimensions
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>al, be </term>
+ <listitem>
+ <para>vecteurs réels
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Z </term>
+ <listitem>
+ <para>matrice carrée régulière
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Cette fonction est maintenant un cas particulier de la fonction
+ <literal>spec</literal>. La syntaxe d'appel doit être remplacée par
+ </para>
+ <programlisting role=""><![CDATA[
+[al,be]=spec(A,E)
+[al,be,Z]=spec(A,E)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/eigen/hess.xml b/modules/linear_algebra/help/fr_FR/eigen/hess.xml
new file mode 100755
index 000000000..6ae439c64
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/eigen/hess.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="hess">
+ <refnamediv>
+ <refname>hess</refname>
+ <refpurpose>Forme de Hessenberg </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>H = hess(A)
+ [U,H] = hess(A)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice carrée réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>H </term>
+ <listitem>
+ <para>matrice carrée réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>U </term>
+ <listitem>
+ <para>matrice carrée unitaire
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>[U,H] = hess(A)</literal> Calcule une matrice unitaire <literal>U</literal>
+ et une matrice de Hessenberg <literal>H</literal> telles que <literal>A =
+ U*H*U'
+ </literal>
+ et <literal>U'*U</literal> = Identité. La syntaxe
+ <literal>H=hess(A)</literal> ne renvoie que la matrice de Hessenberg.
+ </para>
+ <para>
+ Les coefficients d'une matrice sous forme de Hessenberg sont nuls
+ sous la première sous-diagonale. Si la matrice est symétrique ou
+ hermitienne, la forme est tridiagonale.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);[U,H]=hess(A);
+and( abs(U*H*U'-A)<1.d-10 )
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="contr">contr</link>
+ </member>
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Fonctions Utilisées</title>
+ <para>
+ Le calcul de la forme de Hessenberg determinant est basé sur les routines Lapack :
+ DGEHRD, DORGHR pour les matrices réelles et ZGEHRD, ZORGHR pour le cas complexe.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/eigen/pbig.xml b/modules/linear_algebra/help/fr_FR/eigen/pbig.xml
new file mode 100755
index 000000000..724cf59f4
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/eigen/pbig.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="pbig">
+ <refnamediv>
+ <refname>pbig</refname>
+ <refpurpose>projection sur des sous-espaces propres </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[Q,M]=pbig(A,thres,flag)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice réelle carrée
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>thres </term>
+ <listitem>
+ <para>nombre réel
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag </term>
+ <listitem>
+ <para>
+ chaîne de caractères (<literal>'c'</literal> ou <literal>'d'</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q,M </term>
+ <listitem>
+ <para>matrices réelles
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Projection sur des sous-espaces propres de A associés aux valeurs
+ propres avec partie réelle &gt;= <literal>thres</literal>
+ (<literal>flag='c'</literal>) ou avec module &gt;=
+ <literal>thres</literal> (<literal>flag='d'</literal>).
+ </para>
+ <para>
+ La projection est définie par <literal>Q*M</literal>, où <literal>Q</literal>
+ est de rang maximal, les lignes de <literal>M</literal> sont
+ linéairement indépendantes et <literal>M*Q=eye</literal>.
+ </para>
+ <para>
+ Si <literal>flag='c'</literal>, les valeurs propres de
+ <literal>M*A*Q</literal> = valeurs propres de <literal>A</literal> avec partie
+ réelle &gt;= <literal>thres</literal>.
+ </para>
+ <para>
+ Si <literal>flag='d'</literal>, les valeurs propres de
+ <literal>M*A*Q</literal> = valeurs propres de <literal>A</literal> avec module
+ &gt;= <literal>thres</literal>.
+ </para>
+ <para>
+ Si <literal>flag='c'</literal> et si <literal>[Q1,M1]</literal> =
+ factorisation de rang maximal (<literal>fullrf</literal>) de
+ <literal>eye()-Q*M</literal> alors les valeurs propres de
+ <literal>M1*A*Q1</literal> = valeurs propres de <literal>A</literal> avec
+ partie réelle &lt; <literal>thres</literal>.
+ </para>
+ <para>
+ Si <literal>flag='d'</literal> et si <literal>[Q1,M1]</literal> =
+ factorisation de rang maximal (<literal>fullrf</literal>) de
+ <literal>eye()-Q*M</literal> alors les valeurs propres de
+ <literal>M1*A*Q1</literal> = valeurs propres de <literal>A</literal> avec
+ module &lt; <literal>thres</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=diag([1,2,3]);X=rand(A);A=inv(X)*A*X;
+[Q,M]=pbig(A,1.5,'d');
+spec(M*A*Q)
+[Q1,M1]=fullrf(eye()-Q*M);
+spec(M1*A*Q1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="psmall">psmall</link>
+ </member>
+ <member>
+ <link linkend="projspec">projspec</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Fonctions Utilisées</title>
+ <para>
+ <literal>pbig</literal> est basée sur la forme de Schur ordonnée
+ (fonction Scilab <literal>schur</literal>).
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/eigen/spec.xml b/modules/linear_algebra/help/fr_FR/eigen/spec.xml
new file mode 100755
index 000000000..de3027bc2
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/eigen/spec.xml
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="spec">
+ <refnamediv>
+ <refname>spec</refname>
+ <refpurpose>valeurs propres d'une matrice </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>evals=spec(A)
+ [X,diagevals]=spec(A)
+
+ evals=spec(A,E)
+ [al,be]=spec(A,E)
+ [al,be,Z]=spec(A,E)
+ [al,be]=spec(A,E)
+ [al,be,Q,Z]=spec(A,E)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice carrée réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E </term>
+ <listitem>
+ <para>
+ matrice carrée réelle ou complexe de même dimensions que <literal> A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>evals </term>
+ <listitem>
+ <para>vecteur réel ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>diagevals </term>
+ <listitem>
+ <para> matrice carrée diagonale réelle ou complexe (les éléments
+ diagonaux sont les valeurs propres)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>al </term>
+ <listitem>
+ <para>vecteur réel ou complexe, al./be donnes les valeurs propres
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>be </term>
+ <listitem>
+ <para>vecteur réel ou complexe, al./be donnes les valeurs propres
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X </term>
+ <listitem>
+ <para>matrice carrée inversible réelle ou complexe, matrices des
+ vecteurs propres.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q </term>
+ <listitem>
+ <para>matrice carrée inversible réelle ou complexe, matrices des
+ vecteurs propres à gauche.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Z </term>
+ <listitem>
+ <para>atrice carrée inversible réelle ou complexe, matrices des
+ vecteurs propres à droite.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <variablelist>
+ <varlistentry>
+ <term>spec(A)</term>
+ <listitem>
+ <para>
+ <literal> evals=spec(A)</literal> retourne dans le vecteur
+ <literal>evals</literal> les valeurs propres de <literal>A</literal>.
+ </para>
+ <para>
+ <literal> [evals,X] =spec(A)</literal> retourne de plus les vecteurs
+ propres (s'ils existent). Voir Aussi <literal>bdiag</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>spec(A,B)</term>
+ <listitem>
+ <para>
+ <literal>evals=spec(A,E)</literal> retourne le spectre du faisceau
+ <literal>s E - A</literal>, c'est à dire les racines du déterminant de
+ la matrice de polynômes <literal>s E - A</literal>.
+ </para>
+ <para>
+ <literal>[al,be] = spec(A,E)</literal> retourne le spectre du faisceau
+ <literal>s E - A</literal>, c'est à dire les racines du déterminant de
+ la matrice de polynômes <literal>s E - A</literal>. Les valeurs propres
+ sont données par <literal>al./be</literal>. Si <literal>be(i) = 0</literal> la
+ <literal>i</literal>ième valeur propres est à l'infini. (Pour <literal>E =
+ eye(A), al./be
+ </literal>
+ est <literal>spec(A)</literal>).
+ </para>
+ <para>
+ <literal> [al,be,Z] = spec(A,E)</literal> retourne de plus la matrice
+ <literal>Z</literal> des vecteurs propres généralisés à droite.
+ </para>
+ <para>
+ <literal> [al,be,Q,Z] = spec(A,E)</literal> retourne de plus les matrices
+ <literal>Q</literal> et <literal>Z</literal> des vecteurs propres généralisés à
+ droite et à gauche.
+ </para>
+ <para>Pour les grosses matrices pleines / creuses, vous
+ pouvez utiliser le module Arnoldi.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+// MATRIX EIGENVALUES
+A=diag([1,2,3]);X=rand(3,3);A=inv(X)*A*X;
+spec(A)
+
+x=poly(0,'x');
+pol=det(x*eye()-A)
+roots(pol)
+
+[S,X]=bdiag(A);
+clean(inv(X)*A*X)
+
+// PENCIL EIGENVALUES
+A=rand(3,3);
+[al,be,Z] = spec(A,eye(A));al./be
+clean(inv(Z)*A*Z) //displaying the eigenvalues (generic matrix)
+A=A+%i*rand(A);E=rand(A);
+roots(det(%s*E-A)) //complex case
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="poly">poly</link>
+ </member>
+ <member>
+ <link linkend="det">det</link>
+ </member>
+ <member>
+ <link linkend="gspec">gspec</link>
+ </member>
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ <member>
+ <link linkend="bdiag">bdiag</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="dsaupd">dsaupd</link>
+ </member>
+ <member>
+ <link linkend="dnaupd">dnaupd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Fonctions Utilisées</title>
+ <para>
+ Le calcul des valeurs propres des matrices est basé sur les
+ routines Lapack DGEEV and ZGEEV.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/eigen/sva.xml b/modules/linear_algebra/help/fr_FR/eigen/sva.xml
new file mode 100755
index 000000000..91c66ed91
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/eigen/sva.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="sva">
+ <refnamediv>
+ <refname>sva</refname>
+ <refpurpose>approximation de valeurs singulières </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[U,s,V]=sva(A,k)
+ [U,s,V]=sva(A,tol)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>k </term>
+ <listitem>
+ <para>entier
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol </term>
+ <listitem>
+ <para>nombre réel positif
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Approximation de valeurs singulières.
+ </para>
+ <para>
+ <literal>[U,S,V]=sva(A,k)</literal> avec <literal>k</literal> un entier
+ &gt;=1, renvoie <literal>U,S</literal> et <literal>V</literal> telles que
+ <literal>B=U*S*V'</literal> est la meilleure approximation au sens
+ l_2 de <literal>A</literal> avec rang(<literal>B</literal>)=<literal>k</literal>.
+ </para>
+ <para>
+ <literal>[U,S,V]=sva(A,tol)</literal> où <literal>tol</literal> est un réel
+ positif, renvoie <literal>U,S</literal> et <literal>V</literal> tels que
+ <literal>B=U*S*V'</literal> et la norme l_2 de <literal>A-B</literal> est
+ inférieure à <literal>tol</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,4)*rand(4,5);
+[U,s,V]=sva(A,2);
+B=U*s*V';
+svd(A)
+svd(B)
+clean(svd(A-B))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/eigen/svd.xml b/modules/linear_algebra/help/fr_FR/eigen/svd.xml
new file mode 100755
index 000000000..a78b9dda0
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/eigen/svd.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="svd">
+ <refnamediv>
+ <refname>svd </refname>
+ <refpurpose>décomposition en valeurs singulières </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>s=svd(X)
+ [U,S,V]=svd(X)
+ [U,S,V]=svd(X,0) (obsolete)
+ [U,S,V]=svd(X,"e")
+ [U,S,V,rk]=svd(X [,tol])
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>X </term>
+ <listitem>
+ <para>matrice réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>s </term>
+ <listitem>
+ <para>vecteur réel (valeurs singulières)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>S </term>
+ <listitem>
+ <para>matrice réelle diagonale (valeurs singulières sur la diagonale)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>U,V </term>
+ <listitem>
+ <para>matrices carrées unitaires (vecteurs singuliers).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol </term>
+ <listitem>
+ <para>nombre réel positif
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>[U,S,V]=svd(X)</literal> renvoie une matrice diagonale <literal>S</literal>, de même
+ dimension que <literal>X</literal> avec des éléments diagonaux positifs classés
+ par ordre décroissant, ainsi que deux matrices unitaires <literal>U</literal>
+ et <literal>V</literal> telles que
+ <literal>X = U*S*V'</literal>.<literal>[U,S,V]=svd(X,"e")</literal>
+ renvoie la décomposition réduite : si <literal>X</literal> est une
+ matrice <literal>m x n </literal> et que <literal>m &gt; n </literal> alors
+ seulement les n premières colonnes de <literal>U</literal> sont
+ calculées et <literal>S</literal> est <literal>n x n </literal>.
+ </para>
+ <para>
+ <literal>s=svd(X)</literal> renvoie un vecteur <literal>s</literal> contenant
+ les valeurs singulières.
+ </para>
+ <para>
+ <literal>[U,S,V,rk]=svd(X [,tol])</literal> renvoie de plus
+ <literal>rk</literal>, le rang "numérique" de <literal>X</literal>
+ c'est à dire le nombre de valeurs singulières plus grandes
+ que <literal>tol</literal>.
+ </para>
+ <para>
+ La valeur par défaut de <literal>tol</literal> est la même que pour la fonction <literal>rank</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+X=rand(4,2)*rand(2,4)
+svd(X)
+sqrt(spec(X*X'))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rank">rank</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="sva">sva</link>
+ </member>
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Fonctions Utilisées</title>
+ <para>
+ la décomposition svd est basée sur les routines DGESVD pour les
+ matrices réelles et ZGESVD pour le cas complexe.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/factorization/CHAPTER b/modules/linear_algebra/help/fr_FR/factorization/CHAPTER
new file mode 100755
index 000000000..e6daeb8eb
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/factorization/CHAPTER
@@ -0,0 +1,2 @@
+title = Factorization
+
diff --git a/modules/linear_algebra/help/fr_FR/factorization/givens.xml b/modules/linear_algebra/help/fr_FR/factorization/givens.xml
new file mode 100755
index 000000000..233d0cd94
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/factorization/givens.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="givens">
+ <refnamediv>
+ <refname>givens</refname>
+ <refpurpose>Transformation de Givens </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>U=givens(xy)
+ U=givens(x,y)
+ [U,c]=givens(xy)
+ [U,c]=givens(x,y)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>x,y </term>
+ <listitem>
+ <para>deux nombres réels ou complexes
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>xy </term>
+ <listitem>
+ <para> vecteur colonne réel ou complexe à deux composantes
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>U </term>
+ <listitem>
+ <para>matrice unitaire 2 x 2
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>c </term>
+ <listitem>
+ <para> vecteur colonne réel ou complexe à deux composantes
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>U= givens(x, y)</literal> ou <literal>U = givens(xy)</literal> avec <literal>xy = [x;y]</literal>
+ renvoie <literal>U</literal> une matrice unitaire <literal>2</literal>x<literal>2</literal> telle que :
+ </para>
+ <para>
+ <literal>U*xy=[r;0]=c</literal>.
+ </para>
+ <para>
+ <note>
+ Notez que <literal>givens(x,y)</literal> et <literal>givens([x;y])</literal> sont équivalents.
+ </note>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=[3,4;5,6];
+U=givens(A(:,1));
+U*A
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/factorization/householder.xml b/modules/linear_algebra/help/fr_FR/factorization/householder.xml
new file mode 100755
index 000000000..f81b8b9ad
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/factorization/householder.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="householder">
+ <refnamediv>
+ <refname>householder</refname>
+ <refpurpose>Matrice de Householder </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>u=householder(v [,w])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>v </term>
+ <listitem>
+ <para>vecteur colonne réel ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>w </term>
+ <listitem>
+ <para>
+ vecteur colonne réel ou complexe de même taille que <literal>v</literal> (la valeur par défaut est <literal>eye(v)</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>u </term>
+ <listitem>
+ <para>vecteur colonne réel ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Etant donnés deux vecteurs colonnes <literal>v</literal> et <literal>w</literal> de même taille, <literal>householder(v,w)</literal> renvoie un vecteur normé <literal>u</literal>, tel que
+ <literal>(eye()-2*u*u')*v</literal> est colinéaire à <literal>w</literal>.
+ <literal>(eye()-2*u*u')</literal> est la matrice de la transformation de Householder correspondante.
+ </para>
+ <para>
+ La valeur par défaut de <literal>w</literal> est <literal> eye(v)</literal>. Dans ce cas le vecteur <literal> (eye()-2*u*u')*v</literal> est égal à <literal> eye(v)*norm(v)</literal>.
+ </para>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="givens">givens</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/factorization/sqroot.xml b/modules/linear_algebra/help/fr_FR/factorization/sqroot.xml
new file mode 100755
index 000000000..55f751b12
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/factorization/sqroot.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="sqroot">
+ <refnamediv>
+ <refname>sqroot</refname>
+ <refpurpose>factorisation hermitienne W*W' </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>sqroot(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>X </term>
+ <listitem>
+ <para>matrice complexe ou réelle, symétrique définie non-négative
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ renvoie W telle que <literal>X=W*W'</literal> (en utilisant svd).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+X=rand(5,2)*rand(2,5);X=X*X';
+W=sqroot(X)
+norm(W*W'-X,1)
+
+X=rand(5,2)+%i*rand(5,2);X=X*X';
+W=sqroot(X)
+norm(W*W'-X,1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="chol">chol</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/kernel/CHAPTER b/modules/linear_algebra/help/fr_FR/kernel/CHAPTER
new file mode 100755
index 000000000..be67920e1
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/kernel/CHAPTER
@@ -0,0 +1,2 @@
+title = Kernel
+
diff --git a/modules/linear_algebra/help/fr_FR/kernel/colcomp.xml b/modules/linear_algebra/help/fr_FR/kernel/colcomp.xml
new file mode 100755
index 000000000..4f674ac87
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/kernel/colcomp.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="colcomp">
+ <refnamediv>
+ <refname>colcomp</refname>
+ <refpurpose>compression de colonnes, noyau </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[W,rk]=colcomp(A [,flag] [,tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag </term>
+ <listitem>
+ <para>chaîne de caractères
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol </term>
+ <listitem>
+ <para>nombre réel
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>W </term>
+ <listitem>
+ <para>matrice carré régulière (matrice de changement de base)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk </term>
+ <listitem>
+ <para>
+ entier (rang de"<literal>A</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Compression des colonnes de <literal>A</literal> : <literal>Ac = A*W</literal> est à colonnes compressées, c'est à dire
+ </para>
+ <para>
+ <literal>Ac=[0,Af]</literal> et <literal>Af</literal> est de rang maximal
+ rank(<literal>Af</literal>) = rank(<literal>A</literal>) = <literal>rk</literal>.
+ </para>
+ <para>
+ <literal>flag</literal> et <literal>tol</literal> sont des paramètres optionnels : <literal>flag = 'qr'</literal>
+ ou <literal>'svd'</literal> (<literal>'svd'</literal> par défaut).
+ </para>
+ <para>
+ <literal>tol</literal> = paramètre de tolérance (de l'ordre de <literal>%eps</literal> par défaut).
+ </para>
+ <para>
+ Les <literal>ma-rk</literal> premières colonnes de <literal>W</literal> forment une base du noyau de <literal>A</literal> quand <literal>size(A)=[na,ma]</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,5);
+[X,r]=colcomp(A);
+norm(A*X(:,1:$-r),1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ <member>
+ <link linkend="fullrfk">fullrfk</link>
+ </member>
+ <member>
+ <link linkend="kernel">kernel</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/kernel/fullrf.xml b/modules/linear_algebra/help/fr_FR/kernel/fullrf.xml
new file mode 100755
index 000000000..07b037630
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/kernel/fullrf.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="fullrf">
+ <refnamediv>
+ <refname>fullrf</refname>
+ <refpurpose>factorisation de rang plein </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[Q,M,rk]=fullrf(A,[tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol </term>
+ <listitem>
+ <para>nombre réel (tolérance pour le calcul du rang)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q,M </term>
+ <listitem>
+ <para>matrices réelles ou complexes
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk </term>
+ <listitem>
+ <para>
+ entier (rang de <literal>A</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Cette fonction calcule la factorisation de rang plein de <literal>A</literal> : <literal>fullrf</literal> renvoie <literal>Q</literal> et <literal>M</literal> telles que <literal>A = Q*M</literal>
+ avec Im(<literal>Q</literal>)=Im(<literal>A</literal>) et ker(<literal>M</literal>)=ker(<literal>A</literal>),
+ <literal>Q</literal> de rang maximal, et les lignes de <literal>M</literal> sont linéairement indépendantes,
+ <literal>rk</literal> = rank(<literal>A</literal>) = nombre de colonnes de <literal>Q</literal> = nombre de lignes de <literal>M</literal>.
+ </para>
+ <para>
+ <literal>tol</literal> = paramètre de tolérance (de l'ordre de <literal>%eps</literal> par défaut).
+ Le rang <literal>rk</literal> de <literal>A</literal> est considéré égal au nombre de ses valeurs singulières plus grandes que <literal>norm(A)*tol</literal>.
+ </para>
+ <para>
+ Si A est symétrique, <literal>fullrf</literal> renvoie <literal>M=Q'</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,5);
+[Q,M]=fullrf(A);
+norm(Q*M-A,1)
+[X,d]=rowcomp(A);Y=X';
+svd([A,Y(:,1:d),Q]) // Im(Q) = Im(A) = Im(Y(:,1:2))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="fullrfk">fullrfk</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/kernel/fullrfk.xml b/modules/linear_algebra/help/fr_FR/kernel/fullrfk.xml
new file mode 100755
index 000000000..12336d7bb
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/kernel/fullrfk.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="fullrfk">
+ <refnamediv>
+ <refname>fullrfk</refname>
+ <refpurpose>factorisation de rang plein de A^k </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[Q,M]=fullrfk(A,k)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>k </term>
+ <listitem>
+ <para>entier
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q,M </term>
+ <listitem>
+ <para>matrices réelles ou complexes
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Cette fonction calcule la factorisation de rang plein de <literal>A^k</literal> : <literal>fullrfk</literal> renvoie <literal>Q</literal> et <literal>M</literal> telles que <literal>A^k = Q*M</literal>
+ avec Im(<literal>Q</literal>)=Im(<literal>A^k</literal>) et ker(<literal>M</literal>)=ker(<literal>A^k</literal>),
+ <literal>Q</literal> de rang maximal, et les lignes de <literal>M</literal> sont linéairement indépendantes,
+ </para>
+ <para>
+ Pour <literal>k=1</literal>, <literal>fullrfk</literal> est équivalent à <literal>fullrf</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,5);[Bk,Ck]=fullrfk(A,3);
+norm(Bk*Ck-A^3,1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ <member>
+ <link linkend="range">range</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/kernel/kernel.xml b/modules/linear_algebra/help/fr_FR/kernel/kernel.xml
new file mode 100755
index 000000000..9cf413739
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/kernel/kernel.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="kernel">
+ <refnamediv>
+ <refname>kernel</refname>
+ <refpurpose>noyau</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>W=kernel(A [,tol,[,flag])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice réelle ou complexe (pleine ou creuse)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag </term>
+ <listitem>
+ <para>chaîne de caractères
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol </term>
+ <listitem>
+ <para>nombre réel
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>W </term>
+ <listitem>
+ <para>matrice régulière
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>W=kernel(A)</literal> calcule le noyau de <literal>A</literal>, et <literal>size(W,2)</literal> est la nullité de A.
+ Les colonnes de <literal>W</literal> forment une base du noyau de <literal>A</literal>.
+ Si A est régulière, alors W=[].
+ </para>
+ <para>
+ <literal>flag</literal> et <literal>tol</literal> sont des paramètres optionnels : <literal>flag = 'qr'</literal>
+ or <literal>'svd'</literal> (<literal>'svd'</literal> par défaut).
+ </para>
+ <para>
+ <literal>tol</literal> = paramètre de tolérance (de l'ordre de <literal>%eps</literal> par défaut).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(3,1)*rand(1,3);
+A*kernel(A)
+A=sparse(A);
+clean(A*kernel(A))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ <member>
+ <link linkend="fullrfk">fullrfk</link>
+ </member>
+ <member>
+ <link linkend="linsolve">linsolve</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/kernel/range.xml b/modules/linear_algebra/help/fr_FR/kernel/range.xml
new file mode 100755
index 000000000..e7b6aa6ef
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/kernel/range.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="range">
+ <refnamediv>
+ <refname>range</refname>
+ <refpurpose>Image de A^k </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[X,dim]=range(A,k)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice réelle carrée</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>k </term>
+ <listitem>
+ <para>entier non négatif, La valeur par défaut est 1</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X </term>
+ <listitem>
+ <para>matrice réelle orthonormale.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dim</term>
+ <listitem>
+ <para>entier (dimension du sous-espace image)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Calcul de l'image de <literal>A^k</literal>; les <literal>dim</literal>
+ premières colonnes de <literal>X</literal> forment une base de
+ <literal>A^k</literal>. Les dernières lignes de <literal>X</literal> forment une
+ base de l'orthogonal de l'image.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(4,2)*rand(2,4); // Matrice de rang 2.
+[X,dim]=range(A,1);dim // Calcul de l'image
+
+y1=A*rand(4,1); // un vecteur dans l'image de A
+y2=rand(4,1); // un vecteur qui n'est pas dans l'image
+norm(X(dim+1:$,:)*y1) // les derniéres composante sont nulles, y1 est dans l'image
+norm(X(dim+1:$,:)*y2) // Les dernieres composantes ne sont pas nulles
+
+I=X(1:dim,:)' // I une base de l'image
+coeffs=X(1:dim,:)*y1 // les composante de y1 dans la base I
+
+norm(I*coeffs-y1) // test
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fullrfk">fullrfk</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Fonctions Utilisées</title>
+ <para>
+ La fonction <literal>range</literal> est basée sue la fonction <link linkend="rowcomp">rowcomp</link>
+ qui utilise la décomposition <link linkend="svd">svd</link>.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/kernel/rowcomp.xml b/modules/linear_algebra/help/fr_FR/kernel/rowcomp.xml
new file mode 100755
index 000000000..bb071feae
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/kernel/rowcomp.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="rowcomp">
+ <refnamediv>
+ <refname>rowcomp</refname>
+ <refpurpose>compression de lignes, image </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[W,rk]=colcomp(A [,flag [,tol]])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice réelle ou complexe</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag </term>
+ <listitem>
+ <para>chaîne de caractères optionnelle qui peut prendre les valeurs
+ <literal>'svd'</literal> ou <literal>'qr'</literal>. La valeur par
+ défaut est <literal>sqrt(%eps)*norm(A,1)</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol </term>
+ <listitem>
+ <para>nombre réel non négatif. La valeur par
+ défaut est <literal>sqrt(%eps)*norm(A,1)</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>W </term>
+ <listitem>
+ <para>matrice carrée régulière (matrice de changement de base) </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk </term>
+ <listitem>
+ <para>
+ entier (rang de"<literal>A</literal>).
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Compression des colonnes de <literal>A</literal>. <literal>Ac = W*A</literal> est à
+ lignes compressées, c'est à dire
+ <literal>Ac=[Af;0]</literal> et les lignes de <literal>Af</literal> sont linéairement
+ indépendantes.
+ </para>
+ <para>
+ <literal>flag</literal> et <literal>tol</literal> sont des paramètres optionnels :
+ <literal>flag = 'qr'</literal> ou <literal>'svd'</literal>
+ (<literal>'svd'</literal> par défaut).
+ </para>
+ <para>
+ <literal>tol</literal> = paramètre de tolérance (de l'ordre de
+ <literal>%eps</literal> par défaut).
+ </para>
+ <para>
+ Les <literal>rk</literal> premières colonnes de <literal>W'</literal> forment
+ une base de l'image de <literal>A</literal>.
+ </para>
+ <para>
+ Un vecteur non nul <literal>x</literal> appartient à Im(<literal>A</literal>) si
+ <literal>W*x</literal> est à lignes compressées en accord avec <literal>Ac</literal>
+ c'est à dire que la norme de ses dernières composantes est nulle (à
+ la précision machine) par rapport à ses rk premières composantes.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,4); // 4 vecteurs colonne dont 2 indépendants
+[X,dim]=rowcomp(A);Xp=X';
+svd([Xp(:,1:dim),A]) // Im(A) = Im(Xp(:,1:dim)
+x=A*rand(4,1); // x appartient à Im(A)
+y=X*x
+norm(y(dim+1:$))/norm(y(1:dim)) // la norme est petite
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ <member>
+ <link linkend="fullrfk">fullrfk</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Fonctions Utilisées</title>
+ <para>
+ La fonction <literal>rowcomp</literal> est basée sur les décompositions
+ <link linkend="svd">svd</link> ou <link linkend="qr">qr</link>.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/linear/CHAPTER b/modules/linear_algebra/help/fr_FR/linear/CHAPTER
new file mode 100755
index 000000000..7d9d9cf49
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/linear/CHAPTER
@@ -0,0 +1,2 @@
+title = Linear Equations
+
diff --git a/modules/linear_algebra/help/fr_FR/linear/chol.xml b/modules/linear_algebra/help/fr_FR/linear/chol.xml
new file mode 100755
index 000000000..f155bb42c
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/linear/chol.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="chol">
+ <refnamediv>
+ <refname>chol</refname>
+ <refpurpose>Factorisation de Cholesky </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[R]=chol(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>X </term>
+ <listitem>
+ <para>matrice réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Si <literal>X</literal> est hermitienne (symétrique dans le cas réel) définie positive, alors <literal>R = chol(X)</literal> renvoie une matrice triangulaire supérieure <literal>R</literal> telle que <literal>R'*R = X</literal>.
+ </para>
+ <para>
+ <literal>chol(X)</literal> utilise uniquement la partie triangulaire supérieure de <literal>X</literal> dont la
+ partie triangulaire inférieure est supposée être la transposée (transposée conjuguée dans le cas complexe).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+W=rand(5,5)+%i*rand(5,5);
+X=W*W';
+R=chol(X);
+norm(R'*R-X)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spchol">spchol</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="bdiag">bdiag</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Fonctions Utilisées</title>
+ <para>
+ La décomposition de Cholesky est basée sur les routines Lapack
+ DPOTRF pour les matrices réelles et ZPOTRF pour le cas complexe.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/linear/inv.xml b/modules/linear_algebra/help/fr_FR/linear/inv.xml
new file mode 100755
index 000000000..2441ede3a
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/linear/inv.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="inv">
+ <refnamediv>
+ <refname>inv</refname>
+ <refpurpose>inverse d'une matrice </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>inv(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>X </term>
+ <listitem>
+ <para>matrice carrée réelle, complexe, polynomiale ou rationnelle,
+ liste de type "syslin"
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>inv(X)</literal> est l'inverse de la matrice carrée
+ <literal>X</literal>. Un message de mise en garde est affiché si <literal>X</literal>
+ est mal équilibrée (termes très petits et termes très grands) ou
+ singulière à la précision machine.
+ </para>
+ <para>
+ Pour les matrices polynomiales ou rationnelles, <literal>inv(X)</literal> est
+ équivalent à <literal>invr(X)</literal>.
+ </para>
+ <para>
+ Pour les systèmes dynamiques linéaires sous forme de leur représentation
+ d'état (liste de type <literal>syslin</literal>), <literal>inv(X)</literal> est
+ équivalent à <literal>invsyslin(X)</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);inv(A)*A
+
+x=poly(0,'x');
+A=[x,1,x;x^2,2,1+x;1,2,3];inv(A)*A
+
+A=[1/x,2;2+x,2/(1+x)]
+inv(A)*A
+
+A=ssrand(2,2,3);
+W=inv(A)*A
+clean(ss2tf(W))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="slash">slash</link>
+ </member>
+ <member>
+ <link linkend="backslash">backslash</link>
+ </member>
+ <member>
+ <link linkend="pinv">pinv</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="lufact">lufact</link>
+ </member>
+ <member>
+ <link linkend="lusolve">lusolve</link>
+ </member>
+ <member>
+ <link linkend="invr">invr</link>
+ </member>
+ <member>
+ <link linkend="coff">coff</link>
+ </member>
+ <member>
+ <link linkend="coffg">coffg</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Fonctions Utilisées</title>
+ <para>
+ La fonction <literal>inv</literal> pour les matrices de nombres est basée
+ sur les routines Lapack :
+ DGETRF, DGETRI pour les matrices réelles et ZGETRF, ZGETRI pour le
+ cas complexe.
+ Pour les matrices de polynomes et de fractions rationnelles
+ <literal>inv</literal> est basée sur la fonction Scilab <literal>invr</literal>.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/linear/linsolve.xml b/modules/linear_algebra/help/fr_FR/linear/linsolve.xml
new file mode 100755
index 000000000..d7d5c3bc2
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/linear/linsolve.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="linsolve">
+ <refnamediv>
+ <refname>linsolve</refname>
+ <refpurpose>solveur d'équation linéaire </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[x0,kerA]=linsolve(A,b [,x0])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>
+ une matrice réelle <literal>na x ma</literal> (éventuellement creuse)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>b </term>
+ <listitem>
+ <para>
+ un vecteur <literal>na x 1</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>x0 </term>
+ <listitem>
+ <para>un vecteur réel
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>kerA </term>
+ <listitem>
+ <para>
+ une matrice réelle <literal>ma x k </literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>linsolve</literal> donne toutes les solutions de <literal> A*x+b=0</literal>.
+ </para>
+ <para>
+ <literal>x0</literal> est une solution particulière (s'il en existe une) et <literal>kerA</literal> est le noyau de <literal>A</literal>. Tout vecteur de la forme <literal>x=x0+kerA*w</literal> avec <literal>w</literal> quelconque vérifie
+ <literal> A*x+b=0</literal>.
+ </para>
+ <para>
+ Si un <literal>x0</literal> compatible est donné en entrée, <literal>x0</literal> est renvoyé. Dans le cas contraire un <literal>x0</literal> compatible, s'il en existe un, est renvoyé.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,3)*rand(3,8);
+b=A*ones(8,1);[x,kerA]=linsolve(A,b);A*x+b // b compatible
+b=ones(5,1);[x,kerA]=linsolve(A,b);A*x+b // b incompatible
+A=rand(5,5);[x,kerA]=linsolve(A,b), -inv(A)*b // x est unique
+
+// Une comparaison des différentes méthode de résolution de systèmes linéaire creux
+
+[A,descr,ref,mtype] = ReadHBSparse(SCI+"/modules/umfpack/examples/bcsstk24.rsa");
+
+b = zeros(size(A,1),1);
+
+tic();
+res = umfpack(A,'\',b);
+mprintf('\ntemps nécessaire à la résolution du système avec umfpack: %.3f\n',toc());
+
+tic();
+res = linsolve(A,b);
+mprintf('\ntemps nécessaire à la résolution du système avec linsolve: %.3f\n',toc());
+
+tic();
+res = A\b;
+mprintf('\ntemps nécessaire à la résolution du système avec l''opérateur backslash: %.3f\n',toc());
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="inv">inv</link>
+ </member>
+ <member>
+ <link linkend="pinv">pinv</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="im_inv">im_inv</link>
+ </member>
+ <member>
+ <link linkend="umfpack">umfpack</link>
+ </member>
+ <member>
+ <link linkend="backslash">backslash</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/linear/lu.xml b/modules/linear_algebra/help/fr_FR/linear/lu.xml
new file mode 100755
index 000000000..498ac9713
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/linear/lu.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="lu">
+ <refnamediv>
+ <refname>lu</refname>
+ <refpurpose>factorisation LU </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[L,U]= lu(A)
+ [L,U,E]= lu(A)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice carrée réelle ou complexe (m x n).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>L,U </term>
+ <listitem>
+ <para>matrices carrées réelles ou complexes (n x n).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E </term>
+ <listitem>
+ <para>une matrice de permutation.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>[L,U]= lu(A)</literal> calcule deux matrices <literal>L</literal> et
+ <literal>U</literal> telles que <literal>A = L*U</literal> avec <literal>U</literal>
+ triangulaire supérieure et <literal>L</literal> triangulaire inférieure
+ à une permutation des lignes près.
+ </para>
+ <para>
+ Si <literal>A</literal> est de rang <literal>k</literal>, les lignes
+ <literal>k+1</literal> à <literal>n</literal> de <literal>U</literal> sont nulles.
+ </para>
+ <para>
+ </para>
+ <para>
+ <literal>[L,U,E]= lu(A)</literal> calcule trois matrices <literal>L</literal>,
+ <literal>U</literal> et <literal>E</literal> telles que <literal>E*A = L*U</literal>
+ avec <literal>U</literal> triangulaire supérieure, <literal>L</literal>
+ triangulaire inférieure et <literal>E</literal> une matrice de
+ permutation.
+ </para>
+ <para>
+ Si <literal>A</literal> est une matrice réelle, il est possible en
+ utilisant <literal>lufact</literal> et <literal>luget</literal>
+ d'obtenir les matrices de permutations et quand
+ <literal>A</literal> n'est pas inversible la compression des
+ colonnes de la matrice <literal>L</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+a=rand(4,4);
+[l,u]=lu(a)
+norm(l*u-a)
+
+[h,rk]=lufact(sparse(a)) // lufact fonctionne avec des matrices creuses
+[P,L,U,Q]=luget(h);
+ludel(h)
+P=full(P);L=full(L);U=full(U);Q=full(Q);
+norm(P*L*U*Q-a) // P,Q sont des matrices de permutation
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="lufact">lufact</link>
+ </member>
+ <member>
+ <link linkend="luget">luget</link>
+ </member>
+ <member>
+ <link linkend="lusolve">lusolve</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Fonctions Utilisées</title>
+ <para>La décomposition LU est basée sur les routines Lapack DGETRF pour
+ les matrices réelles et ZGETRF pour le cas complexe.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/linear/pinv.xml b/modules/linear_algebra/help/fr_FR/linear/pinv.xml
new file mode 100755
index 000000000..70b1d11ec
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/linear/pinv.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="pinv">
+ <refnamediv>
+ <refname>pinv</refname>
+ <refpurpose>pseudo-inverse </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>pinv(A,[tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol </term>
+ <listitem>
+ <para>nombre réel
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>X= pinv(A)</literal> renvoie une matrice <literal>X</literal> de mêmes dimensions que <literal>A'</literal> telle que :
+ </para>
+ <para>
+ <literal>A*X*A = A, X*A*X = X</literal> avec
+ <literal>A*X</literal> et <literal>X*A</literal> Hermitiennes.
+ </para>
+ <para>
+ Le calcul est basé sur une décomposition en valeurs singulières et
+ les valeurs singulières plus petites qu'une tolérance donnée
+ sont considérées comme nulles : pour cela utiliser la syntaxe
+ <literal>X=pinv(A,tol)</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,4);
+norm(A*pinv(A)*A-A,1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rank">rank</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Fonctions Utilisées</title>
+ <para>
+ La fonction <literal>pinv</literal> est basée sur la decomposition en valeurs
+ singulières (fonction Scilab <literal>svd</literal>).
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/linear/qr.xml b/modules/linear_algebra/help/fr_FR/linear/qr.xml
new file mode 100755
index 000000000..3cb813d07
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/linear/qr.xml
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="qr">
+ <refnamediv>
+ <refname>qr</refname>
+ <refpurpose>factorisation QR </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[Q,R]=qr(X [,"e"])
+ [Q,R,E]=qr(X [,"e"])
+ [Q,R,rk,E]=qr(X [,tol])
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>X </term>
+ <listitem>
+ <para>matrice réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol </term>
+ <listitem>
+ <para>nombre réel positif
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q </term>
+ <listitem>
+ <para>matrice carrée unitaire
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>R </term>
+ <listitem>
+ <para>
+ matrice de même dimensions que <literal>X</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E </term>
+ <listitem>
+ <para>matrice de permutation
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk </term>
+ <listitem>
+ <para>
+ entier (rang de <literal>X</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>[Q,R] = qr(X)</literal> renvoie une matrice triangulaire supérieure
+ <literal>R</literal> de même
+ dimensions que <literal>X</literal> et une matrice carrée othogonale
+ (unitaire dans le cas complexe) <literal>Q</literal> telles que
+ <literal>X = Q*R</literal>.
+
+ <literal>[Q,R] = qr(X,"e")</literal> renvoie une decomposition de
+ taille réduite: si <literal>X</literal> est une matrice <literal>m x
+ n
+ </literal>
+ avec <literal>m &gt; n</literal> alors seulement les
+ <literal>n</literal> premières colonnes de <literal>Q</literal> sont calculées
+ ainsi que les <literal>n</literal> premières lignes de
+ <literal>R</literal>.
+ </para>
+ <para>
+ Il découle de <literal>Q*R = X</literal> que la
+ <literal>k</literal>ième colonne de <literal>X</literal> peut s'exprimer comme
+ une combinaison linéaire des <literal>k</literal> premieres colonnes de
+ <literal>Q</literal> (avec les coefficients <literal>R(1,k), ...,
+ R(k,k)
+ </literal>
+ .Les <literal>k</literal> premieres colonnes de
+ <literal>Q</literal> forment une base orthogonale du sous espace généré
+ par les Les <literal>k</literal> premieres colonnes de
+ <literal>X</literal>. Si la colonne <literal>k</literal> de <literal>X</literal> est
+ une combinaison linéaire des <literal>p</literal> premiéres colonnes de
+ <literal>X</literal> alors les éléments <literal>R(p+1,k), ...,
+ R(k,k)
+ </literal>
+ sont nuls. Dans cette situation <literal>R</literal> est
+ une matrice trapézoidale supérieure. Si <literal>X</literal> est de rang
+ <literal>rk</literal> alors les lignes <literal>R(rk+1,:), R(rk+2,:),
+ ...
+ </literal>
+ sont nulles.
+
+ </para>
+ <para>
+ <literal>[Q,R,E] = qr(X)</literal> renvoie une matrice de permutations (de
+ colonnes) <literal>E</literal>,
+ une matrice triangulaire supérieure <literal>R</literal> dont les
+ éléments diagonaux sont classés par ordre décroissant et une
+ matrice unitaire <literal>Q</literal> telles que <literal>X*E = Q*R</literal>.
+ si <literal>rk</literal> est le rang de <literal>X</literal> les
+ <literal>rk</literal> premiers éléménts diagonaux de <literal>R</literal> sont
+ tous non nuls. <literal>[Q,R,E] = qr(X,"e")</literal> renvoie une decomposition de
+ taille réduite: si <literal>X</literal> est une matrice <literal>m x
+ n
+ </literal>
+ avec <literal>m &gt; n</literal> alors seulement les
+ <literal>n</literal> premières colonnes de <literal>Q</literal> sont calculées
+ ainsi que les <literal>n</literal> premières lignes de
+ <literal>R</literal>.
+ </para>
+ <para>
+ <literal>[Q,R,rk,E] = qr(X [,tol])</literal>renvoie de plus
+ <literal>rk</literal> =rang estimé de <literal>X</literal>.
+ Plus précisément,
+ <literal>rk</literal> est le nombre d'éléments diagonaux de
+ <literal>R</literal> supérieurs à <literal>tol</literal>. La valeur par défaut
+ de <literal>tol</literal> est <literal>R(1,1)*%eps*max(size(R))</literal>
+ </para>
+ <para>
+ renvoie <literal>rk</literal> = rang estimé de <literal>X</literal>. Ici,
+ <literal>rk</literal> est le nombre d'éléments diagonaux de <literal>R</literal>
+ supérieurs à <literal>R(1,1)*%eps*max(size(R)</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+// QR factorization, generic case
+// X is tall (full rank)
+X=rand(5,2);[Q,R]=qr(X); [Q'*X R]
+
+//X is fat (full rank)
+X=rand(2,3);[Q,R]=qr(X); [Q'*X R]
+
+//Column 4 of X is a linear combination of columns 1 and 2:
+X=rand(8,5);X(:,4)=X(:,1)+X(:,2); [Q,R]=qr(X); R, R(:,4)
+
+//X has rank 2, rows 3 to $ of R are zero:
+X=rand(8,2)*rand(2,5);[Q,R]=qr(X); R
+
+//Evaluating the rank rk: column pivoting ==> rk first
+//diagonal entries of R are non zero :
+A=rand(5,2)*rand(2,5);
+[Q,R,rk,E] = qr(A,1.d-10);
+norm(Q'*A-R)
+svd([A,Q(:,1:rk)]) //span(A) =span(Q(:,1:rk))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rank">rank</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Fonctions Utilisées</title>
+ <para>La décomposition QR est basée sur les routines Lapack DGEQRF, DGEQPF,
+ DORGQR pour les matrices réelles et ZGEQRF, ZGEQPF, ZORGQR pour le cas
+ complexe.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/markov/CHAPTER b/modules/linear_algebra/help/fr_FR/markov/CHAPTER
new file mode 100755
index 000000000..deb78b04a
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/markov/CHAPTER
@@ -0,0 +1,2 @@
+title = Matrices de Markov
+
diff --git a/modules/linear_algebra/help/fr_FR/matrix/CHAPTER b/modules/linear_algebra/help/fr_FR/matrix/CHAPTER
new file mode 100755
index 000000000..bb89125cd
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/matrix/CHAPTER
@@ -0,0 +1,2 @@
+title = Matrix Analysis
+
diff --git a/modules/linear_algebra/help/fr_FR/matrix/cond.xml b/modules/linear_algebra/help/fr_FR/matrix/cond.xml
new file mode 100755
index 000000000..7c53f27ac
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/matrix/cond.xml
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ * Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="cond">
+ <refnamediv>
+ <refname>cond</refname>
+ <refpurpose>conditionnement </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>
+ c = cond(X)
+ c = cond(X, p)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>X </term>
+ <listitem>
+ <para>
+ matrice réelle ou complexe. Si c = cond(X, p), X doit être une matrice carrée réelle ou complexe.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>p</term>
+ <listitem>
+ <para>scalaire ou chaine de caractères (valeur par défaut p = 2).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>c</term>
+ <listitem>
+ <para>scalaire réel.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <variablelist>
+ <varlistentry>
+ <term>c = cond(X)</term>
+ <listitem>
+ <para>
+ retourne le conditionnement en norme 2.<literal>cond(X)</literal> est le quotient entre
+ la plus grande et la plus petite valeur singulière de <literal>X</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>c = cond(X, p)</term>
+ <listitem>
+ <para>
+ retourne le conditionnement en norme p : <literal>norm(X, p) * norm(inv(X), p)</literal>.
+ Si <literal>p</literal> est spécifié, <literal>p</literal> est égal soit à:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ p = 1. <literal>cond(X, p)</literal> retourne le conditionnement en norme 1.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ p = 2. <literal>cond(X, p)</literal> retourne le conditionnement en norme 2.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ p = %inf or 'inf'. <literal>cond(X, p)</literal> retourne le conditionnement en norme infinie.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ p = 'fro'. <literal>cond(X, p)</literal> retourne le conditionnement en norme de Frobenius.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example">
+ <![CDATA[
+A=testmatrix('hilb',6);
+// conditionnement en norme 2
+cond(A)
+cond(A, 2)
+
+// conditionnement en norme 1
+cond(A, 1)
+
+// conditionnement en norme infinie
+cond(A, %inf)
+
+// conditionnement en norme de Frobenius
+cond(A, 'fro')
+ ]]>
+ </programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rcond">rcond</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="norm">norm</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Historique</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revdescription>
+ <para>
+ Appel de <literal>cond(X)</literal>, où <literal>X</literal> est une matrice non
+ carrée, est maintenant gérée. Par exemple :
+ </para>
+ <programlisting role="">
+ <![CDATA[
+X = [1 0; 1 -1; 0 1];
+cond(X)
+ ]]>
+ </programlisting>
+ <para>
+ Appel de <literal>cond(X, p)</literal> permet de calculer le contionnement
+ en norme p. Par exemple :
+ </para>
+ <programlisting role="">
+ <![CDATA[
+X = [1 -6 0; 1 0 -4;1 0 2];
+cond(X, 1) // conditionnement en norme 1 (p = 1)
+ ]]>
+ </programlisting>
+ </revdescription>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/matrix/det.xml b/modules/linear_algebra/help/fr_FR/matrix/det.xml
new file mode 100755
index 000000000..441b723c5
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/matrix/det.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="det">
+ <refnamediv>
+ <refname>det </refname>
+ <refpurpose>déterminant </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>det(X)
+ [e,m]=det(X)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>X </term>
+ <listitem>
+ <para>matrice carrée réelle ou complexe (creuse ou pleine), polynomiale ou rationnelle
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>m </term>
+ <listitem>
+ <para>nombre réel ou complexe, mantisse du déterminant en base 10
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>e </term>
+ <listitem>
+ <para>entier, exposant du déterminant en base 10
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>det(X)</literal> ( <literal>m*10^e</literal> ) est le déterminant de la matrice carrée <literal>X</literal>.
+ </para>
+ <para>
+ Pour les matrices polynomiales <literal>det(X)</literal> est équivalent à <literal>determ(X)</literal>.
+ </para>
+ <para>
+ Pour les matrices rationnelles <literal>det(X)</literal> est équivalent à <literal>detr(X)</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+x=poly(0,'x');
+det([x,1+x;2-x,x^2])
+w=ssrand(2,2,4);roots(det(systmat(w))),trzeros(w) // zéros du système linéaire
+A=rand(3,3);
+det(A), prod(spec(A))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="detr">detr</link>
+ </member>
+ <member>
+ <link linkend="determ">determ</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Fonctions Utilisées</title>
+ <para>
+ Le calcul du determinant est basé sur les routines Lapack :
+ DGETRF pour les matrices réelles et ZGETRF pour le cas complexe.
+ </para>
+ <para>
+ Concernant le cas des matrices creuses, le calcul du déterminant est effectué
+ à partir de la décomposition LU de la librairie umfpack.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/matrix/orth.xml b/modules/linear_algebra/help/fr_FR/matrix/orth.xml
new file mode 100755
index 000000000..1c190bc72
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/matrix/orth.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="orth">
+ <refnamediv>
+ <refname>orth</refname>
+ <refpurpose>calcul d'une base orthogonale </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>Q=orth(A)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q </term>
+ <listitem>
+ <para>matrice réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>Q=orth(A)</literal> renvoie <literal>Q</literal>, une base
+ orthogonale de l'image de <literal>A</literal>. Im(<literal>Q</literal>)
+ = Im(<literal>A</literal>) et <literal>Q'*Q = I</literal>.
+ </para>
+ <para>
+ Le nombre de colonnes de <literal>Q</literal> est égal au rang de
+ <literal>A</literal>, comme déterminé par l'algorithme QR.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,3)*rand(3,4);
+[X,dim]=rowcomp(A);X=X';
+svd([orth(A),X(:,1:dim)])
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="range">range</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/matrix/rank.xml b/modules/linear_algebra/help/fr_FR/matrix/rank.xml
new file mode 100755
index 000000000..06761fea1
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/matrix/rank.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="rank">
+ <refnamediv>
+ <refname>rank</refname>
+ <refpurpose>rang </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[i]=rank(X)
+ [i]=rank(X,tol)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>X </term>
+ <listitem>
+ <para>matrice réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol </term>
+ <listitem>
+ <para>nombre réel positif
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal> rank(X)</literal> calcule le rang "numérique" de
+ <literal>X</literal> c'est à dire le nombre de ses valeurs
+ singulières supérieures à <literal>norm(size(X),'inf') *
+ norm(X) * %eps
+ </literal>
+ .
+ </para>
+ <para>
+ <literal>rank(X,tol)</literal> est le nombre de valeurs singulières de
+ <literal>X</literal> supérieures à <literal>tol</literal>.
+ </para>
+ <para>
+ <note>
+ Notez que la valeur par défaut de <literal>tol</literal> est
+ proportionnelle à <literal>norm(X)</literal>. Par exemple
+ </note>
+ </para>
+ <para>
+ <literal>rank([1.d-80,0;0,1.d-80])</literal> vaut 2 !.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+rank([1.d-80,0;0,1.d-80])
+rank([1,0;0,1.d-80])
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="lu">lu</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/matrix/rcond.xml b/modules/linear_algebra/help/fr_FR/matrix/rcond.xml
new file mode 100755
index 000000000..40f871b7f
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/matrix/rcond.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="rcond">
+ <refnamediv>
+ <refname>rcond</refname>
+ <refpurpose>estimation de l'inverse du conditionnement </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>rcond(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>X </term>
+ <listitem>
+ <para>matrice carrée réelle ou complexe
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>rcond(X)</literal> est une estimation de l'inverse du conditionnement de <literal>X</literal> pour la norme l_1.
+ </para>
+ <para>
+ Si <literal>X</literal> est bien conditionnée, <literal>rcond(X)</literal> est proche 1.
+ Sinon, <literal>rcond(X)</literal> est proche de 0.
+ </para>
+ <para>
+ <literal>[r,z]=rcond(X)</literal> renvoie <literal>rcond(X)</literal> dans
+ <literal>r</literal> et renvoie aussi <literal>z</literal> tel que <literal>norm(X*z,1) = r*norm(X,1)*norm(z,1)</literal>
+ </para>
+ <para>
+ Ainsi, si <literal>rcond</literal> est très petit <literal>z</literal> est un vecteur se trouvant dans le noyau de X.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=diag([1:10]);
+rcond(A)
+A(1,1)=0.000001;
+rcond(A)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="cond">cond</link>
+ </member>
+ <member>
+ <link linkend="inv">inv</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/matrix/trace.xml b/modules/linear_algebra/help/fr_FR/matrix/trace.xml
new file mode 100755
index 000000000..f37190fa4
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/matrix/trace.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="trace">
+ <refnamediv>
+ <refname>trace </refname>
+ <refpurpose>trace d'une matrice </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>trace(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>X </term>
+ <listitem>
+ <para>matrice carrée, réelle, complexe, polynomiale ou rationnelle.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>trace(X)</literal> calcule la trace de <literal>X</literal>.
+ </para>
+ <para>
+ Identique à <literal>sum(diag(X))</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);
+trace(A)-sum(spec(A))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="det">det</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/pencil/CHAPTER b/modules/linear_algebra/help/fr_FR/pencil/CHAPTER
new file mode 100755
index 000000000..2c9344edc
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/pencil/CHAPTER
@@ -0,0 +1,2 @@
+title = Matrice compagnon
+
diff --git a/modules/linear_algebra/help/fr_FR/pencil/companion.xml b/modules/linear_algebra/help/fr_FR/pencil/companion.xml
new file mode 100755
index 000000000..80fc6d410
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/pencil/companion.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="companion">
+ <refnamediv>
+ <refname>companion</refname>
+ <refpurpose>matrice compagnon </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>A=companion(p)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>p </term>
+ <listitem>
+ <para>polynôme ou vecteur de polynômes
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice carrée
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Renvoie une matrice <literal>A</literal> dont le polynôme caractéristique est
+ <literal>p</literal> si <literal>p</literal> est unitaire (le coefficient de plus haut degré est égal à un). Si <literal>p</literal> n'est pas unitaire
+ le polynôme caractéristique de <literal>A</literal> est égal à
+ <literal>p/c</literal> où <literal>c</literal> est le coefficient de plus haut degré de <literal>p</literal>.
+ </para>
+ <para>
+ Si <literal>p</literal> est un vecteur de polynômes unitaires, <literal>A</literal> est bloc-diagonale,
+ et le polynôme caractéristique du i-ème bloc est égal à <literal>p(i)</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+s=poly(0,'s');
+p=poly([1,2,3,4,1],'s','c')
+det(s*eye()-companion(p))
+roots(p)
+spec(companion(p))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ <member>
+ <link linkend="poly">poly</link>
+ </member>
+ <member>
+ <link linkend="randpencil">randpencil</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/pencil/glever.xml b/modules/linear_algebra/help/fr_FR/pencil/glever.xml
new file mode 100755
index 000000000..784429a4f
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/pencil/glever.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="glever">
+ <refnamediv>
+ <refname>glever</refname>
+ <refpurpose>inverse d'un faisceau de matrices </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[Bfs,Bis,chis]=glever(E,A [,s])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>E, A </term>
+ <listitem>
+ <para>matrices carrées réelles de même dimensions
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>s </term>
+ <listitem>
+ <para>
+ chaîne de caractères (indéterminée des polynômes, '<literal>s</literal>' par défaut )
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Bfs,Bis </term>
+ <listitem>
+ <para>deux matrices polynomiales
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chis </term>
+ <listitem>
+ <para>polynôme
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Calcul de
+ </para>
+ <para>
+ (s*E-A)^-1
+ </para>
+ <para>
+ par l'algorithme généralisé de Leverrier pour un faisceau de matrices.
+ </para>
+ <programlisting role=""><![CDATA[
+(s*E-A)^-1 = (Bfs/chis) - Bis.
+ ]]></programlisting>
+ <para>
+ <literal>chis</literal> = polynôme caractéristique (à une constante multiplicative près).
+ </para>
+ <para>
+ <literal>Bfs</literal> = matrice polynomiale de numérateurs
+ </para>
+ <para>
+ <literal>Bis</literal>
+ = matrice polynomiale ( - développement de <literal>(s*E-A)^-1</literal> à l'infini).
+ </para>
+ <para>
+ Noter le signe - devant <literal>Bis</literal>.
+ </para>
+ <para>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Attention</title>
+ <para>
+ Cette fonction utilise <literal>cleanp</literal> pour simplifier <literal>Bfs,Bis</literal> et <literal>chis</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+s=%s;F=[-1,s,0,0;0,-1,0,0;0,0,s-2,0;0,0,0,s-1];
+[Bfs,Bis,chis]=glever(F)
+inv(F)-((Bfs/chis) - Bis)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rowshuff">rowshuff</link>
+ </member>
+ <member>
+ <link linkend="det">det</link>
+ </member>
+ <member>
+ <link linkend="invr">invr</link>
+ </member>
+ <member>
+ <link linkend="coffg">coffg</link>
+ </member>
+ <member>
+ <link linkend="pencan">pencan</link>
+ </member>
+ <member>
+ <link linkend="penlaur">penlaur</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/pencil/lyap.xml b/modules/linear_algebra/help/fr_FR/pencil/lyap.xml
new file mode 100755
index 000000000..68e7a0eca
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/pencil/lyap.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="lyap">
+ <refnamediv>
+ <refname>lyap </refname>
+ <refpurpose>Equation de Lyapunov </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[X]=lyap(A,C,flag)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A, C </term>
+ <listitem>
+ <para>
+ matrices réelles, <literal>C</literal> doit être symétrique
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag </term>
+ <listitem>
+ <para>chaîne de caractères, 'c' ou 'd'
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>X= lyap(A,C,flag)</literal> résout l'équation matricielle de
+ Lyapunov en temps continu ou discret
+ </para>
+ <programlisting role=""><![CDATA[
+A'*X + X*A = C ( flag = 'c' )
+A'*X*A - X = C ( flag = 'd' )
+ ]]></programlisting>
+ <para>
+ Une solution unique existe si <literal>A</literal> n'a pas de valeur propre
+ sur l'axe imaginaire (<literal>flag='c'</literal>) ou si 1 n'est pas
+ valeur propre de <literal>A</literal> (<literal>flag='d'</literal>).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(4,4);C=rand(A);C=C+C';
+X=lyap(A,C,'c');
+A'*X + X*A -C
+X=lyap(A,C,'d');
+A'*X*A - X -C
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="sylv">sylv</link>
+ </member>
+ <member>
+ <link linkend="ctr_gram">ctr_gram</link>
+ </member>
+ <member>
+ <link linkend="obs_gram">obs_gram</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/proj.xml b/modules/linear_algebra/help/fr_FR/proj.xml
new file mode 100755
index 000000000..5bd02b507
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/proj.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="proj">
+ <refnamediv>
+ <refname>proj</refname>
+ <refpurpose>projection </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>P = proj(X1,X2)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>X1,X2 </term>
+ <listitem>
+ <para>deux matrices réelles avec un nombre identique de colonnes.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>P </term>
+ <listitem>
+ <para>
+ matrice réelle de projection (<literal>P^2=P</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>P</literal> est la projection sur <literal>X2</literal> parallèlement à <literal>X1</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+X1=rand(5,2);X2=rand(5,3);
+P=proj(X1,X2);
+norm(P^2-P,1)
+trace(P) // il s'agit de dim(X2)
+[Q,M]=fullrf(P);
+svd([Q,X2]) // Im(Q) = Im(X2)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="projspec">projspec</link>
+ </member>
+ <member>
+ <link linkend="orth">orth</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/state_space/CHAPTER b/modules/linear_algebra/help/fr_FR/state_space/CHAPTER
new file mode 100755
index 000000000..9f51d7351
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/state_space/CHAPTER
@@ -0,0 +1 @@
+title = State-Space Matrices
diff --git a/modules/linear_algebra/help/fr_FR/state_space/coff.xml b/modules/linear_algebra/help/fr_FR/state_space/coff.xml
new file mode 100755
index 000000000..e69a389ef
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/state_space/coff.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="coff">
+ <refnamediv>
+ <refname>coff</refname>
+ <refpurpose>résolvante (méthode des cofacteurs) </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[N,d]=coff(M [,var])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>M </term>
+ <listitem>
+ <para>matrice carrée réelle
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>var </term>
+ <listitem>
+ <para>chaîne de caractères (indéterminée des polynômes)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>N </term>
+ <listitem>
+ <para>
+ matrice de polynômes (de même taille que <literal>M</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d </term>
+ <listitem>
+ <para>
+ polynôme (polynôme caractéristique de M : <literal>poly(M,var)</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>coff</literal> calcule R=<literal>(s*eye()-M)^-1</literal> pour <literal>M</literal> une matrice réelle.
+ R est donnée par <literal>N/d</literal>.
+ </para>
+ <para>
+ <literal>N</literal> = matrice des numérateurs (polynômes).
+ </para>
+ <para>
+ <literal>d</literal> = dénominateur commun.
+ </para>
+ <para>
+ <literal>var</literal> chaîne de caractères (indéterminée des polynômes, '<literal>s</literal>' par défaut)
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+M=[1,2;0,3];
+[N,d]=coff(M)
+N/d
+inv(%s*eye()-M)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="coffg">coffg</link>
+ </member>
+ <member>
+ <link linkend="ss2tf">ss2tf</link>
+ </member>
+ <member>
+ <link linkend="nlev">nlev</link>
+ </member>
+ <member>
+ <link linkend="poly">poly</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/state_space/nlev.xml b/modules/linear_algebra/help/fr_FR/state_space/nlev.xml
new file mode 100755
index 000000000..f309b8233
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/state_space/nlev.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="nlev">
+ <refnamediv>
+ <refname>nlev</refname>
+ <refpurpose>Algorithme de Leverrier </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[num,den]=nlev(A,z [,rmax])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>matrice réelle carrée
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>z </term>
+ <listitem>
+ <para>chaîne de caractères
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rmax </term>
+ <listitem>
+ <para>
+ paramètre optionnel (voir <literal>bdiag</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ <literal>[num,den]=nlev(A,z [,rmax])</literal> calcule
+ <literal>(z*eye()-A)^(-1)</literal> par bloc diagonalisation de
+ <literal>A</literal> suivie de l'algorithme de Leverrier sur chaque
+ bloc.
+ </para>
+ <para>
+ Cet algorithme est plus efficace que l'algorithme de
+ Leverrier seul, mais il n'est toujours pas parfait !
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);x=poly(0,'x');
+[NUM,den]=nlev(A,'x')
+clean(den-poly(A,'x'))
+clean(NUM/den-inv(x*eye()-A))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="coff">coff</link>
+ </member>
+ <member>
+ <link linkend="coffg">coffg</link>
+ </member>
+ <member>
+ <link linkend="glever">glever</link>
+ </member>
+ <member>
+ <link linkend="ss2tf">ss2tf</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/fr_FR/subspaces/CHAPTER b/modules/linear_algebra/help/fr_FR/subspaces/CHAPTER
new file mode 100755
index 000000000..90541a88e
--- /dev/null
+++ b/modules/linear_algebra/help/fr_FR/subspaces/CHAPTER
@@ -0,0 +1,2 @@
+title = Sous-espaces
+
diff --git a/modules/linear_algebra/help/ja_JP/addchapter.sce b/modules/linear_algebra/help/ja_JP/addchapter.sce
new file mode 100755
index 000000000..4b62a3ac7
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/addchapter.sce
@@ -0,0 +1,11 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+add_help_chapter("Linear Algebra",SCI+"/modules/linear_algebra/help/ja_JP",%T);
+
diff --git a/modules/linear_algebra/help/ja_JP/eigen/CHAPTER b/modules/linear_algebra/help/ja_JP/eigen/CHAPTER
new file mode 100755
index 000000000..88f8bc42b
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/eigen/CHAPTER
@@ -0,0 +1,2 @@
+title = Eigenvalue and Singular Value
+
diff --git a/modules/linear_algebra/help/ja_JP/eigen/balanc.xml b/modules/linear_algebra/help/ja_JP/eigen/balanc.xml
new file mode 100755
index 000000000..b150c2ea6
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/eigen/balanc.xml
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="balanc">
+
+ <refnamediv>
+
+ <refname>balanc</refname>
+
+ <refpurpose>行列ã¾ãŸã¯ãƒšãƒ³ã‚·ãƒ«ã®å¹³è¡¡åŒ–</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[Ab,X]=balanc(A)
+
+ [Eb,Ab,X,Y]=balanc(E,A)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A: </term>
+
+ <listitem>
+
+ <para>実数正方行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>X: </term>
+
+ <listitem>
+
+ <para>å¯é€†ãªå®Ÿæ•°æ­£æ–¹è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>E: </term>
+
+ <listitem>
+
+ <para>
+
+ 実数正方行列 (<literal>A</literal>ã¨åŒã˜æ¬¡å…ƒ)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Y: </term>
+
+ <listitem>
+
+ <para>å¯é€†ãªå®Ÿæ•°æ­£æ–¹è¡Œåˆ—.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ 正方行列ã®æ¡ä»¶æ•°ã‚’改善ã™ã‚‹ãŸã‚ã«å¹³è¡¡åŒ–ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>[Ab,X] = balanc(A)</literal> ã¯,
+
+ 以下ã®ã‚ˆã†ãªç›¸ä¼¼å¤‰æ›<literal>X</literal>を見ã¤ã‘ã¾ã™:
+
+ </para>
+
+ <para>
+
+ <literal>Ab = inv(X)*A*X</literal>ãŒè¿‘似的ã«ç­‰ã—ã„
+
+ 行ノルムãŠã‚ˆã³åˆ—ノルムを有ã™ã‚‹.
+
+ </para>
+
+ <para>
+
+ 行列ペンシルã®å ´åˆ,平衡化ã¯ä¸€èˆ¬åŒ–固有値å•é¡Œã‚’改善ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Š
+
+ è¡Œã‚ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>[Eb,Ab,X,Y] = balanc(E,A)</literal> ã¯,
+
+ <literal>Eb=inv(X)*E*Y, Ab=inv(X)*A*Y</literal> ã¨ãªã‚‹ã‚ˆã†ãª
+
+ å·¦ãŠã‚ˆã³å³å¤‰æ›
+
+ <literal>X</literal> ãŠã‚ˆã³ <literal>Y</literal> ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>注æ„</title>
+
+ <para>
+
+ 平衡化ã¯é–¢æ•°<literal>bdiag</literal> ãŠã‚ˆã³ <literal>spec</literal>
+
+ ã§è¡Œã‚ã‚Œã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=[1/2^10,1/2^10;2^10,2^10];
+[Ab,X]=balanc(A);
+norm(A(1,:))/norm(A(2,:))
+norm(Ab(1,:))/norm(Ab(2,:))
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="bdiag">bdiag</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="spec">spec</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="schur">schur</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/eigen/bdiag.xml b/modules/linear_algebra/help/ja_JP/eigen/bdiag.xml
new file mode 100755
index 000000000..ba3a9117c
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/eigen/bdiag.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="bdiag">
+
+ <refnamediv>
+
+ <refname>bdiag</refname>
+
+ <refpurpose>ブロック対角化, 一般化固有ベクトル</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[Ab [,X [,bs]]]=bdiag(A [,rmax])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®æ­£æ–¹è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>rmax</term>
+
+ <listitem>
+
+ <para>実数</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Ab</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®æ­£æ–¹è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®æ­£å‰‡è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>bs</term>
+
+ <listitem>
+
+ <para>整数ベクトル</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <programlisting role=""><![CDATA[
+[Ab [,X [,bs]]]=bdiag(A [,rmax])
+ ]]></programlisting>
+
+ <para>
+
+ ã¯,行列<literal>A</literal>ã®ãƒ–ロック対角化を行ãªã„ã¾ã™.
+
+ bs ã¯ãƒ–ロックã®æ§‹é€ (個々ã®ãƒ–ロックã®å¤§ãã•)を出力ã—ã¾ã™.
+
+ <literal>X</literal> ã¯åŸºåº•å¤‰æ›ã§ã™.
+
+ ã™ãªã‚ã¡, <literal>Ab = inv(X)*A*X</literal> ã¯ãƒ–ロック対角ã§ã™.
+
+ </para>
+
+ <para>
+
+ <literal>rmax</literal> ã¯<literal>X</literal>ã®
+
+ æ¡ä»¶æ•°ã‚’制御ã—ã¾ã™;
+
+ デフォルト値㯠<literal>A</literal> ã® l1ノルムã§ã™.
+
+ </para>
+
+ <para>
+
+ (存在ã™ã‚‹å ´åˆ,)対角形å¼ã‚’å¾—ã‚‹ã«ã¯<literal>rmax</literal>ã«
+
+ 大ããªå€¤ã‚’指定ã—ã¾ã™(例ãˆã°,<literal>rmax=1/%eps</literal>).
+
+ 一般ã«(ランダムãªå®Ÿæ•°ã® Aã®å ´åˆ) ブロック㯠(1x1) ãŠã‚ˆã³ (2x2) ã§,
+
+ <literal>X</literal> ã¯å›ºæœ‰å€¤ã®è¡Œåˆ—ã§ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+//実数ã®å ´åˆ: 1x1 ãŠã‚ˆã³ 2x2 ブロック
+a=rand(5,5);[ab,x,bs]=bdiag(a);ab
+//複素数ã®å ´åˆ: 複素数 1x1 ブロック
+[ab,x,bs]=bdiag(a+%i*0);ab
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="schur">schur</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="sylv">sylv</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="spec">spec</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/eigen/gschur.xml b/modules/linear_algebra/help/ja_JP/eigen/gschur.xml
new file mode 100755
index 000000000..2f42eb262
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/eigen/gschur.xml
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="gschur">
+
+ <refnamediv>
+
+ <refname>gschur</refname>
+
+ <refpurpose>
+
+ 一般化Schur分解.
+
+ <emphasis role="bold">ã“ã®é–¢æ•°ã¯å»ƒæ­¢ã•ã‚Œã¾ã—ãŸ.</emphasis>
+
+ </refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[As,Es]=gschur(A,E)
+
+ [As,Es,Q,Z]=gschur(A,E)
+
+ [As,Es,Z,dim] = gschur(A,E,flag)
+
+ [As,Es,Z,dim]= gschur(A,E,extern)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ ã“ã®é–¢æ•°ã¯å»ƒæ­¢ã•ã‚Œã¦ãŠã‚Š, <literal>schur</literal>関数ã«çµ±åˆã•ã‚Œã¦ã„ã¾ã™.
+
+ 多ãã®å ´åˆ, <literal>gschur</literal>関数ã¯ä»¥å‰ã¨åŒæ§˜ã«å‹•ä½œã—ã¾ã™ãŒ,
+
+ å°†æ¥ã®ãƒªãƒªãƒ¼ã‚¹ã§ã¯å‰Šé™¤ã•ã‚Œã‚‹äºˆå®šã§ã™.
+
+ </para>
+
+ <para>
+
+ 最åˆã®3ã¤ã®æ§‹æ–‡ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ç½®ãæ›ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™
+
+ </para>
+
+ <programlisting role=""><![CDATA[
+[As,Es]=schur(A,E)
+[As,Es,Q,Z]=schur(A,E);Q=Q' //NOTE THE TRANPOSITION HERE
+[As,Es,Z,dim] = schur(A,E,flag)
+ ]]></programlisting>
+
+ <para>
+
+ 最後ã®æ§‹æ–‡ã¯ã•ã‚‰ã«è‹¥å¹²ã®èª¿æ•´ãŒå¿…è¦ã§ã™:
+
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>ã‚‚ã—,</term>
+
+ <listitem>
+
+ <para>
+
+ extern ãŒã€€Scilab関数ã®å ´åˆ,
+
+ Nextern を以下ã®ã‚ˆã†ã«å®šç¾©ã™ã‚‹ã¨,
+
+ æ–°ã—ã„呼ã³å‡ºã—手順ã¯,
+
+ <literal>[As,Es,Z,dim]= schur(A,E,Nextern)</literal>
+
+ ã¨ãªã‚Šã¾ã™:
+
+ </para>
+
+ <programlisting role=""><![CDATA[
+function t=Nextern(R)
+if R(2)==0 then
+ t=extern([1,R(1),R(3)])==1
+else
+ c=(R(1)+%i*R(2))/R(3)
+ t=extern([2,real(c+c'),real(c*c')])==1
+end
+endfunction
+ ]]></programlisting>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>ã‚‚ã—,</term>
+
+ <listitem>
+
+ <para>
+
+ extern ã¯,Fortran ã¾ãŸã¯ Cã§è¨˜è¿°ã•ã‚ŒãŸå¤–部関数ã®åå‰ã®å ´åˆ,
+
+ nextern を以下ã®ã‚ˆã†ã«å®šç¾©ã™ã‚‹ã¨
+
+ æ–°ã—ã„呼ã³å‡ºã—手順ã¯,
+
+ <literal>[As,Es,Z,dim]= schur(A,E,'nextern')</literal>
+
+ ã®ã‚ˆã†ã«ãªã‚Šã¾ã™:
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ <programlisting role=""><![CDATA[
+logical function nextern(ar,ai,beta)
+double precision ar,ai,beta
+integer r,extern
+if (ai.eq.0.0d0) then
+ r=extern(1,ar,beta,0.0d0,0.0d0)
+else
+ r=extern(2,0.0d0,0.0d0,2.0d0*ar,ar*ar+ai*ai)
+endif
+nextern=r.eq.1
+end
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="external">external</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="schur">schur</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/eigen/gspec.xml b/modules/linear_algebra/help/ja_JP/eigen/gspec.xml
new file mode 100755
index 000000000..fffb2f624
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/eigen/gspec.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="gspec">
+
+ <refnamediv>
+
+ <refname>gspec</refname>
+
+ <refpurpose>
+
+ 行列ペンシルã®å›ºæœ‰å€¤.
+
+ <emphasis role="bold">ã“ã®é–¢æ•°ã¯å»ƒæ­¢ã•ã‚Œã¾ã—ãŸ.</emphasis>
+
+ </refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[al,be]=gspec(A,E)
+
+ [al,be,Z]=gspec(A,E)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ ã“ã®é–¢æ•°ã¯ç¾åœ¨ã§ã¯ <literal>spec</literal> 関数ã«çµ±åˆã•ã‚Œã¦ã„ã¾ã™.
+
+ 呼ã³å‡ºã—手順ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ç½®ãæ›ã‚‰ã‚Œã¦ã„ã¾ã™
+
+ </para>
+
+ <programlisting role=""><![CDATA[
+[al,be]=spec(A,E)
+[al,be,Z]=spec(A,E)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="spec">spec</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/eigen/hess.xml b/modules/linear_algebra/help/ja_JP/eigen/hess.xml
new file mode 100755
index 000000000..9ffb1de41
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/eigen/hess.xml
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="hess">
+
+ <refnamediv>
+
+ <refname>hess</refname>
+
+ <refpurpose>ヘッセンベルク形å¼</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>H = hess(A)
+
+ [U,H] = hess(A)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®æ­£æ–¹è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>H</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®æ­£æ–¹è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>U</term>
+
+ <listitem>
+
+ <para>直交ã¾ãŸã¯ãƒ¦ãƒ‹ã‚¿ãƒªæ­£æ–¹è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>[U,H] = hess(A)</literal> ã¯,
+
+ <literal>A = U*H*U'</literal> ãŠã‚ˆã³ <literal>U'*U</literal> =å˜ä½è¡Œåˆ— ã¨ãªã‚‹ã‚ˆã†ãª
+
+ ユニタリ行列<literal>U</literal> ãŠã‚ˆã³ãƒ˜ãƒƒã‚»ãƒ³ãƒ™ãƒ«ã‚¯è¡Œåˆ—<literal>H</literal>を出力ã—ã¾ã™.
+
+ ã“ã‚Œã«ã‚ˆã‚Š, <literal>hess(A)</literal> 㯠<literal>H</literal>ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ <para>行列ã®ãƒ˜ãƒƒã‚»ãƒ³ãƒ™ãƒ«ã‚¯å½¢å¼ã¯æœ€åˆã®å‰¯å¯¾è§’線以下ã§ã¯ 0ã¨ãªã‚Šã¾ã™.
+
+ ã“ã®è¡Œåˆ—ãŒå¯¾ç§°ã¾ãŸã¯ã‚¨ãƒ«ãƒŸãƒ¼ãƒˆè¡Œåˆ—ã®å ´åˆ,
+
+ å½¢ã¯3é‡å¯¾è§’ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>リファレンス</title>
+
+ <para>
+
+ hess 関数㯠Lapack ルーãƒãƒ³
+
+ DGEHRD, DORGHR (実数行列ã®å ´åˆ) ãŠã‚ˆã³ ZGEHRD, ZORGHR (複素数行列ã®å ´åˆ)ã«åŸºã¥ã„ã¦ã„ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);[U,H]=hess(A);
+and( abs(U*H*U'-A)<1.d-10 )
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="qr">qr</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="contr">contr</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="schur">schur</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>使用ã•ã‚Œã‚‹é–¢æ•°</title>
+
+ <para>
+
+ <literal>hess</literal> 関数ã¯Lapack ルーãƒãƒ³
+
+ DGEHRD, DORGHR (実数行列ã®å ´åˆ) ãŠã‚ˆã³ ZGEHRD, ZORGHR (複素数行列ã®å ´åˆ)ã«
+
+ 基ã¥ã„ã¦ã„ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/eigen/pbig.xml b/modules/linear_algebra/help/ja_JP/eigen/pbig.xml
new file mode 100755
index 000000000..feaaa4c4c
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/eigen/pbig.xml
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="pbig">
+
+ <refnamediv>
+
+ <refname>pbig</refname>
+
+ <refpurpose>固有投影</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[Q,M]=pbig(A,thres,flag)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数正方行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>thres</term>
+
+ <listitem>
+
+ <para>実数</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>flag</term>
+
+ <listitem>
+
+ <para>
+
+ 文字列 (<literal>'c'</literal> ã¾ãŸã¯ <literal>'d'</literal>)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Q,M</term>
+
+ <listitem>
+
+ <para>実数行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ 実部&gt;= <literal>thres</literal> (<literal>flag='c'</literal>)
+
+ ã¾ãŸã¯
+
+ 大ãã•&gt;= <literal>thres</literal>(<literal>flag='d'</literal>)
+
+ ã®å›ºæœ‰å€¤ã‚’有ã™ã‚‹å›ºæœ‰å€¤-部分空間ã¸ã®æŠ•å½±.
+
+ </para>
+
+ <para>
+
+ 投影ã¯<literal>Q*M</literal>ã«ã‚ˆã‚Šå®šç¾©ã•ã‚Œ,<literal>Q</literal>
+
+ ã¯åˆ—フルランク, <literal>M</literal>ã¯è¡Œãƒ•ãƒ«ãƒ©ãƒ³ã‚¯ãŠã‚ˆã³
+
+ <literal>M*Q=eye</literal>.
+
+ </para>
+
+ <para>
+
+ <literal>flag='c'</literal>ã®å ´åˆ,
+
+ <literal>M*A*Q</literal>ã®å›ºæœ‰å€¤ = 実部&gt;= <literal>thres</literal>
+
+ ã®<literal>A</literal>ã®å›ºæœ‰å€¤ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>flag='d'</literal>ã®å ´åˆ,
+
+ <literal>M*A*Q</literal>ã®å›ºæœ‰å€¤ = 大ãã•&gt;= <literal>thres</literal>ã®
+
+ <literal>A</literal>ã®å›ºæœ‰å€¤ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>flag='c'</literal> ã®å ´åˆ,ãã—ã¦
+
+ <literal>[Q1,M1]</literal> = <literal>eye()-Q*M</literal>ã®
+
+ フルランク分解 (<literal>fullrf</literal>)ã®å ´åˆ,
+
+ <literal>M1*A*Q1</literal>ã®å›ºæœ‰å€¤ =
+
+ 実部 &lt; <literal>thres</literal>ã®<literal>A</literal>ã®å›ºæœ‰å€¤ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>flag='d'</literal>ã®å ´åˆ,ãã—㦠<literal>[Q1,M1]</literal> =
+
+ <literal>eye()-Q*M</literal>ã®ãƒ•ãƒ«ãƒ©ãƒ³ã‚¯åˆ†è§£ (<literal>fullrf</literal>)ã®å ´åˆ,
+
+ <literal>M1*A*Q1</literal>ã®å›ºæœ‰å€¤ =大ãã• &lt;<literal>thres</literal>ã®
+
+ <literal>A</literal>ã®å›ºæœ‰å€¤ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=diag([1,2,3]);X=rand(A);A=inv(X)*A*X;
+[Q,M]=pbig(A,1.5,'d');
+spec(M*A*Q)
+[Q1,M1]=fullrf(eye()-Q*M);
+spec(M1*A*Q1)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="psmall">psmall</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="projspec">projspec</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="fullrf">fullrf</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="schur">schur</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>使用ã•ã‚Œã‚‹é–¢æ•°</title>
+
+ <para>
+
+ <literal>pbig</literal> ã¯
+
+ ソートã•ã‚ŒãŸ Schur å½¢å¼ã«åŸºã¥ã„ã¦ã„ã¾ã™
+
+ (Scilab関数 <literal>schur</literal>).
+
+ </para>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/eigen/projspec.xml b/modules/linear_algebra/help/ja_JP/eigen/projspec.xml
new file mode 100755
index 000000000..351331f8e
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/eigen/projspec.xml
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="projspec">
+
+ <refnamediv>
+
+ <refname>projspec</refname>
+
+ <refpurpose>スペクトル演算å­</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[S,P,D,i]=projspec(A)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>正方行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>S, P, D</term>
+
+ <listitem>
+
+ <para>s正方行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>i</term>
+
+ <listitem>
+
+ <para>
+
+ æ•´æ•° (<literal>A</literal>ã®ã‚¼ãƒ­å›ºæœ‰å€¤ã®æ·»å­—).
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>A</literal>ã®0ã«ãŠã‘るスペクトル特性.
+
+ </para>
+
+ <para>
+
+ <literal>S</literal> = 0ã«ãŠã‘る縮å°ãƒ¬ã‚¾ãƒ«ãƒ™ãƒ³ãƒˆ
+
+ (<literal>S</literal> = -Drazin_inverse(<literal>A</literal>)).
+
+ </para>
+
+ <para>
+
+ <literal>P</literal> = 0ã«ãŠã‘るスペクトル投影.
+
+ </para>
+
+ <para>
+
+ <literal>D</literal> = 0ã«ãŠã‘る冪零演算å­.
+
+ </para>
+
+ <para>
+
+ <literal>index</literal> = 0固有値ã®æ·»å­—.
+
+ </para>
+
+ <para>
+
+ 特異点s=0ã®å‘¨ã‚Šã§ã®
+
+ <literal>(s*eye()-A)^(-1) = D^(i-1)/s^i +... + D/s^2 + P/s - S - s*S^2 -...</literal>
+
+ ãŒå‡ºåŠ›ã•ã‚Œã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+deff('j=jdrn(n)','j=zeros(n,n);for k=1:n-1;j(k,k+1)=1;end')
+A=sysdiag(jdrn(3),jdrn(2),rand(2,2));X=rand(7,7);
+A=X*A*inv(X);
+[S,P,D,index]=projspec(A);
+index //J-ブロックã®å¤§ãã•
+trace(P) //J-ブロックã®æ¬¡å…ƒã®åˆè¨ˆ
+A*S-(eye()-P)
+norm(D^index,1)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="coff">coff</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/eigen/psmall.xml b/modules/linear_algebra/help/ja_JP/eigen/psmall.xml
new file mode 100755
index 000000000..e67b13bdf
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/eigen/psmall.xml
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="psmall">
+
+ <refnamediv>
+
+ <refname>psmall</refname>
+
+ <refpurpose>スペクトル投影</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[Q,M]=psmall(A,thres,flag)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã®æ­£æ–¹è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>thres</term>
+
+ <listitem>
+
+ <para>実数</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>flag</term>
+
+ <listitem>
+
+ <para>
+
+ 文字列 (<literal>'c'</literal> ã¾ãŸã¯ <literal>'d'</literal>)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Q,M</term>
+
+ <listitem>
+
+ <para>実数行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ 実部 &lt; <literal>thres</literal> (<literal>flag='c'</literal>)
+
+ ã¾ãŸã¯çµ¶å¯¾å€¤ &lt; <literal>thres</literal>(<literal>flag='d'</literal>)
+
+ ã¨ãªã‚‹å›ºæœ‰å€¤-部分空間ã¸ã®æŠ•å½±.
+
+ </para>
+
+ <para>
+
+ ã“ã®æŠ•å½±ã¯<literal>Q*M</literal>ã«ã‚ˆã‚Šå®šç¾©ã•ã‚Œã¾ã™.
+
+ ã“ã“ã§,
+
+ <literal>Q</literal>ã¯åˆ—フルランク,<literal>M</literal>ã¯è¡Œãƒ•ãƒ«ãƒ©ãƒ³ã‚¯,
+
+ ãã—ã¦<literal>M*Q=eye</literal>ã§ã™.
+
+ </para>
+
+ <para>
+
+ <literal>flag='c'</literal>ã®å ´åˆ,
+
+ <literal>M*A*Q</literal>ã®å›ºæœ‰å€¤ =
+
+ 実部&lt; <literal>thres</literal>ã®<literal>A</literal>ã®å›ºæœ‰å€¤.
+
+ </para>
+
+ <para>
+
+ <literal>flag='d'</literal>ã®å ´åˆ,
+
+ <literal>M*A*Q</literal>ã®å›ºæœ‰å€¤ =
+
+ 大ãã• &lt; <literal>thres</literal>ã®<literal>A</literal>ã®å›ºæœ‰å€¤.
+
+ </para>
+
+ <para>
+
+ <literal>flag='c'</literal>ã®å ´åˆ,
+
+ <literal>[Q1,M1]</literal> = <literal>eye()-Q*M</literal>ã®
+
+ フルランク分解(<literal>fullrf</literal>)ã®å ´åˆ,
+
+ <literal>M1*A*Q1</literal>ã®å›ºæœ‰å€¤ =実部&gt;=
+
+ <literal>thres</literal>ã®
+
+ <literal>A</literal>ã®å›ºæœ‰å€¤ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>flag='d'</literal>ã®å ´åˆ,
+
+ <literal>[Q1,M1]</literal> =<literal>eye()-Q*M</literal>
+
+ ã®ãƒ•ãƒ«ãƒ©ãƒ³ã‚¯åˆ†è§£(<literal>fullrf</literal>)ã®å ´åˆ,
+
+ <literal>M1*A*Q1</literal>ã®å›ºæœ‰å€¤ =
+
+ 大ãã•&gt;=<literal>thres</literal>ã®
+
+ <literal>A</literal>ã®å›ºæœ‰å€¤.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=diag([1,2,3]);X=rand(A);A=inv(X)*A*X;
+[Q,M]=psmall(A,2.5,'d');
+spec(M*A*Q)
+[Q1,M1]=fullrf(eye()-Q*M);
+spec(M1*A*Q1)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="pbig">pbig</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="proj">proj</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="projspec">projspec</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>使用ã•ã‚Œã‚‹é–¢æ•°</title>
+
+ <para>
+
+ ã“ã®é–¢æ•°ã¯ã‚½ãƒ¼ãƒˆã•ã‚ŒãŸ Schurå½¢å¼(scilab
+
+ 関数 <literal>schur</literal>)ã«åŸºã¥ã„ã¦ã„ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/eigen/schur.xml b/modules/linear_algebra/help/ja_JP/eigen/schur.xml
new file mode 100755
index 000000000..be68d6eed
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/eigen/schur.xml
@@ -0,0 +1,711 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="schur">
+
+ <refnamediv>
+
+ <refname>schur</refname>
+
+ <refpurpose>行列ãŠã‚ˆã³ãƒšãƒ³ã‚·ãƒ«ã®[ソートã•ã‚ŒãŸ] Schur 分解</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[U,T] = schur(A)
+
+ [U,dim [,T] ]=schur(A,flag)
+
+ [U,dim [,T] ]=schur(A,extern1)
+
+
+
+ [As,Es [,Q,Z]]=schur(A,E)
+
+ [As,Es [,Q],Z,dim] = schur(A,E,flag)
+
+ [Z,dim] = schur(A,E,flag)
+
+ [As,Es [,Q],Z,dim]= schur(A,E,extern2)
+
+ [Z,dim]= schur(A,E,extern2)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®æ­£æ–¹è¡Œåˆ—.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>E</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>A</literal>ã¨åŒã˜æ¬¡å…ƒã®å®Ÿæ•°ã¾ãŸã¯è¤‡ç´ æ•°ã®æ­£æ–¹è¡Œåˆ—.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>flag</term>
+
+ <listitem>
+
+ <para>
+
+ 文字列 (<literal>'c'</literal> ã¾ãŸã¯ <literal>'d'</literal>)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>extern1</term>
+
+ <listitem>
+
+ <para>an ``external'', 以下ã®å‚ç…§</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>extern2</term>
+
+ <listitem>
+
+ <para>an ``external'', 以下ã®å‚ç…§</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>U</term>
+
+ <listitem>
+
+ <para>直交ã¾ãŸã¯ãƒ¦ãƒ‹ã‚¿ãƒªæ­£æ–¹è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Q</term>
+
+ <listitem>
+
+ <para>直交ã¾ãŸã¯ãƒ¦ãƒ‹ã‚¿ãƒªæ­£æ–¹è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Z</term>
+
+ <listitem>
+
+ <para>o直交ã¾ãŸã¯ãƒ¦ãƒ‹ã‚¿ãƒªæ­£æ–¹è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>T</term>
+
+ <listitem>
+
+ <para>上三角ã¾ãŸã¯æº–三角正方行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>As</term>
+
+ <listitem>
+
+ <para>上三角ã¾ãŸã¯æº–三角正方行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Es</term>
+
+ <listitem>
+
+ <para>上三角正方行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>dim</term>
+
+ <listitem>
+
+ <para>æ•´æ•°</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ Schur å½¢å¼, 行列ãŠã‚ˆã³ãƒšãƒ³ã‚·ãƒ«ã®ã‚½ãƒ¼ãƒˆã•ã‚ŒãŸ Schur å½¢å¼
+
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>行列Schurå½¢å¼</term>
+
+ <listitem>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>通常ã®Schurå½¢å¼:</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>[U,T] = schur(A)</literal> ã¯,
+
+ <literal>A = U*T*U'</literal> ãŠã‚ˆã³ <literal>U'*U = eye(U)</literal>ã¨ãªã‚‹ã‚ˆã†ãª
+
+ Schur行列<literal>T</literal> ãŠã‚ˆã³ãƒ¦ãƒ‹ã‚¿ãƒªè¡Œåˆ— <literal>U</literal>
+
+ を出力ã—ã¾ã™.
+
+ Schur(<literal>A</literal>)ã¯,<literal>T</literal>ã‚’è¿”ã—ã¾ã™.
+
+ <literal>A</literal> ãŒè¤‡ç´ æ•°ã®å ´åˆ, 複素Schurå½¢å¼ã¯,行列<literal>T</literal>ã«è¿”ã—ã¾ã™.
+
+ 複素Schurå½¢å¼ã¯,<literal>A</literal>ã®å›ºæœ‰å€¤ã‚’対角項ã«æœ‰ã™ã‚‹ä¸Šä¸‰è§’行列ã§ã™.
+
+ <literal>A</literal> ãŒå®Ÿæ•°ã®å ´åˆ, 実数Schurå½¢å¼ãŒè¿”ã•ã‚Œã¾ã™.
+
+ 実数Schurå½¢å¼ã¯,対角項ã«å®Ÿæ•°å›ºæœ‰å€¤ã€è¤‡ç´ æ•°å›ºæœ‰å€¤ã‚’対角項ã®2x2ブロックã«
+
+ 有ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>ソートã•ã‚ŒãŸSchurå½¢å¼</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>[U,dim]=schur(A,'c')</literal> ã¯,
+
+ <literal>A</literal>ã‚’ Schur å½¢å¼ã«å¤‰æ›ã™ã‚‹
+
+ ユニタリ行列 <literal>U</literal> ã‚’è¿”ã—ã¾ã™.
+
+ æ›´ã«,<literal>U</literal>ã®æœ€åˆã®åˆ— dim ã¯,
+
+ 実部ãŒè² ã®å›ºæœ‰å€¤(安定ãª"連続時間"固有値空間)
+
+ ã«é–¢é€£ã™ã‚‹<literal>A</literal>ã®å›ºæœ‰å€¤ç©ºé–“
+
+ ã®åŸºåº•ã‚’構æˆã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>[U,dim]=schur(A,'d')</literal> ã¯,
+
+ <literal>A</literal>ã‚’ Schur å½¢å¼ã«å¤‰æ›ã™ã‚‹
+
+ ユニタリ行列 <literal>U</literal> ã‚’è¿”ã—ã¾ã™.
+
+ æ›´ã«,<literal>U</literal>ã®æœ€åˆã®åˆ— dim ã¯,
+
+ 大ãã•ãŒ1未満ã®å›ºæœ‰å€¤(安定ãª"離散時間"固有値空間)
+
+ ã«é–¢é€£ã™ã‚‹<literal>A</literal>ã®å›ºæœ‰å€¤ç©ºé–“
+
+ ã®åŸºåº•ã‚’構æˆã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>[U,dim]=schur(A,extern1)</literal> ã¯,
+
+ <literal>A</literal>ã‚’ Schur å½¢å¼ã«å¤‰æ›ã™ã‚‹
+
+ ユニタリ行列<literal>U</literal>ã‚’è¿”ã—ã¾ã™.
+
+ æ›´ã«,<literal>U</literal>ã®æœ€åˆã®åˆ— dim ã¯,
+
+ 外部関数 <literal>extern1</literal> (詳細㯠external å‚ç…§)
+
+ ã«ã‚ˆã‚Šé¸æŠžã•ã‚ŒãŸå›ºæœ‰å€¤ã«é–¢é€£ã™ã‚‹<literal>A</literal>ã®å›ºæœ‰å€¤ç©ºé–“
+
+ ã®åŸºåº•ã‚’構æˆã—ã¾ã™.
+
+ ã“ã® external ã¯Scilab関数ã¾ãŸã¯Cã¾ãŸã¯Fortranプロシージャã«ã‚ˆã‚Š
+
+ 次ã®ã‚ˆã†ã«è¨˜è¿°ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™:
+
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>Scilab関数</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>extern1</literal>ãŒ
+
+ Scilab関数ã«ã‚ˆã‚Šè¨˜è¿°ã•ã‚Œã‚‹å ´åˆ,
+
+ 以下ã®å‘¼ã³å‡ºã—手順を有ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™:
+
+ <literal>s=extern1(Ev)</literal>, ãŸã ã— <literal>Ev</literal> ã¯å›ºæœ‰å€¤,
+
+ <literal>s</literal> ã¯è«–ç†å€¤ã§ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>C ã¾ãŸã¯ Fortran プロシージャ</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>extern1</literal> ãŒCã¾ãŸã¯Fortran関数ã«ã‚ˆã‚Š
+
+ 記述ã•ã‚Œã‚‹å ´åˆ,以下ã®å‘¼ã³å‡ºã—手順を有ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™:
+
+ <literal>int extern1(double *EvR, double *EvI)</literal>
+
+ ãŸã ã— <literal>EvR</literal> ãŠã‚ˆã³ <literal>EvI</literal> ã¯
+
+ 固有値ã®å®Ÿéƒ¨ãŠã‚ˆã³è™šéƒ¨ã§ã™.
+
+ trueã¾ãŸã¯ã‚¼ãƒ­ã§ãªã„戻り値ã¯,é¸æŠžã•ã‚ŒãŸå›ºæœ‰å€¤ã‚’æ„味ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>ペンシルSchurå½¢å¼</term>
+
+ <listitem>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>通常ã®ãƒšãƒ³ã‚·ãƒ«Schurå½¢å¼</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>[As,Es] = schur(A,E)</literal> ã¯,
+
+ 対<literal>A, E</literal>ã®ä¸€èˆ¬åŒ–Schurå½¢å¼ã§ã‚ã‚‹
+
+ 準三角行列<literal>As</literal>行列ãŠã‚ˆã³ä¸‰è§’行列<literal>Es</literal>
+
+ を出力ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>[As,Es,Q,Z] = schur(A,E)</literal>ã¯,æ›´ã«
+
+ <literal>As=Q'*A*Z</literal> ãŠã‚ˆã³ <literal>Es=Q'*E*Z</literal>ã¨ãªã‚‹ã‚ˆã†ãª
+
+ 2ã¤ã®ãƒ¦ãƒ‹ã‚¿ãƒªè¡Œåˆ—<literal>Q</literal> ãŠã‚ˆã³ <literal>Z</literal>ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>ソートã•ã‚ŒãŸSchurå½¢å¼:</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>[As,Es,Z,dim] = schur(A,E,'c')</literal>ã¯,
+
+ ペンシル<literal>s*E-A</literal>ã®å®Ÿæ•°ä¸€èˆ¬åŒ–Schurå½¢å¼ã‚’è¿”ã—ã¾ã™.
+
+ æ›´ã«, <literal>Z</literal>ã®æœ€åˆã®åˆ— dim ã¯,
+
+ 実部ãŒè² ã®å›ºæœ‰å€¤ (安定ãª"連続時間"一般化固有値空間)ã«é–¢é€£ã™ã‚‹
+
+ 固有値空間ã®åŸºåº•ã‚’構æˆã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>[As,Es,Z,dim] = schur(A,E,'d')</literal>
+
+ </para>
+
+ <para>
+
+ ã¯,ペンシル<literal>s*E-A</literal>ã®
+
+ 実数一般化Schurå½¢å¼ã‚’è¿”ã—ã¾ã™.
+
+ æ›´ã«, <literal>Z</literal>ã®æœ€åˆã®åˆ— dim ã¯,
+
+ 大ãã•1未満ã®å›ºæœ‰å€¤ (安定ãª"離散時間"一般化固有値空間)ã«é–¢é€£ã™ã‚‹
+
+ 固有値空間ã®åŸºåº•ã‚’構æˆã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>[As,Es,Z,dim] = schur(A,E,extern2)</literal>
+
+ </para>
+
+ <para>
+
+ ã¯,ペンシル<literal>s*E-A</literal>ã®å®Ÿä¸€èˆ¬åŒ–Schurå½¢å¼ã‚’è¿”ã—ã¾ã™.
+
+ æ›´ã«, <literal>Z</literal>ã®æœ€åˆã®åˆ— dim ã¯,
+
+ 関数<literal>extern2</literal>ã«ã‚ˆã‚ŠæŒ‡å®šã•ã‚ŒãŸè¦å‰‡ã«åŸºã¥ãé¸æŠžã•ã‚ŒãŸ
+
+ ペンシルã®å›ºæœ‰å€¤ã«é–¢ã™ã‚‹å›ºæœ‰å€¤ç©ºé–“ã®åŸºåº•ã‚’構æˆã—ã¾ã™.
+
+ (詳細㯠external å‚ç…§)
+
+ ã“ã® external 㯠Scilab 関数ã¾ãŸã¯Cã¾ãŸã¯Fortranプロシージャ
+
+ ã«ã‚ˆã‚Šæ¬¡ã®ã‚ˆã†ã«è¨˜è¿°ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™:
+
+ </para>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>Scilab関数</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>extern2</literal>ãŒScilab関数ã«ã‚ˆã‚Šè¨˜è¿°ã•ã‚Œã‚‹å ´åˆ,
+
+ 以下ã®å‘¼ã³å‡ºã—手順を有ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™:
+
+ <literal>s=extern2(Alpha,Beta)</literal>, ãŸã ã— <literal>Alpha</literal> ãŠã‚ˆã³
+
+ <literal>Beta</literal> ã¯ä¸€èˆ¬åŒ–固有値ãŠã‚ˆã³è«–ç†å€¤ <literal>s</literal>
+
+ を定義ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>C ã¾ãŸã¯Fortranプロシージャ</term>
+
+ <listitem>
+
+ <para>
+
+ if external <literal>extern2</literal> ãŒCã¾ãŸã¯Fortran関数ã«ã‚ˆã‚Š
+
+ 記述ã•ã‚Œã‚‹å ´åˆ,以下ã®å‘¼ã³å‡ºã—手順を有ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™:
+
+ </para>
+
+ <para>
+
+ <literal>int extern2(double *AlphaR, double *AlphaI, double *Beta)</literal>
+
+ </para>
+
+ <para>
+
+ : <literal>A</literal> ãŠã‚ˆã³ <literal>E</literal> ãŒå®Ÿæ•°ã®å ´åˆ.
+
+ </para>
+
+ <para>
+
+ <literal>int extern2(double *AlphaR, double *AlphaI, double *BetaR, double *BetaI)</literal>
+
+ </para>
+
+ <para>
+
+ : <literal>A</literal> ãŠã‚ˆã³ <literal>E</literal> ãŒè¤‡ç´ æ•°ã®å ´åˆ.
+
+ <literal>Alpha</literal>, ãŠã‚ˆã³ <literal>Beta</literal> ã¯ä¸€èˆ¬åŒ–固有値を定義ã—ã¾ã™.
+
+ trueã¾ãŸã¯éžã‚¼ãƒ­ã®æˆ»ã‚Šå€¤ã¯,é¸æŠžã•ã‚ŒãŸä¸€èˆ¬åŒ–固有値をæ„味ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>å‚考</title>
+
+ <para>
+
+ 行列Schurå½¢å¼ã®è¨ˆç®—ã¯Lapackルーãƒãƒ³DGEES ãŠã‚ˆã³ ZGEESã«åŸºã¥ã„ã¦ã„ã¾ã™.
+
+ </para>
+
+ <para>
+
+ ペンシルSchurå½¢å¼ã®è¨ˆç®—ã¯Lapackルーãƒãƒ³DGGES ãŠã‚ˆã³ ZGGESã«åŸºã¥ã„ã¦ã„ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+//行列Schurå½¢å¼
+//----------------------
+A=diag([-0.9,-2,2,0.9]);X=rand(A);A=inv(X)*A*X;
+[U,T]=schur(A);T
+
+[U,dim,T]=schur(A,'c');
+T(1:dim,1:dim) //安定ãªé€£ç¶šæ™‚間固有値
+
+function t=mytest(Ev),t=abs(Ev)<0.95,endfunction
+[U,dim,T]=schur(A,mytest);
+T(1:dim,1:dim)
+
+// Cã®åŒã˜é–¢æ•° (コンパイラãŒå¿…è¦)
+cd TMPDIR;
+C=['int mytest(double *EvR, double *EvI) {' //the C code
+ 'if (*EvR * *EvR + *EvI * *EvI < 0.9025) return 1;'
+ 'else return 0; }';]
+mputl(C,TMPDIR+'/mytest.c')
+
+
+//構築/リンク
+lp=ilib_for_link('mytest','mytest.c',[],'c');
+link(lp,'mytest','c');
+
+//実行
+[U,dim,T]=schur(A,'mytest');
+//ペンシルã®Schurå½¢å¼
+//----------------------
+F=[-1,%s, 0, 1;
+ 0,-1,5-%s, 0;
+ 0, 0,2+%s, 0;
+ 1, 0, 0, -2+%s];
+A=coeff(F,0);E=coeff(F,1);
+[As,Es,Q,Z]=schur(A,E);
+Q'*F*Z //ã“ã‚Œã¯As+%s*Esã§ã™
+
+
+[As,Es,Z,dim] = schur(A,E,'c')
+function t=mytest(Alpha,Beta),t=real(Alpha)<0,endfunction
+[As,Es,Z,dim] = schur(A,E,mytest)
+
+//Fortranã®åŒã˜é–¢æ•° (コンパイラãŒå¿…è¦)
+ftn=['integer function mytestf(ar,ai,b)' //fortranコード
+ 'double precision ar,ai,b'
+ 'mytestf=0'
+ 'if(ar.lt.0.0d0) mytestf=1'
+ 'end']
+mputl(' '+ftn,TMPDIR+'/mytestf.f')
+
+//build and link
+lp=ilib_for_link('mytestf','mytestf.f',[],'F');
+link(lp,'mytestf','f');
+
+//実行
+
+[As,Es,Z,dim] = schur(A,E,'mytestf')
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="spec">spec</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="bdiag">bdiag</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="ricc">ricc</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="pbig">pbig</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="psmall">psmall</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/eigen/spec.xml b/modules/linear_algebra/help/ja_JP/eigen/spec.xml
new file mode 100755
index 000000000..ad29f187a
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/eigen/spec.xml
@@ -0,0 +1,522 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="spec" xml:lang="ja">
+
+ <refnamediv>
+
+ <refname>spec</refname>
+
+ <refpurpose>行列ã¨ãƒšãƒ³ã‚·ãƒ«ã®å›ºæœ‰å€¤</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>evals=spec(A)
+
+ [R,diagevals]=spec(A)
+
+
+
+ evals=spec(A,B)
+
+ [alpha,beta]=spec(A,B)
+
+ [alpha,beta,Z]=spec(A,B)
+
+ [alpha,beta,Q,Z]=spec(A,B)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ­£æ–¹è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>B</term>
+
+ <listitem>
+
+ <para>
+
+ <literal> A</literal>ã¨åŒã˜æ¬¡å…ƒã®å®Ÿæ•°ã¾ãŸã¯è¤‡ç´ æ­£æ–¹è¡Œåˆ—
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>evals</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ ãƒ™ã‚¯ãƒˆãƒ«, 固有値</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>diagevals</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯(対角項ã«å›ºæœ‰å€¤ã‚’有ã™ã‚‹)複素対角行列 </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>alpha</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ ãƒ™ã‚¯ãƒˆãƒ«, al./be ã«ã‚ˆã‚Šå›ºæœ‰å€¤ãŒå¾—られã¾ã™</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>beta</term>
+
+ <listitem>
+
+ <para>実数ベクトル, al./be ã«ã‚ˆã‚Šå›ºæœ‰å€¤ãŒå¾—られã¾ã™</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>R</term>
+
+ <listitem>
+
+ <para>å¯é€†ãªå®Ÿæ•°ã¾ãŸã¯è¤‡ç´ æ­£æ–¹è¡Œåˆ—, 行列å³å›ºæœ‰ãƒ™ã‚¯ãƒˆãƒ«.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>L</term>
+
+ <listitem>
+
+ <para>å¯é€†ãªå®Ÿæ•°ã¾ãŸã¯è¤‡ç´ æ­£æ–¹è¡Œåˆ—, ペンシル左固有ベクトル.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>R</term>
+
+ <listitem>
+
+ <para>å¯é€†ãªå®Ÿæ•°ã¾ãŸã¯è¤‡ç´ æ­£æ–¹è¡Œåˆ—, ペンシルå³å›ºæœ‰ãƒ™ã‚¯ãƒˆãƒ«.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>evals=spec(A)</term>
+
+ <listitem>
+
+ <para>
+
+ ベクトル<literal>evals</literal> ã«å›ºæœ‰å€¤ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>[R,diagevals] =spec(A)</term>
+
+ <listitem>
+
+ <para>
+
+ 対角行列r <literal>evals</literal> ã«å›ºæœ‰å€¤,
+
+ <literal>R</literal>ã«å›ºæœ‰ãƒ™ã‚¯ãƒˆãƒ«ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>evals=spec(A,B)</term>
+
+ <listitem>
+
+ <para>行列ペンシル A - s B ã®ã‚¹ãƒšã‚¯ãƒˆãƒ«,ã™ãªã‚ã¡,
+
+ 多項å¼è¡Œåˆ— s B - Aã®æ ¹,ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>[alpha,beta] = spec(A,B)</term>
+
+ <listitem>
+
+ <para>
+
+ 行列ペンシル<literal>A- s B</literal>ã®ã‚¹ãƒšã‚¯ãƒˆãƒ«,
+
+ ã™ãªã‚ã¡,多項å¼è¡Œåˆ— <literal>A - s B</literal>ã®æ ¹ã‚’è¿”ã—ã¾ã™.
+
+ 一般化固有値 alpha 㨠beta ã¯è¡Œåˆ—
+
+ <literal>A - alpha./beta B</literal> ãŒç‰¹ç•°è¡Œåˆ—ã¨ãªã‚‹å€¤ã§ã™.
+
+ 固有値㯠<literal>al./be</literal> ã«ã‚ˆã‚ŠæŒ‡å®šã•ã‚Œ,
+
+ <literal>beta(i) = 0</literal>ã®å ´åˆ,i番目ã®å›ºæœ‰å€¤ã¯ç„¡é™å¤§ã¨ãªã‚Šã¾ã™.
+
+ (<literal>B = eye(A)</literal>ã®å ´åˆ, <literal>alpha./beta</literal>ã¯
+
+ <literal>spec(A)</literal>ã¨ãªã‚Šã¾ã™).
+
+ 通常,beta=0や両方ãŒã‚¼ãƒ­ã®å ´åˆã«é–¢ã—ã¦éƒ½åˆãŒè‰¯ã„解釈ãŒå­˜åœ¨ã™ã‚‹ãŸã‚,
+
+ (alpha,beta)ã®çµ„ã¿åˆã‚ã›ã§è¡¨ã•ã‚Œã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>[alpha,beta,R] = spec(A,B)</term>
+
+ <listitem>
+
+ <para>上記ã«åŠ ãˆã¦ãƒšãƒ³ã‚·ãƒ«ã®ä¸€èˆ¬åŒ–å³å›ºæœ‰ãƒ™ã‚¯ãƒˆãƒ«ã¨ãªã‚‹
+
+ 行列 <literal>R</literal>ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>[al,be,L,R] = spec(A,B)</term>
+
+ <listitem>
+
+ <para>
+
+ 上記ã«åŠ ãˆã¦ãƒšãƒ³ã‚·ãƒ«ã®ä¸€èˆ¬åŒ–å³ãŠã‚ˆã³å·¦å›ºæœ‰ãƒ™ã‚¯ãƒˆãƒ«ã§ã‚る行列
+
+ <literal>L</literal> ãŠã‚ˆã³<literal>R</literal>ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>[al,be,Z] = spec(A,E)</term>
+
+ <listitem>
+
+ <para>
+
+ 一般化å³å›ºæœ‰ãƒ™ã‚¯ãƒˆãƒ«ã§ã‚る行列 <literal>Z</literal> ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>[al,be,Q,Z] = spec(A,E)</term>
+
+ <listitem>
+
+ <para>
+
+ 一般化å³ãŠã‚ˆã³å·¦å›ºæœ‰ãƒ™ã‚¯ãƒˆãƒ«ã§ã‚る行列 <literal>Q</literal>
+
+ ãŠã‚ˆã³ <literal>Z</literal>ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ <para>大ããªå®Œå…¨ / 疎行列ã®å ´åˆ, Arnoldi モジュールを使用ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™.</para>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <para>行列ã®å›ºæœ‰å€¤è¨ˆç®—㯠Lapack ルーãƒãƒ³ã«åŸºã¥ã„ã¦ã„ã¾ã™</para>
+
+ <itemizedlist>
+
+ <listitem>
+
+ <para>行列ãŒå¯¾ç§°ã§ãªã„å ´åˆ, DGEEV ãŠã‚ˆã³ ZGEEV.</para>
+
+ </listitem>
+
+ <listitem>
+
+ <para>行列ãŒå¯¾ç§°ã®å ´åˆ, DSYEV ãŠã‚ˆã³ ZHEEV.</para>
+
+ </listitem>
+
+ </itemizedlist>
+
+ <para>複素対象行列ã¯è¤‡ç´ å…±å½¹ã®éžå¯¾è§’é …ã¨å®Ÿæ•°ã®å¯¾è§’項を有ã—ã¾ã™.</para>
+
+ <para>ペンシル固有値計算㯠Lapack ルーãƒãƒ³
+
+ DGGEV ãŠã‚ˆã³ ZGGEVã«åŸºã¥ã„ã¦ã„ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>実数ãŠã‚ˆã³è¤‡ç´ è¡Œåˆ—</title>
+
+ <para>
+
+ 例ãˆã° evals ã‚„ R ã®ã‚ˆã†ãªå‡ºåŠ›å¤‰æ•°ã®åž‹ã¯å…¥åŠ›è¡Œåˆ— A ãŠã‚ˆã³ B ã®åž‹ã¨
+
+ åŒã˜ã§ã‚ã‚‹å¿…è¦ã¯ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„.
+
+ 以下ã®ãƒ‘ラグラフã§ã¯ã€è¡Œåˆ— A ã®å›ºæœ‰å€¤ãŠã‚ˆã³å›ºæœ‰ãƒ™ã‚¯ãƒˆãƒ«ã‚’
+
+ 計算ã™ã‚‹éš›ã®å‡ºåŠ›å¤‰æ•°ã®åž‹ã‚’解æžã—ã¾ã™.
+
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+
+ <para>実数 A 行列</para>
+
+ <itemizedlist>
+
+ <listitem>
+
+ <para>対称</para>
+
+ <para>固有値ã¨å›ºæœ‰ãƒ™ã‚¯ãƒˆãƒ«ã¯å®Ÿæ•°.</para>
+
+ </listitem>
+
+ <listitem>
+
+ <para>éžå¯¾ç§°</para>
+
+ <para>固有値ã¨å›ºæœ‰ãƒ™ã‚¯ãƒˆãƒ«ã¯è¤‡ç´ æ•°.</para>
+
+ </listitem>
+
+ </itemizedlist>
+
+ </listitem>
+
+ <listitem>
+
+ <para>複素 A 行列</para>
+
+ <itemizedlist>
+
+ <listitem>
+
+ <para>対称</para>
+
+ <para>固有値ã¯å®Ÿæ•°ã ãŒå›ºæœ‰ãƒ™ã‚¯ãƒˆãƒ«ã¯è¤‡ç´ æ•°.</para>
+
+ </listitem>
+
+ <listitem>
+
+ <para>éžå¯¾ç§°</para>
+
+ <para>固有値,固有ベクトルã¯è¤‡ç´ æ•°.</para>
+
+ </listitem>
+
+ </itemizedlist>
+
+ </listitem>
+
+ </itemizedlist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+// MATRIX EIGENVALUES
+A=diag([1,2,3]);
+X=rand(3,3);
+A=inv(X)*A*X;
+spec(A)
+
+x=poly(0,'x');
+pol=det(x*eye()-A)
+roots(pol)
+
+[S,X]=bdiag(A);
+clean(inv(X)*A*X)
+
+// PENCIL EIGENVALUES
+A=rand(3,3);
+[al,be,R] = spec(A,eye(A));
+al./be
+clean(inv(R)*A*R) //displaying the eigenvalues (generic matrix)
+A=A+%i*rand(A);
+E=rand(A);
+roots(det(A-%s*E)) //complex case
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="poly">poly</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="det">det</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="schur">schur</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="bdiag">bdiag</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="colcomp">colcomp</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="dsaupd">dsaupd</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="dnaupd">dnaupd</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/eigen/sva.xml b/modules/linear_algebra/help/ja_JP/eigen/sva.xml
new file mode 100755
index 000000000..64e9f801f
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/eigen/sva.xml
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="sva">
+
+ <refnamediv>
+
+ <refname>sva</refname>
+
+ <refpurpose>特異値近似</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[U,s,V]=sva(A,k)
+
+ [U,s,V]=sva(A,tol)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>k</term>
+
+ <listitem>
+
+ <para>æ•´æ•°</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tol</term>
+
+ <listitem>
+
+ <para>éžè² ã®å®Ÿæ•°</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ 特異値近似.
+
+ </para>
+
+ <para>
+
+ <literal>k</literal>ã‚’&gt;=1ã®æ•´æ•°ã¨ã™ã‚‹ã¨ã,
+
+ <literal>[U,S,V]=sva(A,k)</literal> ã¯,
+
+ rank(<literal>B</literal>)=<literal>k</literal>ã¨ã—ã¦
+
+ <literal>B=U*S*V'</literal>ãŒ<literal>A</literal>ã®æœ€è‰¯ã®L2è¿‘ä¼¼ã¨ãªã‚‹
+
+ よã†ãª
+
+ <literal>U,S</literal> ãŠã‚ˆã³<literal>V</literal>ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ 実数<literal>tol</literal>を指定ã—ãŸ<literal>[U,S,V]=sva(A,tol)</literal>ã¯,
+
+ <literal>A-B</literal>ã®L2ノルムã§ã‚ã‚‹<literal>B=U*S*V'</literal>ã®
+
+ 最大値ãŒ<literal>tol</literal>ã¨ãªã‚‹ã‚ˆã†ãª
+
+ <literal>U,S</literal> ãŠã‚ˆã³ <literal>V</literal> ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(5,4)*rand(4,5);
+[U,s,V]=sva(A,2);
+B=U*s*V';
+svd(A)
+svd(B)
+clean(svd(A-B))
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="svd">svd</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/eigen/svd.xml b/modules/linear_algebra/help/ja_JP/eigen/svd.xml
new file mode 100755
index 000000000..d5e536a04
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/eigen/svd.xml
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="svd">
+
+ <refnamediv>
+
+ <refname>svd</refname>
+
+ <refpurpose>特異値分解</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>s=svd(X)
+
+ [U,S,V]=svd(X)
+
+ [U,S,V]=svd(X,0) (obsolete)
+
+ [U,S,V]=svd(X,"e")
+
+ [U,S,V,rk]=svd(X [,tol])
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>s</term>
+
+ <listitem>
+
+ <para>実数ベクトル (特異値)</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>S</term>
+
+ <listitem>
+
+ <para>実数対角行列 (特異値)</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>U,V</term>
+
+ <listitem>
+
+ <para>直交ã¾ãŸã¯ãƒ¦ãƒ‹ã‚¿ãƒªæ­£æ–¹è¡Œåˆ—(特異値).</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tol</term>
+
+ <listitem>
+
+ <para>実数</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>[U,S,V] = svd(X)</literal> ã¯
+
+ <literal>X</literal> ã¨åŒæ¬¡å…ƒã§
+
+ é™é †ã«éžè² ã®å¯¾è§’è¦ç´ ã‚’有ã™ã‚‹
+
+ 対角行列 <literal>S</literal>ãŠã‚ˆã³
+
+ <literal>X = U*S*V'</literal>ã¨ãªã‚‹
+
+ ユニタリ行列 <literal>U</literal> 㨠<literal>V</literal>
+
+ を出力ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>[U,S,V] = svd(X,0)</literal> ã¯
+
+ "エコノミーサイズ"分解を出力ã—ã¾ã™.
+
+ <literal>X</literal> ãŒmè¡Œn列 (m &gt; n)ã®å ´åˆ,
+
+ <literal>U</literal> ã®æœ€åˆã®n列ã®ã¿ãŒè¨ˆç®—ã•ã‚Œ,
+
+ <literal>S</literal>㯠nè¡Œn列ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>s= svd(X)</literal> ã¯
+
+ 特異値をå«ã‚€ãƒ™ã‚¯ãƒˆãƒ«<literal>s</literal>ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>[U,S,V,rk]=svd(X,tol)</literal> ã¯
+
+ <literal>rk</literal>ã«åŠ ãˆã¦,
+
+ <literal>X</literal> ã®æ•°å€¤ãƒ©ãƒ³ã‚¯,ã™ãªã‚ã¡
+
+ <literal>tol</literal>より大ããªç‰¹ç•°å€¤ã®æ•°ã‚’出力ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>tol</literal>ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯
+
+ <literal>rank</literal>ã¨åŒã˜ã§ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+X=rand(4,2)*rand(2,4)
+svd(X)
+sqrt(spec(X*X'))
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection>
+
+ <title>å‚考</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="rank">rank</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="qr">qr</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="colcomp">colcomp</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="rowcomp">rowcomp</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="sva">sva</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="spec">spec</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>使用ã•ã‚Œã‚‹é–¢æ•°</title>
+
+ <para>
+
+ svd 分解ã¯Lapackã®ãƒ«ãƒ¼ãƒãƒ³ DGESVD (実数行列ã®å ´åˆ)ãŠã‚ˆã³
+
+ ZGESVD (複素数ã®å ´åˆ)ã«åŸºã¥ã„ã¦ã„ã‚‹.
+
+ </para>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/factorization/CHAPTER b/modules/linear_algebra/help/ja_JP/factorization/CHAPTER
new file mode 100755
index 000000000..e6daeb8eb
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/factorization/CHAPTER
@@ -0,0 +1,2 @@
+title = Factorization
+
diff --git a/modules/linear_algebra/help/ja_JP/factorization/givens.xml b/modules/linear_algebra/help/ja_JP/factorization/givens.xml
new file mode 100755
index 000000000..7eae55a1e
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/factorization/givens.xml
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="givens">
+
+ <refnamediv>
+
+ <refname>givens</refname>
+
+ <refpurpose>ギブンス変æ›</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>U=givens(xy)
+
+ U=givens(x,y)
+
+ [U,c]=givens(xy)
+
+ [U,c]=givens(x,y)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>x,y</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>xy</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¦ç´ æ•°2ã®åˆ—ベクトル</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>U</term>
+
+ <listitem>
+
+ <para>2x2 ユニタリ行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>c</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¦ç´ æ•°2ã®åˆ—ベクトル</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title><literal>xy = [x;y]</literal>ã¨ã—ã¦
+
+ <para>
+
+ <literal>U= givens(x, y)</literal> ã¾ãŸã¯ <literal>U = givens(xy)</literal>
+
+ ã¯,次ã®ã‚ˆã†ãª<literal>2</literal>x<literal>2</literal> ã®
+
+ ユニタリ行列 <literal>U</literal> ã‚’è¿”ã—ã¾ã™:
+
+ </para>
+
+ <para>
+
+ <literal>U*xy=[r;0]=c</literal>.
+
+ </para>
+
+ <para>
+
+ <note>
+
+ <literal>givens(x,y)</literal> ãŠã‚ˆã³ <literal>givens([x;y])</literal> ã¯ç­‰ä¾¡ã§ã‚ã‚‹ã“ã¨ã«
+
+ 注æ„ã—ã¦ãã ã•ã„.
+
+ </note>
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=[3,4;5,6];
+U=givens(A(:,1));
+U*A
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="qr">qr</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/factorization/householder.xml b/modules/linear_algebra/help/ja_JP/factorization/householder.xml
new file mode 100755
index 000000000..9643f73ee
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/factorization/householder.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="householder">
+
+ <refnamediv>
+
+ <refname>householder</refname>
+
+ <refpurpose>ãƒã‚¦ã‚¹ãƒ›ãƒ«ãƒ€ãƒ¼ç›´äº¤é¡æ˜ è¡Œåˆ—</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>u=householder(v [,w])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>v</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®åˆ—ベクトル</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>w</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>v</literal>ã¨åŒã˜å¤§ãã•ã®å®Ÿæ•°ã¾ãŸã¯è¤‡ç´ æ•°ã®åˆ—ベクトル.
+
+ デフォルト値ã¯<literal>eye(v)</literal>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>u</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®åˆ—ベクトル</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ åŒã˜å¤§ãã•ã®åˆ—ベクトル
+
+ <literal>v</literal>, <literal> w</literal> を指定ã™ã‚‹ã¨,
+
+ <literal>householder(v,w)</literal> ã¯,
+
+ <literal> (eye()-2*u*u')*v</literal>ãŒ<literal>w</literal>ã«æ¯”例ã™ã‚‹ã‚ˆã†ãª
+
+ ユニタリ列ベクトル<literal>u</literal>ã‚’è¿”ã—ã¾ã™.
+
+ <literal>(eye()-2*u*u')</literal> ã¯ãƒã‚¦ã‚¹ãƒ›ãƒ«ãƒ€ãƒ¼ç›´äº¤é¡æ˜ è¡Œåˆ—ã§ã™.
+
+ </para>
+
+ <para>
+
+ <literal>w</literal> ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯ <literal> eye(v)</literal>ã§ã™.
+
+ ã“ã®å ´åˆ,ベクトル<literal> (eye()-2*u*u')*v</literal> ã¯ãƒ™ã‚¯ãƒˆãƒ«
+
+ <literal> eye(v)*norm(v)</literal>ã§ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="qr">qr</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="givens">givens</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/factorization/sqroot.xml b/modules/linear_algebra/help/ja_JP/factorization/sqroot.xml
new file mode 100755
index 000000000..0498d89f5
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/factorization/sqroot.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="sqroot">
+
+ <refnamediv>
+
+ <refname>sqroot</refname>
+
+ <refpurpose>W*W' エルミート分解</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>sqroot(X)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>対称éžè² å®šå®Ÿã¾ãŸã¯è¤‡ç´ è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>X=W*W'</literal> ã¨ãªã‚‹ã‚ˆã†ãªWã‚’è¿”ã—ã¾ã™(SVDを使用).
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+X=rand(5,2)*rand(2,5);X=X*X';
+W=sqroot(X)
+norm(W*W'-X,1)
+X=rand(5,2)+%i*rand(5,2);X=X*X';
+W=sqroot(X)
+norm(W*W'-X,1)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="chol">chol</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="svd">svd</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/kernel/CHAPTER b/modules/linear_algebra/help/ja_JP/kernel/CHAPTER
new file mode 100755
index 000000000..be67920e1
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/kernel/CHAPTER
@@ -0,0 +1,2 @@
+title = Kernel
+
diff --git a/modules/linear_algebra/help/ja_JP/kernel/colcomp.xml b/modules/linear_algebra/help/ja_JP/kernel/colcomp.xml
new file mode 100755
index 000000000..31a6a6ba2
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/kernel/colcomp.xml
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="colcomp">
+
+ <refnamediv>
+
+ <refname>colcomp</refname>
+
+ <refpurpose>列圧縮,カーãƒãƒ«,ヌル空間</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[W,rk]=colcomp(A [,flag] [,tol])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>flag</term>
+
+ <listitem>
+
+ <para>文字列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tol</term>
+
+ <listitem>
+
+ <para>実数</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>W</term>
+
+ <listitem>
+
+ <para>正方正則行列 (基底変æ›)</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>rk</term>
+
+ <listitem>
+
+ <para>
+
+ æ•´æ•° (<literal>A</literal>ã®ãƒ©ãƒ³ã‚¯)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>A</literal>ã®åˆ—圧縮: <literal>Ac = A*W</literal> ã¯
+
+ 列圧縮,ã™ãªã‚ã¡ <literal>Ac=[0,Af]</literal> ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ ãŸã ã—, <literal>Af</literal> ã¯ãƒ•ãƒ«åˆ—ランクを有ã—ã¾ã™:
+
+ rank(<literal>Af</literal>) = rank(<literal>A</literal>) = <literal>rk</literal>.
+
+ </para>
+
+ <para>
+
+ <literal>flag</literal> ãŠã‚ˆã³ <literal>tol</literal> ã¯
+
+ オプションã®ãƒ‘ラメータ: <literal>flag = 'qr'</literal>
+
+ ã¾ãŸã¯ <literal>'svd'</literal> (デフォルトã¯
+
+ <literal>'svd'</literal>)ã§ã™.
+
+ </para>
+
+ <para>
+
+ <literal>tol</literal> = 許容誤差パラメータ (デフォルト値ã¯
+
+ <literal>%eps</literal>ã®ã‚ªãƒ¼ãƒ€ãƒ¼).
+
+ </para>
+
+ <para>
+
+ <literal>W</literal>ã®æœ€åˆã®<literal>ma-rk</literal>列ã¯,
+
+ <literal>size(A)=(na,ma)</literal>ã¨ã™ã‚‹ã¨ã,
+
+ <literal>A</literal>ã®ã‚«ãƒ¼ãƒãƒ«ã«åºƒãŒã‚Šã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,5);
+[X,r]=colcomp(A);
+norm(A*X(:,1:$-r),1)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="rowcomp">rowcomp</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="fullrf">fullrf</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="fullrfk">fullrfk</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="kernel">kernel</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/kernel/fullrf.xml b/modules/linear_algebra/help/ja_JP/kernel/fullrf.xml
new file mode 100755
index 000000000..6085443bb
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/kernel/fullrf.xml
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="fullrf">
+
+ <refnamediv>
+
+ <refname>fullrf</refname>
+
+ <refpurpose>フルランク分解</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[Q,M,rk]=fullrf(A,[tol])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tol</term>
+
+ <listitem>
+
+ <para>実数 (ランク定義時ã®é–¾å€¤)</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Q,M</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>rk</term>
+
+ <listitem>
+
+ <para>
+
+ æ•´æ•° (<literal>A</literal>ã®ãƒ©ãƒ³ã‚¯)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ フルランク分解 : <literal>fullrf</literal> ã¯,
+
+ <literal>A = Q*M</literal>ã¨ãªã‚‹ã‚ˆã†ãª
+
+ <literal>Q</literal> ãŠã‚ˆã³ <literal>M</literal>ã‚’è¿”ã—ã¾ã™.
+
+ ãŸã ã—,
+
+ range(<literal>Q</literal>)=range(<literal>A</literal>) ãŠã‚ˆã³
+
+ ker(<literal>M</literal>)=ker(<literal>A</literal>),
+
+ <literal>Q</literal> フル列ランク , <literal>M</literal> フル行ランク,
+
+ <literal>rk = rank(A) = #columns(Q) = #rows(M)</literal>ã§ã™.
+
+ </para>
+
+ <para>
+
+ <literal>tol</literal> ã¯ã‚ªãƒ—ションã®å®Ÿæ•°ãƒ‘ラメータã§ã™
+
+ (デフォルト値㯠<literal>sqrt(%eps)</literal>ã§ã™).
+
+ <literal>A</literal>ã®ãƒ©ãƒ³ã‚¯<literal>rk</literal>ã¯
+
+ <literal>norm(A)*tol</literal>より大ããª
+
+ 特異値ã®æ•°ã¨ã—ã¦å®šç¾©ã•ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ AãŒå¯¾ç§°ã®å ´åˆ,
+
+ <literal>fullrf</literal> 㯠<literal>M=Q'</literal>ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,5);
+[Q,M]=fullrf(A);
+norm(Q*M-A,1)
+[X,d]=rowcomp(A);Y=X';
+svd([A,Y(:,1:d),Q]) //span(Q) = span(A) = span(Y(:,1:2))
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="svd">svd</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="qr">qr</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="fullrfk">fullrfk</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="rowcomp">rowcomp</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="colcomp">colcomp</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/kernel/fullrfk.xml b/modules/linear_algebra/help/ja_JP/kernel/fullrfk.xml
new file mode 100755
index 000000000..8ce763a2c
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/kernel/fullrfk.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="fullrfk">
+
+ <refnamediv>
+
+ <refname>fullrfk</refname>
+
+ <refpurpose>A^kã®ãƒ•ãƒ«ãƒ©ãƒ³ã‚¯åˆ†è§£</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[Bk,Ck]=fullrfk(A,k)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>k</term>
+
+ <listitem>
+
+ <para>æ•´æ•°</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Bk,Ck</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ ã“ã®é–¢æ•°ã¯,<literal>A^k</literal>ã®ãƒ•ãƒ«ãƒ©ãƒ³ã‚¯åˆ†è§£,
+
+ ã™ãªã‚ã¡, <literal>Bk*Ck=A^k</literal> を計算ã—ã¾ã™.
+
+ ãŸã ã—, <literal>Bk</literal> ã¯åˆ—フルランク,
+
+ <literal>Ck</literal>ã¯è¡Œãƒ•ãƒ«ãƒ©ãƒ³ã‚¯ã§ã™.
+
+ range(<literal>Bk</literal>)=range(<literal>A^k</literal>)
+
+ ãŠã‚ˆã³ ker(<literal>Ck</literal>)=ker(<literal>A^k</literal>)ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>k=1</literal>ã®å ´åˆ, <literal>fullrfk</literal> ã¯
+
+ <literal>fullrf</literal>ã¨ç­‰ä¾¡ã«ãªã‚Šã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,5);[Bk,Ck]=fullrfk(A,3);
+norm(Bk*Ck-A^3,1)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="fullrf">fullrf</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="range">range</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/kernel/im_inv.xml b/modules/linear_algebra/help/ja_JP/kernel/im_inv.xml
new file mode 100755
index 000000000..de6c340d7
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/kernel/im_inv.xml
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="im_inv">
+
+ <refnamediv>
+
+ <refname>im_inv</refname>
+
+ <refpurpose>原åƒ</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[X,dim]=im_inv(A,B [,tol])
+
+ [X,dim,Y]=im_inv(A,B, [,tol])
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A,B</term>
+
+ <listitem>
+
+ <para>åŒã˜åˆ—ã®æ•°ã‚’有ã™ã‚‹å®Ÿæ•°ã¾ãŸã¯è¤‡ç´ æ•°è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>
+
+ 次数ãŒ<literal>A</literal>ã®åˆ—ã®æ•°ã«ç­‰ã—ã„直交ã¾ãŸã¯ãƒ¦ãƒ‹ã‚¿ãƒªæ­£æ–¹è¡Œåˆ—
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>dim</term>
+
+ <listitem>
+
+ <para>æ•´æ•° (部分空間ã®æ¬¡å…ƒ)</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Y</term>
+
+ <listitem>
+
+ <para>
+
+ 次数ãŒ<literal>A</literal>ãŠã‚ˆã³<literal>B</literal>ã®è¡Œã®æ•°ã«ç­‰ã—ã„直交行列.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>[X,dim]=im_inv(A,B)</literal> 㯠<literal>(A^-1)(B)</literal>,
+
+ ã™ãªã‚ã¡, <literal>A</literal>ã¸ã®åƒãŒ range(<literal>B</literal>) ã«
+
+ ã‚るベクトルを計算ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>X</literal>ã®æœ€åˆã®åˆ— <literal>dim</literal> ã¯
+
+ <literal>(A^-1)(B)</literal>ã«åºƒãŒã£ã¦ã„ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>tol</literal> ã¯éƒ¨åˆ†ç©ºé–“ã®å–ã‚Šè¾¼ã¿ã‚’確èªã™ã‚‹ãŸã‚ã«
+
+ 閾値ãŒä½¿ç”¨ã•ã‚Œã¦ãŠã‚Š,
+
+ ãã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯ <literal>tol = 100*%eps</literal> ã§ã™.
+
+ <literal>Y</literal> ãŒè¿”ã•ã‚Œã‚‹æ™‚,
+
+ <literal>[Y*A*X,Y*B]</literal> ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«åˆ†å‰²ã•ã‚Œã¾ã™:
+
+ <literal>[A11,A12;0,A22]</literal>,<literal>[B1;0]</literal>
+
+ </para>
+
+ <para>
+
+ ãŸã ã—, <literal>B1</literal>ã¯è¡Œãƒ•ãƒ«ãƒ©ãƒ³ã‚¯ (
+
+ <literal>rank(B)</literal>ã«ç­‰ã—ã„) ãã—㦠<literal>A22</literal> ã¯
+
+ 列フルランク㧠<literal>dim</literal> 列ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=[rand(2,5);[zeros(3,4),rand(3,1)]];B=[[1,1;1,1];zeros(3,2)];
+W=rand(5,5);A=W*A;B=W*B;
+[X,dim]=im_inv(A,B)
+svd([A*X(:,1:dim),B]) //vectors A*X(:,1:dim) belong to range(B)
+[X,dim,Y]=im_inv(A,B);[Y*A*X,Y*B]
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="rowcomp">rowcomp</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="spaninter">spaninter</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="spanplus">spanplus</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="linsolve">linsolve</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/kernel/kernel.xml b/modules/linear_algebra/help/ja_JP/kernel/kernel.xml
new file mode 100755
index 000000000..f46881733
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/kernel/kernel.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="kernel">
+
+ <refnamediv>
+
+ <refname>kernel</refname>
+
+ <refpurpose>カーãƒãƒ«, ヌル空間</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>W=kernel(A [,tol,[,flag])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®ãƒ•ãƒ«è¡Œåˆ—ã¾ãŸã¯å®Ÿæ•°ç–Žè¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>flag</term>
+
+ <listitem>
+
+ <para>
+
+ 文字列 <literal>'svd'</literal> (デフォルト) ã¾ãŸã¯ <literal>'qr'</literal>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tol</term>
+
+ <listitem>
+
+ <para>実数</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>W</term>
+
+ <listitem>
+
+ <para>列フルランク行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>W=kernel(A)</literal> ã¯<literal>A</literal>ã®ã‚«ãƒ¼ãƒãƒ« (ヌル空間)ã‚’è¿”ã—ã¾ã™.
+
+ A ãŒåˆ—フルランクã®å ´åˆ, 空ã®è¡Œåˆ— [] ãŒè¿”ã•ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>flag</literal> ãŠã‚ˆã³ <literal>tol</literal> ã¯
+
+ オプションã®ãƒ‘ラメータã§ã™: <literal>flag = 'qr'</literal>
+
+ ã¾ãŸã¯ <literal>'svd'</literal> (デフォルト㯠<literal>'svd'</literal>).
+
+ </para>
+
+ <para>
+
+ <literal>tol</literal> = 許容誤差パラメータ (デフォルト値㯠<literal>%eps</literal> ã®ã‚ªãƒ¼ãƒ€).
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(3,1)*rand(1,3);
+A*kernel(A)
+A=sparse(A);
+clean(A*kernel(A))
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="colcomp">colcomp</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="fullrf">fullrf</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="fullrfk">fullrfk</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="linsolve">linsolve</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/kernel/range.xml b/modules/linear_algebra/help/ja_JP/kernel/range.xml
new file mode 100755
index 000000000..30905174c
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/kernel/range.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="range">
+
+ <refnamediv>
+
+ <refname>range</refname>
+
+ <refpurpose>A^kã®ç¯„囲</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[X,dim]=range(A,k)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数正方行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>k</term>
+
+ <listitem>
+
+ <para>æ•´æ•°</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>直交実数行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>dim</term>
+
+ <listitem>
+
+ <para>æ•´æ•° (部分空間ã®æ¬¡å…ƒ)</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ 範囲 <literal>A^k</literal>を計算ã—ã¾ã™ ; <literal>X</literal> ã®
+
+ 最åˆã® dim è¡Œã¯, <literal>A^k</literal>ã®ç¯„囲ã«åºƒãŒã‚Šã¾ã™.
+
+ <literal>X</literal>ã®æœ€å¾Œã®è¡Œã¯,
+
+ ã“ã®ç›´äº¤ç›¸è£œãªç¯„囲ã«åºƒãŒã‚Šã¾ã™.
+
+ <literal>X*X'</literal> ã¯å˜ä½è¡Œåˆ—ã§ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(4,2)*rand(2,4); // 4 列ベクトル, 2 独立.
+[X,dim]=range(A,1);dim // 範囲を計算
+
+y1=A*rand(4,1); //Aã®ç¯„囲ã®ãƒ™ã‚¯ãƒˆãƒ«
+y2=rand(4,1); //Aã®ç¯„囲ã«ãªã„ベクトル
+norm(X(dim+1:$,:)*y1) //最後ã®ã‚¨ãƒ³ãƒˆãƒªã¯ã‚¼ãƒ­, y1 ã¯Aã®ç¯„囲
+norm(X(dim+1:$,:)*y2) //最後ã®ã‚¨ãƒ³ãƒˆãƒªã¯éžã‚¼ãƒ­
+
+I=X(1:dim,:)' //I ãŒç¯„囲ã®åŸºåº•
+coeffs=X(1:dim,:)*y1 // 基底Iã«é–¢é€£ã™ã‚‹y1ã®è¦ç´ 
+
+norm(I*coeffs-y1) //check
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="fullrfk">fullrfk</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="rowcomp">rowcomp</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>使用ã•ã‚Œã‚‹é–¢æ•°</title>
+
+ <para>
+
+ <literal>range</literal> 関数ã¯,
+
+ <link linkend="svd">svd</link>分解を使用ã™ã‚‹
+
+ <link linkend="rowcomp">rowcomp</link> 関数
+
+ ã«åŸºã¥ã„ã¦ã„ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/kernel/rowcomp.xml b/modules/linear_algebra/help/ja_JP/kernel/rowcomp.xml
new file mode 100755
index 000000000..dc29889fb
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/kernel/rowcomp.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="rowcomp">
+
+ <refnamediv>
+
+ <refname>rowcomp</refname>
+
+ <refpurpose>行圧縮, 範囲</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[W,rk]=rowcomp(A [,flag [,tol]])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>flag</term>
+
+ <listitem>
+
+ <para>オプションã®æ–‡å­—列, 指定å¯èƒ½ãªå€¤ã¯
+
+ <literal>'svd'</literal> ã¾ãŸã¯ <literal>'qr'</literal>ã§ã™.
+
+ デフォルト値 <literal>'svd'</literal>ã¯ã§ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tol</term>
+
+ <listitem>
+
+ <para>オプションã®éžè² ã®å®Ÿæ•°. デフォルト値ã¯
+
+ <literal>sqrt(%eps)*norm(A,1)</literal>.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>W</term>
+
+ <listitem>
+
+ <para>正方正則行列 (基底ã®å¤‰æ›´)</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>rk</term>
+
+ <listitem>
+
+ <para>
+
+ æ•´æ•° (<literal>A</literal>ã®ãƒ©ãƒ³ã‚¯)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>A</literal>ã®è¡Œåœ§ç¸®. <literal>Ac = W*A</literal> ã¯è¡Œåœ§ç¸®ã•ã‚ŒãŸè¡Œåˆ—ã§ã™: ã™ãªã‚ã¡,
+
+ <literal>Af</literal>を行フルランクã¨ã—ã¦
+
+ <literal>Ac=[Af;0]</literal> ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>flag</literal> ãŠã‚ˆã³ <literal>tol</literal> ã¯ã‚ªãƒ—ションã®ãƒ‘ラメータã§ã™: <literal>flag='qr'</literal>
+
+ ã¾ãŸã¯ <literal>'svd'</literal> (デフォルト <literal>'svd'</literal>).
+
+ </para>
+
+ <para>
+
+ <literal>tol</literal> ã¯è¨±å®¹èª¤å·®ãƒ‘ラメータã§ã™.
+
+ </para>
+
+ <para>
+
+ <literal>W'</literal>ã®æœ€åˆã®<literal>rk</literal> 列ã«ã¯,
+
+ <literal>A</literal>ã®ç¯„囲ãŒåºƒãŒã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>W</literal>ã®æœ€åˆã®(上å´ã®)<literal>rk</literal> è¡Œã«ã¯,
+
+ <literal>A</literal>ã®è¡Œç¯„囲ãŒåºƒãŒã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ éžã‚¼ãƒ­ãƒ™ã‚¯ãƒˆãƒ« <literal>x</literal> ã¯,
+
+ <literal>W*x</literal>ãŒ<literal>Ac</literal>ã«åŸºã¥ã行圧縮ã•ã‚ŒãŸå ´åˆ,
+
+ ã™ãªã‚ã¡,ãã®æœ€å¾Œã®è¦ç´ ã®ãƒŽãƒ«ãƒ ãŒæœ€åˆã®è¦ç´ ã«å¯¾ã—ã¦å°ã•ã„å ´åˆã«é™ã‚Š,
+
+ range(<literal>A</literal>)ã«å±žã—ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,4); // 4 列ベクトル, 2 ã¤ã¯ç‹¬ç«‹.
+[X,dim]=rowcomp(A);Xp=X';
+svd([Xp(:,1:dim),A]) //span(A) = span(Xp(:,1:dim)
+x=A*rand(4,1); //x 㯠span(A)ã«å±žã—ã¾ã™
+y=X*x
+norm(y(dim+1:$))/norm(y(1:dim)) // å°ã•ã„
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="colcomp">colcomp</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="fullrf">fullrf</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="fullrfk">fullrfk</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>使用ã•ã‚Œã‚‹é–¢æ•°</title>
+
+ <para>
+
+ <literal>rowcomp</literal> 関数ã¯<link linkend="svd">svd</link> ã¾ãŸã¯
+
+ <link linkend="qr">qr</link> 分解d.
+
+ </para>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/linear/CHAPTER b/modules/linear_algebra/help/ja_JP/linear/CHAPTER
new file mode 100755
index 000000000..7d9d9cf49
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/linear/CHAPTER
@@ -0,0 +1,2 @@
+title = Linear Equations
+
diff --git a/modules/linear_algebra/help/ja_JP/linear/aff2ab.xml b/modules/linear_algebra/help/ja_JP/linear/aff2ab.xml
new file mode 100755
index 000000000..f15783cf4
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/linear/aff2ab.xml
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="aff2ab">
+
+ <refnamediv>
+
+ <refname>aff2ab</refname>
+
+ <refpurpose>ç·šå½¢ (アフィン)関数を A,b ã«å¤‰æ›</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[A,b]=aff2ab(afunction,dimX,D [,flag])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>afunction</term>
+
+ <listitem>
+
+ <para>
+
+ scilab 関数 <literal> Y =fct(X,D) </literal>
+
+ ãŸã ã—, <literal>X, D, Y</literal> ã¯è¡Œåˆ—ã®<literal>リスト</literal>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>dimX</term>
+
+ <listitem>
+
+ <para>
+
+ p x 2 整数行列 (<literal>p</literal> ã¯
+
+ <literal>X</literal>ã®è¡Œåˆ—ã®æ•°)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>D</term>
+
+ <listitem>
+
+ <para>
+
+ 実数行列ã®<literal>list</literal> (ã¾ãŸã¯ä»»æ„ã®æœ‰åŠ¹ãªScilab オブジェクト).
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>flag</term>
+
+ <listitem>
+
+ <para>
+
+ オプションã®ãƒ‘ラメータ (<literal>flag='f'</literal>
+
+ ã¾ãŸã¯ <literal>flag='sp'</literal>)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>b</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>A</literal>ã¨åŒã˜è¡Œæ¬¡å…ƒã‚’有ã™ã‚‹å®Ÿæ•°ãƒ™ã‚¯ãƒˆãƒ«
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>aff2ab</literal>ã¯,アフィン関数ã®(正準形å¼ã®)行列表ç¾ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>afunction</literal> ã¯ä»¥ä¸‹ã®è¦å®šã®æ§‹æ–‡ã‚’有ã™ã‚‹é–¢æ•°ã§ã™:
+
+ <literal> Y=afunction(X,D) </literal>
+
+ ãŸã ã—, <literal> X=list(X1,X2,...,Xp) </literal> ã¯
+
+ p 個ã®å®Ÿæ•°è¡Œåˆ—ã®ãƒªã‚¹ãƒˆ,<literal> Y=list(Y1,...,Yq) </literal> ã¯
+
+ <literal> Xi</literal>ã«ç·šå½¢ã«ä¾å­˜ã™ã‚‹q 個ã®å®Ÿæ•°è¡Œåˆ—ã®ãƒªã‚¹ãƒˆã§ã™.
+
+ (オプションã®) 入力 <literal> D</literal> ã¯, X ã®é–¢æ•°ã¨ã—ã¦
+
+ Yを計算ã™ã‚‹ãŸã‚ã«å¿…è¦ãªãƒ‘ラメータを有ã—ã¦ã„ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal> dimX</literal> 㯠p x 2 行列ã§ã™: <literal>dimX(i)=[nri,nci]</literal>
+
+ ã¯è¡Œåˆ—<literal>Xi</literal>ã®è¡Œã¨åˆ—ã®å®Ÿéš›ã®æ•°ã§ã™.
+
+ ã“れらã®æ¬¡å…ƒã¯,çµæžœã®è¡Œåˆ—<literal>A</literal>ã®åˆ—ã®æ¬¡å…ƒã§ã‚ã‚‹
+
+ <literal>na</literal> を以下ã®ã‚ˆã†ã«å®šç¾©ã—ã¾ã™:
+
+ <literal>na=nr1*nc1 +...+ nrp*ncp</literal>.
+
+ </para>
+
+ <para>
+
+ オプションã®ãƒ‘ラメータ <literal>flag='sp'</literal> ãŒæŒ‡å®šã•ã‚ŒãŸå ´åˆ,
+
+ çµæžœã®è¡Œåˆ— <literal>A</literal>ã¯ç–Žè¡Œåˆ—ã¨ã—ã¦è¿”ã•ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ ã“ã®é–¢æ•°ã¯,未知変数ãŒè¡Œåˆ—ã§ã‚るよã†ãª
+
+ 線形方程å¼ã®ã‚·ã‚¹ãƒ†ãƒ ã‚’解ããŸã‚ã«æœ‰ç”¨ã§ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+// リアプノフ方程å¼ã‚½ãƒ«ãƒ (未知変数1ã¤, 拘æŸæ¡ä»¶1ã¤)
+deff('Y=lyapunov(X,D)','[A,Q]=D(:);Xm=X(:); Y=list(A''*Xm+Xm*A-Q)')
+A=rand(3,3);Q=rand(3,3);Q=Q+Q';D=list(A,Q);dimX=[3,3];
+[Aly,bly]=aff2ab(lyapunov,dimX,D);
+[Xl,kerA]=linsolve(Aly,bly); Xv=vec2list(Xl,dimX); lyapunov(Xv,D)
+Xm=Xv(:); A'*Xm+Xm*A-Q
+// 冗長ãªæ‹˜æŸ t X=X'を有ã™ã‚‹ãƒªã‚¢ãƒ—ノフ方程å¼ã‚½ãƒ«ãƒ
+// (変数1ã¤, 拘æŸæ¡ä»¶2ã¤t) D ã¯ã‚°ãƒ­ãƒ¼ãƒãƒ«å¤‰æ•°
+deff('Y=ly2(X,D)','[A,Q]=D(:);Xm=X(:); Y=list(A''*Xm+Xm*A-Q,Xm''-Xm)')
+A=rand(3,3);Q=rand(3,3);Q=Q+Q';D=list(A,Q);dimX=[3,3];
+[Aly,bly]=aff2ab(ly2,dimX,D);
+[Xl,kerA]=linsolve(Aly,bly); Xv=vec2list(Xl,dimX); ly2(Xv,D)
+// フランシス方程å¼
+// 以下ã®ã‚ˆã†ãªè¡Œåˆ— X1 ãŠã‚ˆã³ X2 を見ã¤ã‘ã‚‹:
+// A1*X1 - X1*A2 + B*X2 -A3 = 0
+// D1*X1 -D2 = 0
+deff('Y=bruce(X,D)','[A1,A2,A3,B,D1,D2]=D(:),...
+[X1,X2]=X(:);Y=list(A1*X1-X1*A2+B*X2-A3,D1*X1-D2)')
+A1=[-4,10;-1,2];A3=[1;2];B=[0;1];A2=1;D1=[0,1];D2=1;
+D=list(A1,A2,A3,B,D1,D2);
+[n1,m1]=size(A1);[n2,m2]=size(A2);[n3,m3]=size(B);
+dimX=[[m1,n2];[m3,m2]];
+[Af,bf]=aff2ab(bruce,dimX,D);
+[Xf,KerAf]=linsolve(Af,bf);Xsol=vec2list(Xf,dimX)
+bruce(Xsol,D)
+// Aを変æ›ã™ã‚‹å…¨ã¦ã®Xを見ã¤ã‘ã‚‹
+deff('y=f(X,D)','y=list(D(:)*X(:)-X(:)*D(:))')
+A=rand(3,3);dimX=[3,3];[Af,bf]=aff2ab(f,dimX,list(A));
+[Xf,KerAf]=linsolve(Af,bf);[p,q]=size(KerAf);
+Xsol=vec2list(Xf+KerAf*rand(q,1),dimX);
+C=Xsol(:); A*C-C*A
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="linsolve">linsolve</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/linear/chol.xml b/modules/linear_algebra/help/ja_JP/linear/chol.xml
new file mode 100755
index 000000000..3838ddb87
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/linear/chol.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="chol">
+
+ <refnamediv>
+
+ <refname>chol</refname>
+
+ <refpurpose>コレスキー分解</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[R]=chol(X)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®æ­£å®šå¯¾ç§°è¡Œåˆ—.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>X</literal> ãŒæ­£å®šã®å ´åˆ, <literal>R = chol(X)</literal> ã¯,
+
+ <literal>R'*R = X</literal>ã¨ãªã‚‹ã‚ˆã†ãª
+
+ 上三角行列<literal>R</literal>を出力ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>chol(X)</literal> ã¯<literal>X</literal>ã®å¯¾è§’é …
+
+ ã¨ä¸Šä¸‰è§’部ã®ã¿ã‚’使用ã—ã¾ã™.
+
+ 下三角部ã¯ä¸Šä¸‰è§’部ã®è»¢ç½®(複素共役)ã¨ã¿ãªã•ã‚Œã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>å‚考文献</title>
+
+ <para>
+
+ コレスキー分解ã¯Lapackルーãƒãƒ³ DPOTRF (実数行列ã®å ´åˆ)ãŠã‚ˆã³ ZPOTRF (複素行列ã®å ´åˆ)
+
+ ã«åŸºã¥ãã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+W=rand(5,5)+%i*rand(5,5);
+X=W*W';
+R=chol(X);
+norm(R'*R-X)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="spchol">spchol</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="qr">qr</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="svd">svd</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="bdiag">bdiag</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="fullrf">fullrf</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/linear/inv.xml b/modules/linear_algebra/help/ja_JP/linear/inv.xml
new file mode 100755
index 000000000..64e289d34
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/linear/inv.xml
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="inv">
+
+ <refnamediv>
+
+ <refname>inv</refname>
+
+ <refpurpose>逆行列</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>inv(X)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®æ­£æ–¹è¡Œåˆ—, 多項å¼è¡Œåˆ—ãŠã‚ˆã³
+
+ ä¼é”関数ã¾ãŸã¯çŠ¶æ…‹ç©ºé–“表ç¾ã®æœ‰ç†è¡Œåˆ—.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>inv(X)</literal> ã¯,正方行列 <literal>X</literal>ã®é€†è¡Œåˆ—
+
+ ã¨ãªã‚Šã¾ã™.
+
+ <literal>X</literal> ã®ã‚¹ã‚±ãƒ¼ãƒªãƒ³ã‚°ãŒ
+
+ 悪ã„å ´åˆã‚„特異行列ã«è¿‘ã„å ´åˆã«ã¯è­¦å‘Šã‚’出力ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ 多項å¼è¡Œåˆ—ã¾ãŸã¯ä¼é”関数表ç¾ã®æœ‰ç†è¡Œåˆ—ã®å ´åˆ,
+
+ <literal>inv(X)</literal> 㯠<literal>invr(X)</literal>ã«ç­‰ã—ããªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ 状態空間表ç¾ã®ç·šå½¢ã‚·ã‚¹ãƒ†ãƒ (<literal>syslin</literal> リスト)ã®å ´åˆ,
+
+ <literal>invr(X)</literal> 㯠<literal>invsyslin(X)</literal>ã«ç­‰ã—ããªã‚Šã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <para>
+
+ 数値行列用ã®<literal>inv</literal> 関数㯠Lapack ルーãƒãƒ³
+
+ DGETRF, DGETRI (実数行列ã®å ´åˆ)ãŠã‚ˆã³ ZGETRF, ZGETRI
+
+ (複素数ã®å ´åˆ)ã«åŸºã¥ã„ã¦ã„ã¾ã™.
+
+ 多項å¼ãŠã‚ˆã³æœ‰ç†è¡Œåˆ—ã«é–¢ã™ã‚‹ <literal>inv</literal> ã¯
+
+ Scilab関数<literal>invr</literal>ã«åŸºã¥ã„ã¦ã„ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);inv(A)*A
+x=poly(0,'x');
+A=[x,1,x;x^2,2,1+x;1,2,3];inv(A)*A
+A=[1/x,2;2+x,2/(1+x)]
+inv(A)*A
+A=ssrand(2,2,3);
+W=inv(A)*A
+clean(ss2tf(W))
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection>
+
+ <title>å‚考</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="slash">slash</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="backslash">backslash</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="pinv">pinv</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="qr">qr</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="lufact">lufact</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="lusolve">lusolve</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="invr">invr</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="coff">coff</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="coffg">coffg</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/linear/linsolve.xml b/modules/linear_algebra/help/ja_JP/linear/linsolve.xml
new file mode 100755
index 000000000..f34d07ead
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/linear/linsolve.xml
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="linsolve">
+
+ <refnamediv>
+
+ <refname>linsolve</refname>
+
+ <refpurpose>線形方程å¼ã‚½ãƒ«ãƒ</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[x0,kerA]=linsolve(A,b [,x0])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>
+
+ a <literal>na x ma</literal> 実数行列 (疎行列ã®å ´åˆã‚‚ã‚ã‚Š)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>b</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>na x 1</literal>ベクトル (<literal>A</literal>ã®è¡Œã¨åŒã˜æ¬¡å…ƒ)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>x0</term>
+
+ <listitem>
+
+ <para>実数ベクトル</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>kerA</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>ma x k</literal> 実数行列
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>linsolve</literal> ã¯,
+
+ <literal> A*x+b=0</literal>ã®è§£ã‚’å…¨ã¦è¨ˆç®—ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>x0</literal> ã¯ç‰¹è§£ (存在ã™ã‚‹å ´åˆ),
+
+ <literal> kerA </literal> ã¯<literal>A</literal>ã®ãƒŒãƒ«ç©ºé–“ã§ã™.
+
+ ä»»æ„ã®<literal>w</literal>ã«ã¤ã„ã¦<literal>x=x0+kerA*w</literal>ã¯,
+
+ <literal> A*x+b=0</literal>を満ãŸã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ 互æ›æ€§ã®ã‚ã‚‹ <literal>x0</literal> ãŒã‚¨ãƒ³ãƒˆãƒªã«æŒ‡å®šã•ã‚ŒãŸå ´åˆ,
+
+ <literal>x0</literal>ãŒè¿”ã•ã‚Œã¾ã™.
+
+ ãã†ã§ãªã„å ´åˆ,<literal>x0</literal>ã¨äº’æ›æ€§ã®ã‚ã‚‹ã‚‚ã®(存在ã™ã‚‹å ´åˆ)ãŒè¿”ã•ã‚Œã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(5,3)*rand(3,8);
+b=A*ones(8,1);[x,kerA]=linsolve(A,b);A*x+b //compatible b
+b=ones(5,1);[x,kerA]=linsolve(A,b);A*x+b //uncompatible b
+A=rand(5,5);[x,kerA]=linsolve(A,b), -inv(A)*b //x is unique
+// Benchmark with other linear sparse solver:
+[A,descr,ref,mtype] = ReadHBSparse(SCI+"/modules/umfpack/examples/bcsstk24.rsa");
+b = zeros(size(A,1),1);
+tic();
+res = umfpack(A,'\',b);
+mprintf('\ntime needed to solve the system with umfpack: %.3f\n',toc());
+tic();
+res = linsolve(A,b);
+mprintf('\ntime needed to solve the system with linsolve: %.3f\n',toc());
+tic();
+res = A\b;
+mprintf('\ntime needed to solve the system with the backslash operator: %.3f\n',toc());
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="inv">inv</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="pinv">pinv</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="colcomp">colcomp</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="im_inv">im_inv</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="umfpack">umfpack</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="backslash">backslash</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/linear/lsq.xml b/modules/linear_algebra/help/ja_JP/linear/lsq.xml
new file mode 100755
index 000000000..51c55183d
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/linear/lsq.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="lsq">
+
+ <refnamediv>
+
+ <refname>lsq</refname>
+
+ <refpurpose>線形最å°äºŒä¹—å•é¡Œ. </refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>X=lsq(A,B [,tol])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã® (m x n) 行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>B</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã® (m x p) 行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tol</term>
+
+ <listitem>
+
+ <para>Aã®å®ŸåŠ¹ãƒ©ãƒ³ã‚¯ã‚’定義ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã•ã‚Œã‚‹æ­£ã®ã‚¹ã‚«ãƒ©ãƒ¼
+
+ (Aã®ãƒ”ボットæ“作付ãQR分解ã«ãŠã‘る最å‰éƒ¨ã«ã‚る部分三角行列R11ã®æ¬¡æ•°ã¨ã—ã¦
+
+ 定義ã•ã‚Œ,æ¡ä»¶æ•°ã®æŽ¨å®šå€¤ã¯&lt;= 1/tolã¨ãªã‚Šã¾ã™.
+
+ tolã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯ <literal>sqrt(%eps)</literal>ã«è¨­å®šã•ã‚Œã¾ã™ )
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã® (n x p) 行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>X=lsq(A,B)</literal> ã¯æ–¹ç¨‹å¼ <literal>A*X=B</literal>ã®
+
+ 最å°äºŒä¹—解ã®æœ€å°ãƒŽãƒ«ãƒ ã‚’計算ã—ã¾ã™.
+
+ 一方, <literal>X=A \ B</literal>ã¯
+
+ å„列ã«æœ€å¤§<literal>rank(A)</literal>個ã®éžã‚¼ãƒ­è¦ç´ ã‚’有ã™ã‚‹æœ€å°äºŒä¹—解を計算ã—ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>å‚考文献</title>
+
+ <para>
+
+ <literal>lsq</literal> 関数ã¯LApack 関数 DGELSY (実行列ã®å ´åˆ)ãŠã‚ˆã³
+
+ ZGELSY (複素行列ã®å ´åˆ)ã«åŸºã¥ã„ã¦ã„ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+//Build the data
+x=(1:10)';
+y1=3*x+4.5+3*rand(x,'normal');
+y2=1.8*x+0.5+2*rand(x,'normal');
+plot2d(x,[y1,y2],[-2,-3])
+//Find the linear regression
+A=[x,ones(x)];B=[y1,y2];
+X=lsq(A,B);
+y1e=X(1,1)*x+X(2,1);
+y2e=X(1,2)*x+X(2,2);
+plot2d(x,[y1e,y2e],[2,3])
+//Difference between lsq(A,b) and A\b
+A=rand(4,2)*rand(2,3);//a rank 2 matrix
+b=rand(4,1);
+X1=lsq(A,b)
+X2=A\b
+[A*X1-b, A*X2-b] //the residuals are the same
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="backslash">backslash</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="inv">inv</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="pinv">pinv</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="rank">rank</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/linear/lu.xml b/modules/linear_algebra/help/ja_JP/linear/lu.xml
new file mode 100755
index 000000000..6ce19d0e3
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/linear/lu.xml
@@ -0,0 +1,299 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ * Copyright (C) 2009 - Digiteo - Michael Baudin
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="lu">
+
+ <refnamediv>
+
+ <refname>lu</refname>
+
+ <refpurpose>ピボットé¸æŠžä»˜ãã®LU 分解</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[L,U]= lu(A)
+
+ [L,U,E]= lu(A)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ— (m x n).</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>L</term>
+
+ <listitem>
+
+ <para> 実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ— (m x min(m,n)).</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>U</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ— (min(m,n) x n ).</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>E</term>
+
+ <listitem>
+
+ <para>a (n x n) ç½®æ›è¡Œåˆ—.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>[L,U]= lu(A)</literal> ã¯,
+
+ <literal>U</literal>を上三角行列,
+
+ <literal>L</literal>を何らã‹ã®ç‰¹åˆ¥ãªæ§‹é€ ã‚’æŒãŸãªã„一般的ãªè¡Œåˆ—ã¨ã—ã¦,
+
+ <literal>A = L*U</literal> ã¨ãªã‚‹ã‚ˆã†ãª
+
+ 2ã¤ã®è¡Œåˆ— <literal>L</literal> ãŠã‚ˆã³
+
+ <literal>U</literal> を出力ã—ã¾ã™.
+
+ 実際ã¯,行列<literal>A</literal>ã¯<literal>E*A=B*U</literal>
+
+ ã®ã‚ˆã†ã«åˆ†è§£ã•ã‚Œã¾ã™.
+
+ ãŸã ã—, 行列<literal>B</literal>ã¯ä¸‹ä¸‰è§’行列,
+
+ 行列<literal>L</literal>ã¯<literal>L=E'*B</literal>ã‹ã‚‰è¨ˆç®—ã•ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>A</literal> ãŒãƒ©ãƒ³ã‚¯ <literal>k</literal>を有ã—ã¦ã„ã‚‹å ´åˆ,
+
+ <literal>U</literal>ã®è¡Œ <literal>k+1</literal> ã‹ã‚‰
+
+ <literal>n</literal> ã¾ã§ã¯ 0 ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>[L,U,E]= lu(A)</literal> ã¯,
+
+ 上三角行列<literal>U</literal>ãŠã‚ˆã³
+
+ ç½®æ›è¡Œåˆ—ã‚’ <literal>E</literal>ã¨ã—ãŸä¸‹ä¸‰è§’行列 <literal>E*L</literal>,
+
+ ã«ã‚ˆã‚Š<literal>E*A = L*U</literal>ã¨ãªã‚‹ã‚ˆã†ãª
+
+ 3ã¤ã®è¡Œåˆ— <literal>L</literal>, <literal>U</literal> ãŠã‚ˆã³
+
+ <literal>E</literal>を出力ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>A</literal> ãŒå®Ÿæ•°è¡Œåˆ—ã®å ´åˆ,
+
+ 関数<literal>lufact</literal> ãŠã‚ˆã³ <literal>luget</literal>ã‚’
+
+ 用ã„ã‚‹ã“ã¨ã«ã‚ˆã‚Š,
+
+ ç½®æ›è¡Œåˆ—ã‚’å¾—ã‚‹ã“ã¨ãŒã§ãã¾ã™.
+
+ <literal>A</literal>ãŒãƒ•ãƒ«ãƒ©ãƒ³ã‚¯ã§ãªã„å ´åˆ,行列 <literal>L</literal>
+
+ ã®åˆ—圧縮も得るã“ã¨ãŒã§ãã‚‹.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例 #1</title>
+
+ <para>
+
+ 以下ã®ä¾‹ã§ã¯,大ãã•4ã®ãƒ’ルãƒãƒ¼ãƒˆè¡Œåˆ—を作æˆã—,
+
+ A=LU ã¨åˆ†è§£ã—ã¾ã™.
+
+ 行列 L ã¯ä¸‹ä¸‰è§’行列ã§ã¯ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„.
+
+ 下三角行列Lã‚’å–å¾—ã™ã‚‹ã«ã¯,
+
+ 出力引数 E ã‚’ Scilab ã«æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™.
+
+ </para>
+
+ <programlisting role="example"><![CDATA[
+a = testmatrix("hilb",4);
+[l,u]=lu(a)
+norm(l*u-a)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例 #2</title>
+
+ <para>
+
+ 以下ã®ä¾‹ã§ã¯,大ãã•4ã®ãƒ’ルãƒãƒ¼ãƒˆè¡Œåˆ—を作æˆã—,
+
+ EA=LU ã¨åˆ†è§£ã—ã¾ã™.
+
+ 行列 L ã¯ä¸‹ä¸‰è§’行列ã§ã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„.
+
+ </para>
+
+ <programlisting role="example"><![CDATA[
+a = testmatrix("hilb",4);
+[l,u,e]=lu(a)
+norm(l*u-e*a)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例 #3</title>
+
+ <para>
+
+ 以下ã®ä¾‹ã§ã¯, lufact ãŠã‚ˆã³ luget 関数を使用ã™ã‚‹
+
+ 方法を示ã—ã¦ã„ã¾ã™.
+
+ </para>
+
+ <programlisting role="example"><![CDATA[
+a=rand(4,4);
+[l,u]=lu(a)
+norm(l*u-a)
+[h,rk]=lufact(sparse(a))
+[P,L,U,Q]=luget(h);
+ludel(h)
+P=full(P);
+L=full(L);
+U=full(U);
+Q=full(Q);
+norm(P*L*U*Q-a)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="lufact">lufact</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="luget">luget</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="lusolve">lusolve</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="qr">qr</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="svd">svd</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>使用ã™ã‚‹é–¢æ•°</title>
+
+ <para>
+
+ lu 分解 Lapack ルーãƒãƒ³ DGETRF (実数行列ã®å ´åˆ)
+
+ ãŠã‚ˆã³ ZGETRF (複素数ã®å ´åˆ) ã«åŸºã¥ã„ã¦ã„ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/linear/pinv.xml b/modules/linear_algebra/help/ja_JP/linear/pinv.xml
new file mode 100755
index 000000000..1b59ae16c
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/linear/pinv.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="pinv">
+
+ <refnamediv>
+
+ <refname>pinv</refname>
+
+ <refpurpose>擬似逆行列</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>pinv(A,[tol])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tol</term>
+
+ <listitem>
+
+ <para>実数</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>X= pinv(A)</literal> ã¯,
+
+ <literal>A'</literal>ã¨åŒã˜æ¬¡å…ƒã®ä»¥ä¸‹ã®ã‚ˆã†ãª
+
+ 行列<literal>X</literal>を出力ã—ã¾ã™:
+
+ </para>
+
+ <para>
+
+ <literal>A*X*A = A, X*A*X = X</literal> ãã—ã¦
+
+ <literal>A*X</literal> ãŠã‚ˆã³ <literal>X*A</literal>
+
+ ã¯å…±ã«ã‚¨ãƒ«ãƒŸãƒ¼ãƒˆè¡Œåˆ—ã§ã™.
+
+ </para>
+
+ <para>
+
+ 計算ã¯ç‰¹ç•°å€¤åˆ†è§£ã«åŸºã¥ã„ã¦ãŠã‚Š,
+
+ 許容値よりもå°ã•ã„特異値㯠0 ã¨ã—ã¦æ‰±ã‚ã‚Œã¾ã™:
+
+ ã“ã®è¨±å®¹èª¤å·®ã¯ <literal>X=pinv(A,tol)</literal>
+
+ ã§ã‚¢ã‚¯ã‚»ã‚¹ã•ã‚Œã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,4);
+norm(A*pinv(A)*A-A,1)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="rank">rank</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="svd">svd</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="qr">qr</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>使用ã•ã‚Œã‚‹é–¢æ•°</title>
+
+ <para>
+
+ <literal>pinv</literal> 関数ã¯ç‰¹ç•°å€¤åˆ†è§£ã«åŸºã¥ã„ã¦ã„ã¾ã™
+
+ (Scilab関数 <literal>svd</literal>).
+
+ </para>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/linear/qr.xml b/modules/linear_algebra/help/ja_JP/linear/qr.xml
new file mode 100755
index 000000000..d1b1acdad
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/linear/qr.xml
@@ -0,0 +1,378 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="qr">
+
+ <refnamediv>
+
+ <refname>qr</refname>
+
+ <refpurpose>QR 分解</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[Q,R]=qr(X [,"e"])
+
+ [Q,R,E]=qr(X [,"e"])
+
+ [Q,R,rk,E]=qr(X [,tol])
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tol</term>
+
+ <listitem>
+
+ <para>éžè² ã®å®Ÿæ•°</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Q</term>
+
+ <listitem>
+
+ <para>正方直交ã¾ãŸã¯ãƒ¦ãƒ‹ã‚¿ãƒªè¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>R</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>X</literal>ã¨åŒã˜æ¬¡å…ƒã®è¡Œåˆ—
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>E</term>
+
+ <listitem>
+
+ <para>ç½®æ›è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>rk</term>
+
+ <listitem>
+
+ <para>
+
+ æ•´æ•° (<literal>X</literal>ã®QRランク)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>[Q,R] = qr(X)</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>X= Q*R</literal>ã¨ãªã‚‹ã‚ˆã†ãª
+
+ <literal>X</literal>ã¨åŒã˜æ¬¡å…ƒã®
+
+ 上三角行列<literal>R</literal>ãŠã‚ˆã³ç›´äº¤(複素数ã®å ´åˆã¯ãƒ¦ãƒ‹ã‚¿ãƒª)行列
+
+ <literal>Q</literal>を出力ã—ã¾ã™.
+
+ <literal>[Q,R] = qr(X,"e")</literal>ã¯æ¬¡ã«ã‚ˆã†ã«
+
+ "エコノミーサイズ"ã§å‡ºåŠ›ã—ã¾ã™:
+
+ <literal>X</literal> ㌠mè¡Œn列 (m &gt; n)ã®å ´åˆ,
+
+ <literal>Q</literal>ã®æœ€åˆã®n列ã®ã¿ãŒ
+
+ <literal>R</literal>ã®æœ€åˆã®nè¡Œã¨åŒæ™‚ã«è¨ˆç®—ã•ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>Q*R = X</literal> ã‹ã‚‰,
+
+ 行列 <literal>X</literal>ã®k番目ã®åˆ—ã¯,
+
+ (ä¿‚æ•° <literal> R(1,k), ..., R(k,k) </literal>を用ã„ã¦)
+
+ <literal>Q</literal>ã®æœ€åˆã®k列ã®ç·šå½¢çµåˆã§è¡¨ã•ã‚Œã¾ã™.
+
+ <literal>Q</literal>ã®æœ€åˆã®k列ã¯,<literal>X</literal>ã®æœ€åˆã®k列
+
+ ã«åºƒãŒã‚‹éƒ¨åˆ†ç©ºé–“ã®ç›´äº¤åŸºåº•ã‚’作æˆã—ã¾ã™.
+
+ <literal>X</literal>ã®åˆ—<literal>k</literal>(ã™ãªã‚ã¡, <literal>X(:,k)</literal> )
+
+ ãŒ<literal>X</literal>ã®æœ€åˆã®<literal>p</literal>列ã®ç·šå½¢çµåˆã®å ´åˆ,
+
+ エントリ<literal>R(p+1,k), ..., R(k,k)</literal>㯠0 ã¨ãªã‚Šã¾ã™.
+
+ ã“ã®å ´åˆ,<literal>R</literal>ã¯ä¸Šå°å½¢ã¨ãªã‚Šã¾ã™.
+
+ <literal>X</literal> ãŒãƒ©ãƒ³ã‚¯<literal>rk</literal>を有ã™ã‚‹å ´åˆ,
+
+ è¡Œ <literal>R(rk+1,:), R(rk+2,:), ...</literal> 㯠0 ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>[Q,R,E] = qr(X)</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>X*E = Q*R</literal>ã¨ãªã‚‹ã‚ˆã†ãª
+
+ (列)ç½®æ›è¡Œåˆ—<literal>E</literal>,
+
+ é™é †ã®å¯¾è§’è¦ç´ ã‚’有ã™ã‚‹ä¸Šä¸‰è§’行列 <literal>R</literal>,
+
+ 直交(ã¾ãŸã¯ãƒ¦ãƒ‹ã‚¿ãƒª)<literal>Q</literal>
+
+ を出力ã—ã¾ã™.
+
+ <literal>rk</literal>ãŒ<literal>X</literal>ã®ãƒ©ãƒ³ã‚¯ã®å ´åˆ,
+
+ <literal>R</literal>ã®ä¸»å¯¾è§’é …ã«æ²¿ã£ãŸ
+
+ 最åˆã®<literal>rk</literal>個ã®ã‚¨ãƒ³ãƒˆãƒª,
+
+ ã™ãªã‚ã¡,<literal>R(1,1), R(2,2), ..., R(rk,rk)</literal>ã¯
+
+ å…¨ã¦0以外ã¨ãªã‚Šã¾ã™.
+
+ <literal>[Q,R,E] = qr(X,"e")</literal> ã¯
+
+ "エコノミーサイズ"ã§å‡ºåŠ›ã—ã¾ã™:
+
+ <literal>X</literal> ㌠mè¡Œn列 (m &gt; n)ã®å ´åˆ,
+
+ <literal>Q</literal>ã®æœ€åˆã®n列ã®ã¿ãŒ
+
+ <literal>R</literal>ã®æœ€åˆã®nè¡Œã¨åŒæ™‚ã«è¨ˆç®—ã•ã‚Œã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>[Q,R,rk,E] = qr(X ,tol)</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>rk</literal> = <literal>X</literal>ã®ãƒ©ãƒ³ã‚¯ã®æŽ¨å®šå€¤
+
+ ã‚’è¿”ã—ã¾ã™.
+
+ ã™ãªã‚ã¡, <literal>rk</literal>ã¯,
+
+ 指定ã—ãŸé–¾å€¤<literal>tol</literal>より大ããª
+
+ <literal>R</literal>ã®å¯¾è§’è¦ç´ ã®æ•°ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>[Q,R,rk,E] = qr(X) </term>
+
+ <listitem>
+
+ <para>
+
+ <literal>rk</literal> = <literal>X</literal>ã®ãƒ©ãƒ³ã‚¯ã®æŽ¨å®šå€¤
+
+ ã‚’è¿”ã—ã¾ã™.
+
+ ã™ãªã‚ã¡,<literal>rk</literal> ã¯
+
+ <literal>tol=R(1,1)*%eps*max(size(R))</literal>より大ããª
+
+ <literal>R</literal>ã®å¯¾è§’è¦ç´ ã®æ•°ã¨ãªã‚Šã¾ã™.
+
+ <literal>R</literal>ã®æ¡ä»¶æ•°ã‚’用ã„ã‚‹
+
+ ランク計算型ã®QR分解ã«ã¤ã„ã¦ã¯,<literal>rankqr</literal>ã‚’
+
+ å‚ç…§ã—ã¦ãã ã•ã„.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+// QR factorization, generic case
+// X is tall (full rank)
+X=rand(5,2);[Q,R]=qr(X); [Q'*X R]
+//X is fat (full rank)
+X=rand(2,3);[Q,R]=qr(X); [Q'*X R]
+//Column 4 of X is a linear combination of columns 1 and 2:
+X=rand(8,5);X(:,4)=X(:,1)+X(:,2); [Q,R]=qr(X); R, R(:,4)
+//X has rank 2, rows 3 to $ of R are zero:
+X=rand(8,2)*rand(2,5);[Q,R]=qr(X); R
+//Evaluating the rank rk: column pivoting ==> rk first
+//diagonal entries of R are non zero :
+A=rand(5,2)*rand(2,5);
+[Q,R,rk,E] = qr(A,1.d-10);
+norm(Q'*A-R)
+svd([A,Q(:,1:rk)]) //span(A) =span(Q(:,1:rk))
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="rankqr">rankqr</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="rank">rank</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="svd">svd</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="rowcomp">rowcomp</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="colcomp">colcomp</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>使用ã™ã‚‹é–¢æ•°</title>
+
+ <para>
+
+ qr 分解ã¯Lapack ルーãƒãƒ³ DGEQRF, DGEQPF,
+
+ DORGQR (実数行列)ãŠã‚ˆã³ ZGEQRF, ZGEQPF, ZORGQR (複素数ã®å ´åˆ)
+
+ ã«åŸºã¥ã„ã¦ã„ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/linear/rankqr.xml b/modules/linear_algebra/help/ja_JP/linear/rankqr.xml
new file mode 100755
index 000000000..b6013b2fa
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/linear/rankqr.xml
@@ -0,0 +1,290 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="rankqr">
+
+ <refnamediv>
+
+ <refname>rankqr</refname>
+
+ <refpurpose>QR分解ã«åŸºã¥ã階数</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[Q,R,JPVT,RANK,SVAL]=rankqr(A, [RCOND,JPVT])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>RCOND</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>A</literal>ã®å®ŸåŠ¹éšŽæ•°(ランク)を定義ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã•ã‚Œã‚‹å®Ÿæ•°ã§ã™.
+
+ ã“ã®éšŽæ•°ã¯,
+
+ <literal>A</literal>ã®ãƒ”ボットé¸æŠžä»˜ãã®QR分解ã®ä¸­ã®
+
+ 最大ã®å…ˆé ­ã®éƒ¨åˆ†ä¸‰è§’行列<literal>R11</literal>ã®æ¬¡æ•°ã¨ã—ã¦å®šç¾©ã•ã‚Œã¾ã™.
+
+ ãã®æŽ¨å®šã•ã‚ŒãŸæ¡ä»¶æ•°ã¯ &lt; <literal>1/RCOND</literal> ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>JPVT</term>
+
+ <listitem>
+
+ <para>
+
+ エントリã®æ•´æ•°ãƒ™ã‚¯ãƒˆãƒ«, <literal>JPVT(i)</literal> ㌠0ã§ãªã„å ´åˆ,
+
+ <literal> A</literal>ã®<literal>i</literal>列目ã¯
+
+ <literal>AP</literal>ã®å…ˆé ­ã¨äº¤æ›ã•ã‚Œ,
+
+ ãれ以外ã®å ´åˆ,<literal>i</literal>ã¯è‡ªç”±ãªåˆ—ã¨ãªã‚Šã¾ã™.
+
+ 処ç†çµ‚了時ã«<literal>JPVT(i) = k</literal>ã®å ´åˆ,
+
+ <literal>A*P</literal>ã®<literal>i</literal>列目ã¯,
+
+ <literal>A</literal>ã®<literal>k</literal>列目ã¨ãªã£ã¦ã„ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>RANK</term>
+
+ <listitem>
+
+ <para>
+
+ <literal>A</literal>ã®å®ŸåŠ¹ãƒ©ãƒ³ã‚¯,ã™ãªã‚ã¡,
+
+ 部分行列<literal>R11</literal>ã®æ¬¡æ•°.
+
+ ã“ã‚Œã¯,<literal>A</literal>ã®å®Œå…¨ãªç›´äº¤åˆ†è§£ã«ãŠã‘ã‚‹
+
+ 部分行列<literal>T1</literal>ã®æ¬¡æ•°ã¨åŒã˜ã§ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>SVAL</term>
+
+ <listitem>
+
+ <para>
+
+ 3ã¤ã®è¦ç´ ã‚’有ã™ã‚‹å®Ÿæ•°ãƒ™ã‚¯ãƒˆãƒ«;三角分解<literal>R</literal>ã®
+
+ 特異値ã®æŽ¨å®šå€¤.
+
+ </para>
+
+ <para>
+
+ <literal>SVAL(1)</literal> ã¯,
+
+ <literal>R(1:RANK,1:RANK)</literal>ã®æœ€å¤§ç‰¹ç•°å€¤ã§ã™;
+
+ </para>
+
+ <para>
+
+ <literal>SVAL(2)</literal> ã¯,
+
+ <literal>R(1:RANK,1:RANK)</literal>ã®æœ€å°ç‰¹ç•°å€¤ã§ã™;
+
+ </para>
+
+ <para>
+
+ <literal>SVAL(3)</literal> ã¯,
+
+ <literal>RANK</literal> &lt; <literal>MIN(M,N)</literal>ã®å ´åˆ,
+
+ <literal>R(1:RANK+1,1:RANK+1)</literal>,
+
+ ãã†ã§ãªã„å ´åˆ, <literal>R(1:RANK,1:RANK)</literal>ã®æœ€å°ç‰¹ç•°å€¤ã§ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ 実数ã¾ãŸã¯è¤‡ç´ æ•°ã®Mè¡ŒN列一般行列<literal>A</literal>ã®(オプションã§)
+
+ ランク出力を伴ãªã†QR分解を計算ã—ã¾ã™.
+
+ ランクãŒä¸å®Œå…¨ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚ã‚Š,実効ランクをæ¡ä»¶æ•°ã®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ã‚¿ãƒ«æŽ¨å®šã«ã‚ˆã‚Š
+
+ 推定ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ ã“ã®ãƒ«ãƒ¼ãƒãƒ³ã¯åˆ—ピボットé¸æŠžä»˜ãã®QR分解を使用ã—ã¾ã™:
+
+ </para>
+
+ <programlisting role=""><![CDATA[
+A * P = Q * R, where R = [ R11 R12 ],
+ [ 0 R22 ]
+ ]]></programlisting>
+
+ <para>
+
+ <literal>R11</literal>ã¯,æ¡ä»¶æ•°ã®æŽ¨å®šå€¤ãŒ<literal>1/RCOND</literal>未満ã¨ãªã‚‹
+
+ 最大ã®éƒ¨åˆ†è¡Œåˆ—ã¨ã—ã¦å®šç¾©ã•ã‚Œã¾ã™.
+
+ <literal>R11</literal>, <literal>RANK</literal>ã®æ¬¡æ•°ã¯,
+
+ <literal>A</literal>ã®å®ŸåŠ¹éšŽæ•°ã§ã™.
+
+ </para>
+
+ <para>
+
+ 三角分解ãŒéšŽæ•°å‡ºåŠ›ã‚’ä¼´ãªã†å ´åˆ (ã“ã‚Œã¯å…ˆé ­ã®åˆ—ãŒå¥å…¨(well-conditioned)ãªå ´åˆã§ã™),
+
+ <literal>SVAL(1)</literal>ã¯<literal>A</literal>ã®æœ€å¤§ç‰¹ç•°å€¤ã®
+
+ 推定値ã¨ãªã‚Š,<literal>SVAL(2)</literal> ãŠã‚ˆã³
+
+ <literal>SVAL(3)</literal>ã¯,ãã‚Œãžã‚Œ <literal>A</literal>ã®
+
+ <literal>RANK</literal>番目ãŠã‚ˆã³<literal>(RANK+1)</literal>番目ã®
+
+ 特異値ã®æŽ¨å®šå€¤ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ ã“れらã®å€¤ã‚’評価ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Š,é¸æŠžã—ãŸ<literal>RCOND</literal>ã®
+
+ 値ã«ã‚ˆã‚ŠéšŽæ•°ãŒè‰¯å¥½ã«å®šç¾©ã•ã‚Œã‚‹ã“ã¨ã‚’確èªã™ã‚‹ã“ã¨ãŒã§ãã¾ã™.
+
+ 比 <literal>SVAL(1)/SVAL(2)</literal> ã¯,
+
+ <literal>R(1:RANK,1:RANK)</literal>ã®æ¡ä»¶æ•°ã®æŽ¨å®šå€¤ã§ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(5,3)*rand(3,7);
+[Q,R,JPVT,RANK,SVAL]=rankqr(A,%eps)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="qr">qr</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="rank">rank</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>使用ã•ã‚Œã‚‹é–¢æ•°</title>
+
+ <para>
+
+ Slicot library routines MB03OD, ZB03OD.
+
+ </para>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/markov/CHAPTER b/modules/linear_algebra/help/ja_JP/markov/CHAPTER
new file mode 100755
index 000000000..c29eb913c
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/markov/CHAPTER
@@ -0,0 +1,2 @@
+title = Markov Matrices
+
diff --git a/modules/linear_algebra/help/ja_JP/markov/classmarkov.xml b/modules/linear_algebra/help/ja_JP/markov/classmarkov.xml
new file mode 100755
index 000000000..48055e45c
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/markov/classmarkov.xml
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="classmarkov">
+
+ <refnamediv>
+
+ <refname>classmarkov</refname>
+
+ <refpurpose>マルコフ行列ã®å†å¸°çš„ã‹ã¤ä¸€æ™‚çš„ãªã‚¯ãƒ©ã‚¹</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[perm,rec,tr,indsRec,indsT]=classmarkov(M)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>M</term>
+
+ <listitem>
+
+ <para>実数 N x N マルコフ行列. å„è¡Œã®ã‚¨ãƒ³ãƒˆãƒªã®åˆè¨ˆã‚’
+
+ 1ã«åŠ ãˆãŸã‚‚ã®
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>perm</term>
+
+ <listitem>
+
+ <para>整数交æ›ãƒ™ã‚¯ãƒˆãƒ«.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>rec, tr</term>
+
+ <listitem>
+
+ <para>整数ベクトル, 数値 (å„å†å¸°çš„クラスã«ãŠã‘る状態é‡ã®æ•°,
+
+ 一時的ãªçŠ¶æ…‹é‡ã®æ•°).
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>indsRec,indsT</term>
+
+ <listitem>
+
+ <para>整数ベクトル. (å†å¸°çš„ãŠã‚ˆã³ä¸€æ™‚çš„ãªçŠ¶æ…‹é‡ã®æ·»å­—).</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ 以下ã®ã‚ˆã†ãªç½®æ›ãƒ™ã‚¯ãƒˆãƒ«<literal>perm</literal>ã‚’è¿”ã—ã¾ã™
+
+ </para>
+
+ <programlisting role=""><![CDATA[
+M(perm,perm) = [M11 0 0 0 0 0]
+ [0 M22 0 0 0]
+ [0 0 M33 0]
+ [ ... ]
+ [0 0 Mrr 0]
+ [* * * Q]
+ ]]></programlisting>
+
+ <para>
+
+ å„ <literal>Mii</literal> ã¯<literal>rec(i) i=1,..,r</literal>次ã®
+
+ マルコフ行列ã§ã™.
+
+ <literal>Q</literal>ã¯,<literal>tr</literal>次ã®ã‚µãƒ–マルコフ行列ã§ã™.
+
+ 1 ã‹ã‚‰ sum(rec)ã®çŠ¶æ…‹é‡ã¯å†å¸°çš„ã§,
+
+ r+1ã‹ã‚‰nã¯ä¸€æ™‚çš„ãªçŠ¶æ…‹é‡ã§ã™.
+
+ <literal>perm=[indsRec,indsT]</literal>ã¨ãªã‚Šã¾ã™.
+
+ ãŸã ã—, indsRec ã¯å¤§ãã• sum(rec)ã®ãƒ™ã‚¯ãƒˆãƒ«,
+
+ indsT ã¯å¤§ãã• trã®ãƒ™ã‚¯ãƒˆãƒ«ã§ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+//P ã¯2ã¤ã®å†å¸°çš„ãªã‚¯ãƒ©ã‚¹ (2ãŠã‚ˆã³1個ã®çŠ¶æ…‹é‡ã‚’有ã™ã‚‹) 2ã¤ã®ä¸€æ™‚çš„ãªçŠ¶æ…‹é‡
+P=genmarkov([2,1],2,'perm')
+[perm,rec,tr,indsRec,indsT]=classmarkov(P);
+P(perm,perm)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="genmarkov">genmarkov</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="eigenmarkov">eigenmarkov</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/markov/eigenmarkov.xml b/modules/linear_algebra/help/ja_JP/markov/eigenmarkov.xml
new file mode 100755
index 000000000..11762fb51
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/markov/eigenmarkov.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="eigenmarkov">
+
+ <refnamediv>
+
+ <refname>eigenmarkov</refname>
+
+ <refpurpose>æ­£è¦åŒ–ã•ã‚ŒãŸå·¦ãŠã‚ˆã³å³ãƒžãƒ«ã‚³ãƒ•å›ºæœ‰ãƒ™ã‚¯ãƒˆãƒ«</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[M,Q]=eigenmarkov(P)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>P</term>
+
+ <listitem>
+
+ <para>実数 N x N マルコフ行列. 1ã«åŠ ãˆã‚‹å„è¡Œã®ã‚¨ãƒ³ãƒˆãƒªã®åˆè¨ˆ.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>M</term>
+
+ <listitem>
+
+ <para>N個ã®åˆ—を有ã™ã‚‹å®Ÿæ•°è¡Œåˆ—.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Q</term>
+
+ <listitem>
+
+ <para>N個ã®è¡Œã‚’有ã™ã‚‹å®Ÿæ•°è¡Œåˆ—.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ マルコフ推移行列 P ã®å›ºæœ‰å€¤ 1 ã«é–¢é€£ã™ã‚‹
+
+ æ­£è¦åŒ–ã•ã‚ŒãŸå·¦ãŠã‚ˆã³å³å›ºæœ‰ãƒ™ã‚¯ãƒˆãƒ«ã‚’è¿”ã—ã¾ã™.
+
+ ã“ã®å›ºæœ‰å€¤ã®å¤šé‡åº¦ãŒ m ã§, P㌠N x N ã®å ´åˆ,
+
+ M 㯠m x N 行列㧠Q 㯠N x m 行列ã¨ãªã‚Šã¾ã™.
+
+ M(k,:) ã¯k番目ã®ã‚¨ãƒ«ã‚´ãƒ¼ãƒ‰é›†åˆ(å†å¸°çš„クラス)ã«é–¢é€£ã™ã‚‹
+
+ 確率分布ベクトルã§ã™.
+
+ M(k,x) ã¯ã€€x ㌠k番目ã®å†å¸°çš„クラスã«ãªã„å ´åˆã«ã¯
+
+ 0ã¨ãªã‚Šã¾ã™.
+
+ Q(x,k) ã¯x ã‹ã‚‰å§‹ã¾ã‚‹ k 番目ã®å†å¸°çš„クラスã«æœ€çµ‚çš„ã«ã‚る確率ã§ã™.
+
+ 大ããª<literal>k</literal>ã«é–¢ã—ã¦<literal>P^k</literal> ãŒ
+
+ åŽæŸã™ã‚‹å ´åˆ(1以外ã«å˜ä½å††ä¸Šã«å›ºæœ‰å€¤ãŒãªã„),
+
+ 極é™ã¯<literal>Q*M</literal>ã¨ãªã‚Šã¾ã™(固有投影).
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+//P ã¯2ã¤ã®å†å¸°çš„ãªã‚¯ãƒ©ã‚¹ (2ãŠã‚ˆã³1個ã®çŠ¶æ…‹é‡ã‚’有ã™ã‚‹) 2ã¤ã®ä¸€æ™‚çš„ãªçŠ¶æ…‹é‡
+P=genmarkov([2,1],2)
+[M,Q]=eigenmarkov(P);
+P*Q-Q
+Q*M-P^20
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="genmarkov">genmarkov</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="classmarkov">classmarkov</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/markov/genmarkov.xml b/modules/linear_algebra/help/ja_JP/markov/genmarkov.xml
new file mode 100755
index 000000000..287e19b83
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/markov/genmarkov.xml
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="genmarkov">
+
+ <refnamediv>
+
+ <refname>genmarkov</refname>
+
+ <refpurpose>
+
+ å†å¸°çš„ãŠã‚ˆã³ä¸€æ™‚çš„ãªã‚¯ãƒ©ã‚¹ã‚’有ã™ã‚‹ãƒ©ãƒ³ãƒ€ãƒ ãªãƒžãƒ«ã‚³ãƒ•è¡Œåˆ—を生æˆã™ã‚‹
+
+ </refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>M=genmarkov(rec,tr)
+
+ M=genmarkov(rec,tr,flag)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>rec</term>
+
+ <listitem>
+
+ <para>整数行ベクトル (次元ã¯å†å¸°çš„クラスã®æ•°).</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tr</term>
+
+ <listitem>
+
+ <para>æ•´æ•° (一時的ãªçŠ¶æ…‹é‡ã®æ•°)</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>M</term>
+
+ <listitem>
+
+ <para>実数ã®ãƒžãƒ«ã‚³ãƒ•è¡Œåˆ—.
+
+ 1ã«è¿½åŠ ã™ã‚‹å„è¡Œã®ã‚¨ãƒ³ãƒˆãƒªã®åˆè¨ˆ.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>flag</term>
+
+ <listitem>
+
+ <para>
+
+ 文字列 <literal>'perm'</literal>. 指定ã—ãŸå ´åˆ,
+
+ 状態é‡ã®ãƒ©ãƒ³ãƒ€ãƒ ãªç½®æ›ãŒè¡Œã‚ã‚Œã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ ãã‚Œãžã‚Œ<literal>rec(1),...rec($)</literal>個ã®ã‚¨ãƒ³ãƒˆãƒªã‚’有ã™ã‚‹
+
+ <literal>size(rec,1)</literal>個ã®å†å¸°çš„ãªã‚¯ãƒ©ã‚¹ã¨tr個ã®ä¸€æ™‚çš„ãªçŠ¶æ…‹é‡ã‚’有ã™ã‚‹
+
+ ランダムãªãƒžãƒ«ã‚³ãƒ•æŽ¨ç§»ç¢ºçŽ‡è¡Œåˆ—ã‚’Mã«è¿”ã—ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+//P has two recurrent classes (with 2 and 1 states) 2 transient states
+P=genmarkov([2,1],2,'perm')
+[perm,rec,tr,indsRec,indsT]=classmarkov(P);
+P(perm,perm)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="classmarkov">classmarkov</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="eigenmarkov">eigenmarkov</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/matrix/CHAPTER b/modules/linear_algebra/help/ja_JP/matrix/CHAPTER
new file mode 100755
index 000000000..bb89125cd
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/matrix/CHAPTER
@@ -0,0 +1,2 @@
+title = Matrix Analysis
+
diff --git a/modules/linear_algebra/help/ja_JP/matrix/cond.xml b/modules/linear_algebra/help/ja_JP/matrix/cond.xml
new file mode 100755
index 000000000..874d2fd98
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/matrix/cond.xml
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="cond">
+
+ <refnamediv>
+
+ <refname>cond</refname>
+
+ <refpurpose>æ¡ä»¶æ•°</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>
+
+ c = cond(X)
+
+ c = cond(X, p)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>
+
+ 実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—. c = cond(X, p)ã®å ´åˆ, Xã¯å®Ÿæ•°ã¾ãŸã¯è¤‡ç´ æ•°ã®
+
+ 正方行列ã¨ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>c</term>
+
+ <listitem>
+
+ <para>実数スカラー, æ¡ä»¶æ•°.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>c = cond(X)</term>
+
+ <listitem>
+
+ <para>
+
+ ã¯,2-ノルムã®æ¡ä»¶æ•°ã‚’è¿”ã—ã¾ã™.
+
+ <literal>cond(X)</literal>ã¯<literal>X</literal>ã®
+
+ 最大特異値ã¨æœ€å°ç‰¹ç•°å€¤ã®æ¯”ã§ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>c = cond(X, p)</term>
+
+ <listitem>
+
+ <para>
+
+ ã¯,p-ノルムã®æ¡ä»¶æ•°ã‚’è¿”ã—ã¾ã™ :
+
+ <literal>norm(X, p) * norm(inv(X), p)</literal>.
+
+ <literal>p</literal> ãŒæŒ‡å®šã•ã‚ŒãŸå ´åˆ,
+
+ <literal>p</literal> ã¯ä»¥ä¸‹ã«ç­‰ã—ããªã‚Šã¾ã™ :
+
+ </para>
+
+ <itemizedlist>
+
+ <listitem>
+
+ <para>
+
+ p = 1. <literal>cond(X, p)</literal> ã¯,1-ノルムã®æ¡ä»¶æ•°ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ <listitem>
+
+ <para>
+
+ p = 2. <literal>cond(X, p)</literal> ã¯,1-ノルムã®æ¡ä»¶æ•°ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ <listitem>
+
+ <para>
+
+ p = %inf ã¾ãŸã¯ 'inf'. <literal>cond(X, p)</literal>
+
+ ã¯,ç„¡é™å¤§ãƒŽãƒ«ãƒ ã®æ¡ä»¶æ•°ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ <listitem>
+
+ <para>
+
+ p = 'fro'. <literal>cond(X, p)</literal>
+
+ ã¯ãƒ•ãƒ­ãƒ™ãƒ‹ã‚¦ã‚¹ãƒŽãƒ«ãƒ ã®æ¡ä»¶æ•°ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example">
+
+ <![CDATA[
+A=testmatrix('hilb',6);
+// 2-ノルムã®æ¡ä»¶æ•°
+cond(A)
+cond(A, 2)
+
+// 1-ノルムã®æ¡ä»¶æ•°
+cond(A, 1)
+
+// ç„¡é™å¤§ãƒŽãƒ«ãƒ ã®æ¡ä»¶æ•°
+cond(A, %inf)
+
+// フロベニウスノルムã®æ¡ä»¶æ•°
+cond(A, 'fro')
+ ]]>
+
+ </programlisting>
+
+ </refsection>
+
+ <refsection>
+
+ <title>å‚考</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="rcond">rcond</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="svd">svd</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="norm">norm</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>履歴</title>
+
+ <revhistory>
+
+ <revision>
+
+ <revnumber>5.4.0</revnumber>
+
+ <revdescription>
+
+ <para>
+
+ éžæ­£æ–¹è¡Œåˆ—ã®<literal>X</literal>を指定ã—ã¦,
+
+ <literal>cond(X)</literal>をコールã—ã¦ã‚‚管ç†ã•ã‚Œã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã—ãŸ.
+
+ 例ãˆã°:
+
+ </para>
+
+ <programlisting role="">
+
+ <![CDATA[
+X = [1 0; 1 -1; 0 1];
+cond(X)
+ ]]>
+
+ </programlisting>
+
+ <para>
+
+ <literal>cond(X, p)</literal>をコールã™ã‚‹ã“ã¨ã§ã€
+
+ p-ノルムæ¡ä»¶æ•°ã‚’計算ã§ãるよã†ã«ãªã‚Šã¾ã—ãŸ.
+
+ 例ãˆã°:
+
+ </para>
+
+ <programlisting role="">
+
+ <![CDATA[
+X = [1 -6 0; 1 0 -4;1 0 2];
+cond(X, 1) // 1-ノルム(p = 1)ã®æ¡ä»¶æ•°
+ ]]>
+
+ </programlisting>
+
+ </revdescription>
+
+ </revision>
+
+ </revhistory>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/matrix/det.xml b/modules/linear_algebra/help/ja_JP/matrix/det.xml
new file mode 100755
index 000000000..c7ea8f509
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/matrix/det.xml
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="det">
+
+ <refnamediv>
+
+ <refname>det</refname>
+
+ <refpurpose>行列å¼</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼出ã—手順</title>
+
+ <synopsis>det(X)
+
+ [e,m]=det(X)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ­£æ–¹è¡Œåˆ—, 多項å¼ã¾ãŸã¯æœ‰ç†è¡Œåˆ—.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>m</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°, 行列å¼ã® 10 を基底ã¨ã™ã‚‹ä»®æ•°</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>e</term>
+
+ <listitem>
+
+ <para>æ•´æ•°, 行列å¼ã® 10 を基底ã¨ã™ã‚‹æŒ‡æ•°</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>det(X)</literal> (<literal>m*10^e</literal>)ã¯,
+
+ 正方行列<literal>X</literal>ã®è¡Œåˆ—å¼ã§ã™.
+
+ </para>
+
+ <para>
+
+ 多項å¼è¡Œåˆ—ã®å ´åˆ,<literal>det(X)</literal> ã¯
+
+ <literal>determ(X)</literal>ã¨ç­‰ã—ããªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ 有ç†æ•°è¡Œåˆ—ã®å ´åˆ, <literal>det(X)</literal> ã¯
+
+ <literal>detr(X)</literal>ã¨ç­‰ã—ããªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ <important>
+
+ <literal>det</literal> ãŠã‚ˆã³ <literal>detr</literal> 関数ã¯
+
+ åŒã˜ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã‚’使用ã—ã¾ã›ã‚“.
+
+ 有ç†æ•°é–¢æ•°ã®å ´åˆ, <literal>det(X)</literal> ã¯
+
+ <literal>determ</literal>関数ã«åŸºã¥ã
+
+ <literal>%r_det(X)</literal> ã§ã‚ªãƒ¼ãƒãƒ¼ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã¾ã™.
+
+ <literal>detr()</literal> ã¯, Leverrier法を使用ã—ã¾ã™.
+
+ </important>
+
+ <warning>
+
+ 時々,
+
+ <literal>det</literal> ãŠã‚ˆã³ <literal>detr</literal> 関数ã¯
+
+ 有ç†æ•°é–¢æ•°ã¨ç•°ãªã‚‹å€¤ã‚’è¿”ã™å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™.
+
+ ã“ã®ã‚ˆã†ãªå ´åˆ,åŒã˜çµæžœã‚’å¾—ã‚‹ãŸã‚ã«,
+
+ 有ç†æ•°ã¯<code>simp_mode(%f)</code>を使用ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Š
+
+ 有ç†æ•°ã‚’ç°¡å˜åŒ–ã™ã‚‹ãƒ¢ãƒ¼ãƒ‰ã‚’無効ã«ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™.
+
+ </warning>
+
+ </para>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <para>
+
+ det ã®è¨ˆç®—㯠Lapack ルーãƒãƒ³ DGETRF (実数行列ã®å ´åˆ) ãŠã‚ˆã³
+
+ ZGETRF (複素数ã®å ´åˆ)ã«åŸºã¥ã„ã¦ã„ã¾ã™.
+
+ </para>
+
+ <para>
+
+ 疎行列ã®å ´åˆ, 行列å¼ã¯ umfpack ライブラリã®LU分解ã«ã‚ˆã‚Šå¾—られã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+x=poly(0,'x');
+det([x,1+x;2-x,x^2])
+w=ssrand(2,2,4);roots(det(systmat(w))),trzeros(w) //線形システムã®ã‚¼ãƒ­
+A=rand(3,3);
+det(A), prod(spec(A))
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection>
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="detr">detr</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="determ">determ</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="simp_mode">simp_mode</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/matrix/orth.xml b/modules/linear_algebra/help/ja_JP/matrix/orth.xml
new file mode 100755
index 000000000..c66862e31
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/matrix/orth.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="orth">
+
+ <refnamediv>
+
+ <refname>orth</refname>
+
+ <refpurpose>直交基底</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>Q=orth(A)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Q</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>Q=orth(A)</literal> ã¯,
+
+ <literal>A</literal>ã®ç¯„囲ã§ã®ç›´äº¤åŸºåº•ã§ã‚ã‚‹
+
+ <literal>Q</literal>ã‚’è¿”ã—ã¾ã™.
+
+ Range(<literal>Q</literal>) =
+
+ Range(<literal>A</literal>) ãŠã‚ˆã³ <literal>Q'*Q=eye</literal>.
+
+ </para>
+
+ <para>
+
+ <literal>Q</literal>ã®åˆ—ã®æ•°ã¯,
+
+ QRアルゴリズムã§å®šç¾©ã•ã‚ŒãŸ
+
+ <literal>A</literal>ã®ãƒ©ãƒ³ã‚¯ã§ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(5,3)*rand(3,4);
+[X,dim]=rowcomp(A);X=X';
+svd([orth(A),X(:,1:dim)])
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="qr">qr</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="rowcomp">rowcomp</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="colcomp">colcomp</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="range">range</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/matrix/rank.xml b/modules/linear_algebra/help/ja_JP/matrix/rank.xml
new file mode 100755
index 000000000..cdbd5aee6
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/matrix/rank.xml
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="rank">
+
+ <refnamediv>
+
+ <refname>rank</refname>
+
+ <refpurpose>階数</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[i]=rank(X)
+
+ [i]=rank(X,tol)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tol</term>
+
+ <listitem>
+
+ <para>éžè² å®Ÿæ•°</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>rank(X)</literal> ã¯, <literal>X</literal>ã®æ•°å€¤çš„ãªéšŽæ•°(ランク),
+
+ ã™ãªã‚ã¡, <literal>norm(size(X),'inf') * norm(X) * %eps</literal> より大ããª
+
+ X ã®ç‰¹ç•°å€¤ã®æ•°ã§ã™.
+
+ </para>
+
+ <para>
+
+ <literal>rank(X,tol)</literal> ã¯,<literal>tol</literal>
+
+ より大ããª<literal>X</literal>ã®ç‰¹ç•°å€¤ã®æ•°ã§ã™.
+
+ </para>
+
+ <para>
+
+ <literal>tol</literal> ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯
+
+ <literal>norm(X)</literal>ã«æ¯”例ã™ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„.
+
+ çµæžœã¨ã—ã¦,<literal>rank([1.d-80,0;0,1.d-80])</literal> 㯠2 ã«ãªã‚Šã¾ã™!.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+rank([1.d-80,0;0,1.d-80])
+rank([1,0;0,1.d-80])
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="svd">svd</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="qr">qr</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="rowcomp">rowcomp</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="colcomp">colcomp</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="lu">lu</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/matrix/rcond.xml b/modules/linear_algebra/help/ja_JP/matrix/rcond.xml
new file mode 100755
index 000000000..e12e728b5
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/matrix/rcond.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="rcond">
+
+ <refnamediv>
+
+ <refname>rcond</refname>
+
+ <refpurpose>æ¡ä»¶æ•°ã®é€†æ•°</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>rcond(X)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®æ­£æ–¹è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>rcond(X)</literal> ã¯,1-ノルムã«ãŠã‘ã‚‹
+
+ <literal>X</literal>ã®æ¡ä»¶ã®é€†æ•°ã®æŽ¨å®šå€¤ã§ã™.
+
+ </para>
+
+ <para>
+
+ <literal>X</literal>ãŒå¥å…¨ãªå ´åˆ,
+
+ <literal>rcond(X)</literal> 㯠1 ã«è¿‘ããªã‚Šã¾ã™.
+
+ ãã†ã§ãªã„å ´åˆ, <literal>rcond(X)</literal> 㯠0ã«è¿‘ããªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ Aã®1-ノルムを Lapack/DLANGEã§è¨ˆç®—, ãã®LU分解をLapack/DGETRFã§è¨ˆç®—,
+
+ 最後ã«æ¡ä»¶ã‚’Lapack/DGECONã§æŽ¨å®šã—ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=diag([1:10]);
+rcond(A)
+A(1,1)=0.000001;
+rcond(A)
+ ]]></programlisting>
+
+ <para>
+
+ <literal>rcond</literal>ã«ã‚ˆã‚‹1-ノルム逆æ¡ä»¶æ•°ã®æŽ¨å®šã¯,
+
+ <literal>cond</literal>ã«ã‚ˆã‚‹2-ノルムæ¡ä»¶æ•°ã®è¨ˆç®—よりã¯ã‚‹ã‹ã«é«˜é€Ÿã§ã™.
+
+ トレードオフã¨ã—ã¦,<literal>rcond</literal> ã¯è‹¥å¹²ä¿¡é ¼æ€§ãŒä½Žä¸‹ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™.
+
+ </para>
+
+ <programlisting role="example"><![CDATA[
+ A=ones(1000,1000);
+ timer();cond(A);timer()
+ timer();1/rcond(A);timer()
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="svd">svd</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="cond">cond</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="inv">inv</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/matrix/rref.xml b/modules/linear_algebra/help/ja_JP/matrix/rref.xml
new file mode 100755
index 000000000..cf47e7b89
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/matrix/rref.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="rref">
+
+ <refnamediv>
+
+ <refname>rref</refname>
+
+ <refpurpose>LU分解ã«ã‚ˆã‚Šè¡Œã‚¨ã‚·ãƒ¥ãƒ­ãƒ³å½¢å¼ã®è¡Œåˆ—を計算</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>R=rref(A)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>スカラーã®ã‚¨ãƒ³ãƒˆãƒªã‚’有ã™ã‚‹m x n 行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>R</term>
+
+ <listitem>
+
+ <para> Aã®è¡Œã‚¨ã‚·ãƒ¥ãƒ­ãƒ³å½¢å¼ã®m x n行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>rref</literal> ã¯,å·¦LU分解ã«ã‚ˆã‚ŠæŒ‡å®šã—ãŸè¡Œåˆ—
+
+ ã®è¡Œã‚¨ã‚·ãƒ¥ãƒ­ãƒ³å½¢å¼ã‚’計算ã—ã¾ã™.
+
+ <literal>X=rref([A,eye(m,m)])</literal>をコールã™ã‚‹éš›ã«ä½¿ç”¨ã—ãŸ
+
+ 変æ›ã ã‘ãŒå¿…è¦ãªå ´åˆ,行エシュロン形å¼<literal>R</literal>ã¯
+
+ <literal>X(:,1:n)</literal>ã¨ãªã‚Šã¾ã™.
+
+ 左変æ›<literal>L</literal>ã¯,<literal>L*A=R</literal>ã¨ãªã‚‹ã‚ˆã†ãª
+
+ <literal>X(:,n+1:n+m)</literal> ã«ã‚ˆã‚Šå¾—ã‚‹ã“ã¨ãŒã§ãã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=[1 2;3 4;5 6];
+X=rref([A,eye(3,3)]);
+R=X(:,1:2)
+L=X(:,3:5);L*A
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="lu">lu</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="qr">qr</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/matrix/trace.xml b/modules/linear_algebra/help/ja_JP/matrix/trace.xml
new file mode 100755
index 000000000..c3b6fd4ba
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/matrix/trace.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="trace">
+
+ <refnamediv>
+
+ <refname>trace</refname>
+
+ <refpurpose>トレース</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>trace(X)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>実数ã¾ãŸã¯è¤‡ç´ æ•°ã®æ­£æ–¹è¡Œåˆ—, 多項å¼ã¾ãŸã¯æœ‰ç†è¡Œåˆ—.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>trace(X)</literal>ã¯,行列<literal>X</literal>ã®
+
+ トレースã§ã™.
+
+ </para>
+
+ <para>
+
+ <literal>sum(diag(X))</literal>ã¨åŒã˜ã§ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);
+trace(A)-sum(spec(A))
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection>
+
+ <title>å‚考</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="det">det</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/pencil/CHAPTER b/modules/linear_algebra/help/ja_JP/pencil/CHAPTER
new file mode 100755
index 000000000..86d1da116
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/pencil/CHAPTER
@@ -0,0 +1,2 @@
+title = Matrix Pencil
+
diff --git a/modules/linear_algebra/help/ja_JP/pencil/companion.xml b/modules/linear_algebra/help/ja_JP/pencil/companion.xml
new file mode 100755
index 000000000..93a9adcec
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/pencil/companion.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="companion">
+
+ <refnamediv>
+
+ <refname>companion</refname>
+
+ <refpurpose>コンパニオン行列 </refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>A=companion(p)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>p</term>
+
+ <listitem>
+
+ <para>多項å¼ã¾ãŸã¯å¤šé …å¼ã®ãƒ™ã‚¯ãƒˆãƒ«</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>正方行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ 特性多項å¼ã‚’有ã™ã‚‹
+
+ 行列<literal>A</literal>ã‚’è¿”ã—ã¾ã™.
+
+ <literal>p</literal>ãŒãƒ¢ãƒ‹ãƒƒã‚¯ãªå ´åˆ,特性多項å¼ã¯
+
+ <literal>p</literal>ã«ç­‰ã—ããªã‚Šã¾ã™.
+
+ <literal>p</literal>ãŒãƒ¢ãƒ‹ãƒƒã‚¯ã§ãªã„å ´åˆ,
+
+ <literal>A</literal>ã®ç‰¹æ€§æ–¹ç¨‹å¼ã¯
+
+ <literal>p/c</literal>ã«ç­‰ã—ããªã‚Šã¾ã™.
+
+ ãŸã ã—,<literal>c</literal>ã¯<literal>p</literal>
+
+ ã®æœ€å¤§æ¬¡æ•°ã®ä¿‚æ•°ã§ã™.
+
+ </para>
+
+ <para>
+
+ <literal>p</literal> ãŒãƒ¢ãƒ‹ãƒƒã‚¯ãªå¤šé …å¼ã®ãƒ™ã‚¯ãƒˆãƒ«ã®å ´åˆ,
+
+ <literal>A</literal> ã¯ãƒ–ロック対角ã¨ãªã‚Š,
+
+ i番目ã®ç‰¹æ€§å¤šé …å¼ã¯
+
+ <literal>p(i)</literal>ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+s=poly(0,'s');
+p=poly([1,2,3,4,1],'s','c')
+det(s*eye()-companion(p))
+roots(p)
+spec(companion(p))
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="spec">spec</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="poly">poly</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="randpencil">randpencil</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/pencil/ereduc.xml b/modules/linear_algebra/help/ja_JP/pencil/ereduc.xml
new file mode 100755
index 000000000..b1d93ff64
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/pencil/ereduc.xml
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="ereduc">
+
+ <refnamediv>
+
+ <refname>ereduc</refname>
+
+ <refpurpose>QZ変æ›ã«ã‚ˆã‚Šåˆ—階段型行列を計算</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[E,Q,Z [,stair [,rk]]]=ereduc(X,tol)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>実数エントリを有ã™ã‚‹m x n 行列.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tol</term>
+
+ <listitem>
+
+ <para>実数ã®æ­£ã®ã‚¹ã‚«ãƒ©ãƒ¼.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>E</term>
+
+ <listitem>
+
+ <para>列階段型行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Q</term>
+
+ <listitem>
+
+ <para>m x m ユニタリ行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Z</term>
+
+ <listitem>
+
+ <para>n x n ユニタリ行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>stair</term>
+
+ <listitem>
+
+ <para>添字ベクトル,</para>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>* </term>
+
+ <listitem>
+
+ <para>
+
+ 境界è¦ç´ <literal>E(i,j)</literal>ãŒç«¯ç‚¹ã®å ´åˆ,
+
+ <literal>ISTAIR(i) = + j</literal>.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>* </term>
+
+ <listitem>
+
+ <para>
+
+ 境界è¦ç´ <literal>E(i,j)</literal>ãŒç«¯ç‚¹ã§ãªã„å ´åˆ,
+
+ <literal>ISTAIR(i) = - j</literal>.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ <para>
+
+ <literal>(i=1,...,M)</literal>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>rk</term>
+
+ <listitem>
+
+ <para>æ•´æ•°, 行列ã®ãƒ©ãƒ³ã‚¯ã®æŽ¨å®šå€¤</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>mx n</literal>行列<literal>X</literal> (正則ã§ã‚ã‚‹
+
+ å¿…è¦ã¯ãªã„)を指定ã™ã‚‹ã¨,
+
+ 関数ereducã¯,列階段型(å°å½¢)ã®
+
+ ユニタリ変æ›è¡Œåˆ—<literal>E=Q*X*Z</literal>
+
+ を計算ã—ã¾ã™.
+
+ æ›´ã«è¡Œåˆ—<literal>X</literal>ã®ãƒ©ãƒ³ã‚¯ãŒå®šç¾©ã•ã‚Œã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+X=[1 2 3;4 5 6]
+[E,Q,Z ,stair ,rk]=ereduc(X,1.d-15)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="fstair">fstair</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/pencil/fstair.xml b/modules/linear_algebra/help/ja_JP/pencil/fstair.xml
new file mode 100755
index 000000000..7f82fe30d
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/pencil/fstair.xml
@@ -0,0 +1,354 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="fstair">
+
+ <refnamediv>
+
+ <refname>fstair</refname>
+
+ <refpurpose>QZ変æ›ã«ã‚ˆã‚Šåˆ—階段型ペンシルを計算ã™ã‚‹</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[AE,EE,QE,ZE,blcks,muk,nuk,muk0,nuk0,mnei]=fstair(A,E,Q,Z,stair,rk,tol)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数エントリを有ã™ã‚‹m x n行列.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tol</term>
+
+ <listitem>
+
+ <para>実数ã®æ­£ã®ã‚¹ã‚«ãƒ©ãƒ¼.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>E</term>
+
+ <listitem>
+
+ <para>列階段型行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Q</term>
+
+ <listitem>
+
+ <para>m x m ユニタリ行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Z</term>
+
+ <listitem>
+
+ <para>n x n ユニタリ行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>stair</term>
+
+ <listitem>
+
+ <para>添字ベクトル (ereducå‚ç…§)</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>rk</term>
+
+ <listitem>
+
+ <para>æ•´æ•°, 行列ランクã®æŽ¨å®šå€¤</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>AE</term>
+
+ <listitem>
+
+ <para>実数エントリを有ã™ã‚‹m x n行列.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>EE</term>
+
+ <listitem>
+
+ <para>列階段型行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>QE</term>
+
+ <listitem>
+
+ <para>m x m ユニタリ行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>ZE</term>
+
+ <listitem>
+
+ <para>n x n ユニタリ行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>nblcks</term>
+
+ <listitem>
+
+ <para>
+
+ 行列<literal>A</literal>ã§æ¤œå‡ºã•ã‚ŒãŸ
+
+ フル行ランクを有ã™ã‚‹ã‚µãƒ–行列ã®æ•°(&gt;= 0).
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>muk: </term>
+
+ <listitem>
+
+ <para>次元 (n) ã®æ•´æ•°é…列.
+
+ ペンシルsE(eps)-A(eps)ã«ãŠã„ã¦
+
+ 列フルランクを有ã™ã‚‹ã‚µãƒ–行列ã®åˆ—次元 mu(k) (k=1,...,nblcks) ã‚’å«ã¿ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>nuk: </term>
+
+ <listitem>
+
+ <para>
+
+ 次元 (m+1) ã®æ•´æ•°é…列.
+
+ ペンシルsE(eps)-A(eps)ã«ãŠã„ã¦
+
+ 行フルランクを有ã™ã‚‹ã‚µãƒ–行列ã®è¡Œæ¬¡å…ƒ nu(k) (k=1,...,nblcks)
+
+ ã‚’å«ã¿ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>muk0: </term>
+
+ <listitem>
+
+ <para>
+
+ 次元 (n) ã®æ•´æ•°é…列.
+
+ ペンシルsE(eps,inf)-A(eps,inf)ã«ãŠã„ã¦
+
+ 列フルランクを有ã™ã‚‹ã‚µãƒ–行列ã®åˆ—次元 mu(k) (k=1,...,nblcks) ã‚’å«ã¿ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>nuk: </term>
+
+ <listitem>
+
+ <para>
+
+ 次元 (m+1) ã®æ•´æ•°é…列.
+
+ ペンシルsE(eps,inf)-A(eps,inf)ã«ãŠã„ã¦
+
+ 行フルランクを有ã™ã‚‹ã‚µãƒ–行列ã®è¡Œæ¬¡å…ƒ nu(k) (k=1,...,nblcks)
+
+ ã‚’å«ã¿ã¾ã™.
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>mnei: </term>
+
+ <listitem>
+
+ <para>次元 (4) ã®æ•´æ•°é…列.
+
+ mnei(1) = sE(eps)-A(eps)ã®è¡Œã®æ¬¡å…ƒ
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ 行列 <literal>E</literal> を列階段形ã¨ã—ã¦,
+
+ ペンシル <literal>sE-A</literal> を指定ã™ã‚‹ã¨,
+
+ 関数<literal>fstair</literal>ã¯
+
+ ユーザã®æŒ‡å®šã«åŸºã¥ã
+
+ ユニタリ変æ›ã•ã‚ŒãŸãƒšãƒ³ã‚·ãƒ«<literal>QE(sEE-AE)ZE</literal>ã‚’
+
+ 計算ã—ã¾ã™.
+
+ ã“ã®ãƒšãƒ³ã‚·ãƒ«ã¯, ã»ã¼ãƒšãƒ³ã‚·ãƒ«<literal>sE-A</literal>
+
+ ã®ä¸€èˆ¬åŒ–Schurå½¢å¼ã§ã™.
+
+ ã“ã®é–¢æ•°ã¯,指定ã—ãŸãƒšãƒ³ã‚·ãƒ«ã®
+
+ クロãƒãƒƒã‚«ãƒ¼æ§‹é€ ã®éƒ¨åˆ†ã‚‚出力ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>Q,Z</literal> ã¯ãƒ¦ãƒ‹ã‚¿ãƒªè¡Œåˆ—ã§,
+
+ ペンシルを計算ã™ã‚‹éš›ã«ä½¿ç”¨ã•ã‚Œã¾ã™.
+
+ ãŸã ã—, E ã¯åˆ—階段形ã§ã™ (ereducå‚ç…§)
+
+ </para>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="quaskro">quaskro</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="ereduc">ereduc</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/pencil/glever.xml b/modules/linear_algebra/help/ja_JP/pencil/glever.xml
new file mode 100755
index 000000000..b51eac00e
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/pencil/glever.xml
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="glever">
+
+ <refnamediv>
+
+ <refname>glever</refname>
+
+ <refpurpose>行列ペンシルã®é€†</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[Bfs,Bis,chis]=glever(E,A [,s])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>E, A</term>
+
+ <listitem>
+
+ <para>åŒã˜æ¬¡å…ƒã®æ­£æ–¹å®Ÿè¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>s</term>
+
+ <listitem>
+
+ <para>
+
+ 文字列 (デフォルト値 '<literal>s</literal>')
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Bfs,Bis</term>
+
+ <listitem>
+
+ <para>多項å¼è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>chis</term>
+
+ <listitem>
+
+ <para>多項å¼</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>一般化ã—ãŸLeverrierã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã«ã‚ˆã‚Šã‚る行列ペンシルã«ã¤ã„ã¦
+
+ </para>
+
+ <para>
+
+ <literal>(s*E-A)^-1</literal>
+
+ </para>
+
+ <para>
+
+ を計算ã—ã¾ã™.
+
+ </para>
+
+ <programlisting role=""><![CDATA[
+(s*E-A)^-1 = (Bfs/chis) - Bis.
+ ]]></programlisting>
+
+ <para>
+
+ <literal>chis</literal> = ç‰¹æ€§å¤šé …å¼ (乗法定数ã¾ã§).
+
+ </para>
+
+ <para>
+
+ <literal>Bfs</literal> = 分å­ã®ç‰¹æ€§å¤šé …å¼è¡Œåˆ—.
+
+ </para>
+
+ <para>
+
+ <literal>Bis</literal>
+
+ = 多項å¼è¡Œåˆ— ( - <literal>(s*E-A)^-1</literal> ã®ç„¡é™å¤§ã¾ã§ã®ç´šæ•°å±•é–‹).
+
+ </para>
+
+ <para>
+
+ <literal>Bis</literal>ã®å‰ã« - 符å·ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>注æ„</title>
+
+ <para>
+
+ ã“ã®é–¢æ•°ã¯,<literal>Bfs,Bis</literal> ãŠã‚ˆã³ <literal>chis</literal>ã‚’
+
+ ç°¡å˜åŒ–ã™ã‚‹ãŸã‚ã« <literal>cleanp</literal>を使用ã—ã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+s=%s;F=[-1,s,0,0;0,-1,0,0;0,0,s-2,0;0,0,0,s-1];
+[Bfs,Bis,chis]=glever(F)
+inv(F)-((Bfs/chis) - Bis)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="rowshuff">rowshuff</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="det">det</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="invr">invr</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="coffg">coffg</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="pencan">pencan</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="penlaur">penlaur</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/pencil/kroneck.xml b/modules/linear_algebra/help/ja_JP/pencil/kroneck.xml
new file mode 100755
index 000000000..73cd277ef
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/pencil/kroneck.xml
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="kroneck">
+
+ <refnamediv>
+
+ <refname>kroneck</refname>
+
+ <refpurpose>行列ペンシルã®ã‚¯ãƒ­ãƒãƒƒã‚«ãƒ¼å½¢å¼</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(F)
+
+ [Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(E,A)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>F</term>
+
+ <listitem>
+
+ <para>
+
+ 実数行列ペンシル <literal>F=s*E-A</literal>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>E,A</term>
+
+ <listitem>
+
+ <para>åŒã˜æ¬¡å…ƒã®å®Ÿæ•°è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Q,Z</term>
+
+ <listitem>
+
+ <para>正方直交行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Qd,Zd</term>
+
+ <listitem>
+
+ <para>整数ベクトル</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>numbeps,numeta</term>
+
+ <listitem>
+
+ <para>整数ベクトル</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ 行列ペンシルã®ã‚¯ãƒ­ãƒãƒƒã‚«ãƒ¼å½¢å¼: <literal>kroneck</literal> ã¯,
+
+ ペンシル<literal>F=s*E -A</literal>を以下ã®ã‚ˆã†ãªä¸Šä¸‰è§’å½¢å¼ã«å¤‰æ›ã™ã‚‹
+
+ 2ã¤ã®ç›´äº¤è¡Œåˆ—<literal>Q, Z</literal>を計算ã—ã¾ã™:
+
+ </para>
+
+ <programlisting role=""><![CDATA[
+ | sE(eps)-A(eps) | X | X | X |
+ |----------------|----------------|------------|---------------|
+ | O | sE(inf)-A(inf) | X | X |
+Q(sE-A)Z = |---------------------------------|----------------------------|
+ | | | | |
+ | 0 | 0 | sE(f)-A(f) | X |
+ |--------------------------------------------------------------|
+ | | | | |
+ | 0 | 0 | 0 | sE(eta)-A(eta)|
+ ]]></programlisting>
+
+ <para>
+
+ 4個ã®ãƒ–ロックã®æ¬¡å…ƒã¯ä»¥ä¸‹ã®ã‚ˆã†ã«æŒ‡å®šã•ã‚Œã¾ã™:
+
+ </para>
+
+ <para>
+
+ <literal>eps=Qd(1) x Zd(1)</literal>, <literal>inf=Qd(2) x Zd(2)</literal>,
+
+ <literal>f = Qd(3) x Zd(3)</literal>, <literal>eta=Qd(4)xZd(4)</literal>
+
+ </para>
+
+ <para>
+
+ <literal>inf</literal>ブロックã«ã¯ãƒšãƒ³ã‚·ãƒ«ã®ç„¡é™å¤§ãƒ¢ãƒ¼ãƒ‰ãŒå«ã¾ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>f</literal> ブロックã«ã¯ãƒšãƒ³ã‚·ãƒ«ã®æœ‰é™ãƒ¢ãƒ¼ãƒ‰ãŒå«ã¾ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ イプシロンã¨etaブロックã®æ§‹é€ ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«æŒ‡å®šã•ã‚Œã¾ã™:
+
+ </para>
+
+ <para>
+
+ <literal>numbeps(1)</literal> = 大ãã• 0 x 1ã®epsブロックã®ç•ªå·
+
+ </para>
+
+ <para>
+
+ <literal>numbeps(2)</literal> = 大ãã• 1 x 2ã®epsブロックã®ç•ªå·
+
+ </para>
+
+ <para>
+
+ <literal>numbeps(3)</literal> = 大ãã• 2 x 3ã®epsブロックã®ç•ªå· etc...
+
+ </para>
+
+ <para>
+
+ <literal>numbeta(1)</literal> = 大ãã• 1 x 0ã®etaブロックã®ç•ªå·
+
+ </para>
+
+ <para>
+
+ <literal>numbeta(2)</literal> = 大ãã• 2 x 1ã®etaブロックã®ç•ªå·
+
+ </para>
+
+ <para>
+
+ <literal>numbeta(3)</literal> = 大ãã• 3 x 2ã®etaブロックã®ç•ªå· etc...
+
+ </para>
+
+ <para>
+
+ ã“ã®ã‚³ãƒ¼ãƒ‰ã¯T. Beelen (Slicot-WGS group)ã«ã‚ˆã‚‹ã‚‚ã®ã§ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+F=randpencil([1,1,2],[2,3],[-1,3,1],[0,3]);
+Q=rand(17,17);Z=rand(18,18);F=Q*F*Z;
+//random pencil with eps1=1,eps2=1,eps3=1; 2 J-blocks @ infty
+//with dimensions 2 and 3
+//3 finite eigenvalues at -1,3,1 and eta1=0,eta2=3
+[Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(F);
+[Qd(1),Zd(1)] //eps. part is sum(epsi) x (sum(epsi) + number of epsi)
+[Qd(2),Zd(2)] //infinity part
+[Qd(3),Zd(3)] //finite part
+[Qd(4),Zd(4)] //eta part is (sum(etai) + number(eta1)) x sum(etai)
+numbeps
+numbeta
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="gschur">gschur</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="gspec">gspec</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="systmat">systmat</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="pencan">pencan</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="randpencil">randpencil</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="trzeros">trzeros</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/pencil/lyap.xml b/modules/linear_algebra/help/ja_JP/pencil/lyap.xml
new file mode 100755
index 000000000..206c3f209
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/pencil/lyap.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="lyap">
+
+ <refnamediv>
+
+ <refname>lyap</refname>
+
+ <refpurpose>リアプノフ方程å¼</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[X]=lyap(A,C,'c')
+
+ [X]=lyap(A,C,'d')
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A, C</term>
+
+ <listitem>
+
+ <para>
+
+ 実数正方行列, <literal>C</literal> ã¯å¯¾ç§°ã§ã‚ã‚‹ã“ã¨ãŒå¿…è¦
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>X= lyap(A,C,flag)</literal> ã¯é€£ç¶šæ™‚é–“ã¾ãŸã¯é›¢æ•£æ™‚間行列
+
+ リアプノフ方程å¼ã‚’解ãã¾ã™:
+
+ </para>
+
+ <programlisting role=""><![CDATA[
+A'*X + X*A = C ( flag='c' )
+A'*X*A - X = C ( flag='d' )
+ ]]></programlisting>
+
+ <para>
+
+ <note>
+
+ <literal>A</literal>ã®å›ºæœ‰å€¤ãŒ<literal>-A</literal>ã®
+
+ 固有値ã§ãªã„å ´åˆ(<literal>flag='c'</literal>)
+
+ ã¾ãŸã¯<literal>A</literal>ã®å›ºæœ‰å€¤åˆ†ã®1ã®å ´åˆ
+
+ (<literal>flag='d'</literal>)ã«ã®ã¿ãƒ¦ãƒ‹ãƒ¼ã‚¯ãª
+
+ 解ãŒå¾—られるã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„.
+
+ </note>
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(4,4);C=rand(A);C=C+C';
+X=lyap(A,C,'c');
+A'*X + X*A -C
+X=lyap(A,C,'d');
+A'*X*A - X -C
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="sylv">sylv</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="ctr_gram">ctr_gram</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="obs_gram">obs_gram</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/pencil/pencan.xml b/modules/linear_algebra/help/ja_JP/pencil/pencan.xml
new file mode 100755
index 000000000..842d32110
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/pencil/pencan.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="pencan">
+
+ <refnamediv>
+
+ <refname>pencan</refname>
+
+ <refpurpose>行列ペンシルã®æ­£æº–å½¢</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[Q,M,i1]=pencan(Fs)
+
+ [Q,M,i1]=pencan(E,A)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>Fs</term>
+
+ <listitem>
+
+ <para>
+
+ 標準ペンシル <literal>s*E-A</literal>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>E,A</term>
+
+ <listitem>
+
+ <para>実数正方行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Q,M</term>
+
+ <listitem>
+
+ <para>正則実数行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>i1</term>
+
+ <listitem>
+
+ <para>æ•´æ•°</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ 標準ペンシル <literal>Fs=s*E-A</literal>を指定ã™ã‚‹ã¨,
+
+ <literal>pencan</literal> ã¯,
+
+ <literal>M*(s*E-A)*Q</literal>ãŒ"正準"å½¢ã¨ãªã‚‹ã‚ˆã†ãª
+
+ 行列<literal>Q</literal> ãŠã‚ˆã³<literal>M</literal>ã‚’è¿”ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>M*E*Q</literal> ã¯ãƒ–ロック行列ã§ã™.
+
+ </para>
+
+ <programlisting role=""><![CDATA[
+[I,0;
+ 0,N]
+ ]]></programlisting>
+
+ <para>
+
+ ãŸã ã—,<literal>N</literal>ã¯å†ªé›¶è¡Œåˆ—<literal>N</literal>,
+
+ <literal>i1</literal> = 行列<literal>I</literal>ã®å¤§ãã•ã§ã™.
+
+ </para>
+
+ <para>
+
+ <literal>M*A*Q</literal> ã¯ä»¥ä¸‹ã®ã‚ˆã†ãªãƒ–ロック行列ã§ã™:
+
+ </para>
+
+ <programlisting role=""><![CDATA[
+[Ar,0;
+ 0,I]
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+F=randpencil([],[1,2],[1,2,3],[]);
+F=rand(6,6)*F*rand(6,6);
+[Q,M,i1]=pencan(F);
+W=clean(M*F*Q)
+roots(det(W(1:i1,1:i1)))
+det(W($-2:$,$-2:$))
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="glever">glever</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="penlaur">penlaur</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="rowshuff">rowshuff</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/pencil/penlaur.xml b/modules/linear_algebra/help/ja_JP/pencil/penlaur.xml
new file mode 100755
index 000000000..33556c0e8
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/pencil/penlaur.xml
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="penlaur">
+
+ <refnamediv>
+
+ <refname>penlaur</refname>
+
+ <refpurpose>行列ペンシルã®ãƒ­ãƒ¼ãƒ©ãƒ³ä¿‚æ•°</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[Si,Pi,Di,order]=penlaur(Fs)
+
+ [Si,Pi,Di,order]=penlaur(E,A)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>Fs</term>
+
+ <listitem>
+
+ <para>
+
+ 標準ペンシル <literal>s*E-A</literal>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>E, A</term>
+
+ <listitem>
+
+ <para>実数正方行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Si,Pi,Di</term>
+
+ <listitem>
+
+ <para>実数正方行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>order</term>
+
+ <listitem>
+
+ <para>æ•´æ•°</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>penlaur</literal> ã¯,ç„¡é™å¤§ã«ãŠã‘ã‚‹
+
+ <literal>(s*E-A)^-1</literal>ã®ç¬¬ä¸€ãƒ­ãƒ¼ãƒ©ãƒ³ä¿‚æ•°ã‚’
+
+ 計算ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>s</literal> = ç„¡é™å¤§ ã«ãŠã„ã¦,
+
+ <literal>(s*E-A)^-1 = ... + Si/s - Pi - s*Di + ...</literal>
+
+ </para>
+
+ <para>
+
+ <literal>order</literal> = 特異点ã®æ¬¡æ•° (order=index-1).
+
+ </para>
+
+ <para>
+
+ 行列ペンシル <literal>Fs=s*E-A</literal> ã¯å¯é€†ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ 添字0ã®ãƒšãƒ³ã‚·ãƒ«ã®å ´åˆ,
+
+ <literal>Pi, Di,...</literal> 㯠0,ãŠã‚ˆã³ <literal>Si=inv(E)</literal>
+
+ ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ 添字1ã®ãƒšãƒ³ã‚·ãƒ«(order=0)ã®å ´åˆ,
+
+ <literal>Di</literal> =0 ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ より大ããªæ·»å­—ã®ãƒšãƒ³ã‚·ãƒ«ã®å ´åˆ,
+
+ é … <literal> -s^2 Di(2), -s^3 Di(3),... </literal> ã¯æ¬¡ã®ã‚ˆã†ã«æŒ‡å®šã•ã‚Œã¾ã™:
+
+ </para>
+
+ <para>
+
+ <literal> Di(2)=Di*A*Di</literal>, <literal> Di(3)=Di*A*Di*A*Di</literal> (最大 <literal>Di(order)</literal>).
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>注æ„</title>
+
+ <para>
+
+ 実験的ãªãƒãƒ¼ã‚¸ãƒ§ãƒ³: <literal>so*E-A</literal>ã®æ¡ä»¶æ•°ãŒæ‚ªã„å ´åˆã«
+
+ å•é¡Œã‚’発生ã—ã¾ã™
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+F=randpencil([],[1,2],[1,2,3],[]);
+F=rand(6,6)*F*rand(6,6);[E,A]=pen2ea(F);
+[Si,Pi,Di]=penlaur(F);
+[Bfs,Bis,chis]=glever(F);
+norm(coeff(Bis,1)-Di,1)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="glever">glever</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="pencan">pencan</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="rowshuff">rowshuff</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/pencil/quaskro.xml b/modules/linear_algebra/help/ja_JP/pencil/quaskro.xml
new file mode 100755
index 000000000..cee463831
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/pencil/quaskro.xml
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="quaskro">
+
+ <refnamediv>
+
+ <refname>quaskro</refname>
+
+ <refpurpose>準クロãƒãƒƒã‚«ãƒ¼å½¢å¼</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(F)
+
+ [Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(E,A)
+
+ [Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(F,tol)
+
+ [Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(E,A,tol)
+
+ </synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>F</term>
+
+ <listitem>
+
+ <para>
+
+ 実数行列ペンシル <literal>F=s*E-A</literal> (<literal>s=poly(0,'s')</literal>)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>E,A</term>
+
+ <listitem>
+
+ <para>åŒã˜æ¬¡å…ƒã®å®Ÿæ•°è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tol</term>
+
+ <listitem>
+
+ <para>実数 (許容誤差,デフォルト値=1.d-10)</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Q,Z</term>
+
+ <listitem>
+
+ <para>正方直交行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Qd,Zd</term>
+
+ <listitem>
+
+ <para>整数ベクトル</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>numbeps</term>
+
+ <listitem>
+
+ <para>整数ベクトル</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ 行列ペンシルã®æº–クロãƒãƒƒã‚«ãƒ¼å½¢å¼:
+
+ <literal>quaskro</literal>ã¯,ペンシル<literal>F=s*E -A</literal>を上三角行列形å¼ã«å¤‰æ›ã™ã‚‹
+
+ 直交行列 <literal>Q, Z</literal>を計算ã—ã¾ã™:
+
+ </para>
+
+ <programlisting role=""><![CDATA[
+ | sE(eps)-A(eps) | X | X |
+ |----------------|----------------|------------|
+ | O | sE(inf)-A(inf) | X |
+Q(sE-A)Z = |=================================|============|
+ | | |
+ | O | sE(r)-A(r) |
+ ]]></programlisting>
+
+ <para>
+
+ ブロックã®æ¬¡å…ƒã¯æ¬¡ã®ã‚ˆã†ã«æŒ‡å®šã•ã‚Œã¾ã™:
+
+ </para>
+
+ <para>
+
+ <literal>eps=Qd(1) x Zd(1)</literal>, <literal>inf=Qd(2) x Zd(2)</literal>,
+
+ <literal>r = Qd(3) x Zd(3)</literal>
+
+ </para>
+
+ <para>
+
+ <literal>inf</literal> ブロックã«ã¯, ペンシルã®ç„¡é™å¤§ãƒ¢ãƒ¼ãƒ‰ãŒå«ã¾ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>f</literal> ブロックã«ã¯, ペンシルã®æœ‰é™ãƒ¢ãƒ¼ãƒ‰ãŒå«ã¾ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ epsilonブロックã®æ§‹é€ ã¯æ¬¡ã®ã‚ˆã†ã«æŒ‡å®šã•ã‚Œã¾ã™:
+
+ </para>
+
+ <para>
+
+ <literal>numbeps(1)</literal> = 大ãã• 0 x 1ã®epsブロックã®æ•°
+
+ </para>
+
+ <para>
+
+ <literal>numbeps(2)</literal> = 大ãã• 1 x 2ã®epsブロックã®æ•°
+
+ </para>
+
+ <para>
+
+ <literal>numbeps(3)</literal> = 大ãã• 2 x 3ã®epsブロックã®æ•° etc...
+
+ </para>
+
+ <para>
+
+ 完全ãª(4ブロックã®)クロãƒãƒƒã‚«ãƒ¼å½¢å¼ã¯,
+
+ (pertransposed)ペンシル<literal>sE(r)-A(r)</literal>を指定ã—ã¦
+
+ <literal>quaskro</literal>をコールã™ã‚‹
+
+ 関数<literal>kroneck</literal>ã«ã‚ˆã‚ŠæŒ‡å®šã•ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ ã“ã®ã‚³ãƒ¼ãƒ‰ T. Beelenã«ã‚ˆã‚‹ã‚‚ã®ã§ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="kroneck">kroneck</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="gschur">gschur</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="gspec">gspec</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/pencil/randpencil.xml b/modules/linear_algebra/help/ja_JP/pencil/randpencil.xml
new file mode 100755
index 000000000..e83731339
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/pencil/randpencil.xml
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="randpencil">
+
+ <refnamediv>
+
+ <refname>randpencil</refname>
+
+ <refpurpose>ランダムãªãƒšãƒ³ã‚·ãƒ«</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>F=randpencil(eps,infi,fin,eta)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>eps</term>
+
+ <listitem>
+
+ <para>整数ベクトル</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>infi</term>
+
+ <listitem>
+
+ <para>整数ベクトル</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>fin</term>
+
+ <listitem>
+
+ <para>実数ベクトル, ã¾ãŸã¯ãƒ¢ãƒ‹ãƒƒã‚¯ãªå¤šé …å¼, ã¾ãŸã¯ãƒ¢ãƒ‹ãƒƒã‚¯ãªå¤šé …å¼ã®ãƒ™ã‚¯ãƒˆãƒ«</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>eta</term>
+
+ <listitem>
+
+ <para>整数ベクトル</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>F</term>
+
+ <listitem>
+
+ <para>
+
+ 実数行列ペンシル <literal>F=s*E-A</literal> (<literal>s=poly(0,'s')</literal>)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ ユーティリティ関数.
+
+ <literal>F=randpencil(eps,infi,fin,eta)</literal> ã¯,指定ã—ãŸã‚¯ãƒ­ãƒãƒƒã‚«ãƒ¼æ§‹é€ ã‚’有ã™ã‚‹
+
+ ランダムãªãƒšãƒ³ã‚·ãƒ« <literal>F</literal>ã‚’è¿”ã—ã¾ã™.
+
+ 構造ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«æŒ‡å®šã•ã‚Œã¾ã™:
+
+ <literal>eps=[eps1,...,epsk]</literal>: epsilon ブロックã®æ§‹é€  (大ãã• eps1 x(eps1+1),....)
+
+ <literal>fin=[l1,...,ln]</literal> 有é™ã®å›ºæœ‰å€¤ã®é›†åˆ (実数ã¨ä»®å®š)( []ã®å ´åˆã‚‚ã‚ã‚Šã¾ã™)
+
+ <literal>infi=[k1,...,kp]</literal> ç„¡é™å¤§ã«ãŠã‘ã‚‹J-ブロックã®å¤§ãã•
+
+ <literal>ki&gt;=1</literal> (J ブロックãŒãªã„å ´åˆ: infi=[] ).
+
+ <literal>eta=[eta1,...,etap]</literal>: ofeta ブロック構造 (大ãã• (eta1+1)x eta1,...)
+
+ </para>
+
+ <para>
+
+ <literal>epsi</literal> &gt;=0ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Š,
+
+ <literal>etai</literal> &gt;=0ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Š, <literal>infi</literal>
+
+ &gt;=1ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>fin</literal> ㌠(モニックãª) 多項å¼ã®å ´åˆ,
+
+ 有é™ã®ãƒ–ロックã¯<literal>fin</literal>ã®æ ¹ã‚’固有値ã¨ã—ã¦è¨±å®¹ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>fin</literal> ãŒå¤šé …å¼ã®ãƒ™ã‚¯ãƒˆãƒ«ã®å ´åˆ,
+
+ ã“れらã¯<literal>F</literal>ã®æœ‰é™å˜å› å­,ã™ãªã‚ã¡,<literal>p(i)</literal>ã®æ ¹ã¯
+
+ <literal>F</literal>ã®æœ‰é™ãªå›ºæœ‰å€¤ã¨ãªã‚Šã¾ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+F=randpencil([0,1],[2],[-1,0,1],[3]);
+[Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(F);
+Qd, Zd
+s=poly(0,'s');
+F=randpencil([],[1,2],s^3-2,[]); //通常ã®ãƒšãƒ³ã‚·ãƒ«
+det(F)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="kroneck">kroneck</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="pencan">pencan</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="penlaur">penlaur</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/pencil/rowshuff.xml b/modules/linear_algebra/help/ja_JP/pencil/rowshuff.xml
new file mode 100755
index 000000000..3f6b66c49
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/pencil/rowshuff.xml
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="rowshuff">
+
+ <refnamediv>
+
+ <refname>rowshuff</refname>
+
+ <refpurpose>シャッフルアルゴリズム</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[Ws,Fs1]=rowshuff(Fs, [alfa])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>Fs</term>
+
+ <listitem>
+
+ <para>
+
+ 正方実数ペンシル <literal>Fs = s*E-A</literal>
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Ws</term>
+
+ <listitem>
+
+ <para>多項å¼è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Fs1</term>
+
+ <listitem>
+
+ <para>
+
+ 正方実数ペンシル <literal>F1s = s*E1 -A1</literal>,
+
+ ãŸã ã— <literal>E1</literal> ã¯æ­£å‰‡
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>alfa</term>
+
+ <listitem>
+
+ <para>
+
+ 実数 (<literal>alfa = 0</literal> ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ シャッフルアルゴリズム: ペンシル <literal>Fs=s*E-A</literal>を指定ã™ã‚‹ã¨,
+
+ 以下ã®ã‚ˆã†ãª(正方多項å¼è¡Œåˆ—) Ws=W(s) ã‚’è¿”ã—ã¾ã™:
+
+ </para>
+
+ <para>
+
+ <literal> Fs1 = s*E1-A1 = W(s)*(s*E-A) </literal> ã¯,
+
+ 正則ãªãƒšãƒ³ã‚·ãƒ«è¡Œåˆ— <literal>E1</literal> ã§ã™.
+
+ </para>
+
+ <para>
+
+ ã“ã‚Œã¯,ペンシル<literal>Fs = s*E-A</literal>ãŒæ­£å‰‡ (ã™ãªã‚ã¡,å¯é€†)ã®å ´åˆã«é™ã‚Šå¯èƒ½ã§ã™.
+
+ <literal>Ws</literal> ã®æ¬¡æ•°ã¯ãƒšãƒ³ã‚·ãƒ«ã®æ·»å­—ã«ç­‰ã—ããªã‚Šã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>Fs</literal>ã®ç„¡é™å¤§ã«ã‚る極ã¯<literal>alfa</literal>ã«é…ç½®ã•ã‚Œ,
+
+ <literal>Ws</literal>ã®ã‚¼ãƒ­ã¯<literal>alfa</literal>ã«é…ç½®ã•ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>(s*E-A)^-1 = (s*E1-A1)^-1 * W(s) = (W(s)*(s*E-A))^-1 *W(s)</literal>
+
+ ã¨ãªã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+F=randpencil([],[2],[1,2,3],[]);
+F=rand(5,5)*F*rand(5,5); // 3ã¤ã®è©•ä¾¡ç‚¹ã‚’1,2,3ã«æœ‰ã™ã‚‹5 x 5 ã®æ­£å‰‡ãƒšãƒ³ã‚·ãƒ«
+[Ws,F1]=rowshuff(F,-1);
+[E1,A1]=pen2ea(F1);
+svd(E1) //E1 正則
+roots(det(Ws))
+clean(inv(F)-inv(F1)*Ws,1.d-7)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="pencan">pencan</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="glever">glever</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="penlaur">penlaur</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/pencil/sylv.xml b/modules/linear_algebra/help/ja_JP/pencil/sylv.xml
new file mode 100755
index 000000000..185456e74
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/pencil/sylv.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="sylv">
+
+ <refnamediv>
+
+ <refname>sylv</refname>
+
+ <refpurpose>シルベスタ方程å¼. </refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>sylv(A, B, C, flag)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A,B,C</term>
+
+ <listitem>
+
+ <para>é©å½“ãªæ¬¡å…ƒã®å®Ÿæ•°è¡Œåˆ—.</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>flag</term>
+
+ <listitem>
+
+ <para>
+
+ 文字列 (<literal>'c'</literal> ã¾ãŸã¯ <literal>'d'</literal>)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>X= sylv(A,B,C,'c')</literal> ã¯ä»¥ä¸‹ã®
+
+ "連続時間" シルベスタ方程å¼ã®è§£<literal>X</literal>を計算ã—ã¾ã™,
+
+ </para>
+
+ <programlisting role=""><![CDATA[
+A*X+X*B=C
+ ]]></programlisting>
+
+ <para>
+
+ <literal>X=sylv(A,B,C,'d')</literal> ã¯ä»¥ä¸‹ã®
+
+ "離散時間" シルベスタ方程å¼ã®è§£<literal>X</literal>を計算ã—ã¾ã™,
+
+ </para>
+
+ <programlisting role=""><![CDATA[
+A*X*B-X=C
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A = rand(4, 4); C = rand(4, 3); B = rand(3, 3);
+X = sylv(A, B, C, 'c');
+norm(A*X+X*B-C)
+X = sylv(A, B, C, 'd');
+norm(A*X*B-X-C)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection>
+
+ <title>å‚考</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="lyap">lyap</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/proj.xml b/modules/linear_algebra/help/ja_JP/proj.xml
new file mode 100755
index 000000000..6346f8afd
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/proj.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="proj">
+
+ <refnamediv>
+
+ <refname>proj</refname>
+
+ <refpurpose>投影</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>P = proj(X1,X2)</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>X1,X2</term>
+
+ <listitem>
+
+ <para>åŒã˜åˆ—ã®æ•°ã‚’有ã™ã‚‹å®Ÿæ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>P</term>
+
+ <listitem>
+
+ <para>
+
+ 実数ã®æŠ•å½±è¡Œåˆ— (<literal>P^2=P</literal>)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>P</literal> ã¯<literal>X1</literal>ã«å¹³è¡Œãª
+
+ <literal>X2</literal>ã¸ã®æŠ•å½±ã§ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+X1=rand(5,2);X2=rand(5,3);
+P=proj(X1,X2);
+norm(P^2-P,1)
+trace(P) // This is dim(X2)
+[Q,M]=fullrf(P);
+svd([Q,X2]) // span(Q) = span(X2)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="projspec">projspec</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="orth">orth</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="fullrf">fullrf</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/state_space/CHAPTER b/modules/linear_algebra/help/ja_JP/state_space/CHAPTER
new file mode 100755
index 000000000..a0b62cdee
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/state_space/CHAPTER
@@ -0,0 +1,2 @@
+title = State-Space Matrices
+
diff --git a/modules/linear_algebra/help/ja_JP/state_space/coff.xml b/modules/linear_algebra/help/ja_JP/state_space/coff.xml
new file mode 100755
index 000000000..ebf5b06cc
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/state_space/coff.xml
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="coff">
+
+ <refnamediv>
+
+ <refname>coff</refname>
+
+ <refpurpose>レゾルベント (余因å­æ³•) </refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[N,d]=coff(M [,var])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>M</term>
+
+ <listitem>
+
+ <para>正方実数行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>var</term>
+
+ <listitem>
+
+ <para>文字列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>N</term>
+
+ <listitem>
+
+ <para>
+
+ 多項å¼è¡Œåˆ— (<literal>M</literal>ã¨åŒã˜å¤§ãã•)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>d</term>
+
+ <listitem>
+
+ <para>
+
+ å¤šé …å¼ (ç‰¹æ€§å¤šé …å¼ <literal>poly(A,'s')</literal>)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>coff</literal> ã¯,
+
+ 実数行列 <literal>M</literal>ã«ã¤ã„㦠R=<literal>(s*eye()-M)^-1</literal>
+
+ を計算ã—ã¾ã™.
+
+ R 㯠<literal>N/d</literal>ã§æŒ‡å®šã•ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>N</literal> = 多項å¼è¡Œåˆ—ã®åˆ†å­.
+
+ </para>
+
+ <para>
+
+ <literal>d</literal> = 共通分æ¯.
+
+ </para>
+
+ <para>
+
+ <literal>var</literal> 文字列 (çœç•¥æ™‚ã¯'<literal>s</literal>')
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+M=[1,2;0,3];
+[N,d]=coff(M)
+N/d
+inv(%s*eye()-M)
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="coffg">coffg</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="ss2tf">ss2tf</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="nlev">nlev</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="poly">poly</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/state_space/nlev.xml b/modules/linear_algebra/help/ja_JP/state_space/nlev.xml
new file mode 100755
index 000000000..996d6e566
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/state_space/nlev.xml
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="nlev">
+
+ <refnamediv>
+
+ <refname>nlev</refname>
+
+ <refpurpose>Leverrierã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ </refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[num,den]=nlev(A,z [,rmax])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A</term>
+
+ <listitem>
+
+ <para>実数正方行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>z</term>
+
+ <listitem>
+
+ <para>文字列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>rmax</term>
+
+ <listitem>
+
+ <para>
+
+ オプションã®ãƒ‘ラメータ (<literal>bdiag</literal>å‚ç…§)
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ <literal>[num,den]=nlev(A,z [,rmax])</literal> ã¯,
+
+ <literal>(z*eye()-A)^(-1)</literal>を計算ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ 計算ã®éš›ã«ã¯,Aã®ãƒ–ロック対角化ã®å¾Œã«
+
+ Leverrierアルゴリズムをå„ブロックã«é©ç”¨ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ ã“ã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã¯é€šå¸¸ã® Leverrierアルゴリズム
+
+ より優れã¦ã„ã¾ã™ãŒ,ã¾ã å®Œå…¨ã§ã¯ã‚ã‚Šã¾ã›ã‚“!
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);x=poly(0,'x');
+[NUM,den]=nlev(A,'x')
+clean(den-poly(A,'x'))
+clean(NUM/den-inv(x*eye()-A))
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="coff">coff</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="coffg">coffg</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="glever">glever</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="ss2tf">ss2tf</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/subspaces/CHAPTER b/modules/linear_algebra/help/ja_JP/subspaces/CHAPTER
new file mode 100755
index 000000000..d87d9ca5e
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/subspaces/CHAPTER
@@ -0,0 +1,3 @@
+title = Subspaces
+
+
diff --git a/modules/linear_algebra/help/ja_JP/subspaces/spaninter.xml b/modules/linear_algebra/help/ja_JP/subspaces/spaninter.xml
new file mode 100755
index 000000000..0ec8c806c
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/subspaces/spaninter.xml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="spaninter">
+
+ <refnamediv>
+
+ <refname>spaninter</refname>
+
+ <refpurpose>共通部分空間</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[X,dim]=spaninter(A,B [,tol])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A, B</term>
+
+ <listitem>
+
+ <para>åŒæ•°ã®è¡Œã‚’有ã™ã‚‹å®Ÿæ•°ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>直交ã¾ãŸã¯ãƒ¦ãƒ‹ã‚¿ãƒªæ­£æ–¹è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>dim</term>
+
+ <listitem>
+
+ <para>
+
+ æ•´æ•°, range(<literal>A</literal>) ãŠã‚ˆã³
+
+ range(<literal>B</literal>)é–“ã®å…±é€šéƒ¨åˆ†ç©ºé–“ã®æ¬¡å…ƒ
+
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ range(<literal>A</literal>) ãŠã‚ˆã³ range(<literal>B</literal>)ã®
+
+ 共通部分を計算ã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>X</literal>ã®æœ€åˆã®<literal>dim</literal>列ã¯,ã“ã®å…±é€šéƒ¨åˆ†ã«å±•é–‹ã—ã¾ã™.
+
+ ã™ãªã‚ã¡,<literal>X(:,1:dim)</literal>ã¯,
+
+ range(<literal>A</literal>) 㨠range(<literal>B</literal>)ã®é–“ã®ç›´äº¤åŸºåº•ã§ã™.
+
+ </para>
+
+ <para>
+
+ <literal>X</literal>ã®åŸºåº•ã§ã¯,
+
+ <literal>A</literal> ãŠã‚ˆã³ <literal>B</literal>ãŒãã‚Œãžã‚Œæ¬¡ã®ã‚ˆã†ã«
+
+ 表ã•ã‚Œã¾ã™:
+
+ </para>
+
+ <para>
+
+ <literal>X'*A</literal> ãŠã‚ˆã³ <literal>X'*B</literal>.
+
+ </para>
+
+ <para>
+
+ <literal>tol</literal> ã¯é–¾å€¤ã§ã™ (<literal>sqrt(%eps)</literal> ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã§ã™).
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(5,3)*rand(3,4); // A 㯠5 x 4, rank=3ã§ã™.
+B=[A(:,2),rand(5,1)]*rand(2,2);
+[X,dim]=spaninter(A,B);
+X1=X(:,1:dim); //共通部分
+svd(A),svd([X1,A]) // span(A) ã® X1
+svd(B),svd([B,X1]) // span(B) ã® X1
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="spanplus">spanplus</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="spantwo">spantwo</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/subspaces/spanplus.xml b/modules/linear_algebra/help/ja_JP/subspaces/spanplus.xml
new file mode 100755
index 000000000..b8717b88e
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/subspaces/spanplus.xml
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="spanplus">
+
+ <refnamediv>
+
+ <refname>spanplus</refname>
+
+ <refpurpose>部分空間ã®åˆè¨ˆ</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[X,dim,dima]=spanplus(A,B[,tol])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A, B</term>
+
+ <listitem>
+
+ <para>åŒæ•°ã®è¡Œã‚’有ã™ã‚‹å®Ÿæ•°ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>X</term>
+
+ <listitem>
+
+ <para>直交ã¾ãŸã¯ãƒ¦ãƒ‹ã‚¿ãƒªæ­£æ–¹è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>dim, dima</term>
+
+ <listitem>
+
+ <para>æ•´æ•°, 部分空間ã®æ¬¡å…ƒ</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tol</term>
+
+ <listitem>
+
+ <para>éžè² ã®å®Ÿæ•°</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ 以下ã®æ§˜ãªåŸºåº•Xを計算ã—ã¾ã™:
+
+ </para>
+
+ <para>
+
+ <literal>X</literal>ã®æœ€åˆã®<literal>dima</literal>列ãŒ
+
+ range(<literal>A</literal>)ã«å±•é–‹ã—,
+
+ ã“れ以é™ã®(<literal>dim-dima</literal>)列ãŒ,
+
+ <literal>A+B</literal> ã®<literal>A</literal>ã«é–¢ã™ã‚‹åŸºåº•ã‚’構æˆ.
+
+ </para>
+
+ <para>
+
+ <literal>X</literal>ã®æœ€åˆã®<literal>dim</literal>列ã¯,
+
+ <literal>A+B</literal>ã®åŸºåº•ã‚’構æˆã—ã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>[A,B]</literal>ã«é–¢ã™ã‚‹ä»¥ä¸‹ã®æ­£æº–å½¢å¼ãŒå®šç¾©ã•ã‚Œã¾ã™:
+
+ </para>
+
+ <programlisting role=""><![CDATA[
+ [*,*] (dima 行)
+X'*[A,B]=[0,*] (dim-dima 行)
+ [0,0]
+ ]]></programlisting>
+
+ <para>
+
+ <literal>tol</literal> ã¯ã‚ªãƒ—ションã®å¼•æ•°ã§ã™(関数ã®ã‚³ãƒ¼ãƒ‰ã‚’å‚ç…§).
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=rand(6,2)*rand(2,5); // rank(A)=2
+B=[A(:,1),rand(6,2)]*rand(3,3); //独立ãªãƒ™ã‚¯ãƒˆãƒ«2ã¤ã‚’追加
+[X,dim,dimA]=spanplus(A,B);
+dimA
+dim
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="spaninter">spaninter</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="im_inv">im_inv</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="spantwo">spantwo</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/ja_JP/subspaces/spantwo.xml b/modules/linear_algebra/help/ja_JP/subspaces/spantwo.xml
new file mode 100755
index 000000000..cca713c63
--- /dev/null
+++ b/modules/linear_algebra/help/ja_JP/subspaces/spantwo.xml
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="spantwo">
+
+ <refnamediv>
+
+ <refname>spantwo</refname>
+
+ <refpurpose>部分空間ã®åˆè¨ˆãŠã‚ˆã³å…±é€šéƒ¨åˆ†</refpurpose>
+
+ </refnamediv>
+
+ <refsynopsisdiv>
+
+ <title>呼ã³å‡ºã—手順</title>
+
+ <synopsis>[Xp,dima,dimb,dim]=spantwo(A,B, [tol])</synopsis>
+
+ </refsynopsisdiv>
+
+ <refsection>
+
+ <title>引数</title>
+
+ <variablelist>
+
+ <varlistentry>
+
+ <term>A, B</term>
+
+ <listitem>
+
+ <para>åŒæ•°ã®è¡Œã‚’有ã™ã‚‹å®Ÿæ•°ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>Xp</term>
+
+ <listitem>
+
+ <para>正方正則行列</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>dima, dimb, dim</term>
+
+ <listitem>
+
+ <para>æ•´æ•°, 部分空間ã®æ¬¡å…ƒ</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ <varlistentry>
+
+ <term>tol</term>
+
+ <listitem>
+
+ <para>éžè² ã®å®Ÿæ•°</para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </refsection>
+
+ <refsection>
+
+ <title>説明</title>
+
+ <para>
+
+ åŒã˜è¡Œæ•°ã‚’有ã™ã‚‹è¡Œåˆ— <literal>A</literal> ãŠã‚ˆã³ <literal>B</literal> を指定ã™ã‚‹ã¨,
+
+ 以下ã®ã‚ˆã†ãªæ­£æ–¹è¡Œåˆ—<literal>Xp</literal> (正則ã ãŒç›´äº¤ã§ã‚ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“)
+
+ ã‚’è¿”ã—ã¾ã™:
+
+ </para>
+
+ <programlisting role=""><![CDATA[
+ [A1, 0] (dim-dimb 行)
+Xp*[A,B]=[A2,B2] (dima+dimb-dim 々)
+ [0, B3] (dim-dima 業)
+ [0 , 0]
+ ]]></programlisting>
+
+ <para>
+
+ <literal>inv(Xp)</literal>ã®æœ€åˆã®<literal>dima</literal>列ã¯
+
+ range(<literal>A</literal>)ã«å±•é–‹ã•ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>inv(Xp)</literal>ã®
+
+ 列 <literal>dim-dimb+1</literal> ã‹ã‚‰ <literal>dima</literal> ã¯
+
+ range(A) 㨠range(B)ã®å…±é€šéƒ¨åˆ†ã«å±•é–‹ã•ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>inv(Xp)</literal>ã®æœ€åˆã®<literal>dim</literal>列ã¯,
+
+ range(<literal>A</literal>)+range(<literal>B</literal>)ã«å±•é–‹ã•ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ <literal>inv(Xp)</literal>ã®åˆ—<literal>dim-dimb+1</literal>ã‹ã‚‰<literal>dim</literal>
+
+ ã¯range(<literal>B</literal>)ã«å±•é–‹ã•ã‚Œã¾ã™.
+
+ </para>
+
+ <para>
+
+ 行列 <literal>[A1;A2]</literal> ã¯è¡Œãƒ•ãƒ«ãƒ©ãƒ³ã‚¯(=rank(A))ã§ã™.
+
+ 行列<literal>[B2;B3]</literal>ã¯è¡Œãƒ•ãƒ«ãƒ©ãƒ³ã‚¯(=rank(B))ã§ã™.
+
+ 行列<literal>[A2,B2]</literal>ã¯è¡Œãƒ•ãƒ«ãƒ©ãƒ³ã‚¯(=rank(A inter B))ã§ã™.
+
+ è¡Œ<literal>[A1,0;A2,B2;0,B3]</literal> ã¯è¡Œãƒ•ãƒ«ãƒ©ãƒ³ã‚¯(=rank(A+B))ã§ã™.
+
+ </para>
+
+ </refsection>
+
+ <refsection>
+
+ <title>例</title>
+
+ <programlisting role="example"><![CDATA[
+A=[1,0,0,4;
+ 5,6,7,8;
+ 0,0,11,12;
+ 0,0,0,16];
+B=[1,2,0,0]';C=[4,0,0,1];
+Sl=ss2ss(syslin('c',A,B,C),rand(A));
+[no,X]=contr(Sl('A'),Sl('B'));CO=X(:,1:no); //å¯åˆ¶å¾¡éƒ¨
+[uo,Y]=unobs(Sl('A'),Sl('C'));UO=Y(:,1:uo); //ä¸å¯è¦³æ¸¬éƒ¨
+[Xp,dimc,dimu,dim]=spantwo(CO,UO); //カルマン分解
+Slcan=ss2ss(Sl,inv(Xp));
+ ]]></programlisting>
+
+ </refsection>
+
+ <refsection role="see also">
+
+ <title>å‚ç…§</title>
+
+ <simplelist type="inline">
+
+ <member>
+
+ <link linkend="spanplus">spanplus</link>
+
+ </member>
+
+ <member>
+
+ <link linkend="spaninter">spaninter</link>
+
+ </member>
+
+ </simplelist>
+
+ </refsection>
+
+</refentry>
+
diff --git a/modules/linear_algebra/help/pt_BR/addchapter.sce b/modules/linear_algebra/help/pt_BR/addchapter.sce
new file mode 100755
index 000000000..99f821fe3
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/addchapter.sce
@@ -0,0 +1,11 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+add_help_chapter("Linear Algebra",SCI+"/modules/linear_algebra/help/pt_BR",%T);
+
diff --git a/modules/linear_algebra/help/pt_BR/eigen/CHAPTER b/modules/linear_algebra/help/pt_BR/eigen/CHAPTER
new file mode 100755
index 000000000..88f8bc42b
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/eigen/CHAPTER
@@ -0,0 +1,2 @@
+title = Eigenvalue and Singular Value
+
diff --git a/modules/linear_algebra/help/pt_BR/eigen/balanc.xml b/modules/linear_algebra/help/pt_BR/eigen/balanc.xml
new file mode 100755
index 000000000..670af0f56
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/eigen/balanc.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="balanc" xml:lang="en">
+ <refnamediv>
+ <refname>balanc</refname>
+ <refpurpose>balanceamento de uma matriz ou de um feixe de
+ matrizes
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[Ab,X]=balanc(A)
+ [Eb,Ab,X,Y]=balanc(E,A)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A:</term>
+ <listitem>
+ <para>matriz quadrada de reais </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X:</term>
+ <listitem>
+ <para>matriz quadrada de reais invertível</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E:</term>
+ <listitem>
+ <para>matriz quadrada de reais (com mesma dimensão que
+ <literal>A</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Y:</term>
+ <listitem>
+ <para>uma matriz quadrada de reais invertível</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>Balanceia uma matriz quadrada para melhorar seu número de
+ condicionamento.
+ </para>
+ <para>
+ <literal>[Ab,X] = balanc(A)</literal> acha uma transformação de
+ similaridade <literal>X</literal> tal que
+ </para>
+ <para>
+ <literal>Ab = inv(X)*A*X</literal> tem aproximadamente normas iguais
+ de linha e de coluna.
+ </para>
+ <para>Para feixes de matrizes, o balancemento é feito para melhorar o
+ problema do autovalor generalizado.
+ </para>
+ <para>
+ <literal>[Eb,Ab,X,Y] = balanc(E,A)</literal> retorna transformações
+ esquerda e direita <literal>X</literal> e <literal>Y</literal> tais que
+ <literal>Eb=inv(X)*E*Y, Ab=inv(X)*A*Y</literal>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Observação</title>
+ <para>
+ O balanceamento é feito nas funções <literal>bdiag</literal> e
+ <literal>spec</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=[1/2^10,1/2^10;2^10,2^10];
+[Ab,X]=balanc(A);
+norm(A(1,:))/norm(A(2,:))
+norm(Ab(1,:))/norm(Ab(2,:))
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="bdiag">bdiag</link>
+ </member>
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/eigen/bdiag.xml b/modules/linear_algebra/help/pt_BR/eigen/bdiag.xml
new file mode 100755
index 000000000..94f586ba1
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/eigen/bdiag.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="bdiag" xml:lang="en">
+ <refnamediv>
+ <refname>bdiag</refname>
+ <refpurpose>diagonalização em blocos, autovetores
+ generalizados
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[Ab [,X [,bs]]]=bdiag(A [,rmax])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz quadrada de reais ou complexos </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rmax</term>
+ <listitem>
+ <para>número real</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Ab</term>
+ <listitem>
+ <para>matriz quadrada de reais ou complexos</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>matriz de reais ou complexos não-singular</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>bs</term>
+ <listitem>
+ <para>vetor de inteiros</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <programlisting role=""><![CDATA[
+[Ab [,X [,bs]]]=bdiag(A [,rmax])
+ ]]></programlisting>
+ <para>
+ realiza a diagonalização em blocos da matriz <literal>A</literal>.
+ bs fornece a estrutura dos blocos (respectivos tamanhos dos blocos).
+ <literal>X</literal> é a matriz mudança de base i.e <literal>Ab =
+ inv(X)*A*X
+ </literal>
+ édiagonal em blocos.
+ </para>
+ <para>
+ <literal>rmax</literal> controla o condicionamento de
+ <literal>X</literal>; o valor padrão é a norma L1 de
+ <literal>A</literal>.
+ </para>
+ <para>Para encontrar a forma diagonal (se existir) escolha um valor
+ suficientemente grande para <literal>rmax</literal>
+ (<literal>rmax=1/%eps</literal> , por exemplo). Genericamente, (para uma
+ matriz A de reais aleatória) os blocos são (1x1) e (2x2) e
+ <literal>X</literal> é a matriz de autovetores.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+//No caso de reais: blocos 1x1 e 2x2
+a=rand(5,5);[ab,x,bs]=bdiag(a);ab
+
+//No caso de complexos: blocos 1x1 complexos
+[ab,x,bs]=bdiag(a+%i*0);ab
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ <member>
+ <link linkend="sylv">sylv</link>
+ </member>
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/eigen/gschur.xml b/modules/linear_algebra/help/pt_BR/eigen/gschur.xml
new file mode 100755
index 000000000..2b3515dad
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/eigen/gschur.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="gschur" xml:lang="en">
+ <refnamediv>
+ <refname>gschur</refname>
+ <refpurpose>forma de Schur generalizada (função obsoleta) </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento</title>
+ <synopsis>[As,Es]=gschur(A,E)
+ [As,Es,Q,Z]=gschur(A,E)
+ [As,Es,Z,dim] = gschur(A,E,flag)
+ [As,Es,Z,dim]= gschur(A,E,extern)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Descrição</title>
+ <para>Esta função é obsoleta e agora está inclusa na função
+ <literal>schur</literal> function. Na maior parte dos casos, a função
+ <literal>gschur</literal> irá ainda trabalhar como antes, mas será
+ removida em um lançamento futuro do Scilab.
+ </para>
+ <para>As três sintaxes podem ser substituídas por</para>
+ <programlisting role=""><![CDATA[
+[As,Es]=schur(A,E)
+[As,Es,Q,Z]=schur(A,E);Q=Q' //NOTE A TRANSPOSIÇÃO AQUI
+[As,Es,Z,dim] = schur(A,E,flag)
+ ]]></programlisting>
+ <para>A última sintaxe requer algumas adaptações a mais: </para>
+ <variablelist>
+ <varlistentry>
+ <term>if</term>
+ <listitem>
+ <para>é uma função do Scilab, a nova seqüência de chamamento deve
+ ser <literal>[As,Es,Z,dim]= schur(A,E,Nextern)</literal> com Nextern
+ definido como segue:
+ </para>
+ <programlisting role=""><![CDATA[
+function t=Nextern(R)
+if R(2)==0 then
+ t=extern([1,R(1),R(3)])==1
+else
+ c=(R(1)+%i*R(2))/R(3)
+ t=extern([2,real(c+c'),real(c*c')])==1
+end
+endfunction
+ ]]></programlisting>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>if</term>
+ <listitem>
+ <para>é o nome de uma função externa codificada em FORTRAN ou C, a
+ nova seqüência de chamamento deve ser <literal>[As,Es,Z,dim]=
+ schur(A,E,'nextern')
+ </literal>
+ com nextern definido como
+ segue:
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <programlisting role=""><![CDATA[
+logical function nextern(ar,ai,beta)
+double precision ar,ai,beta
+integer r,extern
+if (ai.eq.0.0d0) then
+ r=extern(1,ar,beta,0.0d0,0.0d0)
+else
+ r=extern(2,0.0d0,0.0d0,2.0d0*ar,ar*ar+ai*ai)
+endif
+nextern=r.eq.1
+end
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="external">external</link>
+ </member>
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/eigen/gspec.xml b/modules/linear_algebra/help/pt_BR/eigen/gspec.xml
new file mode 100755
index 000000000..ae0f5b92f
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/eigen/gspec.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="gspec" xml:lang="en">
+ <refnamediv>
+ <refname>gspec</refname>
+ <refpurpose>autovalores de feixe de matrizes (função
+ obsoleta)
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>[al,be]=gspec(A,E)
+ [al,be,Z]=gspec(A,E)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Esta função está agora inclusa na função <literal>spec</literal> . A
+ seqüência de chamamento deve ser substituida por
+ </para>
+ <programlisting role=""><![CDATA[
+[al,be]=spec(A,E)
+[al,be,Z]=spec(A,E)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/eigen/hess.xml b/modules/linear_algebra/help/pt_BR/eigen/hess.xml
new file mode 100755
index 000000000..b9daf0150
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/eigen/hess.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="hess" xml:lang="en">
+ <refnamediv>
+ <refname>hess</refname>
+ <refpurpose>forma de Hessenberg</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>H = hess(A)
+ [U,H] = hess(A)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz quadrada de reais ou complexos </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>H</term>
+ <listitem>
+ <para>matriz quadrada de reais ou complexos </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>U</term>
+ <listitem>
+ <para>matriz quadrada ortogonal ou unitária</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>[U,H] = hess(A)</literal> produz uma matriz unitária
+ <literal>U</literal> e uma matriz de Hessenberg <literal>H</literal> tais
+ que <literal>A = U*H*U'</literal> e <literal>U'*U</literal> = Identidade.
+ Por si só, <literal>hess(A) </literal>retorna <literal>H</literal>.
+ </para>
+ <para>A forma de Hessenberg de uma matriz é zero abaixo da primeira
+ subdiagonal. Se a matriz é simetrica ou Hermitiana, a forma é
+ tridiagonal.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Referências</title>
+ <para>A função hess é baseada nas rotinas Lapack DGEHRD, DORGHR para
+ matrizes de e ZGEHRD, ZORGHR para matrizes de complexos.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);[U,H]=hess(A);
+and( abs(U*H*U'-A)<1.d-10 )
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="contr">contr</link>
+ </member>
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title/>
+ <para/>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/eigen/pbig.xml b/modules/linear_algebra/help/pt_BR/eigen/pbig.xml
new file mode 100755
index 000000000..15b493fac
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/eigen/pbig.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns3="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="pbig" xml:lang="en">
+ <refnamediv>
+ <refname>pbig</refname>
+ <refpurpose>autoprojeção</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[Q,M]=pbig(A,thres,flag)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title> Parâmetros </title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz quadrada de reais </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>thres</term>
+ <listitem>
+ <para>número real </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ string (<literal>'c'</literal> ou
+ <literal>'d'</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q,M</term>
+ <listitem>
+ <para>matrizes de reais</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>Projeção sobre um auto-subespaço associado aos autovalores de parte
+ real&gt;= <literal>thres</literal> (<literal>flag='c'</literal>) ou com
+ magnitude &gt;= <literal>thres</literal>
+ (<literal>flag='d'</literal>).
+ </para>
+ <para>
+ A projeção é definida por <literal>Q*M</literal>,
+ <literal>Q</literal> tem posto-coluna cheio, <literal>M</literal> tem
+ posto-linha cheio e <literal>M*Q=eye</literal>.
+ </para>
+ <para>
+ Se <literal>flag='c'</literal>, os autovalores de
+ <literal>M*A*Q</literal> = autovalores de <literal>A</literal> com parte
+ real &gt;= <literal>thres</literal>.
+ </para>
+ <para>
+ Se <literal>flag='d'</literal>, os autovalores de
+ <literal>M*A*Q</literal> = autovalores de <literal>A</literal> com
+ magnitude &gt;= <literal>thres</literal>.
+ </para>
+ <para>
+ Se <literal>flag='c'</literal> e se <literal>[Q1,M1]</literal> =
+ fatoração em posto cheio (<literal>fullrf</literal>) de
+ <literal>eye()-Q*M</literal> então os autovalores de
+ <literal>M1*A*Q1</literal> = autovalores de <literal>A</literal> com parte
+ real &lt; <literal>thres</literal>.
+ </para>
+ <para>
+ Se <literal>flag='d'</literal> e se <literal>[Q1,M1]</literal>
+ =fatoração em posto cheio (<literal>fullrf</literal>) de
+ <literal>eye()-Q*M</literal> então os autovalores de
+ <literal>M1*A*Q1</literal> = autovalores de <literal>A</literal> com
+ magnitude &lt; <literal>thres</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=diag([1,2,3]);X=rand(A);A=inv(X)*A*X;
+[Q,M]=pbig(A,1.5,'d');
+spec(M*A*Q)
+[Q1,M1]=fullrf(eye()-Q*M);
+spec(M1*A*Q1)
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="psmall">psmall</link>
+ </member>
+ <member>
+ <link linkend="projspec">projspec</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title> Função Usada </title>
+ <para>
+ <literal>pbig</literal> é baseada na forma ordenada de Schur (função
+ do Scilab <literal>schur</literal>).
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/eigen/projspec.xml b/modules/linear_algebra/help/pt_BR/eigen/projspec.xml
new file mode 100755
index 000000000..a24fac61f
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/eigen/projspec.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="projspec" xml:lang="en">
+ <refnamediv>
+ <refname>projspec</refname>
+ <refpurpose>operadores espectrais</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento</title>
+ <synopsis>[S,P,D,i]=projspec(A)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title> Parâmetros </title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz quadrada</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>S, P, D</term>
+ <listitem>
+ <para>matrizes quadradas </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i</term>
+ <listitem>
+ <para>inteiro (índice do autovalor zero de
+ <literal>A</literal>).
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Características espectrais de <literal>A</literal> em 0.
+ </para>
+ <para>
+ <literal>S</literal> = resolvente reduzido em 0
+ (<literal>S</literal> = -Inverso_de_Drazin(<literal>A</literal>)).
+ </para>
+ <para>
+ <literal>P</literal> = projeção espectral em 0.
+ </para>
+ <para>
+ <literal>D</literal> = operador nilpotente em 0.
+ </para>
+ <para>
+ <literal>index</literal> = índice do autovalor 0.
+ </para>
+ <para>
+ Tem-se <literal>(s*eye()-A)^(-1) = D^(i-1)/s^i +... + D/s^2 + P/s -
+ S - s*S^2 -...
+ </literal>
+ ao redor da singularidade s=0.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+deff('j=jdrn(n)','j=zeros(n,n);for k=1:n-1;j(k,k+1)=1;end')
+A=sysdiag(jdrn(3),jdrn(2),rand(2,2));X=rand(7,7);
+A=X*A*inv(X);
+[S,P,D,index]=projspec(A);
+index //tamanho do bloco J
+trace(P) //soma das dimensões dos blocos J
+A*S-(eye()-P)
+norm(D^index,1)
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="coff">coff</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/eigen/psmall.xml b/modules/linear_algebra/help/pt_BR/eigen/psmall.xml
new file mode 100755
index 000000000..e187285bc
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/eigen/psmall.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns3="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="psmall" xml:lang="en">
+ <refnamediv>
+ <refname>psmall</refname>
+ <refpurpose>projeção espectral</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[Q,M]=psmall(A,thres,flag)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz quadrada de reais </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>thres</term>
+ <listitem>
+ <para>número real </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ string (<literal>'c'</literal> ou
+ <literal>'d'</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q,M</term>
+ <listitem>
+ <para>matrizes de reais</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>Projeção sobre auto-subespaço associado com autovalores com parte
+ real &lt; <literal>thres</literal> (<literal>flag='c'</literal>) ou com
+ módulo &lt; <literal>thres</literal> (<literal>flag='d'</literal>).
+ </para>
+ <para>
+ A projeção é definda por <literal>Q*M</literal>,
+ <literal>Q</literal> é de posto-coluna cheio, <literal>M</literal> é de
+ posto-linha cheio e <literal>M*Q=eye</literal>.
+ </para>
+ <para>
+ Se <literal>flag='c'</literal>, os autovalores de
+ <literal>M*A*Q</literal> = autovalores de <literal>A</literal> com parte
+ real &lt; <literal>thres</literal>.
+ </para>
+ <para>
+ Se <literal>flag='d'</literal>, os autovalores de
+ <literal>M*A*Q</literal> = autovalores de <literal>A</literal> com
+ magnitude &lt; <literal>thres</literal>.
+ </para>
+ <para>
+ Se <literal>flag='c'</literal> e se <literal>[Q1,M1]</literal> =
+ fatoração em posto cheio (<literal>fullrf</literal>) de
+ <literal>eye()-Q*M</literal>então os autovalores de
+ <literal>M1*A*Q1</literal> = autovalores de<literal> A</literal> com parte
+ real &gt;= <literal>thres</literal>.
+ </para>
+ <para>
+ Se <literal>flag='d'</literal> e se <literal>[Q1,M1]</literal> =
+ fatoração em posto cheio (<literal>fullrf</literal>) de
+ <literal>eye()-Q*M</literal> então os autovalores de
+ <literal>M1*A*Q1</literal> = autovalores de <literal>A</literal> com
+ magnitude &gt;= <literal>thres</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=diag([1,2,3]);X=rand(A);A=inv(X)*A*X;
+[Q,M]=psmall(A,2.5,'d');
+spec(M*A*Q)
+[Q1,M1]=fullrf(eye()-Q*M);
+spec(M1*A*Q1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="pbig">pbig</link>
+ </member>
+ <member>
+ <link linkend="proj">proj</link>
+ </member>
+ <member>
+ <link linkend="projspec">projspec</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>Esta função é baseada na forma de Schur ordenada (Função do
+ Scilab<literal> schur</literal>).
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/eigen/schur.xml b/modules/linear_algebra/help/pt_BR/eigen/schur.xml
new file mode 100755
index 000000000..f89dd7791
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/eigen/schur.xml
@@ -0,0 +1,411 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="schur" xml:lang="en">
+ <refnamediv>
+ <refname>schur</refname>
+ <refpurpose>decomposição (ordenada) de Schur de matrizes e
+ feixes
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[U,T] = schur(A)
+ [U,dim [,T] ]=schur(A,flag)
+ [U,dim [,T] ]=schur(A,extern1)
+
+ [As,Es [,Q,Z]]=schur(A,E)
+ [As,Es [,Q],Z,dim] = schur(A,E,flag)
+ [Z,dim] = schur(A,E,flag)
+ [As,Es [,Q],Z,dim]= schur(A,E,extern2)
+ [Z,dim]= schur(A,E,extern2)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para> matriz quadrada de reais ou complexos </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E</term>
+ <listitem>
+ <para>matriz quadrada de reais ou complexos com as mesmas dimensões
+ de<literal> A</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ string (<literal>'c'</literal>
+ ou<literal>'d'</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>extern1</term>
+ <listitem>
+ <para>uma ``external'' (função externa), veja abaixo</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>extern2</term>
+ <listitem>
+ <para>uma ``external'', veja abaixo </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>U</term>
+ <listitem>
+ <para>matriz quadrada ortogonal ou unitária </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q</term>
+ <listitem>
+ <para>matriz quadrada ortogonal ou unitária </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Z</term>
+ <listitem>
+ <para>matriz quadrada ortogonal ou unitária </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>T</term>
+ <listitem>
+ <para>matriz quadrada triangular superior ou quasi-triangular
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>As</term>
+ <listitem>
+ <para>matriz quadrada triangular superior ou quasi-triangular
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Es</term>
+ <listitem>
+ <para>matriz quadrada triangular superior </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dim</term>
+ <listitem>
+ <para>inteiro</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>Formas de Schur, formas ordenadas de Schur de matrizes e feixes
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>FORMA DE SCHUR MATRICIAL</term>
+ <listitem>
+ <variablelist>
+ <varlistentry>
+ <term>Forma de Schur usual:</term>
+ <listitem>
+ <para>
+ <literal>[U,T] = schur(A)</literal> produz uma matriz de
+ Schur <literal>T</literal> e uma matriz unitária
+ <literal>U</literal> tais que <literal>A = U*T*U'</literal> e
+ <literal>U'*U = eye(U)</literal>. Por si mesmo,
+ schur(<literal>A</literal>) retorna <literal>T</literal>. Se
+ <literal>A</literal> é de complexos, a Forma de Schur Complexa
+ é retornada na matriz <literal>T</literal>. A Forma de Schur
+ Complexa é triangular superior com os autovalores de
+ <literal>A</literal> na diagonal. Se <literal>A</literal> é de
+ reais, a Forma de Schur Real é retornada. A Forma de Schur
+ Real tem autovalores reais na diagonal e os autovalores
+ complexos em blocos 2-por-2 na diagonal.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Formas de Schur ordenadas</term>
+ <listitem>
+ <para>
+ <literal>[U,dim]=schur(A,'c')</literal> rretorna uma
+ matriz unitária <literal>U</literal> que transforma
+ <literal>A</literal> em uma forma de Schur. Ainda, as
+ primeiras dim colunas de <literal>U</literal> formam uma base
+ para o autoespaço de <literal>A</literal> associado aos
+ autovalores com partes reais negativas (autoespaço de "tempo
+ contínuo" estável).
+ </para>
+ <para>
+ <literal>[U,dim]=schur(A,'d')</literal> retorna uma
+ matriz unitária <literal>U</literal> que transforma
+ <literal>A</literal> em uma forma de Schur. Ainda, as
+ primeiras <literal>dim</literal> colunas de
+ <literal>U</literal> geram uma base do autoespaço de
+ <literal>A</literal> associado aos autovalores de magnitude
+ menor que 1 (autoespaço de "tempo discreto" estável).
+ </para>
+ <para>
+ <literal>[U,dim]=schur(A,extern1)</literal> retorna uma
+ matriz unitária <literal>U</literal> que transforma
+ <literal>A</literal> em uma forma de Schur. Ainda, as
+ <literal>dim</literal> primeiras colunas de
+ <literal>U</literal> geram uma base para o autoespaço de
+ <literal>A</literal> associado aos autovalores que são
+ selecionados pela "external" <literal>extern1</literal> (veja
+ "external" para detalhes). Esta "external" pode ser descrita
+ por uma função do Scilab ou por um "procedure" de C ou
+ FORTRAN:
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>Uma Função do Scilab</term>
+ <listitem>
+ <para>
+ Se <literal>extern1</literal> é descrita por uma
+ função do Scilab, deve ter a seguinte seqüência de
+ chamamento: <literal>s=extern1(Ev)</literal>, onde
+ <literal>Ev</literal> é um autovalor e
+ <literal>s</literal> um booleano.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Um "Procedure" C ou FORTRAN</term>
+ <listitem>
+ <para>
+ Se <literal>extern1</literal> é descrita por uma
+ função de C ou FORTRAN, deve ter a seguinte seqüência de
+ chamamento: <literal>int extern1(double *EvR, double
+ *EvI)
+ </literal>
+ onde <literal>EvR</literal> e
+ <literal>EvI</literal> são partes real e complexa de
+ autovalor. Valor verdadeiro ou diferente de zero
+ retornado significa autovalor selecionado.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>FORMAS DE SCHUR DE FEIXES</term>
+ <listitem>
+ <variablelist>
+ <varlistentry>
+ <term>Forma de Schur de Feixe Usual</term>
+ <listitem>
+ <para>
+ <literal>[As,Es] = schur(A,E)</literal> produz uma
+ matriz <literal>As</literal> quasi-triangular e uma matriz
+ triangular <literal>Es</literal> que são a forma generalizada
+ de Schur do par <literal>A, E</literal>.
+ </para>
+ <para>
+ <literal>[As,Es,Q,Z] = schur(A,E)</literal> retorna,
+ ainda, duas matrizes unitárias <literal>Q</literal> e
+ <literal>Z</literal> tais que <literal>As=Q'*A*Z</literal> e
+ <literal>Es=Q'*E*Z</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Formas de Schur Ordenadas:</term>
+ <listitem>
+ <para>
+ <literal>[As,Es,Z,dim] = schur(A,E,'c')</literal>
+ retorna a forma real generalizada de Schur do feixe
+ <literal>s*E-A</literal>. Ainda, as primeiras dim colunas de
+ <literal>Z</literal> geram uma base para o autoespaço direito
+ associado aos autovalores com partes reais negativas
+ (autoespaço de "tempo contínuo" generalizado).
+ </para>
+ <para>
+ <literal>[As,Es,Z,dim] = schur(A,E,'d')</literal>
+ </para>
+ <para>retorna a forma real generalizada de Schur do feixe
+ <literal>s*E-A</literal>. Ainda, as dim primeiras colunas de
+ <literal>Z</literal> formam uma base para o autoespaço direito
+ associado aos autovalores de magnitude menor que 1 (autoespaço
+ de "tempo discreto" generalizado).
+ </para>
+ <para>
+ <literal>[As,Es,Z,dim] =
+ schur(A,E,extern2)
+ </literal>
+ </para>
+ <para>retorna a forma real generalizada de Schur do feixe
+ <literal>s*E-A</literal>. Ainda, as dim primeiras colunas de
+ <literal>Z</literal> formam uma base para o autoespaço direito
+ associado aos autovalores do feixe que são selecionados de
+ acordo com a regra que é dada pela "external"
+ <literal>extern2</literal>. (veja "external" para detalhes).
+ Esta external pode ser descrita por uma função do Scilab ou
+ por um "procedure" de C ou FORTRAN.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>Função do Scilab</term>
+ <listitem>
+ <para>
+ Se <literal>extern2</literal> é descrita por uma
+ função do Scilab, deve ter a seqüência de chamamento:
+ <literal>s=extern2(Alpha,Beta)</literal>, onde
+ <literal>Alpha</literal> e <literal>Beta</literal>
+ definem um autovalor generalizado e <literal>s</literal>
+ um booleano.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Um "Procedure" C ou FORTRAN</term>
+ <listitem>
+ <para>
+ Se a "external" <literal>extern2</literal> é
+ descrita por um "procedure" C ou FORTRAN, deve ter a
+ seqüência de chamamento:
+ </para>
+ <para>
+ <literal>int extern2(double *AlphaR, double
+ *AlphaI, double *Beta)
+ </literal>
+ </para>
+ <para>
+ se <literal>A</literal> e <literal>E</literal> são
+ matrizes de reais e
+ </para>
+ <para>
+ <literal>int extern2(double *AlphaR, double
+ *AlphaI, double *BetaR, double *BetaI)
+ </literal>
+ </para>
+ <para>
+ se <literal>A</literal> ou <literal>E</literal> é
+ matriz de complexos. <literal>Alpha</literal>, e
+ <literal>Beta</literal> definem o autovalor
+ generalizado. Um valor verdadeiro ou diferente de zero
+ siginfica autovalor generalizado selecionado.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Referências</title>
+ <para>As computações da forma de Schur matricial são baseadas nas rotinas
+ de Lapack DGEES e ZGEES.
+ </para>
+ <para>As computações da forma de Schur de feixes são baseadas nas rotinas
+ de Lapack DGGES e ZGGES.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+//SCHUR FORM OF A MATRIX
+//----------------------
+A=diag([-0.9,-2,2,0.9]);X=rand(A);A=inv(X)*A*X;
+[U,T]=schur(A);T
+
+[U,dim,T]=schur(A,'c');
+T(1:dim,1:dim) //stable cont. eigenvalues
+
+function t=mytest(Ev),t=abs(Ev)<0.95,endfunction
+[U,dim,T]=schur(A,mytest);
+T(1:dim,1:dim)
+
+// The same function in C (a Compiler is required)
+cd TMPDIR;
+C=['int mytest(double *EvR, double *EvI) {' //the C code
+ 'if (*EvR * *EvR + *EvI * *EvI < 0.9025) return 1;'
+ 'else return 0; }';]
+mputl(C,TMPDIR+'/mytest.c')
+
+
+//build and link
+lp=ilib_for_link('mytest','mytest.c',[],'c');
+link(lp,'mytest','c');
+
+//run it
+[U,dim,T]=schur(A,'mytest');
+//SCHUR FORM OF A PENCIL
+//----------------------
+F=[-1,%s, 0, 1;
+ 0,-1,5-%s, 0;
+ 0, 0,2+%s, 0;
+ 1, 0, 0, -2+%s];
+A=coeff(F,0);E=coeff(F,1);
+[As,Es,Q,Z]=schur(A,E);
+Q'*F*Z //It is As+%s*Es
+
+
+[As,Es,Z,dim] = schur(A,E,'c')
+function t=mytest(Alpha,Beta),t=real(Alpha)<0,endfunction
+[As,Es,Z,dim] = schur(A,E,mytest)
+
+//the same function in Fortran (a Compiler is required)
+ftn=['integer function mytestf(ar,ai,b)' //the fortran code
+ 'double precision ar,ai,b'
+ 'mytestf=0'
+ 'if(ar.lt.0.0d0) mytestf=1'
+ 'end']
+mputl(' '+ftn,TMPDIR+'/mytestf.f')
+
+//build and link
+lp=ilib_for_link('mytestf','mytestf.f',[],'F');
+link(lp,'mytestf','f');
+
+//run it
+
+[As,Es,Z,dim] = schur(A,E,'mytestf')
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ <member>
+ <link linkend="bdiag">bdiag</link>
+ </member>
+ <member>
+ <link linkend="ricc">ricc</link>
+ </member>
+ <member>
+ <link linkend="pbig">pbig</link>
+ </member>
+ <member>
+ <link linkend="psmall">psmall</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/eigen/spec.xml b/modules/linear_algebra/help/pt_BR/eigen/spec.xml
new file mode 100755
index 000000000..00be379ad
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/eigen/spec.xml
@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="spec" xml:lang="en">
+ <refnamediv>
+ <refname>spec</refname>
+ <refpurpose>autovalores de matrizes e feixes</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>evals=spec(A)
+ [R,diagevals]=spec(A)
+
+ evals=spec(A,B)
+ [alpha,beta]=spec(A,B)
+ [alpha,beta,Z]=spec(A,B)
+ [alpha,beta,Q,Z]=spec(A,B)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz quadrada de reais ou complexos </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>B</term>
+ <listitem>
+ <para>matriz quadrada de reais ou complexos com as mesmas dimensões
+ que<literal> A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>evals</term>
+ <listitem>
+ <para>vetor de reais ou complexos, os autovalores</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>diagevals</term>
+ <listitem>
+ <para>matriz diagonal de reais ou complexos (autovalores ao longo da
+ diagonal)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>alpha</term>
+ <listitem>
+ <para>vetor de reais ou complexos, al./be fornece os
+ autovalores
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>beta</term>
+ <listitem>
+ <para>vetor de reais, al./be fornece os autovalores</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>R</term>
+ <listitem>
+ <para>matriz quadrada de reais ou complexos invertível, autovetores
+ direitos da matriz
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q</term>
+ <listitem>
+ <para>matriz quadrada de reais ou complexos invertível, autovetores
+ esquerdos do feixe
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Z</term>
+ <listitem>
+ <para>matriz quadrada de reais ou complexos invertível, autovetores
+ direitos do feixe
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <variablelist>
+ <varlistentry>
+ <term>evals=spec(A)</term>
+ <listitem>
+ <para>
+ retorna no vetor <literal>evals</literal> os
+ autovalores.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[R,diagevals] =spec(A)</term>
+ <listitem>
+ <para>
+ retorna na matriz diagonal <literal>evals</literal> os
+ autovalores e em <literal>R</literal> os autovetores
+ direitos.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>evals=spec(A,B)</term>
+ <listitem>
+ <para> retorna o espectro do feixe de matrizes A - s B, i.e. as
+ raízes da matriz de polinômios s B - A.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[alpha,beta] = spec(A,B)</term>
+ <listitem>
+ <para>
+ retorna o espectro do feixe de matrizes <literal>A- s
+ B
+ </literal>
+ ,i.e. as raízes da matriz de polinômios <literal>A - s
+ B
+ </literal>
+ .Auto valores generalizados alpha e beta são tais que a
+ matriz <literal>A - alpha./beta B</literal> é uma matriz singular.
+ Os autovalores são dados por <literal>al./be</literal> e se
+ <literal>beta(i) = 0</literal> o i-ésimo autovalor está no infinito.
+ (Para <literal>B = eye(A), alpha./beta</literal> é
+ <literal>spec(A)</literal>). É usualmente representado pelo par
+ (alpha,beta), já que há uma interpretação razoável para beta=0, e
+ até mesmo para os dois sendo zero.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[alpha,beta,R] = spec(A,B)</term>
+ <listitem>
+ <para>
+ retorna, ainda, a matriz <literal>R</literal> de autovetores
+ direitos generalizados do feixe.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[al,be,Q,Z] = spec(A,B)</term>
+ <listitem>
+ <para>
+ rretorna ainda a matriz <literal>Q</literal> e
+ <literal>Z</literal> de autovetores esquerdos e direitos
+ generalizados do feixe.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Referências</title>
+ <para>As computações de autovalores de matrizes são baseadas nas rotinas
+ Lapack
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>DGEEV e ZGEEV quando as matrizes não são simétricas,</para>
+ </listitem>
+ <listitem>
+ <para>DSYEV e ZHEEV quando as matrizes são simétricas.</para>
+ </listitem>
+ </itemizedlist>
+ <para>Uma matriz de complexos simétrica tem termos fora da diagonal
+ conjugados e termos diagonais reais.
+ </para>
+ <para>As computações de autovalores de feixes são baseadas nas rotinas
+ Lapack DGGEV e ZGGEV.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Matrizes de reais e de complexos</title>
+ <para>Deve-se notar que o tipo das variáveis de saída, tais como evals ou
+ R por exemplo, não é necessariamente o mesmo das que das matrizes de
+ entrada A e B. No parágrafo seguinte, análisamos o tipo das variáveis de
+ saída no caso onde nos casos onde se computa os autovalores e autovetores
+ de uma única matriz A.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>Matriz A de reais</para>
+ <itemizedlist>
+ <listitem>
+ <para>Simétrica</para>
+ <para>Os autovetores e autovalores são reais.</para>
+ </listitem>
+ <listitem>
+ <para>Não simétrica</para>
+ <para>Os autovetores e autovalores são complexos.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>Matriz A de complexos</para>
+ <itemizedlist>
+ <listitem>
+ <para>Simétrica</para>
+ <para>Os autovalores são reais, mas os autovetores são
+ complexos.
+ </para>
+ </listitem>
+ <listitem>
+ <para>Não simétrica</para>
+ <para>Os autovetores e autovalores são complexos.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+// AUTOVALORES DA MATRIZ
+A=diag([1,2,3]);
+X=rand(3,3);
+A=inv(X)*A*X;
+spec(A)
+//
+x=poly(0,'x');
+pol=det(x*eye()-A)
+roots(pol)
+//
+[S,X]=bdiag(A);
+clean(inv(X)*A*X)
+
+// AUTOVALORES DO FEIXE
+A=rand(3,3);
+[al,be,R] = spec(A,eye(A));
+al./be
+clean(inv(R)*A*R) //exibindo os autovalores (matriz genérica)
+A=A+%i*rand(A);
+E=rand(A);
+roots(det(A-%s*E)) //caso de complexos
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="poly">poly</link>
+ </member>
+ <member>
+ <link linkend="det">det</link>
+ </member>
+ <member>
+ <link linkend="schur">schur</link>
+ </member>
+ <member>
+ <link linkend="bdiag">bdiag</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/eigen/sva.xml b/modules/linear_algebra/help/pt_BR/eigen/sva.xml
new file mode 100755
index 000000000..0a88f269d
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/eigen/sva.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="sva" xml:lang="en">
+ <refnamediv>
+ <refname>sva</refname>
+ <refpurpose>aproximação em valores singulares</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento </title>
+ <synopsis>[U,s,V]=sva(A,k)
+ [U,s,V]=sva(A,tol)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz de reais ou complexos</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>k</term>
+ <listitem>
+ <para>inteiro</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>número real não-negativo</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>Aproximação em valores singulares.</para>
+ <para>
+ <literal>[U,S,V]=sva(A,k)</literal> com <literal>k</literal> inteiro
+ &gt;=1, retorna <literal>U,S</literal> e <literal>V</literal> tais que
+ <literal>B=U*S*V'</literal> é a melhor aproximação L2 de
+ <literal>A</literal> com
+ posto(<literal>B</literal>)=<literal>k</literal>.
+ </para>
+ <para>
+ <literal>[U,S,V]=sva(A,tol)</literal> com <literal>tol</literal>
+ real retorna <literal>U,S</literal> e <literal>V</literal> tais que
+ <literal>B=U*S*V'</literal> e a norma-L2 de <literal>A-B</literal> é, no
+ máximo, <literal>tol</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,4)*rand(4,5);
+[U,s,V]=sva(A,2);
+B=U*s*V';
+svd(A)
+svd(B)
+clean(svd(A-B))
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/eigen/svd.xml b/modules/linear_algebra/help/pt_BR/eigen/svd.xml
new file mode 100755
index 000000000..71998511e
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/eigen/svd.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="svd" xml:lang="en">
+ <refnamediv>
+ <refname>svd</refname>
+ <refpurpose>decomposição em valores singulares</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>s=svd(X)
+ [U,S,V]=svd(X)
+ [U,S,V]=svd(X,0) (obsolete)
+ [U,S,V]=svd(X,"e")
+ [U,S,V,rk]=svd(X [,tol])
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>matriz de reais ou complexos </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>s</term>
+ <listitem>
+ <para>vetor de reais (valores singulares)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>S</term>
+ <listitem>
+ <para>matriz diagonal de reais (valores singulares)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>U,V</term>
+ <listitem>
+ <para>matrizes quadradas ortogonais ou unitárias (vetores
+ singulares)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>número real</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>[U,S,V] = svd(X)</literal> produz uma matriz diagonal
+ <literal>S</literal> , com dimensão igual a de <literal>X</literal> e com
+ elementos da diagonal não-negativos em ordem decrescente, e matrizes
+ unitárias <literal>U</literal> e <literal>V</literal> tais que <literal>X
+ = U*S*V'
+ </literal>
+ .
+ </para>
+ <para>
+ <literal>[U,S,V] = svd(X,0)</literal> produz a decomposição com
+ "economia de tamanho". Se <literal>X</literal> é m-por-n com m &gt; n,
+ então apenas as primeiras n colunas de <literal>U</literal> são computadas
+ e <literal>S</literal> é n-por-n.
+ </para>
+ <para>
+ <literal>s= svd(X)</literal> por si mesmo retorna um vetor
+ <literal>s</literal> contendo os valores singulares.
+ </para>
+ <para>
+ <literal>[U,S,V,rk]=svd(X,tol)</literal> fornece também
+ <literal>rk</literal>, o posto numérico de <literal>X</literal> i.e. i.e.
+ o número de valores singulares maiores que <literal>tol</literal>.
+ </para>
+ <para>
+ O valor default de <literal>tol</literal> é o mesmo que em
+ <literal>rank</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+X=rand(4,2)*rand(2,4)
+svd(X)
+sqrt(spec(X*X'))
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rank">rank</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="sva">sva</link>
+ </member>
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title> Função Usada </title>
+ <para>Decomposições svd são baseadas nas rotinas Lapack DGESVD para
+ matrizes de reais e ZGESVD no caso de matrizes de complexos.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/factorization/CHAPTER b/modules/linear_algebra/help/pt_BR/factorization/CHAPTER
new file mode 100755
index 000000000..e6daeb8eb
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/factorization/CHAPTER
@@ -0,0 +1,2 @@
+title = Factorization
+
diff --git a/modules/linear_algebra/help/pt_BR/factorization/givens.xml b/modules/linear_algebra/help/pt_BR/factorization/givens.xml
new file mode 100755
index 000000000..66b9e5a73
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/factorization/givens.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="givens" xml:lang="en">
+ <refnamediv>
+ <refname>givens</refname>
+ <refpurpose>transformação de Givens</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>U=givens(xy)
+ U=givens(x,y)
+ [U,c]=givens(xy)
+ [U,c]=givens(x,y)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>x,y</term>
+ <listitem>
+ <para>dois números reais ou complexos</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>xy</term>
+ <listitem>
+ <para>vetor coluna de reais ou complexos de tamanho 2</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>U</term>
+ <listitem>
+ <para>matriz 2x2 unitária</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>c</term>
+ <listitem>
+ <para>vetor coluna de reais ou complexos de tamanho 2</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>U= givens(x, y)</literal> ou <literal>U =
+ givens(xy)
+ </literal>
+ com <literal>xy = [x;y]</literal> retorna uma matriz
+ unitária <literal>2</literal>x<literal>2</literal> <literal>U</literal>
+ tal que:
+ </para>
+ <para>
+ <literal>U*xy=[r;0]=c</literal>.
+ </para>
+ <para>
+ <note>
+ Note que <literal>givens(x,y)</literal> e
+ <literal>givens([x;y])</literal> são equivalentes.
+ </note>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=[3,4;5,6];
+U=givens(A(:,1));
+U*A
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/factorization/householder.xml b/modules/linear_algebra/help/pt_BR/factorization/householder.xml
new file mode 100755
index 000000000..8faaa7029
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/factorization/householder.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="householder" xml:lang="en">
+ <refnamediv>
+ <refname>householder</refname>
+ <refpurpose>matriz de reflexão ortogonal de Householder</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>u=householder(v [,w])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>v</term>
+ <listitem>
+ <para>vetor coluna de reais ou complexos</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>w</term>
+ <listitem>
+ <para>vetor coluna de reais ou complexos com o mesmo tamanho que
+ <literal>v</literal>. Valor padrão é
+ <literal>eye(v)</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>u</term>
+ <listitem>
+ <para>vetor coluna de reais ou complexos</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Dados dois vetores coluna <literal>v</literal>, <literal>
+ w
+ </literal>
+ de mesmo tamanho, <literal>householder(v,w)</literal> retorna
+ um vetor coluna unitário <literal>u</literal>, tal que<literal>
+ (eye()-2*u*u')*v
+ </literal>
+ éproporcional a <literal>w</literal>.
+ <literal>(eye()-2*u*u')</literal> é a matriz de reflexão ortogonal de
+ Householder .
+ </para>
+ <para>
+ O valor padrão de<literal> w</literal> é<literal> eye(v)</literal>.
+ Neste caso, o vetor <literal> (eye()-2*u*u')*v</literal> é o
+ vetor<literal> eye(v)*norm(v)</literal>.
+ </para>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="givens">givens</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/factorization/sqroot.xml b/modules/linear_algebra/help/pt_BR/factorization/sqroot.xml
new file mode 100755
index 000000000..4c5eab66e
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/factorization/sqroot.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns3="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="sqroot" xml:lang="en">
+ <refnamediv>
+ <refname>sqroot</refname>
+ <refpurpose>fatoração hermitiana W*W'</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>sqroot(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>matriz simétrica, não-negativa definida de reais ou
+ complexos
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Retorna W tal que <literal>X=W*W'</literal> (usa SVD).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+X=rand(5,2)*rand(2,5);X=X*X';
+W=sqroot(X)
+norm(W*W'-X,1)
+//
+X=rand(5,2)+%i*rand(5,2);X=X*X';
+W=sqroot(X)
+norm(W*W'-X,1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="chol">chol</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/kernel/CHAPTER b/modules/linear_algebra/help/pt_BR/kernel/CHAPTER
new file mode 100755
index 000000000..be67920e1
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/kernel/CHAPTER
@@ -0,0 +1,2 @@
+title = Kernel
+
diff --git a/modules/linear_algebra/help/pt_BR/kernel/colcomp.xml b/modules/linear_algebra/help/pt_BR/kernel/colcomp.xml
new file mode 100755
index 000000000..5a281554c
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/kernel/colcomp.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="colcomp" xml:lang="en">
+ <refnamediv>
+ <refname>colcomp</refname>
+ <refpurpose>compressão de colunas, núcleo</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[W,rk]=colcomp(A [,flag] [,tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz de reais ou complexos</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>string</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>número real</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>W</term>
+ <listitem>
+ <para>matriz quadrada não-singular (mudança de base) </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk</term>
+ <listitem>
+ <para>
+ inteiro (posto de <literal>A</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Compressão de colunas de <literal>A</literal>: <literal>Ac =
+ A*W
+ </literal>
+ éde colunas comprimidas ,i.e.,
+ </para>
+ <para>
+ <literal>Ac=[0,Af]</literal> com o posto-coluna de
+ <literal>Af</literal> cheio, posto(<literal>Af</literal>) =
+ posto(<literal>A</literal>) = <literal>rk</literal>.
+ </para>
+ <para>
+ <literal>flag</literal> e <literal>tol</literal> são parâmetros
+ opcionais: <literal>flag = 'qr'</literal> ou <literal>'svd'</literal> (o
+ padrão é <literal>'svd'</literal>).
+ </para>
+ <para>
+ <literal>tol</literal> = parâmetro de tolerância (de ordem
+ <literal>%eps</literal> como valor padrão).
+ </para>
+ <para>
+ As <literal>ma-rk</literal> primeiras colunas de
+ <literal>W</literal> geram o núcleo de <literal>A</literal> quando
+ <literal>size(A)=(na,ma)</literal>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,5);
+[X,r]=colcomp(A);
+norm(A*X(:,1:$-r),1)
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ <member>
+ <link linkend="fullrfk">fullrfk</link>
+ </member>
+ <member>
+ <link linkend="kernel">kernel</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/kernel/fullrf.xml b/modules/linear_algebra/help/pt_BR/kernel/fullrf.xml
new file mode 100755
index 000000000..5bf4e8220
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/kernel/fullrf.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns3="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="fullrf" xml:lang="en">
+ <refnamediv>
+ <refname>fullrf</refname>
+ <refpurpose>fatoração de posto completo (ou cheio)</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[Q,M,rk]=fullrf(A,[tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz de reais ou complexos </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>número real (limiar para determinação do posto) </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q,M</term>
+ <listitem>
+ <para>matriz de reais ou complexos </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk</term>
+ <listitem>
+ <para>
+ inteiro(posto de <literal>A</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Fatoração de posto cheio : <literal>fullrf</literal> retorna
+ <literal>Q</literal> e <literal>M</literal> tais que <literal>A =
+ Q*M
+ </literal>
+ com Im(<literal>Q</literal>)=Im(<literal>A</literal>) e
+ Nuc(<literal>M</literal>)=Nuc(<literal>A</literal>), <literal>Q</literal>
+ de posto-coluna cheio, <literal>M</literal> de posto-linha cheio e
+ <literal>rk = rank(A) = #columns(Q) = #rows(M)</literal>.
+ </para>
+ <para>
+ <literal>tol</literal> é um parâmetro real opcional (valor real
+ padrão é <literal>sqrt(%eps)</literal>). O posto <literal>rk</literal> de
+ <literal>A</literal> é definido como o número de valores singulares
+ maiores que <literal>norm(A)*tol</literal>.
+ </para>
+ <para>
+ Se A é simétrica, <literal>fullrf</literal> retorna
+ <literal>M=Q'</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,5);
+[Q,M]=fullrf(A);
+norm(Q*M-A,1)
+[X,d]=rowcomp(A);Y=X';
+svd([A,Y(:,1:d),Q]) //span(Q) = span(A) = span(Y(:,1:2)) (span = "gerado")
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="fullrfk">fullrfk</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/kernel/fullrfk.xml b/modules/linear_algebra/help/pt_BR/kernel/fullrfk.xml
new file mode 100755
index 000000000..9f7ba85f3
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/kernel/fullrfk.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="fullrfk" xml:lang="en">
+ <refnamediv>
+ <refname>fullrfk</refname>
+ <refpurpose>fatoração de posto completo de A^k</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento </title>
+ <synopsis>[Bk,Ck]=fullrfk(A,k)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz de reais ou de complexos</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>k</term>
+ <listitem>
+ <para>inteiro</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Bk,Ck</term>
+ <listitem>
+ <para>matrizes de reais ou de complexos</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>Esta função calcula a fatoração de posto completo (ou cheio) de
+ <literal>A^k</literal> i.e. <literal>Bk*Ck=A^k</literal> onde
+ <literal>Bk</literal> é de posto-coluna cheio e <literal>Ck</literal> de
+ posto-linha cheio. Tem-se
+ Im(<literal>Bk</literal>)=Im(<literal>A^k</literal>) e
+ Nuc(<literal>Ck</literal>)=Nuc(<literal>A^k</literal>).
+ </para>
+ <para>
+ Para <literal>k=1</literal>, <literal>fullrfk</literal> é
+ equivalente a <literal>fullrf</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,5);[Bk,Ck]=fullrfk(A,3);
+norm(Bk*Ck-A^3,1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ <member>
+ <link linkend="range">range</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/kernel/im_inv.xml b/modules/linear_algebra/help/pt_BR/kernel/im_inv.xml
new file mode 100755
index 000000000..07f69c4b8
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/kernel/im_inv.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="im_inv" xml:lang="en">
+ <refnamediv>
+ <refname>im_inv</refname>
+ <refpurpose>imagem inversa</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[X,dim]=im_inv(A,B [,tol])
+ [X,dim,Y]=im_inv(A,B, [,tol])
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A,B</term>
+ <listitem>
+ <para>duas matirzes de reais ou complexos com igual número de
+ colunas
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>matriz quadrada ortogonal ou unitária de ordem igual ao número
+ de colunas de <literal>A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dim</term>
+ <listitem>
+ <para>inteiro (dimensão do subespaço) </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Y</term>
+ <listitem>
+ <para>matriz ortogonal de ordem igual ao número de linhas de
+ <literal>A</literal> e <literal>B</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>[X,dim]=im_inv(A,B)</literal>
+ computa<literal>(A^-1)(B)</literal> ,i.e, vetores cujas imagens através de
+ <literal>A</literal> estão em Im(<literal>B</literal>)
+ </para>
+ <para>
+ As <literal>dim</literal> primeiras colunas de <literal>X</literal>
+ geram<literal> (A^-1)(B)</literal>
+ </para>
+ <para>
+ <literal>tol</literal> é um limiar usado para testar a inclusão de
+ subespaço ; o valor padrão é <literal>tol = 100*%eps</literal>. Se
+ <literal>Y</literal> é retornado, então <literal>[Y*A*X,Y*B]</literal> é
+ particionado como segue:
+ <literal>[A11,A12;0,A22]</literal>,<literal>[B1;0]</literal>
+ </para>
+ <para>
+ onde <literal>B1</literal> tem posto-linha cheio (igual a
+ posto<literal>(B)</literal>) e <literal>A22</literal> tem posto-coluna
+ cheio e tem <literal>dim</literal> colunas.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=[rand(2,5);[zeros(3,4),rand(3,1)]];B=[[1,1;1,1];zeros(3,2)];
+W=rand(5,5);A=W*A;B=W*B;
+[X,dim]=im_inv(A,B)
+svd([A*X(:,1:dim),B]) //vetores A*X(:,1:dim) pertencem a range(B) (Imagem de B: Im(B))
+[X,dim,Y]=im_inv(A,B);[Y*A*X,Y*B]
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="spaninter">spaninter</link>
+ </member>
+ <member>
+ <link linkend="spanplus">spanplus</link>
+ </member>
+ <member>
+ <link linkend="linsolve">linsolve</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/kernel/kernel.xml b/modules/linear_algebra/help/pt_BR/kernel/kernel.xml
new file mode 100755
index 000000000..93f8e850e
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/kernel/kernel.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="kernel" xml:lang="en">
+ <refnamediv>
+ <refname>kernel</refname>
+ <refpurpose>núcleo de uma matriz</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>W=kernel(A [,tol,[,flag])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz de reais ou complexos completa ou matriz de reais
+ esparsa
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ string <literal>'svd'</literal> (padrão) ou
+ <literal>'qr'</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>número real </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>W</term>
+ <listitem>
+ <para>matriz de posto-coluna completo</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>W=kernel(A)</literal> retorna o núcleo (espaço nulo) de
+ <literal>A</literal>. Se A tem posto-coluna completo, então uma matriz
+ vazia [] é retornada.
+ </para>
+ <para>
+ <literal>flag</literal> e <literal>tol</literal> são parâmetros
+ opcionais: <literal>flag = 'qr'</literal> ou<literal>'svd'</literal> (o
+ padrão é <literal>'svd'</literal>).
+ </para>
+ <para>
+ <literal>tol</literal> = parâmetro de tolerância (de ordem
+ <literal>%eps</literal> como valor padrão).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(3,1)*rand(1,3);
+A*kernel(A)
+A=sparse(A);
+clean(A*kernel(A))
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ <member>
+ <link linkend="fullrfk">fullrfk</link>
+ </member>
+ <member>
+ <link linkend="linsolve">linsolve</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/kernel/range.xml b/modules/linear_algebra/help/pt_BR/kernel/range.xml
new file mode 100755
index 000000000..a82b20aa8
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/kernel/range.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="range" xml:lang="en">
+ <refnamediv>
+ <refname>range</refname>
+ <refpurpose>Imagem (gerado) de A^k</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento</title>
+ <synopsis>[X,dim]=range(A,k)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz de reais ou complexos que se assume quadrada se k&gt;1
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>k</term>
+ <listitem>
+ <para>inteiro</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>matriz ortonormal </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dim</term>
+ <listitem>
+ <para>inteiro (dimensão de subespaço)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Computação da imagem de <literal>A^k</literal> ; as primeiras dim
+ colunas de <literal>X</literal> geram a imagem de <literal>A^k</literal>.
+ As últimas linhas de <literal>X</literal> geram o complemento ortogonal da
+ imagem. <literal>X*X'</literal> é a matriz identidade.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(4,2)*rand(2,4); // 4 vetores colunas, 2 independentes.
+[X,dim]=range(A,1);dim // computando a imagem
+
+y1=A*rand(4,1); //um vetor que está na imagem de A
+y2=rand(4,1); //um vetor que não está na imagem de A
+norm(X(dim+1:$,:)*y1) //as últimas entradas são zeros, y1 está na imagem de A
+norm(X(dim+1:$,:)*y2) //as últimas entradas não são zeros
+
+I=X(1:dim,:)' //I é uma base para a imagem
+coeffs=X(1:dim,:)*y1 //componentes de y1 relativos à base I
+
+norm(I*coeffs-y1) //verificando
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fullrfk">fullrfk</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title> Função Usada</title>
+ <para>
+ A função <literal>range</literal> é baseada na função <link linkend="rowcomp">rowcomp</link> que usa decomposição <link linkend="svd">svd</link> (decomposição em valores singulares).
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/kernel/rowcomp.xml b/modules/linear_algebra/help/pt_BR/kernel/rowcomp.xml
new file mode 100755
index 000000000..a01b2c735
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/kernel/rowcomp.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="rowcomp" xml:lang="en">
+ <refnamediv>
+ <refname>rowcomp</refname>
+ <refpurpose>compressão de linhas, imagem</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento</title>
+ <synopsis>[W,rk]=rowcomp(A [,flag [,tol]])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz de reais ou de complexos </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>string opcional, com valores possíveis
+ <literal>'svd'</literal> ou <literal>'qr'</literal>. O valor padrão
+ é <literal>'svd'</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>número real não-negativo opcional. O valor padrão é
+ <literal>sqrt(%eps)*norm(A,1)</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>W</term>
+ <listitem>
+ <para>matriz quadrada não-singular (matriz mudança de base)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk</term>
+ <listitem>
+ <para>
+ inteiro (posto de <literal>A</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Compressão de linhas de <literal>A</literal>. <literal>Ac =
+ W*A
+ </literal>
+ éuma matriz de linhas comprimidas, i.e.
+ <literal>Ac=[Af;0]</literal> com <literal>Af</literal> de posto-linha
+ cheio.
+ </para>
+ <para>
+ <literal>flag</literal> e <literal>tol</literal> são parâmetros
+ opcionais: <literal>flag='qr'</literal> ou <literal>'svd'</literal> (o
+ padrão é <literal>'svd'</literal>).
+ </para>
+ <para>
+ <literal>tol</literal> é um parâmetro de tolerância.
+ </para>
+ <para>
+ As <literal>rk</literal> primeiras colunas de <literal>W'</literal>
+ geram a imagem de <literal>A</literal>.
+ </para>
+ <para>
+ As <literal>rk</literal> primeiras linhas (do topo) de
+ <literal>W</literal> geram a imagem de linha de
+ <literal>A</literal>.
+ </para>
+ <para>
+ Um vetor não nulo <literal>x</literal> pertence à
+ Im(<literal>A</literal>) se,e só se, <literal>W*x</literal> é de linhas
+ comprimidas de acordo com <literal>Ac</literal> i.e, a norma de seus
+ últimos componentes é pequena com relação a dos seus primeiros
+ componentes.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,4); // 4 vetores colunas, 2 independentes
+[X,dim]=rowcomp(A);Xp=X';
+svd([Xp(:,1:dim),A]) //span(A) = span(Xp(:,1:dim) (span="gerado")
+x=A*rand(4,1); //x pertence a span(A)
+y=X*x
+norm(y(dim+1:$))/norm(y(1:dim)) // pequeno
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ <member>
+ <link linkend="fullrfk">fullrfk</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Função Usada </title>
+ <para>
+ A função <literal>rowcomp</literal> é baseada nas decomposições
+ <link linkend="svd">svd</link> (decomposição em valores singulares) ou
+ <link linkend="qr">qr</link> .
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/linear/CHAPTER b/modules/linear_algebra/help/pt_BR/linear/CHAPTER
new file mode 100755
index 000000000..7d9d9cf49
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/linear/CHAPTER
@@ -0,0 +1,2 @@
+title = Linear Equations
+
diff --git a/modules/linear_algebra/help/pt_BR/linear/aff2ab.xml b/modules/linear_algebra/help/pt_BR/linear/aff2ab.xml
new file mode 100755
index 000000000..8aa01b88e
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/linear/aff2ab.xml
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns3="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="aff2ab" xml:lang="en">
+ <refnamediv>
+ <refname>aff2ab</refname>
+ <refpurpose>Conversão de uma função linear (afim) para forma
+ A,b
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>[A,b]=aff2ab(afunction,dimX,D [,flag])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>afunction</term>
+ <listitem>
+ <para>
+ uma função do Scilab <literal> Y =fct(X,D) </literal> onde
+ <literal>X, D, Y</literal> são <literal>lists</literal> de
+ matrizes
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dimX</term>
+ <listitem>
+ <para>
+ uma matriz de inteiros p x 2 (<literal>p</literal> é o número
+ de matrizes em X)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>D</term>
+ <listitem>
+ <para>
+ uma <literal>list</literal> de matrizes de reais (ou qualquer
+ outro objeto Scilab válido).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ parâmetro opcional (<literal>flag='f'</literal> ou
+ <literal>flag='sp'</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>uma matriz de reais</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>b</term>
+ <listitem>
+ <para>um vetor de reais tendo a mesma dimensão de linha que
+ <literal>A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>aff2ab</literal> retorna a representação matricial de uma
+ função afim (na base canônica).
+ </para>
+ <para>
+ <literal>afunction</literal> é uma função com sintaxe imposta:
+ <literal> Y=afunction(X,D) </literal> onde <literal> X=list(X1,X2,...,Xp)
+ </literal>
+ é uma lista de p matrizes de reais, e <literal>
+ Y=list(Y1,...,Yq)
+ </literal>
+ éuma lista de q matrizes reais que dependem
+ linearmente das <literal> Xi</literal>'s. A entrada (opcional) <literal>
+ D
+ </literal>
+ contém parâmetros necessários para computar Y como uma função
+ de X (geralmente é uma lista de matrizes).
+ </para>
+ <para>
+ <literal> dimX</literal> é uma matriz p x 2:
+ <literal>dimX(i)=[nri,nci]</literal> é o número real de linhas e colunas
+ da matriz <literal>Xi</literal>. Estas dimensões determinam
+ <literal>na</literal>, a dimensão de coluna da matriz resultante
+ <literal>A</literal>: <literal>na=nr1*nc1 +...+ nrp*ncp</literal>.
+ </para>
+ <para>
+ Se o parâmetro opcional <literal>flag='sp'</literal> a matriz
+ resultante A é retornada como uma esparsa.
+ </para>
+ <para>Esta função é útil para resolver um sistema de equações lineares
+ onde as incógnitas são matrizes.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+// solucionador de equação de Lyapunov (uma incógnita, uma restrição)
+deff('Y=lyapunov(X,D)','[A,Q]=D(:);Xm=X(:); Y=list(A''*Xm+Xm*A-Q)')
+A=rand(3,3);Q=rand(3,3);Q=Q+Q';D=list(A,Q);dimX=[3,3];
+[Aly,bly]=aff2ab(lyapunov,dimX,D);
+[Xl,kerA]=linsolve(Aly,bly); Xv=vec2list(Xl,dimX); lyapunov(Xv,D)
+Xm=Xv(:); A'*Xm+Xm*A-Q
+
+// solucionador de equação de Lyapunov com restrição redundante X=X'
+// (uma variável, uma restrição) D é variável global
+deff('Y=ly2(X,D)','[A,Q]=D(:);Xm=X(:); Y=list(A''*Xm+Xm*A-Q,Xm''-Xm)')
+A=rand(3,3);Q=rand(3,3);Q=Q+Q';D=list(A,Q);dimX=[3,3];
+[Aly,bly]=aff2ab(ly2,dimX,D);
+[Xl,kerA]=linsolve(Aly,bly); Xv=vec2list(Xl,dimX); ly2(Xv,D)
+
+// equações de Francis
+// Achando matrizes X1 e X2 tais que:
+// A1*X1 - X1*A2 + B*X2 -A3 = 0
+// D1*X1 -D2 = 0
+deff('Y=bruce(X,D)','[A1,A2,A3,B,D1,D2]=D(:),...
+[X1,X2]=X(:);Y=list(A1*X1-X1*A2+B*X2-A3,D1*X1-D2)')
+A1=[-4,10;-1,2];A3=[1;2];B=[0;1];A2=1;D1=[0,1];D2=1;
+D=list(A1,A2,A3,B,D1,D2);
+[n1,m1]=size(A1);[n2,m2]=size(A2);[n3,m3]=size(B);
+dimX=[[m1,n2];[m3,m2]];
+[Af,bf]=aff2ab(bruce,dimX,D);
+[Xf,KerAf]=linsolve(Af,bf);Xsol=vec2list(Xf,dimX)
+bruce(Xsol,D)
+
+// Achando todas as X que comutam com A
+deff('y=f(X,D)','y=list(D(:)*X(:)-X(:)*D(:))')
+A=rand(3,3);dimX=[3,3];[Af,bf]=aff2ab(f,dimX,list(A));
+[Xf,KerAf]=linsolve(Af,bf);[p,q]=size(KerAf);
+Xsol=vec2list(Xf+KerAf*rand(q,1),dimX);
+C=Xsol(:); A*C-C*A
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="linsolve">linsolve</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/linear/chol.xml b/modules/linear_algebra/help/pt_BR/linear/chol.xml
new file mode 100755
index 000000000..33b11e42f
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/linear/chol.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns3="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="chol" xml:lang="en">
+ <refnamediv>
+ <refname>chol</refname>
+ <refpurpose>Cholesky factorization</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>[R]=chol(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>uma matriz simétrica e positiva definida de reais ou
+ complexos.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Se <literal>X</literal> é positiva definida, então <literal>R =
+ chol(X)
+ </literal>
+ produz uma matriz triangular superior
+ <literal>R</literal> tal que <literal>R'*R = X</literal>.
+ </para>
+ <para>
+ <literal>chol(X)</literal> usa apenas a diagonal e o triângulo
+ superior de <literal>X</literal>. O triângulo inferior é assumido como
+ sendo a transposta (ou complexo conjugado) da superior.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Referências</title>
+ <para>A decomposição de Cholesky é baseada nas rotinas de Lapack DPOTRF
+ para matrizes de reais e ZPOTRF no caso de matrizes de complexos.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+W=rand(5,5)+%i*rand(5,5);
+X=W*W';
+R=chol(X);
+norm(R'*R-X)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spchol">spchol</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="bdiag">bdiag</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/linear/inv.xml b/modules/linear_algebra/help/pt_BR/linear/inv.xml
new file mode 100755
index 000000000..6eaa5f99d
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/linear/inv.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="inv" xml:lang="en">
+ <refnamediv>
+ <refname>inv</refname>
+ <refpurpose>inversa de uma matriz</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>inv(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>matriz quadrada de reais ou complexos, matriz de polinômios,
+ matriz de razões de polinômios em representação de transferência ou
+ espaço de estados
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>inv(X)</literal> é a inversa da matriz quadrada
+ <literal>X</literal>. Uma aviso é impresso na tela se <literal>X</literal>
+ possui má escala ou é quase singular.
+ </para>
+ <para>Para matrizes de polinômios ou matrizes razões de polinômios em
+ representação de transferência, <literal>inv(X)</literal> é equivalente a
+ <literal>invr(X)</literal>.
+ </para>
+ <para>Para sistemas lineares na representação de espaço de estados (lista
+ <literal>syslin</literal>), <literal>invr(X)</literal> é equivalente a
+ <literal>invsyslin(X)</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Referências</title>
+ <para>A função inv para matrizes de números é baseada nas rotinas de
+ Lapack DGETRF, DGETRI para matrizes de reais e ZGETRF, ZGETRI para o caso
+ de matrizes de complexos. Para matrizes de polinômios e matrizes de
+ funções racionais, <literal>inv</literal> é baseado na função
+ <literal>invr</literal> do Scilab.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);inv(A)*A
+
+x=poly(0,'x');
+A=[x,1,x;x^2,2,1+x;1,2,3];inv(A)*A
+
+A=[1/x,2;2+x,2/(1+x)]
+inv(A)*A
+
+A=ssrand(2,2,3);
+W=inv(A)*A
+clean(ss2tf(W))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="slash">slash</link>
+ </member>
+ <member>
+ <link linkend="backslash">backslash</link>
+ </member>
+ <member>
+ <link linkend="pinv">pinv</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="lufact">lufact</link>
+ </member>
+ <member>
+ <link linkend="lusolve">lusolve</link>
+ </member>
+ <member>
+ <link linkend="invr">invr</link>
+ </member>
+ <member>
+ <link linkend="coff">coff</link>
+ </member>
+ <member>
+ <link linkend="coffg">coffg</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/linear/linsolve.xml b/modules/linear_algebra/help/pt_BR/linear/linsolve.xml
new file mode 100755
index 000000000..dffda99b7
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/linear/linsolve.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="linsolve" xml:lang="en">
+ <refnamediv>
+ <refname>linsolve</refname>
+ <refpurpose>solucionador de equações lineares</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>[x0,kerA]=linsolve(A,b [,x0])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>
+ uma matriz <literal>na x ma</literal> de reais (possivelmente
+ esparsa)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>b</term>
+ <listitem>
+ <para>
+ um vetor <literal>na x 1</literal> (mesma dimensão de linha de
+ <literal>A</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>x0</term>
+ <listitem>
+ <para>um vetor de reais </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>kerA</term>
+ <listitem>
+ <para>
+ uma matriz <literal>ma x k</literal> de reais
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>linsolve</literal> computa todas as soluções para <literal>
+ A*x+b=0
+ </literal>
+ .
+ </para>
+ <para>
+ <literal>x0</literal> é uma solução particular (se houver) e
+ <literal> kerA= </literal>núcleo de <literal>A</literal>. Qualquer
+ <literal>x=x0+kerA*w</literal> com <literal>w</literal> arbitrário
+ satisfaz <literal> A*x+b=0</literal>.
+ </para>
+ <para>
+ Se um compatible <literal>x0</literal> compatível é dado na entrada,
+ <literal>x0</literal> é retornado. Senão, um <literal>x0</literal>,
+ compatível é retornado, se houver.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,3)*rand(3,8);
+b=A*ones(8,1);[x,kerA]=linsolve(A,b);A*x+b //b comatível
+b=ones(5,1);[x,kerA]=linsolve(A,b);A*x+b //b incompatível
+A=rand(5,5);[x,kerA]=linsolve(A,b), -inv(A)*b //x é único
+
+// A benchmark of sparse linear solver
+
+[A,descr,ref,mtype] = ReadHBSparse(SCI+"/modules/umfpack/examples/bcsstk24.rsa");
+
+b = zeros(size(A,1),1);
+
+tic();
+res = umfpack(A,'\',b);
+mprintf('\ntime needed to solve the system with umfpack: %.3f\n',toc());
+
+tic();
+res = linsolve(A,b);
+mprintf('\ntime needed to solve the system with linsolve: %.3f\n',toc());
+
+tic();
+res = A\b;
+mprintf('\ntime needed to solve the system with the backslash operator: %.3f\n',toc());
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="inv">inv</link>
+ </member>
+ <member>
+ <link linkend="pinv">pinv</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="im_inv">im_inv</link>
+ </member>
+ <member>
+ <link linkend="backslash">backslash</link>
+ </member>
+ <member>
+ <link linkend="umfpack">umfpack</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/linear/lsq.xml b/modules/linear_algebra/help/pt_BR/linear/lsq.xml
new file mode 100755
index 000000000..b3f9fc62f
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/linear/lsq.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="lsq" xml:lang="en">
+ <refnamediv>
+ <refname>lsq</refname>
+ <refpurpose>problemas de mínimos quadrados lineares</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>X=lsq(A,B [,tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz de reais ou de complexos (m x n) </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>B</term>
+ <listitem>
+ <para>matriz de reais ou de complexos (m x p)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>escalar positivo, usado para determinar o posto efetivo de A
+ (definido como sendo a ordem da maior submatriz triangular R11
+ regente na fatoração QR com pivoteamento de A, cujo número de
+ condicionamento estimado &lt;= 1/tol. O valor padrão de tol é
+ <literal>sqrt(%eps)</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>matriz de reais ou complexos (n x p)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>X=lsq(A,B)</literal> computa a solução de mínimo quadrado
+ de menor norma da equação <literal>A*X=B</literal>, enquanto <literal>X=A
+ \ B
+ </literal>
+ computa uma solução de mínimo quadrado com no máximo
+ <literal>posto(A)</literal> componentes não-nulos por coluna.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Referências</title>
+ <para>
+ <literal>lsq</literal> é baseado nas funções Lapack DGELSY para
+ matrizes de reais e ZGELSY para matrizes de complexos.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+//Construindo os dados
+x=(1:10)';
+
+y1=3*x+4.5+3*rand(x,'normal');
+y2=1.8*x+0.5+2*rand(x,'normal');
+plot2d(x,[y1,y2],[-2,-3])
+//Achando a regressão linear
+A=[x,ones(x)];B=[y1,y2];
+X=lsq(A,B);
+
+y1e=X(1,1)*x+X(2,1);
+y2e=X(1,2)*x+X(2,2);
+plot2d(x,[y1e,y2e],[2,3])
+
+//Diferença entre lsq(A,b) e A\b
+A=rand(4,2)*rand(2,3);//uma matriz de posto 2
+b=rand(4,1);
+X1=lsq(A,b)
+X2=A\b
+[A*X1-b, A*X2-b] //os resíduos são os mesmos
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="backslash">backslash</link>
+ </member>
+ <member>
+ <link linkend="inv">inv</link>
+ </member>
+ <member>
+ <link linkend="pinv">pinv</link>
+ </member>
+ <member>
+ <link linkend="rank">rank</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/linear/lu.xml b/modules/linear_algebra/help/pt_BR/linear/lu.xml
new file mode 100755
index 000000000..d2418e3f7
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/linear/lu.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="lu" xml:lang="en">
+ <refnamediv>
+ <refname>lu</refname>
+ <refpurpose>fatores LU de eliminação Gaussiana</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[L,U]= lu(A)
+ [L,U,E]= lu(A)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz de reais ou complexos (m x n) </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>L</term>
+ <listitem>
+ <para>matriz de reais ou complexos (m x min(m,n))</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>U</term>
+ <listitem>
+ <para>matriz de reais ou complexos (min(m,n) x n ) </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E</term>
+ <listitem>
+ <para>uma matriz de permutação (n x n)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>[L,U]= lu(A)</literal> produz duas matrizes
+ <literal>L</literal> e <literal>U</literal> tais que <literal>A =
+ L*U
+ </literal>
+ com <literal>U</literal> triangular superior e
+ <literal>E*L</literal> triangular infeiror para uma matriz de permutação
+ <literal>E</literal>.
+ </para>
+ <para>
+ Se <literal>A</literal> tem posto <literal>k</literal>, as linhas de
+ <literal>k+1</literal> a <literal>n</literal> de <literal>U</literal> são
+ zeros.
+ </para>
+ <para>
+ <literal>[L,U,E]= lu(A)</literal> produz três matrizes
+ <literal>L</literal>, <literal>U</literal> e <literal>E</literal> tais que
+ <literal>E*A = L*U</literal> com <literal>U</literal> triangular superior
+ e <literal>E*L</literal> l triangular inferior para uma matriz de
+ permutação <literal>E</literal>.
+ </para>
+ <para>
+ Se <literal>A</literal> é uma matriz de reais, usando as funções
+ <literal>lufact</literal> e <literal>luget</literal> é possível obter as
+ matrizes de permutação e, também, quando <literal>A</literal> não é de
+ posto cheio, a compressão de colunas da matriz
+ <literal>L</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+a=rand(4,4);
+[l,u]=lu(a)
+norm(l*u-a)
+
+[h,rk]=lufact(sparse(a)) // função lufact com matrizes esparsas
+[P,L,U,Q]=luget(h);
+ludel(h)
+P=full(P);L=full(L);U=full(U);Q=full(Q);
+norm(P*L*U*Q-a) // P e Q são as matrizes de permutação
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="lufact">lufact</link>
+ </member>
+ <member>
+ <link linkend="luget">luget</link>
+ </member>
+ <member>
+ <link linkend="lusolve">lusolve</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title> Função Usada</title>
+ <para>As decomposições de lu são baseadas nas rotinas de Lapack DGETRF
+ para matrizes reais e ZGETRF para o caso de matrizes complexas.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/linear/pinv.xml b/modules/linear_algebra/help/pt_BR/linear/pinv.xml
new file mode 100755
index 000000000..9d1a5f795
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/linear/pinv.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="pinv" xml:lang="en">
+ <refnamediv>
+ <refname>pinv</refname>
+ <refpurpose>pseudo-inversa</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>pinv(A,[tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz de reais ou complexos</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>número real</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>X= pinv(A)</literal> produz uma matriz
+ <literal>X</literal> de mesma dimensão que <literal>A'</literal> tal
+ que:
+ </para>
+ <para>
+ <literal>A*X*A = A, X*A*X = X</literal> e ambas
+ <literal>A*X</literal> e <literal>X*A</literal> são Hermitianas.
+ </para>
+ <para>A computação é baseada em SVD e qualquer valor singular abaixo da
+ tolerância é tratado como zero: esta tolerância é acessada por
+ <literal>X=pinv(A,tol)</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,2)*rand(2,4);
+norm(A*pinv(A)*A-A,1)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rank">rank</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Função Usada</title>
+ <para>
+ <literal>pinv</literal> é baseada na decomposição em valores
+ singulares (função do Scilab <literal>svd</literal>).
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/linear/qr.xml b/modules/linear_algebra/help/pt_BR/linear/qr.xml
new file mode 100755
index 000000000..bf20c82ce
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/linear/qr.xml
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="qr" xml:lang="en">
+ <refnamediv>
+ <refname>qr</refname>
+ <refpurpose>QR decomposição</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[Q,R]=qr(X [,"e"])
+ [Q,R,E]=qr(X [,"e"])
+ [Q,R,rk,E]=qr(X [,tol])
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros </title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>matriz de reais ou complexos</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>número real não-negativo</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q</term>
+ <listitem>
+ <para>matriz quadrada ortogonal ou unitária</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>R</term>
+ <listitem>
+ <para>
+ matriz com as mesmas dimensões de <literal>X</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E</term>
+ <listitem>
+ <para>matriz de permutação </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk</term>
+ <listitem>
+ <para>
+ inteiro (posto QR de <literal>X</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <variablelist>
+ <varlistentry>
+ <term>[Q,R] = qr(X)</term>
+ <listitem>
+ <para>
+ pproduz uma matriz triangular superior <literal>R</literal> de
+ mesma dimensão que <literal>X</literal> e uma matriz ortogonal
+ (unitária no caso de matriz de complexos) <literal>Q</literal> tais
+ que <literal>X = Q*R</literal>. <literal>[Q,R] = qr(X,"e")</literal>
+ produz um "economia de tamanho": Se <literal>X</literal> é m-por-n
+ com m &gt; n, então, apenas as primeiras n colunas de
+ <literal>Q</literal> são computadas assim como as primeiras n linhas
+ de <literal>R</literal>.
+ </para>
+ <para>
+ De <literal>Q*R = X</literal> , segue que a k-ésima coluna da
+ matriz <literal>X</literal>, é expressa como combinação linear das k
+ primeiras colunas de <literal>Q</literal> (com coeficientes
+ <literal> R(1,k), ..., R(k,k) </literal>). As k primeiras colunas de
+ <literal>Q</literal> formam uma base ortogonal para o subespaço
+ gerado pelas k priemiras colunas de <literal>X</literal>. Se a
+ coluna <literal>k</literal> de <literal>X</literal> (i.e.
+ <literal>X(:,k)</literal> ) é uma combinação linear das
+ <literal>p</literal> primeiras colunas de <literal>X</literal>,
+ então, as entradas de <literal>R(p+1,k), ..., R(k,k)</literal> são
+ zeros. Neste caso, <literal>R</literal> é trapezoidal superior. Se
+ <literal>X</literal> tem posto <literal>rk</literal>, as linhas
+ <literal>R(rk+1,:), R(rk+2,:), ...</literal> são zeros.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[Q,R,E] = qr(X)</term>
+ <listitem>
+ <para>produz uma matriz de permutação (de colunas)
+ <literal>E</literal>, uma matriz triangular superior
+ <literal>R</literal> com elementos na diagonal decrescentes e uma
+ matriz ortogonal (ou unitaria) <literal>Q</literal> tais que
+ <literal>X*E = Q*R</literal>. Se <literal>rk</literal> é o posto de
+ <literal>X</literal>, as <literal>rk</literal> primeiras entradas ao
+ longo da diagonal de <literal>R</literal>, i.e. <literal>R(1,1),
+ R(2,2), ..., R(rk,rk)
+ </literal>
+ são todas diferentes de zero.
+ <literal>[Q,R,E] = qr(X,"e")</literal> produz uma "economia de
+ tamanho": Se <literal>X</literal> ié m-por-n com m &gt; n, então,
+ apenas as n primeiras colunas de <literal>Q</literal> são computadas
+ tanto quanto as n priemiras linhas de <literal>R</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[Q,R,rk,E] = qr(X ,tol)</term>
+ <listitem>
+ <para>
+ retorna <literal>rk</literal> = estimativa do posto de
+ <literal>X</literal> i.e. <literal>rk</literal> é o número elementos
+ da diagonal de <literal>R</literal> que são maiores que um dado
+ limiar <literal>tol</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[Q,R,rk,E] = qr(X)</term>
+ <listitem>
+ <para>
+ retorna <literal>rk</literal> = estimativa do posto de
+ <literal>X</literal> i.e. <literal>rk</literal> é o número de
+ elementos da diagonal de <literal>R</literal> que são maiores que
+ <literal>tol=R(1,1)*%eps*max(size(R))</literal>. Veja
+ <literal>rankqr</literal> para uma fatoração QR que revela o posto
+ usando o número de condicionamento de <literal>R</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+// fatoração QR, caso genérico
+// X é alta (posto cheio)
+X=rand(5,2);[Q,R]=qr(X); [Q'*X R]
+
+//X é gorda (posto cheio)
+X=rand(2,3);[Q,R]=qr(X); [Q'*X R]
+
+//coluna 4 de X é uma combinação linear das colunas 1 e 2:
+X=rand(8,5);X(:,4)=X(:,1)+X(:,2); [Q,R]=qr(X); R, R(:,4)
+
+//X tem posto 2, linhas 3 a $ de R são zero:
+X=rand(8,2)*rand(2,5);[Q,R]=qr(X); R
+
+//Avaliando o posto rk: pivotação por colunas ==&gt; rk primeiras
+//As entradas diagonais de R são não-nulas:
+A=rand(5,2)*rand(2,5);
+[Q,R,rk,E] = qr(A,1.d-10);
+norm(Q'*A-R)
+svd([A,Q(:,1:rk)]) //span(A) =span(Q(:,1:rk)) (span="gerado")
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rankqr">rankqr</link>
+ </member>
+ <member>
+ <link linkend="rank">rank</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title> Funções Usadas</title>
+ <para>A decomposição qr é baseada nas rotinas de Lapack DGEQRF, DGEQPF,
+ DORGQR para as matrizes de reais ZGEQRF, ZGEQPF, ZORGQR para as matrizes
+ de complexos.
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/linear/rankqr.xml b/modules/linear_algebra/help/pt_BR/linear/rankqr.xml
new file mode 100755
index 000000000..a09aa75b1
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/linear/rankqr.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="rankqr" xml:lang="en">
+ <refnamediv>
+ <refname>rankqr</refname>
+ <refpurpose>fatoração QR com revelação do posto</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[Q,R,JPVT,RANK,SVAL]=rankqr(A, [RCOND,JPVT])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz de reais ou complexos</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>RCOND</term>
+ <listitem>
+ <para> número real usado para determinar o posto efetivo de
+ <literal>A</literal>, que é definido como sendo a ordem da maior
+ submatriz regente triangular <literal>R11</literal> na fatoração QR
+ com pivoteamento de <literal>A</literal>, cujo número de
+ condicionamento estimado é &lt; <literal>1/RCOND</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>JPVT</term>
+ <listitem>
+ <para>
+ vetor de inteiros nas entradas, se <literal>JPVT(i)</literal>
+ não é 0, a <literal>i</literal>-ésimo coluna de <literal>
+ A
+ </literal>
+ épermtutada para a frente de <literal>AP</literal>,
+ senão, a coluna <literal>i</literal> é uma coluna livre. Na saída,
+ se <literal>JPVT(i) = k</literal>, então a
+ <literal>i</literal>-ésima coluna de <literal>A*P</literal> era a
+ <literal>k</literal>-ésima coluna de <literal>A</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>RANK</term>
+ <listitem>
+ <para>
+ posto efetivo de <literal>A</literal>, i.e., a ordem da
+ submatriz <literal>R11</literal>. É o mesmo que a ordem da submatriz
+ <literal>T1</literal> na fatoração ortogonal completa de
+ <literal>A</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SVAL</term>
+ <listitem>
+ <para>vetor de reais com 3 componentes; as estimativas de alguns dos
+ valores singulares do fator triangular <literal>R</literal>.
+ </para>
+ <para>
+ <literal>SVAL(1)</literal> é o maior valor singular de
+ <literal>R(1:RANK,1:RANK)</literal>;
+ </para>
+ <para>
+ <literal>SVAL(2)</literal> é o menor valor singular de
+ <literal>R(1:RANK,1:RANK)</literal>;
+ </para>
+ <para>
+ <literal>SVAL(3) </literal>é o menor valor singular de
+ <literal>R(1:RANK+1,1:RANK+1)</literal>, se <literal>RANK</literal>
+ &lt; <literal>MIN(M,N)</literal>, ou de
+ <literal>R(1:RANK,1:RANK)</literal>, caso contrário.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>Computa (opcionalmente) uma fatoração QR com revelação do posto de
+ uma matriz de reais geral M-por-N, ou de complexos <literal>A</literal>,
+ que pode ser deficiente de posto, e estima seu posto efetivo usando
+ estimativa de condição incremental.
+ </para>
+ <para>A rotina usa uma fatoração QR com pivoteamento de colunas:</para>
+ <programlisting role=""><![CDATA[
+A * P = Q * R, onde R = [ R11 R12 ],
+ [ 0 R22 ]
+ ]]></programlisting>
+ <para>
+ com <literal>R11</literal> definida como a maior submatriz regente
+ cujo número de condição estimado é menor que <literal>1/RCOND</literal>. A
+ ordem de <literal>R11</literal>, <literal>RANK</literal>, é o posto
+ efetivo de<literal>A</literal>.
+ </para>
+ <para>Se a fatoração triangular revela o posto (que será o caso se as
+ colunas regentes forem bem condicionadas), então
+ <literal>SVAL(1)</literal> também será uma estimativa para o maior valor
+ singular de <literal>A</literal>, e <literal>SVAL(2)</literal> e
+ <literal>SVAL(3)</literal> serão estimativas para o
+ <literal>RANK</literal>-ésimo e <literal>(RANK+1)</literal>-ésimo valores
+ singulares de <literal>A</literal>, respectivamente.
+ </para>
+ <para>Examinando-se estes valores, pode-se confirmar que o posto é bem
+ definido a respeito do valor escolhido de <literal>RCOND</literal>. A
+ razão <literal>SVAL(1)/SVAL(2)</literal> é uma estimativa do número de
+ condicionamento de <literal>R(1:RANK,1:RANK)</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,3)*rand(3,7);
+[Q,R,JPVT,RANK,SVAL]=rankqr(A,%eps)
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="rank">rank</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title> Funções Usadas</title>
+ <para>Rotinas da biblioteca Slicot MB03OD, ZB03OD.</para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/markov/CHAPTER b/modules/linear_algebra/help/pt_BR/markov/CHAPTER
new file mode 100755
index 000000000..c29eb913c
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/markov/CHAPTER
@@ -0,0 +1,2 @@
+title = Markov Matrices
+
diff --git a/modules/linear_algebra/help/pt_BR/markov/classmarkov.xml b/modules/linear_algebra/help/pt_BR/markov/classmarkov.xml
new file mode 100755
index 000000000..affa1f588
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/markov/classmarkov.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="classmarkov" xml:lang="en">
+ <refnamediv>
+ <refname>classmarkov</refname>
+ <refpurpose>classes transientes e recorrentes da matriz de
+ Markov
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento</title>
+ <synopsis>[perm,rec,tr,indsRec,indsT]=classmarkov(M)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>M</term>
+ <listitem>
+ <para>matriz de Markov N x N de reais. A soma das entradas em cada
+ linha deve ser acrescida em uma unidade
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>perm</term>
+ <listitem>
+ <para>vetor de permutação de inteiros</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rec, tr</term>
+ <listitem>
+ <para>vetor de inteiros, número (número de estados em cada classe
+ recorrente, número de estados transientes)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>indsRec,indsT</term>
+ <listitem>
+ <para>vetor de inteiros (índices dos estados recorrentes e
+ transientes)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Retorna um vetor de permutação <literal>perm</literal> tal
+ que
+ </para>
+ <programlisting role=""><![CDATA[
+M(perm,perm) = [M11 0 0 0 0 0]
+ [0 M22 0 0 0]
+ [0 0 M33 0]
+ [ ... ]
+ [0 0 Mrr 0]
+ [* * * Q]
+ ]]></programlisting>
+ <para>
+ Cada <literal>Mii</literal> é uma matriz de Markov de dimensão
+ <literal>rec(i) i=1,..,r</literal>. <literal>Q</literal> é uma submatriz
+ de Markov de dimensão <literal>tr</literal>. Estados de 1 a sum(rec) são
+ recorrentes e estados de r+1 a n são transientes. Tem-se
+ <literal>perm=[indsRec,indsT]</literal> onde indsRec é um vetor de tamanho
+ sum(rec) e indsT é um vetor de tamanho tr.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+//P tem 2 classes recorrentes (com 2 e 1 estados) e 2 estados transientes
+P=genmarkov([2,1],2,'perm')
+[perm,rec,tr,indsRec,indsT]=classmarkov(P);
+P(perm,perm)
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="genmarkov">genmarkov</link>
+ </member>
+ <member>
+ <link linkend="eigenmarkov">eigenmarkov</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/markov/eigenmarkov.xml b/modules/linear_algebra/help/pt_BR/markov/eigenmarkov.xml
new file mode 100755
index 000000000..8926b8738
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/markov/eigenmarkov.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns3="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="eigenmarkov" xml:lang="en">
+ <refnamediv>
+ <refname>eigenmarkov</refname>
+ <refpurpose>Autovetores esquerdo e direito normalizados de
+ Markov
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento</title>
+ <synopsis>[M,Q]=eigenmarkov(P)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>P</term>
+ <listitem>
+ <para>matriz de Markov N x N de reais. A soma das entradas de cada
+ linha deve ser acrescida de uma unidade
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>M</term>
+ <listitem>
+ <para>matriz de reais de N colunas</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q</term>
+ <listitem>
+ <para>matriz de reais de N linhas </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>Retorna os autovetores esquerdo e direito normalizados associados ao
+ autovalor 1 da matriz P de transição de Markov. Se a multiplicidade deste
+ autovalor é m e P é N x N, M é uma matriz m x N e Q é uma matriz N x m.
+ M(k,:) é o vetor de distribuição de probabilidade associado ao k-ésimo
+ conjunto ergódico (classe recorrente). M(k,x) é zero se x não está na
+ k-ésima classe recorrente. Q(x,k) é a probabilidade de se terminar na
+ k-ésima classe recorrente começando de x. Se <literal>P^k</literal>
+ converge para <literal>k</literal> (sem autovalores no círculo unitário,
+ exceto 1), então o limite é <literal>Q*M</literal> (auto-projeção).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+//P tem duas classes recorrentes (com 2 e 1 estados) e 2 estados transientes
+P=genmarkov([2,1],2)
+[M,Q]=eigenmarkov(P);
+P*Q-Q
+Q*M-P^20
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="genmarkov">genmarkov</link>
+ </member>
+ <member>
+ <link linkend="classmarkov">classmarkov</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/markov/genmarkov.xml b/modules/linear_algebra/help/pt_BR/markov/genmarkov.xml
new file mode 100755
index 000000000..a8da3164d
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/markov/genmarkov.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="genmarkov" xml:lang="en">
+ <refnamediv>
+ <refname>genmarkov</refname>
+ <refpurpose>gera uma matriz de Markov aleatória com classes recorrentes e
+ transientes
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>M=genmarkov(rec,tr)
+ M=genmarkov(rec,tr,flag)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>rec</term>
+ <listitem>
+ <para>vetor linha de inteiros (sua dimensão é o número de classes
+ recorrentes)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tr</term>
+ <listitem>
+ <para>inteiro (número de estados transientes)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>M</term>
+ <listitem>
+ <para>matriz de Markov de reais. A soma das entradas de cada linha
+ deve ser acrecsida de uma unidade
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ string <literal>'perm'</literal>. Se fornecido, uma permutação
+ dos estados é feita.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title> Descrição </title>
+ <para>Retorna em M uma matriz de probabilidade de transição de Markov
+ aleatória com <literal>rec(1),...rec($)</literal> entradas respectivamente
+ e tr estados transientes.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+//P tem duas classes recorrentes (com 2 e 1 states) e 2 estados transientes
+P=genmarkov([2,1],2,'perm')
+[perm,rec,tr,indsRec,indsT]=classmarkov(P);
+P(perm,perm)
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="classmarkov">classmarkov</link>
+ </member>
+ <member>
+ <link linkend="eigenmarkov">eigenmarkov</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/matrix/CHAPTER b/modules/linear_algebra/help/pt_BR/matrix/CHAPTER
new file mode 100755
index 000000000..bb89125cd
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/matrix/CHAPTER
@@ -0,0 +1,2 @@
+title = Matrix Analysis
+
diff --git a/modules/linear_algebra/help/pt_BR/matrix/cond.xml b/modules/linear_algebra/help/pt_BR/matrix/cond.xml
new file mode 100755
index 000000000..78d153da3
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/matrix/cond.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="cond" xml:lang="en">
+ <refnamediv>
+ <refname>cond</refname>
+ <refpurpose>número de condicionamento de uma matriz</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>cond(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>rmatriz quadrada de reais ou complexos </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Número de condicionamento em norma-2. <literal>cond(X)</literal> é a
+ razão entre o maior e o menor valor singular de
+ <literal>X</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=testmatrix('hilb',6);
+cond(A)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rcond">rcond</link>
+ </member>
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/matrix/det.xml b/modules/linear_algebra/help/pt_BR/matrix/det.xml
new file mode 100755
index 000000000..d294693e7
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/matrix/det.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns3="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="det" xml:lang="en">
+ <refnamediv>
+ <refname>det</refname>
+ <refpurpose>determinante</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>det(X)
+ [e,m]=det(X)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>matriz quadrada de reais ou complexos, matriz de polinômios ou
+ de razões de polinômios
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>m</term>
+ <listitem>
+ <para>número real ou complexo, a mantissa de base 10 do
+ determinante
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>e</term>
+ <listitem>
+ <para>inteiro, o expoente de base 10 do determinante</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>det(X)</literal> ( <literal>m*10^e</literal> é o
+ determinante da matriz quadrada <literal>X)</literal>.
+ </para>
+ <para>
+ Para uma matriz de polinômios, <literal>det(X)</literal> é
+ equivalente a <literal>determ(X)</literal>.
+ </para>
+ <para>
+ Para matrizes de razões de polinômios <literal>det(X)</literal> é
+ equivalente a <literal>detr(X)</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Referências</title>
+ <para>As computações da função det são baseadas nas rotinas do LAPACK
+ DGETRF para matrizes de reais e ZGETRF para o caso de matrizes de
+ complexos.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+x=poly(0,'x');
+det([x,1+x;2-x,x^2])
+w=ssrand(2,2,4);roots(det(systmat(w))),trzeros(w) //zeros do sistema linear
+A=rand(3,3);
+det(A), prod(spec(A))
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="detr">detr</link>
+ </member>
+ <member>
+ <link linkend="determ">determ</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/matrix/orth.xml b/modules/linear_algebra/help/pt_BR/matrix/orth.xml
new file mode 100755
index 000000000..d352ff212
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/matrix/orth.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="orth" xml:lang="en">
+ <refnamediv>
+ <refname>orth</refname>
+ <refpurpose>base ortogonal</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>Q=orth(A)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz de reais ou complexos</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q</term>
+ <listitem>
+ <para>matriz de reais ou complexos</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>Q=orth(A)</literal> retorna <literal>Q</literal>, uma base
+ ortogonal para o gerado de <literal>A</literal>. Im(<literal>Q</literal>)
+ = Im(<literal>A</literal>) e <literal>Q'*Q=eye</literal>.
+ </para>
+ <para>
+ O número de colunas de <literal>Q</literal> é o posto de
+ <literal>A</literal> como determinado pelo algoritmo QR.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,3)*rand(3,4);
+[X,dim]=rowcomp(A);X=X';
+svd([orth(A),X(:,1:dim)])
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="range">range</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/matrix/rank.xml b/modules/linear_algebra/help/pt_BR/matrix/rank.xml
new file mode 100755
index 000000000..3cff123f5
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/matrix/rank.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="rank" xml:lang="en">
+ <refnamediv>
+ <refname>rank</refname>
+ <refpurpose>posto</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[i]=rank(X)
+ [i]=rank(X,tol)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>matriz de reais ou complexos </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>número real não-negativo</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>rank(X)</literal> é o posto numérico de
+ <literal>X</literal> i.e. o número de valores singulares de X que são
+ maiores que <literal>norm(size(X),'inf') * norm(X) *
+ %eps
+ </literal>
+ .
+ </para>
+ <para>
+ <literal>rank(X,tol)</literal> é o número de valores singulares de
+ <literal>X</literal> que são maiores que <literal>tol</literal>.
+ </para>
+ <para>
+ Note que o valor padrão de <literal>tol</literal> é proporcional a
+ <literal>norm(X)</literal>. Como conseqüência,
+ <literal>rank([1.d-80,0;0,1.d-80])</literal> é 2 !.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+rank([1.d-80,0;0,1.d-80])
+rank([1,0;0,1.d-80])
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ <member>
+ <link linkend="rowcomp">rowcomp</link>
+ </member>
+ <member>
+ <link linkend="colcomp">colcomp</link>
+ </member>
+ <member>
+ <link linkend="lu">lu</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/matrix/rcond.xml b/modules/linear_algebra/help/pt_BR/matrix/rcond.xml
new file mode 100755
index 000000000..0fe708628
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/matrix/rcond.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="rcond" xml:lang="en">
+ <refnamediv>
+ <refname>rcond</refname>
+ <refpurpose>número de condicionamento inverso</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>rcond(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>matriz quadrada de reais ou complexos</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>rcond(X)</literal> é uma estimativa para a recíproca da
+ condição de <literal>X</literal> na norma-1.
+ </para>
+ <para>
+ Se <literal>X</literal> é bem condicionada,
+ <literal>rcond(X)</literal> é próximo a 1. Senão,
+ <literal>rcond(X)</literal> é próximo a 0.
+ </para>
+ <para>
+ <literal>[r,z]=rcond(X)</literal> ajusta <literal>r</literal> a
+ <literal>rcond(X)</literal> e retorna <literal>z</literal> tal que
+ <literal>norm(X*z,1) = r*norm(X,1)*norm(z,1)</literal>
+ </para>
+ <para>
+ Portanto, se <literal>rcond</literal> é pequeno,
+ <literal>z</literal> é um vetor do núcleo.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=diag([1:10]);
+rcond(A)
+A(1,1)=0.000001;
+rcond(A)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="svd">svd</link>
+ </member>
+ <member>
+ <link linkend="cond">cond</link>
+ </member>
+ <member>
+ <link linkend="inv">inv</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/matrix/rref.xml b/modules/linear_algebra/help/pt_BR/matrix/rref.xml
new file mode 100755
index 000000000..c785ce98e
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/matrix/rref.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="rref" xml:lang="en">
+ <refnamediv>
+ <refname>rref</refname>
+ <refpurpose>computa a matriz-linha reduzida a forma escada por
+ transformações de LU
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>R=rref(A)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz m x n com entradas escalares </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>R</term>
+ <listitem>
+ <para>matriz m x n, forma escada de A</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>rref</literal> computa a forma escada de linhas reduzidas
+ da matriz dada pela decomposição esquerda LU. Se for necessária a
+ transformação usada, basta chamar <literal>X=rref([A,eye(m,m)])</literal>
+ A forma escada de linhas reduzidas <literal>R</literal> é
+ <literal>X(:,1:n)</literal> e a transformação esquerda
+ <literal>L</literal> ié dada por <literal>X(:,n+1:n+m)</literal> tal como
+ <literal>L*A=R</literal>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=[1 2;3 4;5 6];
+X=rref([A,eye(3,3)]);
+R=X(:,1:2)
+L=X(:,3:5);L*A
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="lu">lu</link>
+ </member>
+ <member>
+ <link linkend="qr">qr</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/matrix/trace.xml b/modules/linear_algebra/help/pt_BR/matrix/trace.xml
new file mode 100755
index 000000000..4e168bcc2
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/matrix/trace.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="trace" xml:lang="en">
+ <refnamediv>
+ <refname>trace</refname>
+ <refpurpose>traço de uma matriz</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>trace(X)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>matriz de reais ou complexos, matriz de polinômios ou de
+ razões de polinômios.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>trace(X)</literal> é o traço da matriz
+ <literal>X</literal>.
+ </para>
+ <para>
+ É o mesmo que <literal>sum(diag(X))</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);
+trace(A)-sum(spec(A))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="det">det</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/pencil/CHAPTER b/modules/linear_algebra/help/pt_BR/pencil/CHAPTER
new file mode 100755
index 000000000..86d1da116
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/pencil/CHAPTER
@@ -0,0 +1,2 @@
+title = Matrix Pencil
+
diff --git a/modules/linear_algebra/help/pt_BR/pencil/companion.xml b/modules/linear_algebra/help/pt_BR/pencil/companion.xml
new file mode 100755
index 000000000..1778f00ce
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/pencil/companion.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="companion" xml:lang="en">
+ <refnamediv>
+ <refname>companion</refname>
+ <refpurpose>matriz companheira</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>A=companion(p)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>p</term>
+ <listitem>
+ <para>polinômio ou vetor de polinômios </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz quadrada</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Retorna uma matriz quadrada <literal>A</literal> com o polinômio
+ característico igual a <literal>p</literal> se <literal>p</literal> é
+ mônico. Se <literal>p</literal> não é mônico, o polinômio característico
+ de <literal>A</literal> é igual a <literal>p/c</literal> onde
+ <literal>c</literal> é o coeficiente do termo de maior grau em
+ <literal>p</literal>.
+ </para>
+ <para>
+ Se <literal>p</literal> é um vetor de polinômios mônicos,
+ <literal>A</literal> é diagonal em blocos, e o polinômio característico do
+ i-ésimo bloco é <literal>p(i)</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+s=poly(0,'s');
+p=poly([1,2,3,4,1],'s','c')
+det(s*eye()-companion(p))
+roots(p)
+spec(companion(p))
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ <member>
+ <link linkend="poly">poly</link>
+ </member>
+ <member>
+ <link linkend="randpencil">randpencil</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/pencil/ereduc.xml b/modules/linear_algebra/help/pt_BR/pencil/ereduc.xml
new file mode 100755
index 000000000..92a68a905
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/pencil/ereduc.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="ereduc" xml:lang="en">
+ <refnamediv>
+ <refname>ereduc</refname>
+ <refpurpose>computa de forma escada de colunas da matriz por
+ transformações qz
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[E,Q,Z [,stair [,rk]]]=ereduc(X,tol)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>matriz m x n de entradas reais </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>escalar real positivo </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E</term>
+ <listitem>
+ <para>matriz em forma escada de colunas </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q</term>
+ <listitem>
+ <para>matriz unitária m x m </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Z</term>
+ <listitem>
+ <para>matriz unitária n x n </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>stair</term>
+ <listitem>
+ <para>vetor de índices,</para>
+ <variablelist>
+ <varlistentry>
+ <term>*</term>
+ <listitem>
+ <para>
+ <literal>ISTAIR(i) = + j</literal> se o elemento da
+ borda <literal>E(i,j)</literal> é uma quina.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>*</term>
+ <listitem>
+ <para>
+ <literal>ISTAIR(i) = - j</literal> se o elemento da
+ borda <literal>E(i,j)</literal> não é uma quina.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ <literal>(i=1,...,M)</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk</term>
+ <listitem>
+ <para>inteiro, posto estimado da matriz</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Dada uma matriz X <literal>mx n</literal> (não necessariamente
+ regular), a função ereduc calcula a matriz unitária transformada
+ <literal>E=Q*X*Z</literal> que está na forma escada de colunas (forma
+ trapezoidal). Ainda, o posto da matriz <literal>X</literal> é
+ determinado.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+X=[1 2 3;4 5 6]
+[E,Q,Z ,stair ,rk]=ereduc(X,1.d-15)
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fstair">fstair</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Autores</title>
+ <para>Th.G.J. Beelen (Philips Glass Eindhoven). SLICOT</para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/pencil/fstair.xml b/modules/linear_algebra/help/pt_BR/pencil/fstair.xml
new file mode 100755
index 000000000..e78b6eae9
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/pencil/fstair.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="fstair" xml:lang="en">
+ <refnamediv>
+ <refname>fstair</refname>
+ <refpurpose>computa a forma escada de feixe de colunas por transformações
+ qz
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[AE,EE,QE,ZE,blcks,muk,nuk,muk0,nuk0,mnei]=fstair(A,E,Q,Z,stair,rk,tol)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz m x n com entradas reais </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>escalar real positivo</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E</term>
+ <listitem>
+ <para>matriz de forma escada de colunas </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q</term>
+ <listitem>
+ <para>matriz unitária m x m </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Z</term>
+ <listitem>
+ <para>matriz unitária n x n </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>stair</term>
+ <listitem>
+ <para>vetor de índices (ver ereduc)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rk</term>
+ <listitem>
+ <para> inteiro, posto estimado da matriz </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>AE</term>
+ <listitem>
+ <para>matriz m x n com entradas reais</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>EE</term>
+ <listitem>
+ <para>matriz de forma escada de colunas</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>QE</term>
+ <listitem>
+ <para>matriz unitária m x m </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>ZE</term>
+ <listitem>
+ <para>matriz unitária n x n </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nblcks</term>
+ <listitem>
+ <para>é o número de submatrizes com posto linha completo &gt;= 0
+ detectado na matriz <literal>A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>muk:</term>
+ <listitem>
+ <para> array (vetor ou matriz) de inteiros de dimensão (n). Contém
+ as dimensões de coluna mu(k) (k=1,...,nblcks) das submatrizes com
+ posto coluna cheio no feixe sE(eps)-A(eps)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nuk:</term>
+ <listitem>
+ <para>array de inteiros de dimensão (m+1). Contém as dimensões de
+ linha nu(k) (k=1,...,nblcks) das submatrizes com posto linha cheio
+ no feixe sE(eps)-A(eps)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>muk0:</term>
+ <listitem>
+ <para>array de inteiros de dimensão (n). Contém as dimensões de
+ coluna mu(k) (k=1,...,nblcks) das submatrizes com o posto-coluna
+ cheio no feixe sE(eps,inf)-A(eps,inf)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nuk:</term>
+ <listitem>
+ <para> array de inteiros de dimensão (m+1). Contém as dimensões de
+ linha nu(k) (k=1,...,nblcks) das submatrizes com posto-linha cheio
+ no feixe sE(eps,inf)-A(eps,inf)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>mnei:</term>
+ <listitem>
+ <para> array de inteiros dimensão (4). mnei(1) = dimensão de linha
+ de sE(eps)-A(eps)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Dado o feixe <literal>sE-A</literal> onde a matriz
+ <literal>E</literal> está na forma escada de colunas, a função
+ <literal>fstair</literal> computa, de acordo com as necessidades do
+ usuário, um feixe unitário transformado <literal>QE(sEE-AE)ZE</literal>
+ que é mais ou menos similar à forma generalizada de Schur do feixe
+ <literal>sE-A</literal>. A função também produz parte da estrutura de
+ Kronecker para um dado feixe.
+ </para>
+ <para>
+ <literal>Q,Z</literal> são as matrizes unitárias usadas para
+ computar o feixe onde E está na forma escada de colunas (ver
+ ereduc)
+ </para>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="quaskro">quaskro</link>
+ </member>
+ <member>
+ <link linkend="ereduc">ereduc</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/pencil/glever.xml b/modules/linear_algebra/help/pt_BR/pencil/glever.xml
new file mode 100755
index 000000000..1a4b7f839
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/pencil/glever.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="glever" xml:lang="en">
+ <refnamediv>
+ <refname>glever</refname>
+ <refpurpose>inverso do feixe de matrizes</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[Bfs,Bis,chis]=glever(E,A [,s])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>E, A</term>
+ <listitem>
+ <para>duas matrizes de reais quadradas de igual dimensão</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>s</term>
+ <listitem>
+ <para>
+ string (o valor padrão é '<literal>s</literal>')
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Bfs,Bis</term>
+ <listitem>
+ <para>duas matrizes de polinômios </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>chis</term>
+ <listitem>
+ <para>polinômio</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>Computação de</para>
+ <para>
+ <literal>(s*E-A)^-1</literal>
+ </para>
+ <para>pelo algoritmo generalizado de Leverrier para um feixe de
+ matrizes.
+ </para>
+ <programlisting role=""><![CDATA[
+(s*E-A)^-1 = (Bfs/chis) - Bis.
+ ]]></programlisting>
+ <para>
+ <literal>chis</literal> = polinômio característico (até uma
+ constante multiplicativa).
+ </para>
+ <para>
+ <literal>Bfs</literal> = nmatriz de polinômios como
+ numerador.
+ </para>
+ <para>
+ <literal>Bis</literal> = matriz de polinômios ( - expansão de
+ <literal>(s*E-A)^-1</literal> ao infinito).
+ </para>
+ <para>
+ Note o sinal - antes de <literal>Bis</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Cuidado </title>
+ <para>
+ Esta função usa <literal>cleanp</literal> para simplificar
+ <literal>Bfs,Bis</literal> e <literal>chis</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+s=%s;F=[-1,s,0,0;0,-1,0,0;0,0,s-2,0;0,0,0,s-1];
+[Bfs,Bis,chis]=glever(F)
+inv(F)-((Bfs/chis) - Bis)
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="rowshuff">rowshuff</link>
+ </member>
+ <member>
+ <link linkend="det">det</link>
+ </member>
+ <member>
+ <link linkend="invr">invr</link>
+ </member>
+ <member>
+ <link linkend="coffg">coffg</link>
+ </member>
+ <member>
+ <link linkend="pencan">pencan</link>
+ </member>
+ <member>
+ <link linkend="penlaur">penlaur</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/pencil/kroneck.xml b/modules/linear_algebra/help/pt_BR/pencil/kroneck.xml
new file mode 100755
index 000000000..2ca6a403d
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/pencil/kroneck.xml
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="kroneck" xml:lang="en">
+ <refnamediv>
+ <refname>kroneck</refname>
+ <refpurpose>forma de Kronecker de feixe de matrizes</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(F)
+ [Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(E,A)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>F</term>
+ <listitem>
+ <para>
+ feixe de matrizes de reais <literal>F=s*E-A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E,A</term>
+ <listitem>
+ <para>duas matrizes de reais de mesma dimensão</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q,Z</term>
+ <listitem>
+ <para>duas matrizes quadradas ortogonais </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Qd,Zd</term>
+ <listitem>
+ <para>dois vetores de inteiros </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>numbeps,numeta</term>
+ <listitem>
+ <para>dois vetores de inteiros</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Forma de Kronecker de feixe de matrizes: <literal>kroneck</literal>
+ computa duas matrizes ortogonais <literal>Q, Z</literal> que põem o feixe
+ <literal>F=s*E -A</literal> na forma triangular superior:
+ </para>
+ <programlisting role=""><![CDATA[
+ | sE(eps)-A(eps) | X | X | X |
+ |----------------|----------------|------------|---------------|
+ | O | sE(inf)-A(inf) | X | X |
+Q(sE-A)Z = |---------------------------------|----------------------------|
+ | | | | |
+ | 0 | 0 | sE(f)-A(f) | X |
+ |--------------------------------------------------------------|
+ | | | | |
+ | 0 | 0 | 0 | sE(eta)-A(eta)|
+ ]]></programlisting>
+ <para>As dimensões dos quatro blocos são dadas por:</para>
+ <para>
+ <literal>eps=Qd(1) x Zd(1)</literal>, <literal>inf=Qd(2) x
+ Zd(2)
+ </literal>
+ ,<literal>f = Qd(3) x Zd(3)</literal>,
+ <literal>eta=Qd(4)xZd(4)</literal>
+ </para>
+ <para>
+ O bloco <literal>inf</literal> contém modos infinitos de
+ feixes.
+ </para>
+ <para>
+ O bloco <literal>f</literal> contém modos finitos de feixes.
+ </para>
+ <para>A estrutura dos blocos epsilon e eta é dada por </para>
+ <para>
+ <literal>numbeps(1)</literal> = <literal>#</literal> de blocos eps
+ de tamanho 0 x 1
+ </para>
+ <para>
+ <literal>numbeps(2)</literal> = <literal>#</literal> de blocos eps
+ de tamanho 1 x 2
+ </para>
+ <para>
+ <literal>numbeps(3)</literal> = <literal>#</literal> de blocos eps
+ de tamanho 2 x 3 etc...
+ </para>
+ <para>
+ <literal>numbeta(1)</literal> = <literal>#</literal> de blocos eta
+ de tamanho 1 x 0
+ </para>
+ <para>
+ <literal>numbeta(2)</literal> = <literal>#</literal> de blocos eta
+ de tamanho 2 x 1
+ </para>
+ <para>
+ <literal>numbeta(3)</literal> = <literal>#</literal> de blocos eta
+ de tamanho 3 x 2 etc...
+ </para>
+ <para>O código foi retirado de T. Beelen (Slicot-WGS group).</para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+F=randpencil([1,1,2],[2,3],[-1,3,1],[0,3]);
+Q=rand(17,17);Z=rand(18,18);F=Q*F*Z;
+//feixe aleatório com eps1=1,eps2=1,eps3=1; 2 blocos J @ infty (infinito)
+//com dimensões 2 e
+//3 autovalores finitos em -1,3,1 e eta1=0,eta2=3
+[Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(F);
+[Qd(1),Zd(1)] //parte eps. é sum(epsi) x (sum(epsi) + número de epsi) (sum="soma")
+[Qd(2),Zd(2)] //parte infinita
+[Qd(3),Zd(3)] //parte finita
+[Qd(4),Zd(4)] //parte eta é (sum(etai) + number(eta1)) x sum(etai) (number=número)
+numbeps
+numbeta
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="gschur">gschur</link>
+ </member>
+ <member>
+ <link linkend="gspec">gspec</link>
+ </member>
+ <member>
+ <link linkend="systmat">systmat</link>
+ </member>
+ <member>
+ <link linkend="pencan">pencan</link>
+ </member>
+ <member>
+ <link linkend="randpencil">randpencil</link>
+ </member>
+ <member>
+ <link linkend="trzeros">trzeros</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/pencil/lyap.xml b/modules/linear_algebra/help/pt_BR/pencil/lyap.xml
new file mode 100755
index 000000000..2d51a056c
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/pencil/lyap.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="lyap" xml:lang="en">
+ <refnamediv>
+ <refname>lyap</refname>
+ <refpurpose>equação de Lyapunov</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>[X]=lyap(A,C,'c')
+ [X]=lyap(A,C,'d')
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A, C</term>
+ <listitem>
+ <para>
+ matrizes quadradas de reais, <literal>C</literal> deve ser
+ simétrica
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>X= lyap(A,C,flag)</literal> resolve as equações matriciais
+ de tempo contínuo ou de tempo discreto de Lyapunov:
+ </para>
+ <programlisting role=""><![CDATA[
+A'*X + X*A = C ( flag='c' )
+A'*X*A - X = C ( flag='d' )
+ ]]></programlisting>
+ <para>Perceba que existe uma única solução se e só se um autovalor de
+ <literal>A</literal> não é um autovalor de <literal>-A</literal>
+ (<literal>flag='c'</literal>) ou 1 sobre um autovalor de
+ <literal>A</literal> (<literal>flag='d'</literal>).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(4,4);C=rand(A);C=C+C';
+X=lyap(A,C,'c');
+A'*X + X*A -C
+X=lyap(A,C,'d');
+A'*X*A - X -C
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="sylv">sylv</link>
+ </member>
+ <member>
+ <link linkend="ctr_gram">ctr_gram</link>
+ </member>
+ <member>
+ <link linkend="obs_gram">obs_gram</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/pencil/pencan.xml b/modules/linear_algebra/help/pt_BR/pencil/pencan.xml
new file mode 100755
index 000000000..fba81a530
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/pencil/pencan.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns3="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="pencan" xml:lang="en">
+ <refnamediv>
+ <refname>pencan</refname>
+ <refpurpose>forma canônica de feixe de matrizes</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento</title>
+ <synopsis>[Q,M,i1]=pencan(Fs)
+ [Q,M,i1]=pencan(E,A)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>Fs</term>
+ <listitem>
+ <para>
+ um feixe regular <literal>s*E-A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E,A</term>
+ <listitem>
+ <para>duas matrizes quadradas de reais</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q,M</term>
+ <listitem>
+ <para>duas matrizes não-singulares de reais</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>i1</term>
+ <listitem>
+ <para>inteiro</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Dado o feixe regular <literal>Fs=s*E-A</literal>,
+ <literal>pencan</literal> retorna as matrizes <literal>Q</literal> e
+ <literal>M</literal> tais que <literal>M*(s*E-A)*Q</literal> está na forma
+ "canônica".
+ </para>
+ <para>
+ <literal>M*E*Q</literal> é uma matriz de blocos
+ </para>
+ <programlisting role=""><![CDATA[
+[I,0;
+ 0,N]
+ ]]></programlisting>
+ <para>
+ com <literal>N</literal> nilpotente e <literal>i1</literal> =
+ tamanho da matriz acima <literal>I</literal>.
+ </para>
+ <para>
+ <literal>M*A*Q</literal> é uma matriz de blocos:
+ </para>
+ <programlisting role=""><![CDATA[
+[Ar,0;
+ 0,I]
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+F=randpencil([],[1,2],[1,2,3],[]);
+F=rand(6,6)*F*rand(6,6);
+[Q,M,i1]=pencan(F);
+W=clean(M*F*Q)
+roots(det(W(1:i1,1:i1)))
+det(W($-2:$,$-2:$))
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="glever">glever</link>
+ </member>
+ <member>
+ <link linkend="penlaur">penlaur</link>
+ </member>
+ <member>
+ <link linkend="rowshuff">rowshuff</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/pencil/penlaur.xml b/modules/linear_algebra/help/pt_BR/pencil/penlaur.xml
new file mode 100755
index 000000000..62f4c7757
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/pencil/penlaur.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="penlaur" xml:lang="en">
+ <refnamediv>
+ <refname>penlaur</refname>
+ <refpurpose>Laurent coefficients of matrix pencil</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[Si,Pi,Di,order]=penlaur(Fs)
+ [Si,Pi,Di,order]=penlaur(E,A)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>Fs</term>
+ <listitem>
+ <para>
+ um feixe regular <literal>s*E-A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E, A</term>
+ <listitem>
+ <para>duas matrizes quadradas de reais</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Si,Pi,Di</term>
+ <listitem>
+ <para>três matrizes quadradas de reais </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>order</term>
+ <listitem>
+ <para>inteiro</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>penlaur</literal> computa os primeiros coeficientes de
+ Laurent de <literal>(s*E-A)^-1</literal> no infinito.
+ </para>
+ <para>
+ <literal>(s*E-A)^-1 = ... + Si/s - Pi - s*Di + ...</literal> em
+ <literal>s</literal> = infinito.
+ </para>
+ <para>
+ <literal>order</literal> = ordem da singularidade
+ (ordem=índice-1).
+ </para>
+ <para>
+ O feixe de matrizes <literal>Fs=s*E-A</literal> deve ser
+ invertível.
+ </para>
+ <para>
+ Para um feixe de índice 0, <literal>Pi, Di,...</literal> são zero e
+ <literal>Si=inv(E)</literal>.
+ </para>
+ <para>
+ Para um feixe de índice 1 (order=0),<literal>Di</literal> =0.
+ </para>
+ <para>
+ Para feixes de índices maiores, os termos <literal> -s^2 Di(2), -s^3
+ Di(3),...
+ </literal>
+ são dados por:
+ </para>
+ <para>
+ <literal> Di(2)=Di*A*Di</literal>, <literal>
+ Di(3)=Di*A*Di*A*Di
+ </literal>
+ (até <literal>Di(order)</literal>).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Observação</title>
+ <para>Versão experimental: há problemas quando se tem mal-condicionamento
+ de<literal>so*E-A</literal>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+F=randpencil([],[1,2],[1,2,3],[]);
+F=rand(6,6)*F*rand(6,6);[E,A]=pen2ea(F);
+[Si,Pi,Di]=penlaur(F);
+[Bfs,Bis,chis]=glever(F);
+norm(coeff(Bis,1)-Di,1)
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="glever">glever</link>
+ </member>
+ <member>
+ <link linkend="pencan">pencan</link>
+ </member>
+ <member>
+ <link linkend="rowshuff">rowshuff</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/pencil/quaskro.xml b/modules/linear_algebra/help/pt_BR/pencil/quaskro.xml
new file mode 100755
index 000000000..beb65fb07
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/pencil/quaskro.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="quaskro" xml:lang="en">
+ <refnamediv>
+ <refname>quaskro</refname>
+ <refpurpose>forma quasi-Kronecker</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(F)
+ [Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(E,A)
+ [Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(F,tol)
+ [Q,Z,Qd,Zd,numbeps,numbeta]=quaskro(E,A,tol)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>F</term>
+ <listitem>
+ <para>
+ feixe de matrizes de reais <literal>F=s*E-A</literal>
+ (<literal>s=poly(0,'s')</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>E,A</term>
+ <listitem>
+ <para>duas matrizes reais de iguais dimensões </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para> número real (tolerância, valor padrão=1.d-10) </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Q,Z</term>
+ <listitem>
+ <para>duas matrizes quadradas ortogonais </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Qd,Zd</term>
+ <listitem>
+ <para>dois vetores de inteiros </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>numbeps</term>
+ <listitem>
+ <para>vetor de inteiros</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>Forma quasi-Kronecker de um feixe de matrizes:
+ <literal>quaskro</literal> computa duas matrizes ortogonais <literal>Q,
+ Z
+ </literal>
+ que põem o feixe <literal>F=s*E -A</literal> na forma
+ triangular superior:
+ </para>
+ <programlisting role=""><![CDATA[
+ | sE(eps)-A(eps) | X | X |
+ |----------------|----------------|------------|
+ | O | sE(inf)-A(inf) | X |
+Q(sE-A)Z = |=================================|============|
+ | | |
+ | O | sE(r)-A(r) |
+ ]]></programlisting>
+ <para>As dimensões dos blocos são dadas por:</para>
+ <para>
+ <literal>eps=Qd(1) x Zd(1)</literal>, <literal>inf=Qd(2) x
+ Zd(2)
+ </literal>
+ ,<literal>r = Qd(3) x Zd(3)</literal>
+ </para>
+ <para>
+ O bloco <literal>inf</literal> contém os modos infinitos do
+ feixe.
+ </para>
+ <para>
+ O bloco <literal>f</literal> contém os modos finitos do feixe
+ </para>
+ <para>A estrutura dos blocos epsilon é dada por:</para>
+ <para>
+ <literal>numbeps(1)</literal> = <literal>#</literal> de blocos eps
+ de tamanho 0 x 1
+ </para>
+ <para>
+ <literal>numbeps(2)</literal> = <literal>#</literal> de blocos eps
+ de tamanho 1 x 2
+ </para>
+ <para>
+ <literal>numbeps(3)</literal> = <literal>#</literal> de blocos eps
+ de tamanho 2 x 3 etc...
+ </para>
+ <para>A forma completa (de quatro blocos) de Kronecker é dada pela função
+ <literal>kroneck</literal> que chama a função <literal>quaskro</literal>
+ sobre o feixe (pertransposto) <literal>sE(r)-A(r)</literal>.
+ </para>
+ <para>O código é retirado de T. Beelen.</para>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="kroneck">kroneck</link>
+ </member>
+ <member>
+ <link linkend="gschur">gschur</link>
+ </member>
+ <member>
+ <link linkend="gspec">gspec</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/pencil/randpencil.xml b/modules/linear_algebra/help/pt_BR/pencil/randpencil.xml
new file mode 100755
index 000000000..3d0fe44e6
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/pencil/randpencil.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="randpencil" xml:lang="en">
+ <refnamediv>
+ <refname>randpencil</refname>
+ <refpurpose>feixe aleatório</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>F=randpencil(eps,infi,fin,eta)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title> Parâmetros </title>
+ <variablelist>
+ <varlistentry>
+ <term>eps</term>
+ <listitem>
+ <para>vetor de inteiros </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>infi</term>
+ <listitem>
+ <para>vetor de inteiros </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>fin</term>
+ <listitem>
+ <para>vetor de reais, ou polinômio mônico, ou vetor de polinômios
+ mônicos
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>eta</term>
+ <listitem>
+ <para>vetor de inteiros </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>F</term>
+ <listitem>
+ <para>
+ feixe de matrizes de reais <literal>F=s*E-A</literal>
+ (<literal>s=poly(0,'s')</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Função utilitária. <literal>F=randpencil(eps,infi,fin,eta)</literal>
+ retorna um feixe aleatório <literal>F</literal> com dada estrutura de
+ Kronecker. A estrutura é dada por: <literal>eps=[eps1,...,epsk]</literal>:
+ estrutura de blocos epsilon (tamanho eps1x(eps1+1),....)
+ <literal>fin=[l1,...,ln]</literal> conjunto de autovalores finitos
+ (assumidos como reais) (possivelmente [])
+ <literal>infi=[k1,...,kp]</literal> tamanho de blocos J no infinito
+ <literal>ki&gt;=1</literal> (infi=[] se não há blocos J).
+ <literal>eta=[eta1,...,etap]</literal>: estrutura dos blocos eta (size
+ eta1+1)xeta1,...)
+ </para>
+ <para>
+ <literal>epsi</literal>'s devem ser &gt;=0,
+ <literal>etai</literal>'s devem ser &gt;=0, <literal>infi</literal>'s
+ devem ser &gt;=1.
+ </para>
+ <para>
+ Se <literal>fin</literal> é um polinômio (mônico), o bloco finito
+ admite raízes de <literal>fin</literal> como autovalores.
+ </para>
+ <para>
+ Se <literal>fin</literal> é um vetor de polinômios, eles são os
+ divisores elementares finitos de <literal>F</literal> ,i.e., as raízes de
+ <literal>p(i)</literal> são autovalores finitos de
+ <literal>F</literal>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+F=randpencil([0,1],[2],[-1,0,1],[3]);
+[Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(F);
+Qd, Zd
+s=poly(0,'s');
+F=randpencil([],[1,2],s^3-2,[]); //feixe regular
+det(F)
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="kroneck">kroneck</link>
+ </member>
+ <member>
+ <link linkend="pencan">pencan</link>
+ </member>
+ <member>
+ <link linkend="penlaur">penlaur</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/pencil/rowshuff.xml b/modules/linear_algebra/help/pt_BR/pencil/rowshuff.xml
new file mode 100755
index 000000000..ff28a40ce
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/pencil/rowshuff.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns3="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="rowshuff" xml:lang="en">
+ <refnamediv>
+ <refname>rowshuff</refname>
+ <refpurpose>algoritmo de embaralhamento</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[Ws,Fs1]=rowshuff(Fs, [alfa])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>Fs</term>
+ <listitem>
+ <para>
+ feixe quadrado de reais <literal>Fs = s*E-A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Ws</term>
+ <listitem>
+ <para>matriz de polinômios </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Fs1</term>
+ <listitem>
+ <para>
+ feixe quadrado de reais <literal>F1s = s*E1 -A1</literal> com
+ <literal>E1</literal> não-singular
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>alfa</term>
+ <listitem>
+ <para>
+ número real (<literal>alfa = 0</literal> é o valor
+ padrão)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>Algoritmo de embaralhamento: dado o feixe
+ <literal>Fs=s*E-A</literal>, retorna Ws=W(s) (matriz quadrada de
+ polinômios) tal que:
+ </para>
+ <para>
+ <literal> Fs1 = s*E1-A1 = W(s)*(s*E-A) </literal> é um feixe com
+ matriz <literal>E1</literal> não-singular.
+ </para>
+ <para>
+ Isto é possível se, e só se, o feixe <literal>Fs = s*E-A</literal> é
+ regular (i.e., invertível). O grau de <literal>Ws</literal> é igual ao
+ índice do feixe.
+ </para>
+ <para>
+ Os pólos no infinito de<literal> Fs</literal> asão colocados para
+ <literal>alfa</literal> e os zeros de <literal>Ws</literal> estão em
+ <literal>alfa</literal>.
+ </para>
+ <para>
+ Note que <literal>(s*E-A)^-1 = (s*E1-A1)^-1 * W(s) =
+ (W(s)*(s*E-A))^-1 *W(s)
+ </literal>
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+F=randpencil([],[2],[1,2,3],[]);
+F=rand(5,5)*F*rand(5,5); // feixe regular 5 x 5 com três avaliações em 1,2,3
+[Ws,F1]=rowshuff(F,-1);
+[E1,A1]=pen2ea(F1);
+svd(E1) //E1 não-singular
+roots(det(Ws))
+clean(inv(F)-inv(F1)*Ws,1.d-7)
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="pencan">pencan</link>
+ </member>
+ <member>
+ <link linkend="glever">glever</link>
+ </member>
+ <member>
+ <link linkend="penlaur">penlaur</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/pencil/sylv.xml b/modules/linear_algebra/help/pt_BR/pencil/sylv.xml
new file mode 100755
index 000000000..fcba9fc28
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/pencil/sylv.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="sylv" xml:lang="en">
+ <refnamediv>
+ <refname>sylv</refname>
+ <refpurpose>equação de Sylvester </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>sylv(A,B,C,flag)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A,B,C</term>
+ <listitem>
+ <para>três matrizes de reais de dimensões apropriadas</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ string (<literal>'c'</literal> ou
+ <literal>'d'</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>X= sylv(A,B,C,'c')</literal> computa <literal>X</literal>,
+ solução da equação de "tempo contínuo" de Sylvester.
+ </para>
+ <programlisting role=""><![CDATA[
+A*X+X*B=C
+ ]]></programlisting>
+ <para>
+ <literal>X=sylv(A,B,C,'d')</literal> computa <literal>X</literal>,
+ solução da equação de "tempo discreto" de Sylvester.
+ </para>
+ <programlisting role=""><![CDATA[
+A*X*B-X=C
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(4,4);C=rand(4,3);B=rand(3,3);
+X = sylv(A,B,C,'c');
+norm(A*X+X*B-C)
+X=sylv(A,B,C,'d')
+norm(A*X*B-X-C)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="lyap">lyap</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/proj.xml b/modules/linear_algebra/help/pt_BR/proj.xml
new file mode 100755
index 000000000..cef345ed3
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/proj.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="proj" xml:lang="en">
+ <refnamediv>
+ <refname>proj</refname>
+ <refpurpose>projeção</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>P = proj(X1,X2)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>X1,X2</term>
+ <listitem>
+ <para>duas matrizes reais com igual número de colunas</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>P</term>
+ <listitem>
+ <para>
+ matriz de projeção de real (<literal>P^2=P</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>P</literal> é a projeção sobre <literal>X2</literal>
+ paralela a <literal>X1</literal>.
+ </para>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <programlisting role="example"><![CDATA[
+X1=rand(5,2);X2=rand(5,3);
+P=proj(X1,X2);
+norm(P^2-P,1)
+trace(P) // Este é dim(X2)
+[Q,M]=fullrf(P);
+svd([Q,X2]) // span(Q) = span(X2)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="projspec">projspec</link>
+ </member>
+ <member>
+ <link linkend="orth">orth</link>
+ </member>
+ <member>
+ <link linkend="fullrf">fullrf</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/state_space/CHAPTER b/modules/linear_algebra/help/pt_BR/state_space/CHAPTER
new file mode 100755
index 000000000..a0b62cdee
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/state_space/CHAPTER
@@ -0,0 +1,2 @@
+title = State-Space Matrices
+
diff --git a/modules/linear_algebra/help/pt_BR/state_space/coff.xml b/modules/linear_algebra/help/pt_BR/state_space/coff.xml
new file mode 100755
index 000000000..f75f38f77
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/state_space/coff.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="coff" xml:lang="en">
+ <refnamediv>
+ <refname>coff</refname>
+ <refpurpose>resolvente (método do cofator) </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[N,d]=coff(M [,var])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>M</term>
+ <listitem>
+ <para>matriz quadrada de reais</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>var</term>
+ <listitem>
+ <para>string</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>N</term>
+ <listitem>
+ <para> matriz de polinômios (com o mesmo tamanho que
+ <literal>M</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d</term>
+ <listitem>
+ <para>polinômio ( polinômio característico
+ <literal>poly(A,'s')</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>coff</literal> computa R=<literal>(s*eye()-M)^-1</literal>
+ para <literal>M</literal> uma matriz de reais. R é dado por
+ <literal>N/d</literal>.
+ </para>
+ <para>
+ <literal>N</literal> = matriz de polinômios como numerador.
+ </para>
+ <para>
+ <literal>d</literal> = denominador comum.
+ </para>
+ <para>
+ <literal>var</literal> string ( ('<literal>s</literal>' se
+ omitido)
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+M=[1,2;0,3];
+[N,d]=coff(M)
+N/d
+inv(%s*eye()-M)
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="coffg">coffg</link>
+ </member>
+ <member>
+ <link linkend="ss2tf">ss2tf</link>
+ </member>
+ <member>
+ <link linkend="nlev">nlev</link>
+ </member>
+ <member>
+ <link linkend="poly">poly</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/state_space/nlev.xml b/modules/linear_algebra/help/pt_BR/state_space/nlev.xml
new file mode 100755
index 000000000..90ddd6dd2
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/state_space/nlev.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="nlev" xml:lang="en">
+ <refnamediv>
+ <refname>nlev</refname>
+ <refpurpose>algoritmo de Leverrier</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[num,den]=nlev(A,z [,rmax])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title> Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A</term>
+ <listitem>
+ <para>matriz quadrada de reais</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>z</term>
+ <listitem>
+ <para>string</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>rmax</term>
+ <listitem>
+ <para>
+ parâmetro opcional (ver <literal>bdiag</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ <literal>[num,den]=nlev(A,z [,rmax])</literal> computa
+ <literal>(z*eye()-A)^(-1)</literal>
+ </para>
+ <para>por diagonalização por blocos de A seguido pelo algoritmo de
+ Leverrier em cada bloco.
+ </para>
+ <para>Este algoritmo é melhor que o algoritmo usual de Leverrier, mas
+ ainda não está perfeito!
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(3,3);x=poly(0,'x');
+[NUM,den]=nlev(A,'x')
+clean(den-poly(A,'x'))
+clean(NUM/den-inv(x*eye()-A))
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="coff">coff</link>
+ </member>
+ <member>
+ <link linkend="coffg">coffg</link>
+ </member>
+ <member>
+ <link linkend="glever">glever</link>
+ </member>
+ <member>
+ <link linkend="ss2tf">ss2tf</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Autores</title>
+ <para>F. Delebecque., S. Steer INRIA;</para>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/subspaces/CHAPTER b/modules/linear_algebra/help/pt_BR/subspaces/CHAPTER
new file mode 100755
index 000000000..d87d9ca5e
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/subspaces/CHAPTER
@@ -0,0 +1,3 @@
+title = Subspaces
+
+
diff --git a/modules/linear_algebra/help/pt_BR/subspaces/spaninter.xml b/modules/linear_algebra/help/pt_BR/subspaces/spaninter.xml
new file mode 100755
index 000000000..894f73b4b
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/subspaces/spaninter.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="spaninter" xml:lang="en">
+ <refnamediv>
+ <refname>spaninter</refname>
+ <refpurpose>interseção de subespaços</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento</title>
+ <synopsis>[X,dim]=spaninter(A,B [,tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A, B</term>
+ <listitem>
+ <para>duas matrizes de reais ou de complexos com igual número de
+ linhas
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>matriz quadrada ortogonal ou unitária</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dim</term>
+ <listitem>
+ <para>
+ inteiro, dimensão do subesbaço Im(<literal>A</literal>) inter
+ Im(<literal>B</literal>)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Computa a intereseção de Im(<literal>A</literal>) e
+ Im(<literal>B</literal>).
+ </para>
+ <para>
+ As primeiras <literal>dim</literal> colunas de <literal>X</literal>
+ geram esta interseção i.e. <literal>X(:,1:dim)</literal> é uma base
+ ortogonal para
+ </para>
+ <para>
+ Im(<literal>A</literal>) inter Im(<literal>B</literal>)
+ </para>
+ <para>
+ Na base <literal>X</literal>, <literal>A</literal> e
+ <literal>B</literal> são respectivamente representados por:
+ </para>
+ <para>
+ <literal>X'*A</literal> e <literal>X'*B</literal>.
+ </para>
+ <para>
+ <literal>tol</literal> é um limiar (<literal>sqrt(%eps)</literal> é
+ o valor padrão).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(5,3)*rand(3,4); // A é 5 x 4, rank=3
+B=[A(:,2),rand(5,1)]*rand(2,2);
+[X,dim]=spaninter(A,B);
+X1=X(:,1:dim); //A interseção
+svd(A),svd([X1,A]) // X1 no gerado(A) (span(A))
+svd(B),svd([B,X1]) // X1 no gerado(B) (span(B))
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spanplus">spanplus</link>
+ </member>
+ <member>
+ <link linkend="spantwo">spantwo</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/subspaces/spanplus.xml b/modules/linear_algebra/help/pt_BR/subspaces/spanplus.xml
new file mode 100755
index 000000000..3bed11264
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/subspaces/spanplus.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="spanplus" xml:lang="en">
+ <refnamediv>
+ <refname>spanplus</refname>
+ <refpurpose>soma de subespaços</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Seqüência de Chamamento</title>
+ <synopsis>[X,dim,dima]=spanplus(A,B[,tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A, B</term>
+ <listitem>
+ <para>duas matrizes de reais ou complexos com igual número de
+ linhas
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>X</term>
+ <listitem>
+ <para>matriz quadrada ortogonal ou unitária </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dim, dima</term>
+ <listitem>
+ <para>inteiros, dimensões de subespaços </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>número real não-negativo</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>Computa a base X tal que:</para>
+ <para>
+ as primeiras <literal>dima</literal> colunas de <literal>X</literal>
+ geram Im(<literal>A</literal>) e as (<literal>dim-dima</literal>) colunas
+ seguintes formam uma base de <literal>A+B</literal> em relação a
+ <literal>A</literal>.
+ </para>
+ <para>
+ As <literal>dim</literal> primeiras colunas de <literal>X</literal>
+ formam uma base para <literal>A+B</literal>.
+ </para>
+ <para>Tem-se a seguinte forma canônica para
+ <literal>[A,B]</literal>:
+ </para>
+ <programlisting role=""><![CDATA[
+ [*,*] (dima rows)
+X'*[A,B]=[0,*] (dim-dima rows)
+ [0,0]
+ ]]></programlisting>
+ <para>
+ <literal>tol</literal> é um argumento opcional (ver código da
+ função).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=rand(6,2)*rand(2,5); // rank(A)=2 (posto(A)=2)
+B=[A(:,1),rand(6,2)]*rand(3,3); //dois vetores adicionais independentes
+[X,dim,dimA]=spanplus(A,B);
+dimA
+dim
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spaninter">spaninter</link>
+ </member>
+ <member>
+ <link linkend="im_inv">im_inv</link>
+ </member>
+ <member>
+ <link linkend="spantwo">spantwo</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/pt_BR/subspaces/spantwo.xml b/modules/linear_algebra/help/pt_BR/subspaces/spantwo.xml
new file mode 100755
index 000000000..96278172b
--- /dev/null
+++ b/modules/linear_algebra/help/pt_BR/subspaces/spantwo.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="spantwo" xml:lang="en">
+ <refnamediv>
+ <refname>spantwo</refname>
+ <refpurpose>soma e interseção de subespaços</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title> Seqüência de Chamamento </title>
+ <synopsis>[Xp,dima,dimb,dim]=spantwo(A,B, [tol])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Parâmetros</title>
+ <variablelist>
+ <varlistentry>
+ <term>A, B</term>
+ <listitem>
+ <para>duas matrizes de reais ou complexos com igual número de linhas
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Xp</term>
+ <listitem>
+ <para>matriz quadrada não-singular </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dima, dimb, dim</term>
+ <listitem>
+ <para>inteiros, dimensões dos subespaços </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tol</term>
+ <listitem>
+ <para>número real não-negativo</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Descrição</title>
+ <para>
+ Dadas duas matrizes <literal>A</literal> e <literal>B</literal> com
+ o mesmo número de linhas, retorna uma matriz quadrada
+ <literal>Xp</literal> (não-singular, mas não necessariamente ortogonal)
+ tal que :
+ </para>
+ <programlisting role=""><![CDATA[
+ [A1, 0] (dim-dimb linhas)
+Xp*[A,B]=[A2,B2] (dima+dimb-dim linhas)
+ [0, B3] (dim-dima linha)
+ [0 , 0]
+ ]]></programlisting>
+ <para>
+ As primeiras <literal>dima</literal> colunas de
+ <literal>inv(Xp)</literal> geram Im(<literal>A</literal>).
+ </para>
+ <para>
+ As colunas de <literal>dim-dimb+1</literal> até
+ <literal>dima</literal> de <literal>inv(Xp)</literal> geram a interseção
+ de Im(A) e Im(B).
+ </para>
+ <para>
+ As primeiras <literal>dim</literal> colunas de
+ <literal>inv(Xp)</literal> geram
+ Im(<literal>A</literal>)+Im(<literal>B</literal>).
+ </para>
+ <para>
+ As colunas de <literal>dim-dimb+1</literal> até
+ <literal>dim</literal> de <literal>inv(Xp)</literal> geram
+ Im(<literal>B</literal>).
+ </para>
+ <para>
+ A matrix <literal>[A1;A2]</literal> tem posto-linha cheio (=
+ posto(A)), a matrix <literal>[B2;B3]</literal> tem posto-linha cheio
+ (=posto(B)), a matriz <literal>[A2,B2]</literal> tem posto-linha (=posto(A
+ inter B)) e a matriz <literal>[A1,0;A2,B2;0,B3]</literal> tem posto-linha
+ cheio (=posto(A+B)).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemplos</title>
+ <programlisting role="example"><![CDATA[
+A=[1,0,0,4;
+ 5,6,7,8;
+ 0,0,11,12;
+ 0,0,0,16];
+B=[1,2,0,0]';C=[4,0,0,1];
+Sl=ss2ss(syslin('c',A,B,C),rand(A));
+[no,X]=contr(Sl('A'),Sl('B'));CO=X(:,1:no); //Parte controlável
+[uo,Y]=unobs(Sl('A'),Sl('C'));UO=Y(:,1:uo); //Parte inobservável
+[Xp,dimc,dimu,dim]=spantwo(CO,UO); //Decomposição de Kalman
+Slcan=ss2ss(Sl,inv(Xp));
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title> Ver Também </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spanplus">spanplus</link>
+ </member>
+ <member>
+ <link linkend="spaninter">spaninter</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/linear_algebra/help/ru_RU/addchapter.sce b/modules/linear_algebra/help/ru_RU/addchapter.sce
new file mode 100755
index 000000000..9c126ad92
--- /dev/null
+++ b/modules/linear_algebra/help/ru_RU/addchapter.sce
@@ -0,0 +1,11 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+add_help_chapter("Linear Algebra",SCI+"/modules/linear_algebra/help/ru_RU",%T);
+
diff --git a/modules/linear_algebra/includes/dynlib_linear_algebra.h b/modules/linear_algebra/includes/dynlib_linear_algebra.h
new file mode 100755
index 000000000..50aec544b
--- /dev/null
+++ b/modules/linear_algebra/includes/dynlib_linear_algebra.h
@@ -0,0 +1,28 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) DIGITEO - 2009 - Allan CORNET
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+
+/*--------------------------------------------------------------------------*/
+#ifndef __DYNLIB_LINEAR_ALGEBRA_H__
+#define __DYNLIB_LINEAR_ALGEBRA_H__
+
+#ifdef _MSC_VER
+#ifdef LINEAR_ALGEBRA_EXPORTS
+#define LINEAR_ALGEBRA_IMPEXP __declspec(dllexport)
+#else
+#define LINEAR_ALGEBRA_IMPEXP __declspec(dllimport)
+#endif
+#else
+#define LINEAR_ALGEBRA_IMPEXP
+#endif
+
+#endif /* __DYNLIB_LINEAR_ALGEBRA_H__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/includes/gschur.h b/modules/linear_algebra/includes/gschur.h
new file mode 100755
index 000000000..828b795aa
--- /dev/null
+++ b/modules/linear_algebra/includes/gschur.h
@@ -0,0 +1,60 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Sylvestre LEDRU <sylvestre.ledru@inria.fr>
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __GSCHUR_H__
+#define __GSCHUR_H__
+
+#include "dynlib_linear_algebra.h"
+#include "GetFunctionByName.h"
+#include "linear_FTables.h"
+
+
+/***********************************
+ * Search Table for gzhsel
+ ***********************************/
+
+#define ARGS_gzhsel doublecmplx *,doublecmplx *
+typedef int * (*gzhself)(ARGS_gzhsel);
+
+/**************** gzhsel ***************/
+LINEAR_ALGEBRA_IMPEXP void C2F(zb02ow)(ARGS_gzhsel);
+LINEAR_ALGEBRA_IMPEXP void C2F(zb02ox)(ARGS_gzhsel);
+
+FTAB FTab_gzhsel[] =
+{
+ {"zb02ow", (voidf) C2F(zb02ow)},
+ {"zb02ox", (voidf) C2F(zb02ox)},
+ {(char *) 0, (voidf) 0}
+};
+
+
+/***********************************
+ * Search Table for gshsel
+ ***********************************/
+
+#define ARGS_gshsel double *,double*,double*
+typedef int * (*gshself)(ARGS_gshsel);
+
+
+/**************** gshsel ***************/
+LINEAR_ALGEBRA_IMPEXP void C2F(sb02ow)(ARGS_gshsel);
+LINEAR_ALGEBRA_IMPEXP void C2F(sb02ox)(ARGS_gshsel);
+
+FTAB FTab_gshsel[] =
+{
+ {"sb02ow", (voidf) C2F(sb02ow)},
+ {"sb02ox", (voidf) C2F(sb02ox)},
+ {(char *) 0, (voidf) 0}
+};
+
+#endif /* __GSCHUR_H__ */
diff --git a/modules/linear_algebra/includes/gw_linear_algebra.h b/modules/linear_algebra/includes/gw_linear_algebra.h
new file mode 100755
index 000000000..275ad0d50
--- /dev/null
+++ b/modules/linear_algebra/includes/gw_linear_algebra.h
@@ -0,0 +1,59 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Allan CORNET - <allan.cornet@inria.fr>
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __GW_LINEAR_ALGEBRA__
+#define __GW_LINEAR_ALGEBRA__
+#include "dynlib_linear_algebra.h"
+#include "machine.h"
+/*--------------------------------------------------------------------------*/
+#define SCI_DOUBLE 1
+#define STRING 10
+#define REAL 0
+#define COMPLEX 1
+#define FUNCTION 13
+#define STRINGREAL 27
+#define STRINGCOMPLEX 12
+#define YES 1
+#define NO 0
+/*--------------------------------------------------------------------------*/
+LINEAR_ALGEBRA_IMPEXP int gw_linear_algebra(void);
+/*--------------------------------------------------------------------------*/
+LINEAR_ALGEBRA_IMPEXP int C2F(inthess)(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int C2F(intqr)(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int C2F(intbackslash)(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int C2F(intbdiagr)(char *fname, long unsigned int fname_len);
+LINEAR_ALGEBRA_IMPEXP int C2F(intdet)(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int C2F(intinv)(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int C2F(intlu)(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int C2F(intrcond)(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int C2F(intslash)(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int C2F(intsvd)(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int C2F(intlsq)(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int C2F(intchol)(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int C2F(intspec) (char *fname, unsigned long fname_len);
+/*--------------------------------------------------------------------------*/
+/* used in 'eig' */
+LINEAR_ALGEBRA_IMPEXP int sci_dsyev(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int sci_dgeev(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int sci_zgeev(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int sci_zheev(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int sci_dggev(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int sci_zggev(char *fname, unsigned long fname_len);
+/*--------------------------------------------------------------------------*/
+LINEAR_ALGEBRA_IMPEXP int C2F(intbalanc)(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int C2F(intschur)(char *fname, unsigned long fname_len);
+LINEAR_ALGEBRA_IMPEXP int C2F(intnorm) (char *fname,unsigned long fname_len);
+/*--------------------------------------------------------------------------*/
+#endif /* __GW_LINEAR_ALGEBRA__ */
+/*--------------------------------------------------------------------------*/
+
diff --git a/modules/linear_algebra/includes/gw_linear_algebra2.h b/modules/linear_algebra/includes/gw_linear_algebra2.h
new file mode 100755
index 000000000..db5a50107
--- /dev/null
+++ b/modules/linear_algebra/includes/gw_linear_algebra2.h
@@ -0,0 +1,23 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Allan CORNET - <allan.cornet@inria.fr>
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __GW_LINEAR_ALGEBRA2__
+#define __GW_LINEAR_ALGEBRA2__
+/*--------------------------------------------------------------------------*/
+#include "dynlib_linear_algebra.h"
+/*--------------------------------------------------------------------------*/
+LINEAR_ALGEBRA_IMPEXP int gw_linear_algebra2(void);
+/*--------------------------------------------------------------------------*/
+#endif /* __GW_LINEAR_ALGEBRA2__ */
+/*--------------------------------------------------------------------------*/
+
diff --git a/modules/linear_algebra/includes/issymmetric.h b/modules/linear_algebra/includes/issymmetric.h
new file mode 100755
index 000000000..f6922a647
--- /dev/null
+++ b/modules/linear_algebra/includes/issymmetric.h
@@ -0,0 +1,38 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno JOFRET <bruno.jofret@inria.fr>
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+/*
+** -*- C -*-
+**
+** issymmetric.h
+**
+** Started on Thu Sep 13 09:48:03 2007 bruno
+** Last update Thu Sep 13 10:05:59 2007 bruno
+*/
+
+#ifndef __ISSYMMETRIC__
+#define __ISSYMMETRIC__
+#include "dynlib_linear_algebra.h"
+
+
+
+#define SYMMETRIC 1
+#define NOT_SYMMETRIC 0
+
+/*
+** Check wether or not a Matrix is Symmetric.
+*/
+
+LINEAR_ALGEBRA_IMPEXP int C2F(issymmetric)(int *stackPosition);
+
+#endif /* !__ISSYMMETRIC__ */
diff --git a/modules/linear_algebra/includes/schur.h b/modules/linear_algebra/includes/schur.h
new file mode 100755
index 000000000..91ee56092
--- /dev/null
+++ b/modules/linear_algebra/includes/schur.h
@@ -0,0 +1,188 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Sylvestre LEDRU <sylvestre.ledru@inria.fr>
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __SCHUR_H__
+#define __SCHUR_H__
+
+#include "dynlib_linear_algebra.h"
+#include "machine.h"
+#include "linear_FTables.h"
+
+/***********************************
+ * Search Table for schsel
+ ***********************************/
+
+#define ARGS_schsel double *,double*
+typedef int * (*schself)(ARGS_schsel);
+
+/**
+ * function call : schsel
+ * @param alpha
+ * @param beta
+ * @return
+ */
+LINEAR_ALGEBRA_IMPEXP int *C2F(schsel)(double *alpha, double *beta);
+
+/**
+ * fixes the function associated to name
+ * @param len
+ * @param name
+ * @param rep
+ */
+LINEAR_ALGEBRA_IMPEXP void C2F(setschsel)(int *len, char *name, int *rep);
+
+/**************** schsel ***************/
+LINEAR_ALGEBRA_IMPEXP void C2F(sb02mv)(ARGS_schsel);
+LINEAR_ALGEBRA_IMPEXP void C2F(sb02mw)(ARGS_schsel);
+
+FTAB FTab_schsel[] =
+{
+ {"sb02mv", (voidf) C2F(sb02mv)},
+ {"sb02mw", (voidf) C2F(sb02mw)},
+ {(char *) 0, (voidf) 0}
+};
+
+
+/***********************************
+* Search Table for gschur uses : gshsel
+***********************************/
+/**
+ * @TODO : add comment
+ *
+ * @param alphar
+ * @param alphai
+ * @param beta
+ * @return <ReturnValue>
+ */
+LINEAR_ALGEBRA_IMPEXP int *C2F(gshsel)(double *alphar, double *alphai, double *beta);
+
+/**
+ * fixes the function associated to name
+ *
+ * @param len
+ * @param name
+ * @param rep
+ */
+LINEAR_ALGEBRA_IMPEXP void C2F(setgshsel)(int *len, char *name, int *rep);
+
+
+/***********************************
+* Search Table for schur uses : fschur
+***********************************/
+
+/**
+ * @TODO : add comment
+ *
+ * @param alpha
+ * @param beta
+ * @return <ReturnValue>
+ */
+LINEAR_ALGEBRA_IMPEXP int *C2F(gzhsel)(doublecmplx *alpha, doublecmplx *beta);
+
+/**
+ * fixes the function associated to name
+ *
+ * @param len
+ * @param name
+ * @param rep
+ */
+LINEAR_ALGEBRA_IMPEXP void C2F(setgzhsel)(int *len, char *name, int *rep);
+
+/***********************************
+* Search Table for gschur uses : gzhsel
+***********************************/
+/**
+ * @TODO : add comment
+ *
+ * @param alpha
+ * @param beta
+ * @return <ReturnValue>
+ */
+LINEAR_ALGEBRA_IMPEXP int *C2F(gzhsel)(doublecmplx *alpha, doublecmplx *beta);
+
+/**
+ * fixes the function associated to name
+ *
+ * @param len
+ * @param name
+ * @param rep
+ */
+LINEAR_ALGEBRA_IMPEXP void C2F(setgzhsel)(int *len, char *name, int *rep);
+
+
+/***********************************
+* Search Table for schur uses : zchsel
+***********************************/
+/**
+ * @TODO : add comment
+ *
+ * @param alpha
+ * @return <ReturnValue>
+ */
+LINEAR_ALGEBRA_IMPEXP int *C2F(zchsel)(doublecmplx *alpha);
+
+/**
+ * fixes the function associated to name
+ *
+ * @param len
+ * @param name
+ * @param rep
+ */
+LINEAR_ALGEBRA_IMPEXP void C2F(setzchsel)(int *len, char *name, int *rep);
+
+/***********************************
+* Search Table for schur uses : fschur
+***********************************/
+
+/**
+ * @TODO add comment
+ *
+ * @param lsize
+ * @param alpha
+ * @param beta
+ * @param s
+ * @param p
+ * @return <ReturnValue>
+ */
+LINEAR_ALGEBRA_IMPEXP int *C2F(fschur)(int *lsize, double *alpha, double *beta, double *s, double *p);
+
+/**
+ * fixes the function associated to name
+ *
+ * @param name
+ * @param rep
+ */
+LINEAR_ALGEBRA_IMPEXP void C2F(setfschur)(char *name, int *rep);
+
+
+
+/***********************************
+ * Search Table for zchsel
+ ***********************************/
+
+#define ARGS_zchsel doublecmplx *
+typedef int * (*zchself)(ARGS_zchsel);
+
+
+/**************** zchsel ***************/
+LINEAR_ALGEBRA_IMPEXP void C2F(zb02mv)(ARGS_zchsel);
+LINEAR_ALGEBRA_IMPEXP void C2F(zb02mw)(ARGS_zchsel);
+
+FTAB FTab_zchsel[] =
+{
+ {"zb02mv", (voidf) C2F(zb02mv)},
+ {"zb02mw", (voidf) C2F(zb02mw)},
+ {(char *) 0, (voidf) 0}
+};
+
+#endif /* __SCHUR_H__ */
diff --git a/modules/linear_algebra/libscilinear_algebra-algo.la b/modules/linear_algebra/libscilinear_algebra-algo.la
new file mode 100755
index 000000000..4e39f0e11
--- /dev/null
+++ b/modules/linear_algebra/libscilinear_algebra-algo.la
@@ -0,0 +1,41 @@
+# libscilinear_algebra-algo.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname=''
+
+# Names of this library.
+library_names=''
+
+# The name of the static archive.
+old_library='libscilinear_algebra-algo.a'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' -lpthread -ldl -lcurses -lm'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libscilinear_algebra-algo.
+current=
+age=
+revision=
+
+# Is this an already installed library?
+installed=no
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir=''
diff --git a/modules/linear_algebra/libscilinear_algebra.la b/modules/linear_algebra/libscilinear_algebra.la
new file mode 100755
index 000000000..52f78c3bd
--- /dev/null
+++ b/modules/linear_algebra/libscilinear_algebra.la
@@ -0,0 +1,41 @@
+# libscilinear_algebra.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname=''
+
+# Names of this library.
+library_names=''
+
+# The name of the static archive.
+old_library='libscilinear_algebra.a'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' -lpthread -ldl -lcurses -lm'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libscilinear_algebra.
+current=
+age=
+revision=
+
+# Is this an already installed library?
+installed=no
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir=''
diff --git a/modules/linear_algebra/license.txt b/modules/linear_algebra/license.txt
new file mode 100755
index 000000000..4254a67fd
--- /dev/null
+++ b/modules/linear_algebra/license.txt
@@ -0,0 +1,65 @@
+Copyright:
+Copyright (c) 2008 - DIGITEO
+Copyright (c) 1989-2008 - INRIA
+
+License:
+This module must be used under the terms of the CeCILL.
+This module file is licensed as described in the file COPYING, which
+you should have received as part of this distribution. The terms
+are also available at
+http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+
+Slicot:
+=======
+
+Files:
+src/slicot/*
+
+sci_gateway/fortran/{sci_f_sident.f,sci_f_sorder.f,sci_f_findbd.f}
+
+Copyright:
+WGS (Working Group on Software) - Slicot project
+
+License:
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+Lapack:
+=======
+
+Files:
+src/fortran/DGELSY1.f
+src/fortran/ZGELSY1.f
+
+Copyright:
+Univ. of Tennessee, Univ. of California Berkeley, Univ. of Colorado Denver, NAG Ltd.,
+Courant Institute, Argonne National Lab, and Rice University
+June 30, 1999
+
+License:
+LAPACK is a freely-available software package. It is available from
+netlib via anonymous ftp and the World Wide Web. Thus, it can be
+included in commercial software packages (and has been). We only ask
+that proper credit be given to the authors.
+
+Like all software, it is copyrighted. It is not trademarked, but we do
+ask the following:
+
+If you modify the source for these routines we ask that you change the
+name of the routine and comment the changes made to the original.
+
+We will gladly answer any questions regarding the software. If a
+modification is done, however, it is the responsibility of the person
+who modified the routine to provide support.
diff --git a/modules/linear_algebra/linear_algebra.iss b/modules/linear_algebra/linear_algebra.iss
new file mode 100755
index 000000000..5eed69697
--- /dev/null
+++ b/modules/linear_algebra/linear_algebra.iss
@@ -0,0 +1,47 @@
+;
+; Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+; Copyright (C) INRIA - Allan CORNET
+; Copyright (C) DIGITEO - 2010 - Allan CORNET
+;
+; This file must be used under the terms of the CeCILL.
+; This source file is licensed as described in the file COPYING, which
+; you should have received as part of this distribution. The terms
+; are also available at
+; http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+;
+;--------------------------------------------------------------------------------------------------------------
+; Inno Setup Script (5.3 and more) for Scilab (UNICODE version required)
+;
+;--------------------------------------------------------------------------------------------------------------
+; linear_algebra module
+;--------------------------------------------------------------------------------------------------------------
+;
+#define LINEAR_ALGEBRA "linear_algebra"
+;
+Source: bin\{#LINEAR_ALGEBRA}.dll; DestDir: {app}\bin; Components: {#COMPN_SCILAB}
+Source: bin\{#LINEAR_ALGEBRA}_f.dll; DestDir: {app}\bin; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#LINEAR_ALGEBRA}\license.txt; DestDir: {app}\modules\{#LINEAR_ALGEBRA}; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#LINEAR_ALGEBRA}\sci_gateway\{#LINEAR_ALGEBRA}_gateway.xml; DestDir: {app}\modules\{#LINEAR_ALGEBRA}\sci_gateway; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#LINEAR_ALGEBRA}\etc\{#LINEAR_ALGEBRA}.quit; DestDir: {app}\modules\{#LINEAR_ALGEBRA}\etc; Components: {#COMPN_SCILAB}
+Source: modules\{#LINEAR_ALGEBRA}\etc\{#LINEAR_ALGEBRA}.start; DestDir: {app}\modules\{#LINEAR_ALGEBRA}\etc; Components: {#COMPN_SCILAB}
+;
+;Source: modules\{#LINEAR_ALGEBRA}\includes\*.h; DestDir: {app}\modules\{#LINEAR_ALGEBRA}\includes; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#LINEAR_ALGEBRA}\macros\buildmacros.sce; DestDir: {app}\modules\{#LINEAR_ALGEBRA}\macros; Components: {#COMPN_SCILAB}
+Source: modules\{#LINEAR_ALGEBRA}\macros\buildmacros.bat; DestDir: {app}\modules\{#LINEAR_ALGEBRA}\macros; Components: {#COMPN_SCILAB}
+Source: modules\{#LINEAR_ALGEBRA}\macros\cleanmacros.bat; DestDir: {app}\modules\{#LINEAR_ALGEBRA}\macros; Components: {#COMPN_SCILAB}
+Source: modules\{#LINEAR_ALGEBRA}\macros\lib; DestDir: {app}\modules\{#LINEAR_ALGEBRA}\macros; Components: {#COMPN_SCILAB}
+Source: modules\{#LINEAR_ALGEBRA}\macros\names; DestDir: {app}\modules\{#LINEAR_ALGEBRA}\macros; Components: {#COMPN_SCILAB}
+Source: modules\{#LINEAR_ALGEBRA}\macros\*.bin; DestDir: {app}\modules\{#LINEAR_ALGEBRA}\macros; Components: {#COMPN_SCILAB}
+Source: modules\{#LINEAR_ALGEBRA}\macros\*.sci; DestDir: {app}\modules\{#LINEAR_ALGEBRA}\macros; Components: {#COMPN_SCILAB}
+;
+;Source: modules\{#LINEAR_ALGEBRA}\demos\*.*; DestDir: {app}\modules\{#LINEAR_ALGEBRA}\demos; Flags: recursesubdirs; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#LINEAR_ALGEBRA}\examples\*.*; DestDir: {app}\modules\{#LINEAR_ALGEBRA}\examples; Flags: recursesubdirs; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#LINEAR_ALGEBRA}\tests\*.*; DestDir: {app}\modules\{#LINEAR_ALGEBRA}\tests; Flags: recursesubdirs; Components: {#COMPN_SCILAB} and {#COMPN_TESTS}
+;
+;--------------------------------------------------------------------------------------------------------------
diff --git a/modules/linear_algebra/locales/ca_ES.po b/modules/linear_algebra/locales/ca_ES.po
new file mode 100755
index 000000000..967114b10
--- /dev/null
+++ b/modules/linear_algebra/locales/ca_ES.po
@@ -0,0 +1,227 @@
+# Catalan translation for scilab
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2011-09-01 09:33+0000\n"
+"Last-Translator: oriolsbd <oriolsbd@yahoo.es>\n"
+"Language-Team: Catalan <ca@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: ca\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"
+msgstr ""
+"%s: L'argument d'entrada #%d és d'un tipus incorrecte: Ha de ser una matriu "
+"de nombres reals o complexos.\n"
+
+#, c-format
+msgid "%s: Non convergence in QR steps.\n"
+msgstr "%s: Els passos QR no convergeixen.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: Real or complex matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: String or integer expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s, or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A real expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A real scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real matrix expected.\n"
+msgstr ""
+"%s: L'argument d'entrada #%d és d'un tipus incorrecte: Ha de ser una matriu "
+"real.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Polynomial expected."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: must not contain %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A scalar or a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: must be %d, %d, %s, '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+"%s: L'argument d'entrada #%d té una mida incorrecta. Ha de ser un escalar.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative integers expected.\n"
+msgstr ""
+"%s: L'argument d'entrada #%d té valors incorrectes: Han de ser nombres "
+"enters no-negatius.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A column vector expected.\n"
+msgstr ""
+"%s: L'argument d'entrada #%d té una mida incorrecta: Ha de ser un vector "
+"columna.\n"
+
+#, c-format
+msgid "%s: Obsolete function. Please replace '%s' by '%s'."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Obsolete function. Former external functions cannot be used anymore."
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+"%s: Els arguments d'entrada #%d i #%d són incompatibles: Han de tenir la "
+"mateixa mida.\n"
+
+#, c-format
+msgid "%s: SVD and QR not implemented in sparse.\n"
+msgstr "%s: No s'ha implementat SVD i QR per a matrius disperses.\n"
+
+#, c-format
+msgid "%s: This feature has not been implemented.\n"
+msgstr "%s: Aquesta característica no està implementada.\n"
+
+msgid "Conflicting linear constraints."
+msgstr ""
+
+msgid "Recomputing initial guess"
+msgstr ""
+
+#, c-format
+msgid "Possible Conflicting linear constraints, error in the order of %s"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d or %d expected.\n"
+msgstr ""
+"%s: Nombre incorrecte d'arguments d'entrada: Se'n necessiten %d o %d.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+"%s: L'argument d'entrada #%d és d'un tipus incorrecte: Ha de ser un "
+"d'aquests {%s}.\n"
+
+#, c-format
+msgid "%s: Singular pencil."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Function not defined for type '%s'. Check argument or define function %s."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d expected.\n"
+msgstr "%s: Nombre incorrecte d'arguments d'entrada: Han de ser %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Non-negative integer expected.\n"
+msgstr ""
+"%s: L'argument d'entrada #%d té un valor incorrecte: Ha de ser un nombre "
+"enter no-negatiu.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: L'argument d'entrada #%d té una mida incorrecta: Ha de ser una matriu "
+"quadrada.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative scalar expected.\n"
+msgstr ""
+"%s: L'argument d'entrada #%d té valors incorrectes: Ha de ser un escalar no-"
+"negatiu.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Symmetric expected"
+msgstr ""
+"%s: L'argument d'entrada #%d té una mida incorrecta: Ha de ser simètrica"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Not semi-definite positive"
+msgstr ""
+"%s: L'argument d'entrada #%d té un valor incorrecte: No és semi-definit "
+"positiu."
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: L'argument d'entrada #%d és d'un tipus incorrecte.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Requested rank is greater than "
+"matrix dimension."
+msgstr ""
+"%s: L'argument d'entrada #%d té un valor incorrecte: El rang indicat és "
+"major que la dimensió de la matriu."
diff --git a/modules/linear_algebra/locales/cs_CZ.po b/modules/linear_algebra/locales/cs_CZ.po
new file mode 100755
index 000000000..c026cc92f
--- /dev/null
+++ b/modules/linear_algebra/locales/cs_CZ.po
@@ -0,0 +1,221 @@
+# Czech translation for scilab
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-09-24 19:25+0000\n"
+"Last-Translator: Zbyněk Schwarz <Unknown>\n"
+"Language-Team: Czech <cs@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"
+msgstr ""
+"%s: Chybný typ vstupního argumentu #%d: OÄekávána matice reálných nebo "
+"komplexních Äísel.\n"
+
+#, c-format
+msgid "%s: Non convergence in QR steps.\n"
+msgstr "%s: QR kroky nekonvergují.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: Real or complex matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: String or integer expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s, or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A real expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A real scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real scalar expected.\n"
+msgstr "%s: Å patný typ vstupního argumentu #%d: OÄekáván reálný skalár.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real matrix expected.\n"
+msgstr ""
+"%s: Chybný typ vstupního argumentu #%d: OÄekávána matice reálných Äísel.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Polynomial expected."
+msgstr "%s: Å patný typ vstupního argumentu #%d: OÄekáván polynom."
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: must not contain %s or %s.\n"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: nesmí obsahovat %s nebo %s.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A matrix expected.\n"
+msgstr "%s: Å patný typ vstupního argumentu #%d: OÄekávána matice.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: Å patný typ vstupního argumentu #%d: OÄekávána Ätvercová matice.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A scalar or a string expected.\n"
+msgstr ""
+"%s: Å patný typ vstupního argumentu #%d: OÄekáván skalár, nebo Å™etÄ›zec.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: must be %d, %d, %s, '%s' or '%s'.\n"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: Musí být %d, %d, %s, '%s' nebo "
+"'%s'.\n"
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d to %d expected.\n"
+msgstr "%s: Å patný poÄet vstupních argumentů: oÄekáváno %d až %d.\n"
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d to %d expected.\n"
+msgstr "%s: Å patný poÄet vstupních argumentů: oÄekáváno %d až %d.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr "%s: Å patná velikost vstupního argumentu #%d: OÄekáván skalár.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative integers expected.\n"
+msgstr ""
+"%s: Å patné hodnoty vstupního argumentu #%d: OÄekávána nezáporná celá Äísla.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A column vector expected.\n"
+msgstr ""
+"%s: Å patná velikost vstupního argumentu #%d: OÄekáván sloupcový vektor.\n"
+
+#, c-format
+msgid "%s: Obsolete function. Please replace '%s' by '%s'."
+msgstr "%s: Zastaralá funkce. Prosím použijte '%s' krát '%s'."
+
+#, c-format
+msgid ""
+"%s: Obsolete function. Former external functions cannot be used anymore."
+msgstr ""
+"%s: Zastaralá funkce. Bývalé externí funkce již nemohou být používány."
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+"%s: Nekompatibilní vstupní argumenty #%d a #%d: OÄekávány stejné velikosti.\n"
+
+#, c-format
+msgid "%s: SVD and QR not implemented in sparse.\n"
+msgstr "%s: SVD a QR nejsou v rozptýlení zavedeni.\n"
+
+#, c-format
+msgid "%s: This feature has not been implemented.\n"
+msgstr "%s: Tato funkce nebyla zavedena.\n"
+
+msgid "Conflicting linear constraints."
+msgstr "Sporná lineární omezení."
+
+msgid "Recomputing initial guess"
+msgstr "Znovu poÄítání úvodního odhadu"
+
+#, c-format
+msgid "Possible Conflicting linear constraints, error in the order of %s"
+msgstr "Možné sporné lineární omezení, chyba v řádu %s"
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d or %d expected.\n"
+msgstr "%s: Å patný poÄet vstupních argumentů: OÄekávány %d nebo %d.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr "%s: Špatná hodnota vstupního argumentu #%d: Musí být v sadě {%s}.\n"
+
+#, c-format
+msgid "%s: Singular pencil."
+msgstr "%s: Jednotná tužka."
+
+#, c-format
+msgid ""
+"%s: Function not defined for type '%s'. Check argument or define function %s."
+msgstr ""
+"%s: Funkce není pro typ '%s' definována. Zkontrolujte argument nebo zadejte "
+"funkci %s."
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d expected.\n"
+msgstr "%s: Å patný poÄet vstupních argumentů: OÄekáváno %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Non-negative integer expected.\n"
+msgstr ""
+"%s: Å patná hodnota vstupního argumentu #%d: OÄekáváno nezáporné celé Äíslo.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: Å patná velikost vstupního argumentu #%d: OÄekávána Ätvercová matice.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative scalar expected.\n"
+msgstr ""
+"%s: Å patné hodnoty vstupního argumentu #%d: OÄekáván nezáporný skalár.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Symmetric expected"
+msgstr "%s: Å patná velikost vstupního argumentu #%d: OÄekávána soumÄ›rnost"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Not semi-definite positive"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: Není kladně semidefinitní"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: Špatný typ vstupního argumentu #%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Requested rank is greater than "
+"matrix dimension."
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: Požadovaná hodnost větší než "
+"rozměry matice."
diff --git a/modules/linear_algebra/locales/de_DE.po b/modules/linear_algebra/locales/de_DE.po
new file mode 100755
index 000000000..9365386f4
--- /dev/null
+++ b/modules/linear_algebra/locales/de_DE.po
@@ -0,0 +1,224 @@
+# German translation for scilab
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2012-10-30 18:24+0000\n"
+"Last-Translator: Dennis Baudys <Unknown>\n"
+"Language-Team: German <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: de\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"
+msgstr ""
+"%s: Falscher Typ für Eingangsargument #%d: Reale oder komplexe Matrix "
+"erwartet.\n"
+
+#, c-format
+msgid "%s: Non convergence in QR steps.\n"
+msgstr "%s: keine Konvergenz in QR Stufen.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: Real or complex matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: String or integer expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s, or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A real expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A real scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real matrix expected.\n"
+msgstr "%s: Falscher Typ für Eingangsargument #%d: Reale Matrix erwartet.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Polynomial expected."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: must not contain %s or %s.\n"
+msgstr ""
+"%s: Falscher Wert für Eingangsargument #%d: Es muss %s oder %s enthalten "
+"sein.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A matrix expected.\n"
+msgstr ""
+"%s: Falscher Typ für Eingangsargument #%d: Eine Matrix wird erwartet.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A scalar or a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: must be %d, %d, %s, '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d to %d expected.\n"
+msgstr ""
+"%s: Falsche Anzahl von Eingangsargumenten: Zwischen %d und %d werden "
+"erwartet.\n"
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr "%s: Falsche Größe des Eingangsarguments #%d: Skalar wird erwartet.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative integers expected.\n"
+msgstr ""
+"%s: falscher Wert für Eingangsargument #%d: nicht-negative Integer "
+"erwartet.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A column vector expected.\n"
+msgstr ""
+"%s: falsche Größe für Eingangsargument #%d: ein Spaltenvektor erwartet.\n"
+
+#, c-format
+msgid "%s: Obsolete function. Please replace '%s' by '%s'."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Obsolete function. Former external functions cannot be used anymore."
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+"%s: Inkompatible Eingangsargumente #%d und #%d: Gleiche Größen werden "
+"erwartet.\n"
+
+#, c-format
+msgid "%s: SVD and QR not implemented in sparse.\n"
+msgstr "%s: SVD und QR nicht implementiert.\n"
+
+#, c-format
+msgid "%s: This feature has not been implemented.\n"
+msgstr "%s: diese Funktion wurde nicht implementiert.\n"
+
+msgid "Conflicting linear constraints."
+msgstr ""
+
+msgid "Recomputing initial guess"
+msgstr ""
+
+#, c-format
+msgid "Possible Conflicting linear constraints, error in the order of %s"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d or %d expected.\n"
+msgstr ""
+"%s: Unerwartete Anzahl von Eingangsargumenten: %d oder %d erwartet.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+"%s: falscher Wert für Eingangsargument #%d: muß sich im Satz {%s} befinden.\n"
+
+#, c-format
+msgid "%s: Singular pencil."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Function not defined for type '%s'. Check argument or define function %s."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d expected.\n"
+msgstr "%s: falsche Anzahl von Eingangsargumenten: %d erwartet.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Non-negative integer expected.\n"
+msgstr ""
+"%s: falscher Wert für Eingabeargument #%d: nicht-negativer Integer "
+"erwartet.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: falsche Größe für Eingangsargument #%d: eine N x N Matrix erwartet.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative scalar expected.\n"
+msgstr ""
+"%s: falscher Wert für Eingangsargument #%d: nicht-negativer Skalar "
+"erwartet.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Symmetric expected"
+msgstr "%s: falsche Größe für Eingangsargument #%d: Symetrie erwartet"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Not semi-definite positive"
+msgstr ""
+"%s: falscher Wert für Eingangsargument '%d: nicht semi-definite positive Zahl"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: falscher Typ für Eingangsargument #%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Requested rank is greater than "
+"matrix dimension."
+msgstr ""
+"%s: falscher Wert für Eingabeargument #%d: angefragter Rang ist größer als "
+"die Dimension der Matrix."
diff --git a/modules/linear_algebra/locales/es_ES.po b/modules/linear_algebra/locales/es_ES.po
new file mode 100755
index 000000000..2589801cd
--- /dev/null
+++ b/modules/linear_algebra/locales/es_ES.po
@@ -0,0 +1,226 @@
+# Spanish translation for scilab
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2011-09-01 09:53+0000\n"
+"Last-Translator: Scilab.team <Unknown>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: es\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"
+msgstr ""
+"%s: Tipo incorrecto del argumento de entrada #%d: Se esperaba una matriz "
+"Real o Compleja.\n"
+
+#, c-format
+msgid "%s: Non convergence in QR steps.\n"
+msgstr "%s: No hay convergencia en los pasos QR.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: Real or complex matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: String or integer expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s, or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A real expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A real scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real matrix expected.\n"
+msgstr ""
+"%s:Tipo incorrecto del argumento de entrada #%d: Se esperaba una matriz "
+"real.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Polynomial expected."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: must not contain %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A scalar or a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: must be %d, %d, %s, '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+"%s: Tamaño incorrecto del argumento de entrada #%d: Se esperaba un escalar.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative integers expected.\n"
+msgstr ""
+"%s: Valores incorrectos del argumento de entrada #%d: Se esperaban enteros "
+"no-negativos.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A column vector expected.\n"
+msgstr ""
+"%s: Tamaño incorrecto del argumento de entrada #%d: Se esperaba un vector "
+"columna.\n"
+
+#, c-format
+msgid "%s: Obsolete function. Please replace '%s' by '%s'."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Obsolete function. Former external functions cannot be used anymore."
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+"%s: Argumentos de entrada #%d y #%d incompatibles: Se los esperaba del mismo "
+"tamaño.\n"
+
+#, c-format
+msgid "%s: SVD and QR not implemented in sparse.\n"
+msgstr "%s: SVD y QR no implementadas en dispersión.\n"
+
+#, c-format
+msgid "%s: This feature has not been implemented.\n"
+msgstr "%s: Esta función aun no ha sido implementada.\n"
+
+msgid "Conflicting linear constraints."
+msgstr ""
+
+msgid "Recomputing initial guess"
+msgstr ""
+
+#, c-format
+msgid "Possible Conflicting linear constraints, error in the order of %s"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d or %d expected.\n"
+msgstr ""
+"%s: Número incorrecto de argumentos de entrada: Se esperaban %d ó %d.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+"%s: Valor incorrecto del argumento de entrada #%d: Debe estar en el conjunto "
+"{%s}.\n"
+
+#, c-format
+msgid "%s: Singular pencil."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Function not defined for type '%s'. Check argument or define function %s."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d expected.\n"
+msgstr "%s: Número incorrecto de argumento(s) de entrada: Se esperaban %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Non-negative integer expected.\n"
+msgstr ""
+"%s: Valor incorrecto del argumento de entrada #%d: Se esperaban enteros "
+"positivos.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: Tamaño incorrecto del argumento de entrada #%d: Se esperaba una matriz "
+"cuadrada.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative scalar expected.\n"
+msgstr ""
+"%s: Valores incorrectos del argumentos de entrada #%d: Se esperaban "
+"escalares no-negativos.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Symmetric expected"
+msgstr ""
+"%s: Tamaño incorrecto del argumento de entrada #%d: Se esperaba uno simétrico"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Not semi-definite positive"
+msgstr ""
+"%s: Valor incorrecto del argumento de entrada #%d: No positivo semi-definido"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: Tipo incorrecto del argumento de entrada #%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Requested rank is greater than "
+"matrix dimension."
+msgstr ""
+"%s: Valor incorrecto del argumento de entrada #%d: El rango pedido es mayor "
+"que la dimensión de la matriz."
diff --git a/modules/linear_algebra/locales/fr_FR.po b/modules/linear_algebra/locales/fr_FR.po
new file mode 100755
index 000000000..83494ceed
--- /dev/null
+++ b/modules/linear_algebra/locales/fr_FR.po
@@ -0,0 +1,249 @@
+# French translation for scilab
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2014-04-01 10:47+0000\n"
+"Last-Translator: Vincent Couvert <Unknown>\n"
+"Language-Team: French <fr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: fr\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Une matrice réelle ou "
+"complexe attendue.\n"
+
+#, c-format
+msgid "%s: Non convergence in QR steps.\n"
+msgstr "%s : Non convergence des itérations QR.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s : Impossible de lire l'argument d'entrée n°%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: Real or complex matrix expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument n°%d : Une matrice réelle ou complexe "
+"attendue.\n"
+
+#, c-format
+msgid "%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument n°%d : Ne doit pas contenir Nan ou Inf.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: String or integer expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Une chaîne de caractères ou "
+"un entier attendu.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A string expected.\n"
+msgstr ""
+"%s : Dimension erronée de l'argument d'entrée n°%d : Une chaîne de "
+"caractères attendue.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s, or %s expected.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : %s, %s, %s, ou %s "
+"attendu.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : %s, %s, %s ou %s attendu.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A real expected.\n"
+msgstr "%s : Type erroné de l'argument d'entrée n°%d : Un réel attendu.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A real scalar expected.\n"
+msgstr ""
+"%s : Dimension erronée de l'argument d'entrée n°%d : Un scalaire réel "
+"attendu.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real scalar expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Un scalaire réel attendu.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real matrix expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Une matrice réelle attendue.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Polynomial expected."
+msgstr "%s : Type erroné de l'argument d'entrée n°%d : Un polynôme attendu."
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: must not contain %s or %s.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Doit contenir %s ou %s.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A matrix expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Une matrice attendue.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Une matrice carrée attendue.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A scalar or a string expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Un scalaire ou une chaîne de "
+"caractères attendu.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: must be %d, %d, %s, '%s' or '%s'.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Doit être %d, %d, %s, '%s' "
+"ou '%s'.\n"
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d to %d expected.\n"
+msgstr "%s : Nombre erroné d'argument(s) d'entrée : %d à %d attendu(s).\n"
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d to %d expected.\n"
+msgstr "%s : Nombre erroné d'arguments d'entrée : %d à %d attendus.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+"%s : Dimension erronée de l'argument d'entrée n°%d : Un scalaire attendu.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative integers expected.\n"
+msgstr ""
+"%s : Valeurs erronées de l'argument d'entrée n°%d : Un entier positif "
+"attendu.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A column vector expected.\n"
+msgstr ""
+"%s : Dimension erronée de l'argument d'entrée n°%d : Un vecteur colonne "
+"attendu.\n"
+
+#, c-format
+msgid "%s: Obsolete function. Please replace '%s' by '%s'."
+msgstr "%s : Fonction obsolète. Veuillez remplacer '%s' par '%s'."
+
+#, c-format
+msgid ""
+"%s: Obsolete function. Former external functions cannot be used anymore."
+msgstr ""
+"%s : Fonction obsolète. Les anciennes fonctions externes ne peuvent plus "
+"être utilisées dorénavant."
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+"%s : Arguments d'entrée n°%d et n°%d incompatibles : Mêmes dimensions "
+"attendues.\n"
+
+#, c-format
+msgid "%s: SVD and QR not implemented in sparse.\n"
+msgstr "%s : SVD et QR ne sont pas implémentés pour sparse.\n"
+
+#, c-format
+msgid "%s: This feature has not been implemented.\n"
+msgstr "%s : Cette fonction n'a pas été implémentée.\n"
+
+msgid "Conflicting linear constraints."
+msgstr "Contraintes linéaires en conflit."
+
+msgid "Recomputing initial guess"
+msgstr "Recalcul de l'estimation initiale"
+
+#, c-format
+msgid "Possible Conflicting linear constraints, error in the order of %s"
+msgstr ""
+"Possibilité de contraintes linéaires en conflit, erreur de l'ordre de %s"
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d or %d expected.\n"
+msgstr "%s : Nombre erroné d'arguments d'entrée : %d ou %d attendus.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Doit être dans l'ensemble "
+"{%s}.\n"
+
+#, c-format
+msgid "%s: Singular pencil."
+msgstr "%s : Faisceau singulier."
+
+#, c-format
+msgid ""
+"%s: Function not defined for type '%s'. Check argument or define function %s."
+msgstr ""
+"%s : Fonction non définie pour le type '%s'. Veuillez vérifier l'argument ou "
+"définissez la fonction %s."
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d expected.\n"
+msgstr "%s : Nombre erroné d'argument(s) d'entrée : %d attendu(s).\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Non-negative integer expected.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Un entier positif "
+"attendu.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s : Dimension erronée de l'argument d'entrée n°%d : Une matrice carrée "
+"attendue.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative scalar expected.\n"
+msgstr ""
+"%s : Valeurs erronées de l'argument d'entrée n°%d : Un scalaire positif "
+"attendu.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Symmetric expected"
+msgstr ""
+"%s : Dimension erronée de l'argument d'entrée n°%d : Une symétrique attendue"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Not semi-definite positive"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Non positive semi-définie"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s : Type erroné de l'argument d'entrée n°%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Requested rank is greater than "
+"matrix dimension."
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Le rang demandé est plus "
+"grand que la dimension de la matrice."
diff --git a/modules/linear_algebra/locales/it_IT.po b/modules/linear_algebra/locales/it_IT.po
new file mode 100755
index 000000000..5ddc65b83
--- /dev/null
+++ b/modules/linear_algebra/locales/it_IT.po
@@ -0,0 +1,268 @@
+# Italian translation for scilab
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2015-02-15 21:50+0000\n"
+"Last-Translator: Carml <mighty.carml@gmail.com>\n"
+"Language-Team: Italian <it@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: it\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era attesa una matrice "
+"reale o complessa.\n"
+
+#, c-format
+msgid "%s: Non convergence in QR steps.\n"
+msgstr "%s: Non c'è convergenza nei passi di QR.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: Impossibile leggere l'argomento in ingresso #%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: Real or complex matrix expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era attesa una matrice "
+"reale o complessa.\n"
+
+#, c-format
+msgid "%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: non deve contenere "
+"un NaN o un Inf.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: String or integer expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era attesa una stringa "
+"o un intero.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A string expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha una dimensione sbagliata: era attesa una "
+"stringa.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s, or %s expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: era atteso %s, %s, "
+"%s, o %s.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"
+msgstr ""
+"%s: L' argomento in ingresso #%d ha un valore sbagliato: era atteso %s, %s, "
+"%s o %s.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A real expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era atteso un numero "
+"reale.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A real scalar expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha una dimensione sbagliata: era atteso uno "
+"scalare reale.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real scalar expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era atteso uno scalare "
+"reale.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real matrix expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era attesa una matrice "
+"reale.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Polynomial expected."
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era atteso un polinomio."
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: must not contain %s or %s.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: non deve contenere "
+"%s o %s.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A matrix expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era attesa una "
+"matrice.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era attesa una matrice "
+"quadrata.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A scalar or a string expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era atteso uno scalare "
+"o una stringa.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: must be %d, %d, %s, '%s' or '%s'.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: deve essere %d, %d, "
+"%s, ''%s'' o ''%s''.\n"
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d to %d expected.\n"
+msgstr ""
+"%s: Il numero degli argomenti in ingresso è sbagliato: era atteso da %d a "
+"%d.\n"
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d to %d expected.\n"
+msgstr ""
+"%s: Il numero degli argomenti in ingresso è sbagliato: era atteso da %d a "
+"%d.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha una dimensione sbagliata: era atteso uno "
+"scalare.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative integers expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha dei valori sbagliati: erano attesi degli "
+"interi non-negativi.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A column vector expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha una dimensione sbagliata: era atteso un "
+"vettore colonna.\n"
+
+#, c-format
+msgid "%s: Obsolete function. Please replace '%s' by '%s'."
+msgstr "%s: Funzione obsoleta. Rimpiazzare \"%s\" con \"%s\"."
+
+#, c-format
+msgid ""
+"%s: Obsolete function. Former external functions cannot be used anymore."
+msgstr ""
+"%s: Funzione obsoleta. Le precedenti funzioni esterne non si possono più "
+"usare."
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+"%s: Gli argomenti in ingresso #%d e #%d sono incompatibili: erano attese le "
+"stesse dimensioni.\n"
+
+#, c-format
+msgid "%s: SVD and QR not implemented in sparse.\n"
+msgstr "%s: SVD e QR non implementati nel modulo sparse.\n"
+
+#, c-format
+msgid "%s: This feature has not been implemented.\n"
+msgstr "%s: Questa caratteristica non è stata sviluppata.\n"
+
+msgid "Conflicting linear constraints."
+msgstr "Vincoli lineari contrastanti."
+
+msgid "Recomputing initial guess"
+msgstr "Ricalcolo del tentativo iniziale"
+
+#, c-format
+msgid "Possible Conflicting linear constraints, error in the order of %s"
+msgstr "Possibili vincoli lineari contrastanti, errore nell'ordine di %s"
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d or %d expected.\n"
+msgstr ""
+"%s: Il numero degli argomenti in ingresso è sbagliato: ne erano attesi %d o "
+"%d.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: deve essere "
+"nell'insieme {%s}.\n"
+
+#, c-format
+msgid "%s: Singular pencil."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Function not defined for type '%s'. Check argument or define function %s."
+msgstr ""
+"%s: Funzione non definita per il tipo \"%s\". Controllare l'argomento o "
+"definire la funzione %s."
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d expected.\n"
+msgstr ""
+"%s: Il numero degli argomenti in ingresso è sbagliato: ne erano attesi %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Non-negative integer expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: erano attesi degli "
+"interi non-negativi.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha una dimensione sbagliata: era attesa una "
+"matrice quadrata.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative scalar expected.\n"
+msgstr ""
+"%s:L'argomento in ingresso #%d ha dei valori sbagliati: era atteso uno "
+"scalare non-negativo.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Symmetric expected"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha una dimensione sbagliata: era atteso "
+"simmetrico"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Not semi-definite positive"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha una dimensione sbagliata: non è un "
+"positivo semi-definito"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: L'argomento in ingresso #%d è di tipo sbagliato.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Requested rank is greater than "
+"matrix dimension."
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: il rango richiesto è "
+"maggiore della dimensione della matrice."
diff --git a/modules/linear_algebra/locales/ja_JP.po b/modules/linear_algebra/locales/ja_JP.po
new file mode 100755
index 000000000..46940d273
--- /dev/null
+++ b/modules/linear_algebra/locales/ja_JP.po
@@ -0,0 +1,206 @@
+# Japanese translation for scilab
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2014-04-05 01:54+0000\n"
+"Last-Translator: Rui Hirokawa <Unknown>\n"
+"Language-Team: Japanese <z-saito@guitar.ocn.ne.jp>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"X-Poedit-Country: Japan\n"
+"Language: ja\n"
+"X-Poedit-Language: Japanese\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"
+msgstr "%s: 入力引数 #%d ã®åž‹ã«èª¤ã‚ŠãŒã‚ã‚Šã¾ã™: 実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—を指定ã—ã¦ãã ã•ã„.\n"
+
+#
+# File: sci_gateway/c/sci_bdiag.c, line: 97
+#, c-format
+msgid "%s: Non convergence in QR steps.\n"
+msgstr "%s: QRå復ãŒåŽæŸã—ã¾ã›ã‚“。\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: 入力引数 #%d を読ã¿è¾¼ã‚ã¾ã›ã‚“.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: Real or complex matrix expected.\n"
+msgstr "%s: 引数 #%d ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™: 実数ã¾ãŸã¯è¤‡ç´ æ•°ã®è¡Œåˆ—を指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"
+msgstr "%s: 引数 #%d ã®å€¤ãŒé–“é•ã£ã¦ã„ã¾ã™: NaN ã¾ãŸã¯ Inf ã‚’å«ã‚ã¦ã¯ã„ã‘ã¾ã›ã‚“.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: String or integer expected.\n"
+msgstr "%s: 入力引数 #%d ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™: 文字列ã¾ãŸã¯æ•´æ•°ã‚’指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A string expected.\n"
+msgstr "%s: 入力引数 #%d ã®å¤§ãã•ãŒé–“é•ã£ã¦ã„ã¾ã™: 文字列を指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s, or %s expected.\n"
+msgstr "%s: 入力引数 #%d ã®å€¤ãŒé–“é•ã£ã¦ã„ã¾ã™: %s, %s, %s, ã¾ãŸã¯ %s を指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"
+msgstr "%s: 入力引数 #%d ã®å€¤ãŒé–“é•ã£ã¦ã„ã¾ã™: %s, %s, %s ã¾ãŸã¯ %s を指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A real expected.\n"
+msgstr "%s: 入力引数 #%d ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™: 実数を指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A real scalar expected.\n"
+msgstr "%s: 入力引数 #%d ã®å¤§ãã•ãŒé–“é•ã£ã¦ã„ã¾ã™: 実数ã®ã‚¹ã‚«ãƒ©ãƒ¼ã‚’1ã¤æŒ‡å®šã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real scalar expected.\n"
+msgstr "%s: 入力引数 #%d ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™: 実スカラーを指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real matrix expected.\n"
+msgstr "%s: 入力引数 #%d ã®åž‹ã«èª¤ã‚ŠãŒã‚ã‚Šã¾ã™: 実数行列を指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Polynomial expected."
+msgstr "%s: 入力引数 #%d ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™: 多項å¼ã‚’指定ã—ã¦ãã ã•ã„."
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: must not contain %s or %s.\n"
+msgstr "%s: 入力引数 #%d ã®å€¤ãŒé–“é•ã£ã¦ã„ã¾ã™: %s ã¾ãŸã¯ %s ã‚’å«ã‚€ã“ã¨ã¯ã§ãã¾ã›ã‚“.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A matrix expected.\n"
+msgstr "%s: 入力引数 #%d ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™: 行列を指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr "%s: 入力引数 #%d ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™: 正方行列を指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A scalar or a string expected.\n"
+msgstr "%s: 入力引数 #%d ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™: スカラーã¾ãŸã¯æ–‡å­—列を指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: must be %d, %d, %s, '%s' or '%s'.\n"
+msgstr "%s: 入力引数 #%d ã®å€¤ãŒé–“é•ã£ã¦ã„ã¾ã™: %d, %d, %s, '%s' ã¾ãŸã¯ '%s'ã¨ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d to %d expected.\n"
+msgstr "%s: 入力引数ã®æ•°ãŒèª¤ã£ã¦ã„ã¾ã™: %d ã‹ã‚‰ %d を指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d to %d expected.\n"
+msgstr "%s: 入力引数ã®æ•°ãŒé–“é•ã£ã¦ã„ã¾ã™: %d ã‹ã‚‰ %d 個ã®å¼•æ•°ã‚’指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr "%s: 入力引数 #%d ã®å¤§ãã•ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“: スカラーを1ã¤æŒ‡å®šã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative integers expected.\n"
+msgstr "%s: 入力引数 #%d ã®å€¤ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“: éžè² ã®æ•´æ•°ã‚’指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A column vector expected.\n"
+msgstr "%s: 入力引数 #%d ã®å¤§ãã•ãŒé–“é•ã£ã¦ã„ã¾ã™: 列ベクトルを指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Obsolete function. Please replace '%s' by '%s'."
+msgstr "%s: 廃止ã•ã‚ŒãŸé–¢æ•°ã§ã™. '%s' ã‚’ '%s' ã§ç½®ãæ›ãˆã¦ãã ã•ã„."
+
+#, c-format
+msgid ""
+"%s: Obsolete function. Former external functions cannot be used anymore."
+msgstr "%s: 廃止ã•ã‚ŒãŸé–¢æ•°. 以å‰ã®å¤–部関数ã¯ã‚‚ã†ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“."
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr "%s: 入力引数 #%d 㨠#%d ã§äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“: 大ãã•ã‚’åŒã˜ã«ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: SVD and QR not implemented in sparse.\n"
+msgstr "%s: 疎行列用ã®SVDã¨QRã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“.\n"
+
+#, c-format
+msgid "%s: This feature has not been implemented.\n"
+msgstr "%s: ã“ã®æ©Ÿèƒ½ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“.\n"
+
+msgid "Conflicting linear constraints."
+msgstr "線形拘æŸã«ã‹ã‹ã£ã¦ã„ã¾ã™."
+
+msgid "Recomputing initial guess"
+msgstr "åˆæœŸæŽ¨å®šå€¤ã‚’å†è¨ˆç®—中"
+
+#, c-format
+msgid "Possible Conflicting linear constraints, error in the order of %s"
+msgstr "線形拘æŸãŒè¡çªã—, %s 次ã®èª¤å·®ãŒç™ºç”Ÿã—ãŸå¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™"
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d or %d expected.\n"
+msgstr "%s: 入力引数ã®æ•°ãŒé–“é•ã£ã¦ã„ã¾ã™: %d ã¾ãŸã¯ %d 個ã®å¼•æ•°ã‚’指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr "%s: 入力引数 #%d ã®å€¤ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“: é›†åˆ {%s} ã«å«ã¾ã‚Œã‚‹å€¤ã‚’指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Singular pencil."
+msgstr "%s: 特異ãªãƒšãƒ³ã‚·ãƒ«."
+
+#, c-format
+msgid ""
+"%s: Function not defined for type '%s'. Check argument or define function %s."
+msgstr "%s: 関数ãŒåž‹ '%s' ã«ã¤ã„ã¦æœªå®šç¾©ã§ã™. 引数を確èªã¾ãŸã¯é–¢æ•° %s を定義ã—ã¦ãã ã•ã„."
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d expected.\n"
+msgstr "%s: 入力引数ã®æ•°ã«èª¤ã‚ŠãŒã‚ã‚Šã¾ã™: %d 個ã®å¼•æ•°ã‚’指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Non-negative integer expected.\n"
+msgstr "%s: 入力引数 #%d ã®å€¤ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“: éžè² ã®æ•´æ•°ã‚’指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A square matrix expected.\n"
+msgstr "%s: 入力引数 #%d ã®å¤§ãã•ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“: 正方行列を指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative scalar expected.\n"
+msgstr "%s: 入力引数 #%d ã®å€¤ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“: éžè² ã®ã‚¹ã‚«ãƒ©ãƒ¼ã‚’指定ã—ã¦ãã ã•ã„.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Symmetric expected"
+msgstr "%s: 入力引数 #%d ã®å¤§ãã•ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“:対称行列を指定ã—ã¦ãã ã•ã„."
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Not semi-definite positive"
+msgstr "%s: 入力引数 #%d ã®å€¤ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“: åŠæ­£å®šå€¤ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: 入力引数 #%d ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Requested rank is greater than "
+"matrix dimension."
+msgstr "%s: 入力引数 #%d ã®å€¤ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“: 指定ã•ã‚ŒãŸéšŽæ•°ã¯è¡Œåˆ—ã®æ¬¡å…ƒã‚’超ãˆã¦ã„ã¾ã™."
diff --git a/modules/linear_algebra/locales/linear_algebra.pot b/modules/linear_algebra/locales/linear_algebra.pot
new file mode 100755
index 000000000..fa27fabff
--- /dev/null
+++ b/modules/linear_algebra/locales/linear_algebra.pot
@@ -0,0 +1,341 @@
+# Localization of the module linear_algebra
+# Please see in SCI/tools/localization for localization management
+# Copyright (C) 2007-2008 - INRIA
+# Copyright (C) 2008-2011 - DIGITEO
+# Copyright (C) 2012-2014 - Scilab-Enterprises
+# This file is distributed under the same license as the Scilab package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"Last-Translator: Vincent COUVERT <vincent.couvert@scilab-enterprises.com>\n"
+"Language-Team: Scilab Localization <localization@lists.scilab.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Revision-Date: 2015-03-27 13:54+0100\n"
+
+# File: sci_gateway/c/sci_backslash.c, line: 66
+# File: sci_gateway/c/sci_backslash.c, line: 87
+# File: sci_gateway/c/sci_backslash.c, line: 94
+# File: sci_gateway/c/sci_balanc.c, line: 55
+# File: sci_gateway/c/sci_balanc.c, line: 93
+# File: sci_gateway/c/sci_balanc.c, line: 116
+# File: sci_gateway/c/sci_balanc.c, line: 123
+# File: sci_gateway/c/sci_chol.c, line: 49
+# File: sci_gateway/c/sci_det.c, line: 48
+# File: sci_gateway/c/sci_hess.c, line: 47
+# File: sci_gateway/c/sci_inv.c, line: 49
+# File: sci_gateway/c/sci_lsq.c, line: 86
+# File: sci_gateway/c/sci_lsq.c, line: 94
+# File: sci_gateway/c/sci_lu.c, line: 49
+# File: sci_gateway/c/sci_qr.c, line: 83
+# File: sci_gateway/c/sci_qr.c, line: 102
+# File: sci_gateway/c/sci_qr.c, line: 125
+# File: sci_gateway/c/sci_qr.c, line: 132
+# File: sci_gateway/c/sci_qr.c, line: 138
+# File: sci_gateway/c/sci_rcond.c, line: 51
+# File: sci_gateway/c/sci_schur.c, line: 74
+# File: sci_gateway/c/sci_schur.c, line: 95
+# File: sci_gateway/c/sci_schur.c, line: 184
+# File: sci_gateway/c/sci_schur.c, line: 235
+# File: sci_gateway/c/sci_schur.c, line: 250
+# File: sci_gateway/c/sci_schur.c, line: 261
+# File: sci_gateway/c/sci_slash.c, line: 64
+# File: sci_gateway/c/sci_slash.c, line: 85
+# File: sci_gateway/c/sci_slash.c, line: 92
+# File: sci_gateway/c/sci_spec.c, line: 72
+# File: sci_gateway/c/sci_spec.c, line: 109
+# File: sci_gateway/c/sci_spec.c, line: 128
+# File: sci_gateway/c/sci_spec.c, line: 134
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_bdiag.c, line: 109
+#, c-format
+msgid "%s: Non convergence in QR steps.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_norm.c, line: 52
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_norm.c, line: 70
+# File: sci_gateway/c/sci_norm.c, line: 90
+#, c-format
+msgid "%s: Wrong type for argument #%d: Real or complex matrix expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_norm.c, line: 79
+# File: sci_gateway/c/sci_norm.c, line: 98
+#, c-format
+msgid "%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_norm.c, line: 150
+#, c-format
+msgid "%s: Wrong type for input argument #%d: String or integer expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_norm.c, line: 158
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A string expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_norm.c, line: 165
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s, or %s expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_norm.c, line: 173
+# File: sci_gateway/c/sci_norm.c, line: 226
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_norm.c, line: 196
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A real expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_norm.c, line: 202
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A real scalar expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_qr.c, line: 63
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real scalar expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_schur.c, line: 114
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real matrix expected.\n"
+msgstr ""
+
+# File: macros/companion.sci, line: 20
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Polynomial expected."
+msgstr ""
+
+#
+# File: macros/cond.sci, line: 22
+#, c-format
+msgid "%s: Wrong value for input argument #%d: must not contain %s or %s.\n"
+msgstr ""
+
+#
+# File: macros/cond.sci, line: 35
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A matrix expected.\n"
+msgstr ""
+
+#
+# File: macros/cond.sci, line: 45
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+
+#
+# File: macros/cond.sci, line: 48
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A scalar or a string expected.\n"
+msgstr ""
+
+#
+# File: macros/cond.sci, line: 51
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: must be %d, %d, %s, '%s' or '%s'.\n"
+msgstr ""
+
+#
+# File: macros/cond.sci, line: 56
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d to %d expected.\n"
+msgstr ""
+
+#
+# File: macros/diff.sci, line: 13
+#, c-format
+msgid "%s: Wrong number of input arguments: %d to %d expected.\n"
+msgstr ""
+
+#
+# File: macros/diff.sci, line: 22
+# File: macros/diff.sci, line: 31
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+
+#
+# File: macros/diff.sci, line: 26
+# File: macros/diff.sci, line: 35
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative integers expected.\n"
+msgstr ""
+
+#
+# File: macros/givens.sci, line: 24
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A column vector expected.\n"
+msgstr ""
+
+#
+# File: macros/gschur.sci, line: 21
+# File: macros/gschur.sci, line: 37
+# File: macros/gspec.sci, line: 13
+#, c-format
+msgid "%s: Obsolete function. Please replace '%s' by '%s'."
+msgstr ""
+
+#
+# File: macros/gschur.sci, line: 29
+#, c-format
+msgid ""
+"%s: Obsolete function. Former external functions cannot be used anymore."
+msgstr ""
+
+#
+# File: macros/im_inv.sci, line: 22
+# File: macros/spaninter.sci, line: 26
+# File: macros/spanplus.sci, line: 26
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+
+#
+# File: macros/kernel.sci, line: 31
+#, c-format
+msgid "%s: SVD and QR not implemented in sparse.\n"
+msgstr ""
+
+#
+# File: macros/kernel.sci, line: 61
+#, c-format
+msgid "%s: This feature has not been implemented.\n"
+msgstr ""
+
+#
+# File: macros/linsolve.sci, line: 24
+msgid "Conflicting linear constraints."
+msgstr ""
+
+#
+# File: macros/linsolve.sci, line: 33
+msgid "Recomputing initial guess"
+msgstr ""
+
+#
+# File: macros/linsolve.sci, line: 72
+#, c-format
+msgid "Possible Conflicting linear constraints, error in the order of %s"
+msgstr ""
+
+#
+# File: macros/nlev.sci, line: 23
+#, c-format
+msgid "%s: Wrong number of input arguments: %d or %d expected.\n"
+msgstr ""
+
+#
+# File: macros/pbig.sci, line: 30
+# File: macros/psmall.sci, line: 31
+# File: macros/rowcomp.sci, line: 42
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+
+#
+# File: macros/penlaur.sci, line: 30
+# File: macros/rowshuff.sci, line: 33
+#, c-format
+msgid "%s: Singular pencil."
+msgstr ""
+
+#
+# File: macros/pinv.sci, line: 38
+# File: macros/rank.sci, line: 30
+# File: macros/rref.sci, line: 42
+#, c-format
+msgid ""
+"%s: Function not defined for type '%s'. Check argument or define function %s."
+msgstr ""
+
+#
+# File: macros/randpencil.sci, line: 30
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d expected.\n"
+msgstr ""
+
+#
+# File: macros/range.sci, line: 18
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Non-negative integer expected.\n"
+msgstr ""
+
+#
+# File: macros/range.sci, line: 21
+# File: macros/trace.sci, line: 17
+# File: macros/trace.sci, line: 23
+# File: macros/trace.sci, line: 31
+# File: macros/trace.sci, line: 41
+# File: macros/trace.sci, line: 50
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A square matrix expected.\n"
+msgstr ""
+
+#
+# File: macros/rowcomp.sci, line: 33
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative scalar expected.\n"
+msgstr ""
+
+#
+# File: macros/sqroot.sci, line: 14
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Symmetric expected"
+msgstr ""
+
+#
+# File: macros/sqroot.sci, line: 18
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Not semi-definite positive"
+msgstr ""
+
+#
+# File: macros/squeeze.sci, line: 34
+# File: macros/trace.sci, line: 35
+# File: macros/trace.sci, line: 45
+# File: macros/trace.sci, line: 54
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr ""
+
+#
+# File: macros/sva.sci, line: 22
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Requested rank is greater than "
+"matrix dimension."
+msgstr ""
diff --git a/modules/linear_algebra/locales/pl_PL.po b/modules/linear_algebra/locales/pl_PL.po
new file mode 100755
index 000000000..6c59fff94
--- /dev/null
+++ b/modules/linear_algebra/locales/pl_PL.po
@@ -0,0 +1,233 @@
+# Polish translation for scilab
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2012-10-25 20:48+0000\n"
+"Last-Translator: Grzegorz Szostek <Unknown>\n"
+"Language-Team: Polish <pl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: pl\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"
+msgstr ""
+"%s: Nieprawidłowy typ dla argumentu wejściowego nr %d: Oczekiwano macierzy "
+"liczb rzeczywistych lub zespolonych.\n"
+
+#, c-format
+msgid "%s: Non convergence in QR steps.\n"
+msgstr "%s: Brak zbieżności iteracji QR.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: Real or complex matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: String or integer expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s, or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A real expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A real scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real matrix expected.\n"
+msgstr ""
+"%s: Niewłaściwy typ argumentu wejściowego nr %d: oczekiwana macierz wartości "
+"typu real.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Polynomial expected."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: must not contain %s or %s.\n"
+msgstr ""
+"%s: Nieprawidłowa wartość argumentu wejściowego #%d: nie może zawerać %s ani "
+"%s.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A matrix expected.\n"
+msgstr ""
+"%s: Nieprawidłowy typ dla argumentu wejściowego nr %d: oczekiwana macierz.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A scalar or a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: must be %d, %d, %s, '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d to %d expected.\n"
+msgstr ""
+"%s: Nieprawidłowa liczba argumentów wejściowych: oczekiwano od %d do %d.\n"
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+"%s: Nieprawidłowy rozmiar dla argumentu wejściowego nr %d: Oczekiwany "
+"skalar.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative integers expected.\n"
+msgstr ""
+"%s: Nieprawidłowe wartości argumentu wejściowego nr %d: oczekiwano "
+"nieujemnych wartości całkowitych.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A column vector expected.\n"
+msgstr ""
+"%s: Nieprawidłowy rozmiar argumentu wejściowego nr %d: oczekiwany wektor "
+"kolumnowy.\n"
+
+#, c-format
+msgid "%s: Obsolete function. Please replace '%s' by '%s'."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Obsolete function. Former external functions cannot be used anymore."
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+"%s: Niezgodne argumenty wejściowe nr %d oraz nr %d: Oczekiwany taki sam "
+"rozmiar.\n"
+
+#, c-format
+msgid "%s: SVD and QR not implemented in sparse.\n"
+msgstr "%s: SVD i QR nie zostanie zaimplementowane dla macierzy rzadkich.\n"
+
+#, c-format
+msgid "%s: This feature has not been implemented.\n"
+msgstr "%s: Ta funkcja nie została zrealizowana.\n"
+
+msgid "Conflicting linear constraints."
+msgstr ""
+
+msgid "Recomputing initial guess"
+msgstr ""
+
+#, c-format
+msgid "Possible Conflicting linear constraints, error in the order of %s"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d or %d expected.\n"
+msgstr ""
+"%s: Nieprawidłowa liczba argumentów wejściowych: oczekiwano %d lub %d.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+"%s: Nieprawidłowa wartość parametru wejściowego nr %d: Musi być ze zbioru "
+"{%s}.\n"
+
+#, c-format
+msgid "%s: Singular pencil."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Function not defined for type '%s'. Check argument or define function %s."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d expected.\n"
+msgstr "%s: Nieprawidłowa liczba parametrów wejściowych: oczekiwano %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Non-negative integer expected.\n"
+msgstr ""
+"%s: Nieprawidłowa wartość dla parametru wejściowego nr %d: Oczekiwano "
+"nieujemnej wartość integer.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: Nieprawidłowy rozmiar parametru wejściowego nr %d: oczekiwana macierz "
+"kwadratowa.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative scalar expected.\n"
+msgstr ""
+"%s: Nieprawidłowe wartości argumentu wejściowego nr %d: spodziewana wartość "
+"skalarna.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Symmetric expected"
+msgstr ""
+"%s: Nieprawidłowy rozmiar dla argumentu wejściowego nr %d: Oczekiwano "
+"symetrycznej wielkości"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Not semi-definite positive"
+msgstr ""
+"%s: Nieprawidłowa wartość parametru wejściowego nr %d: nie jest nieujemnie "
+"(półdodatnio) określony."
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: Nieprawidłowy typ dla argumentu wejściowego nr %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Requested rank is greater than "
+"matrix dimension."
+msgstr ""
+"%s: Nieprawidłowa wartość argumentu wejściowego nr %d: Wymagany rząd "
+"macierzy jest większy niż jej wymiar."
diff --git a/modules/linear_algebra/locales/pt_BR.po b/modules/linear_algebra/locales/pt_BR.po
new file mode 100755
index 000000000..6c0e2d2f4
--- /dev/null
+++ b/modules/linear_algebra/locales/pt_BR.po
@@ -0,0 +1,229 @@
+# Brazilian Portuguese translation for scilab
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2011-09-01 09:28+0000\n"
+"Last-Translator: RodolfoRG <rodolforg@gmail.com>\n"
+"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: pt_BR\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"
+msgstr ""
+"%s: Tipo incorreto para o argumento de entrada #%d: esperava-se uma matriz "
+"de números reais ou complexos.\n"
+
+#, c-format
+msgid "%s: Non convergence in QR steps.\n"
+msgstr "%s: Sem convergência das iterações QR.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: Real or complex matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: String or integer expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s, or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A real expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A real scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real matrix expected.\n"
+msgstr ""
+"%s: Tipo incorreto para o argumento de entrada #%d: esperava-se uma matriz "
+"de números reais.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Polynomial expected."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: must not contain %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A scalar or a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: must be %d, %d, %s, '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+"%s: Tamanho incorreto para o argumento de entrada #%d: esperava-se um "
+"escalar.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative integers expected.\n"
+msgstr ""
+"%s: Valores incorretos para o argumento de entrada #%d: esperava-se números "
+"inteiros não negativos.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A column vector expected.\n"
+msgstr ""
+"%s: Tamanho incorreto para o argumento de entrada #%d: esperava-se um vetor "
+"coluna.\n"
+
+#, c-format
+msgid "%s: Obsolete function. Please replace '%s' by '%s'."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Obsolete function. Former external functions cannot be used anymore."
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+"%s: Argumentos de entrada incompatíveis #%d e #%d: esperava-se as mesmas "
+"dimensões.\n"
+
+#, c-format
+msgid "%s: SVD and QR not implemented in sparse.\n"
+msgstr "%s: SVD e QR não implementados para matrizes esparsas.\n"
+
+#, c-format
+msgid "%s: This feature has not been implemented.\n"
+msgstr "%s: Este recurso não foi implementado.\n"
+
+msgid "Conflicting linear constraints."
+msgstr ""
+
+msgid "Recomputing initial guess"
+msgstr ""
+
+#, c-format
+msgid "Possible Conflicting linear constraints, error in the order of %s"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d or %d expected.\n"
+msgstr ""
+"%s: Quantidade incorreta de argumentos de entrada: esperava-se %d ou %d.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+"%s: Valor incorreto para o argumento de entrada #%d: deve pertencer ao "
+"conjunto {%s}.\n"
+
+#, c-format
+msgid "%s: Singular pencil."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Function not defined for type '%s'. Check argument or define function %s."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d expected.\n"
+msgstr "%s: Quantidade incorreta de argumentos de entrada: esperava-se %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Non-negative integer expected.\n"
+msgstr ""
+"%s: Valor incorreto para o argumento de entrada #%d: esperava-se um número "
+"inteiro não negativo.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: Tamanho incorreto para o argumento de entrada #%d: esperava-se uma "
+"matriz quadrada.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative scalar expected.\n"
+msgstr ""
+"%s: Valor incorreto para o argumento de entrada #%d: esperava-se um escalar "
+"não negativo.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Symmetric expected"
+msgstr ""
+"%s: Tamanho incorreto para o argumento de entrada #%d: esperava-se uma "
+"matriz simétrica."
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Not semi-definite positive"
+msgstr ""
+"%s: Valor incorreto para o argumento de entrada #%d: não é um positivo semi-"
+"definido."
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: Tipo incorreto para o argumento de entrada #%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Requested rank is greater than "
+"matrix dimension."
+msgstr ""
+"%s: Valor incorreto para o argumento de entrada #%d: o posto exigido é maior "
+"que a dimensão da matriz."
diff --git a/modules/linear_algebra/locales/ru_RU.po b/modules/linear_algebra/locales/ru_RU.po
new file mode 100755
index 000000000..96b0b12c6
--- /dev/null
+++ b/modules/linear_algebra/locales/ru_RU.po
@@ -0,0 +1,241 @@
+# Russian translation for scilab
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2014-05-31 15:45+0000\n"
+"Last-Translator: Stanislav V. Kroter <krotersv@gmail.com>\n"
+"Language-Team: Russian <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: ru\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"
+msgstr ""
+"%s: Ðеверный тип входного параметра â„–%d: ожидалаÑÑŒ вещеÑÑ‚Ð²ÐµÐ½Ð½Ð°Ñ Ð¸Ð»Ð¸ "
+"комплекÑÐ½Ð°Ñ Ð¼Ð°Ñ‚Ñ€Ð¸Ñ†Ð°.\n"
+
+#, c-format
+msgid "%s: Non convergence in QR steps.\n"
+msgstr "%s: Ðет ÑходимоÑти в шагах QR.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: Ðе могу прочитать входной аргумент â„–%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: Real or complex matrix expected.\n"
+msgstr ""
+"%s: Ðеверный тип аргумента â„–%d: ожидалаÑÑŒ вещеÑÑ‚Ð²ÐµÐ½Ð½Ð°Ñ Ð¸Ð»Ð¸ комплекÑÐ½Ð°Ñ "
+"матрица.\n"
+
+#, c-format
+msgid "%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"
+msgstr ""
+"%s: Ðеверное значение аргумента â„–%d: не должно Ñодержать NaN или Inf.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: String or integer expected.\n"
+msgstr ""
+"%s: Ðеверный тип входного аргумента â„–%d: ожидалоÑÑŒ Ñтроковое или "
+"целочиÑленное значение.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A string expected.\n"
+msgstr "%s: Ðеверный размер входного параметра â„–%d: ожидалаÑÑŒ Ñтрока.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s, or %s expected.\n"
+msgstr ""
+"%s: Ðеверное значение входного аргумента â„–%d: ожидалоÑÑŒ %s, %s, %s или %s.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"
+msgstr ""
+"%s: Ðеверное значение входного аргумента â„–%d: ожидалоÑÑŒ %s, %s, %s или %s.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A real expected.\n"
+msgstr ""
+"%s: Ðеверный тип входного аргумента â„–%d: ожидалоÑÑŒ вещеÑтвенное чиÑло.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A real scalar expected.\n"
+msgstr ""
+"%s: Ðеверный размер входного аргумента â„–%d: ожидаетÑÑ Ð²ÐµÑ‰ÐµÑтвенный ÑкалÑÑ€.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real scalar expected.\n"
+msgstr ""
+"%s: Ðеверный тип входного аргумента â„–%d: ожидалÑÑ Ð²ÐµÑ‰ÐµÑтвенный ÑкалÑÑ€.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real matrix expected.\n"
+msgstr ""
+"%s: Ðеверный тип входного параметра â„–%d: ожидалаÑÑŒ матрица вещеÑтвенных "
+"чиÑел.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Polynomial expected."
+msgstr "%s: Ðеверный тип входного аргумента â„–%d: ожидалÑÑ Ñ‚Ð¸Ð¿ polynomial."
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: must not contain %s or %s.\n"
+msgstr ""
+"%s: Ðеверное значение входного аргумента â„–%d: не должно Ñодержать %s или "
+"%s.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A matrix expected.\n"
+msgstr "%s: Ðеверный тип входного аргумента â„–%d: ожидалаÑÑŒ матрица.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: Ðеверный тип входного аргумента â„–%d: ожидалаÑÑŒ ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ð°Ñ Ð¼Ð°Ñ‚Ñ€Ð¸Ñ†Ð°.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A scalar or a string expected.\n"
+msgstr ""
+"%s: Ðеверный тип входного параметра â„–%d: ожидалÑÑ ÑкалÑÑ€ или Ñтрока.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: must be %d, %d, %s, '%s' or '%s'.\n"
+msgstr ""
+"%s: Ðеверное значение входного аргумента â„–%d: должно быть %d, %d, %s, '%s' "
+"или '%s'.\n"
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d to %d expected.\n"
+msgstr "%s: Ðеверное количеÑтво входных аргументов: ОжидалоÑÑŒ от %d до %d.\n"
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d to %d expected.\n"
+msgstr "%s: Ðеверное количеÑтво входных аргументов: ожидалоÑÑŒ от %d до %d.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr "%s: Ðеверный размер входного параметра â„–%d: ожидалÑÑ ÑкалÑÑ€.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative integers expected.\n"
+msgstr ""
+"%s: Ðеверные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ параметра â„–%d: ожидалиÑÑŒ неотрицательные "
+"целые чиÑла.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A column vector expected.\n"
+msgstr ""
+"%s: Ðеверный размер входного параметра â„–%d: ожидалÑÑ Ð²ÐµÐºÑ‚Ð¾Ñ€-Ñтолбец.\n"
+
+#, c-format
+msgid "%s: Obsolete function. Please replace '%s' by '%s'."
+msgstr "%s: УÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐ°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ. ПожалуйÑта, замените '%s' на '%s'."
+
+#, c-format
+msgid ""
+"%s: Obsolete function. Former external functions cannot be used anymore."
+msgstr ""
+"%s: УÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐ°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ. Прежние внешние функции больше Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать."
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+"%s: ÐеÑовмеÑтимые входные параметры â„–%d и â„–%d: ожидалиÑÑŒ одинаковые "
+"размеры.\n"
+
+#, c-format
+msgid "%s: SVD and QR not implemented in sparse.\n"
+msgstr "%s: Ðлгоритмы SVD и QR не реализованы Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€ÐµÐ¶ÐµÐ½Ð½Ñ‹Ñ… матриц.\n"
+
+#, c-format
+msgid "%s: This feature has not been implemented.\n"
+msgstr "%s: Эта функциональноÑÑ‚ÑŒ не реализована.\n"
+
+msgid "Conflicting linear constraints."
+msgstr "Конфликтующие линейные ограничениÑ."
+
+msgid "Recomputing initial guess"
+msgstr "ПереÑчёт иÑходного предположениÑ"
+
+#, c-format
+msgid "Possible Conflicting linear constraints, error in the order of %s"
+msgstr "Возможно конфликтующие линейные ограничениÑ, ошибка в порÑдке %s"
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d or %d expected.\n"
+msgstr "%s: Ðеверное количеÑтво входных параметров: ожидалоÑÑŒ %d или %d.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+"%s: Ðеверное значение входного параметра â„–%d: должно быть из множеÑтва "
+"{%s}.\n"
+
+#, c-format
+msgid "%s: Singular pencil."
+msgstr "%s: СингулÑрный пучок."
+
+#, c-format
+msgid ""
+"%s: Function not defined for type '%s'. Check argument or define function %s."
+msgstr ""
+"%s: Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ðµ определена Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ð° '%s'. Проверьте аргумент или определите "
+"функцию %s."
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d expected.\n"
+msgstr "%s: Ðеверное количеÑтво входных параметров: ожидалоÑÑŒ %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Non-negative integer expected.\n"
+msgstr ""
+"%s: Ðеверное значение входного параметра â„–%d: ожидалоÑÑŒ неотрицательное "
+"целое.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: Ðеверный размер входного параметра â„–%d: ожидалаÑÑŒ ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ð°Ñ Ð¼Ð°Ñ‚Ñ€Ð¸Ñ†Ð°.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative scalar expected.\n"
+msgstr ""
+"%s: Ðеверные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ параметра â„–%d: ожидалÑÑ Ð½ÐµÐ¾Ñ‚Ñ€Ð¸Ñ†Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ "
+"ÑкалÑÑ€.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Symmetric expected"
+msgstr "%s: Ðеверный размер входного параметра â„–%d: ожидалÑÑ Ñимметричный"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Not semi-definite positive"
+msgstr ""
+"%s: Ðеверное значение входного параметра â„–%d: ожидалоÑÑŒ неотрицательно "
+"определённое"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: Ðеверный тип входного параметра â„–%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Requested rank is greater than "
+"matrix dimension."
+msgstr ""
+"%s: Ðеверное значение входного параметра â„–%d: запрошенный ранг больше "
+"размерноÑти матрицы."
diff --git a/modules/linear_algebra/locales/uk_UA.po b/modules/linear_algebra/locales/uk_UA.po
new file mode 100755
index 000000000..ed7733bd4
--- /dev/null
+++ b/modules/linear_algebra/locales/uk_UA.po
@@ -0,0 +1,266 @@
+# Ukrainian translation for scilab
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the scilab package.
+#
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+# Yuri Chornoivan <yurchor@gmail.com>, 2010, 2013.
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2014-09-30 16:53+0000\n"
+"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
+"Language-Team: Ukrainian <translation@linux.org.ua>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: uk\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра â„–%d: Ñлід викориÑтовувати матрицю з "
+"дійÑних або комплекÑних значень.\n"
+
+#, c-format
+msgid "%s: Non convergence in QR steps.\n"
+msgstr "%s: розбіжніÑÑ‚ÑŒ під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÑ€Ð¾ÐºÑ–Ð² QR.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ вхідний параметр â„–%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: Real or complex matrix expected.\n"
+msgstr ""
+"%s: помилковий тип параметра â„–%d: Ñлід викориÑтовувати матрицю з дійÑних або "
+"комплекÑних значень.\n"
+
+#, c-format
+msgid "%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"
+msgstr ""
+"%s: помилкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° â„–%d: у значенні не повинно міÑтитиÑÑ "
+"запиÑів NaN або Inf.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: String or integer expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра â„–%d: мало бути викориÑтано Ñ€Ñдок або "
+"ціле значеннÑ.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A string expected.\n"
+msgstr ""
+"%s: помилковий розмір вхідного параметра â„–%d: Ñлід викориÑтовувати Ñ€Ñдок.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s, or %s expected.\n"
+msgstr ""
+"%s: помилкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ параметра â„–%d: мало бути вказано %s, %s, %s "
+"або %s.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"
+msgstr ""
+"%s: помилкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ параметра â„–%d: мало бути вказано %s, %s, %s "
+"або %s.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A real expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра â„–%d: Ñлід викориÑтовувати тип дійÑних "
+"значень.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A real scalar expected.\n"
+msgstr ""
+"%s: помилкова розмірніÑÑ‚ÑŒ вхідного параметра â„–%d: Ñлід викориÑтовувати "
+"дійÑне чиÑло.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real scalar expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра â„–%d: Ñлід викориÑтовувати дійÑне "
+"чиÑло.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real matrix expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра â„–%d: Ñлід викориÑтовувати матрицю "
+"дійÑних значень.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Polynomial expected."
+msgstr ""
+"%s: помилковий тип вхідного параметра â„–%d: Ñлід викориÑтовувати поліном."
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: must not contain %s or %s.\n"
+msgstr ""
+"%s: помилкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ параметра â„–%d: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ повинне міÑтити "
+"%s або %s.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A matrix expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра â„–%d: мало бути викориÑтано матрицю.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра â„–%d: Ñлід викориÑтовувати квадратну "
+"матрицю.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A scalar or a string expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра â„–%d: Ñлід викориÑтовувати тип «string» "
+"або ÑкалÑрний тип.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: must be %d, %d, %s, '%s' or '%s'.\n"
+msgstr ""
+"%s: помилкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ параметра â„–%d: Ñлід викориÑтовувати %d, %d, "
+"%s, «%s» або «%s».\n"
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d to %d expected.\n"
+msgstr ""
+"%s: помилкова кількіÑÑ‚ÑŒ вхідних параметрів: Ñлід викориÑтовувати від %d до "
+"%d параметрів.\n"
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d to %d expected.\n"
+msgstr ""
+"%s: помилкова кількіÑÑ‚ÑŒ вхідних параметрів: Ñлід викориÑтовувати від %d до "
+"%d.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+"%s: помилкова розмірніÑÑ‚ÑŒ вхідного параметра â„–%d: Ñлід викориÑтовувати "
+"дійÑне чиÑло.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative integers expected.\n"
+msgstr ""
+"%s: помилкові Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ параметра â„–%d: Ñлід викориÑтовувати "
+"невід’ємні цілі чиÑла\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A column vector expected.\n"
+msgstr ""
+"%s: помилковий розмір вхідного параметра â„–%d: Ñлід викориÑтовувати вектор-"
+"Ñтовпчик.\n"
+
+#, c-format
+msgid "%s: Obsolete function. Please replace '%s' by '%s'."
+msgstr "%s: заÑтаріла функціÑ. Будь лаÑка, замініть «%s» на «%s»."
+
+#, c-format
+msgid ""
+"%s: Obsolete function. Former external functions cannot be used anymore."
+msgstr ""
+"%s: заÑтаріла функціÑ. Зовнішні функції попередніх верÑій більше не можна "
+"викориÑтовувати."
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+"%s: неÑуміÑні вхідні параметри â„–%d Ñ– â„–%d: Ñлід викориÑтовувати однакову "
+"розмірніÑÑ‚ÑŒ.\n"
+
+#, c-format
+msgid "%s: SVD and QR not implemented in sparse.\n"
+msgstr "%s: SVD Ñ– QR не реалізовано Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ñ–Ð´Ð¶ÐµÐ½Ð¸Ñ… матриць.\n"
+
+#, c-format
+msgid "%s: This feature has not been implemented.\n"
+msgstr "%s: цю можливіÑÑ‚ÑŒ ще не реалізовано.\n"
+
+msgid "Conflicting linear constraints."
+msgstr "Конфлікт лінійних обмежень."
+
+msgid "Recomputing initial guess"
+msgstr "ПереобчиÑлюємо початкове припущеннÑ"
+
+#, c-format
+msgid "Possible Conflicting linear constraints, error in the order of %s"
+msgstr "Можливий конфлікт лінійних обмежень, помилка у порÑдку %s"
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d or %d expected.\n"
+msgstr ""
+"%s: помилкова кількіÑÑ‚ÑŒ вхідних параметрів: Ñлід викориÑтовувати %d або %d.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+"%s: помилкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ параметра â„–%d: Ñлід викориÑтовувати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ "
+"з набору {%s}.\n"
+
+#, c-format
+msgid "%s: Singular pencil."
+msgstr "%s: вироджений жмуток матриць."
+
+#, c-format
+msgid ""
+"%s: Function not defined for type '%s'. Check argument or define function %s."
+msgstr ""
+"%s: Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ñƒ «%s» функцію не визначено. Перевірте параметр або визначте "
+"функцію %s."
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d expected.\n"
+msgstr "%s: помилкова кількіÑÑ‚ÑŒ вхідних параметрів: мало бути %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Non-negative integer expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра â„–%d: Ñлід було вказувати невід’ємне "
+"ціле чиÑло.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: помилкова розмірніÑÑ‚ÑŒ вхідного параметра â„–%d: Ñлід викориÑтовувати "
+"квадратну матрицю.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative scalar expected.\n"
+msgstr ""
+"%s: помилкові Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ параметра â„–%d: Ñлід викориÑтовувати "
+"невід’ємні ÑкалÑрні дані.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Symmetric expected"
+msgstr ""
+"%s: помилкова розмірніÑÑ‚ÑŒ вхідного параметра â„–%d: мала бути Ñиметрична "
+"матрицÑ"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Not semi-definite positive"
+msgstr ""
+"%s: помилкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ параметра â„–%d: вказано не напіввизначену "
+"додатно матрицю"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: помилковий тип вхідного параметра №%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Requested rank is greater than "
+"matrix dimension."
+msgstr ""
+"%s: помилкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ параметра â„–%d: потрібний ранг перевищує "
+"розмірніÑÑ‚ÑŒ матриці.\n"
+"."
diff --git a/modules/linear_algebra/locales/zh_CN.po b/modules/linear_algebra/locales/zh_CN.po
new file mode 100755
index 000000000..3c236190f
--- /dev/null
+++ b/modules/linear_algebra/locales/zh_CN.po
@@ -0,0 +1,202 @@
+# Simplified Chinese translation for scilab
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-05-02 14:26+0000\n"
+"Last-Translator: Wesh <Unknown>\n"
+"Language-Team: Simplified Chinese <zh_CN@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: \n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"
+msgstr "%s:输入å‚æ•°#%d的类型错误:应该为实数或å¤æ•°çŸ©é˜µã€‚\n"
+
+#, c-format
+msgid "%s: Non convergence in QR steps.\n"
+msgstr "%s:QR分解的迭代中ä¸æ”¶æ•›ã€‚\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: Real or complex matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: String or integer expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s, or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A real expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A real scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real scalar expected.\n"
+msgstr "%s:第%d个输入å‚数的类型错误:应该为实数标é‡ã€‚\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real matrix expected.\n"
+msgstr "%s:输入å‚æ•°#%d的类型错误:应该为实数矩阵。\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Polynomial expected."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: must not contain %s or %s.\n"
+msgstr "%s:第%d个输入å‚数的值错误:ä¸èƒ½åŒ…å«%s或%s。\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A matrix expected.\n"
+msgstr "%s:第%d个输入å‚数的类型错误:应该为矩阵。\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A scalar or a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: must be %d, %d, %s, '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d to %d expected.\n"
+msgstr "%s:输入å‚数的数目出错:应该为%d到%d个。\n"
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr "%s:输入å‚æ•°#%d的大å°é”™è¯¯ï¼šåº”该为一个标é‡ã€‚\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative integers expected.\n"
+msgstr "%s:输入å‚æ•°#%d的值错误:应该为éžè´Ÿæ•´æ•°çŸ©é˜µã€‚\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A column vector expected.\n"
+msgstr "%s:输入å‚æ•°#%d的大å°é”™è¯¯ï¼šåº”该为一个列å‘é‡ã€‚\n"
+
+#, c-format
+msgid "%s: Obsolete function. Please replace '%s' by '%s'."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Obsolete function. Former external functions cannot be used anymore."
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr "%s:输入å‚æ•°#%då’Œ#%dä¸å…¼å®¹ï¼šåº”该为åŒæ ·å¤§å°ã€‚\n"
+
+#, c-format
+msgid "%s: SVD and QR not implemented in sparse.\n"
+msgstr "%s:稀ç–矩阵的SVDå’ŒQR分解尚未实现。\n"
+
+#, c-format
+msgid "%s: This feature has not been implemented.\n"
+msgstr "%s:该功能尚未实现。\n"
+
+msgid "Conflicting linear constraints."
+msgstr ""
+
+msgid "Recomputing initial guess"
+msgstr ""
+
+#, c-format
+msgid "Possible Conflicting linear constraints, error in the order of %s"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d or %d expected.\n"
+msgstr "%s:输入å‚数数目错误:应该为%d个或%d个。\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr "%s:输入å‚æ•°#%d的值错误:必须在集åˆ{%s}中。\n"
+
+#, c-format
+msgid "%s: Singular pencil."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Function not defined for type '%s'. Check argument or define function %s."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d expected.\n"
+msgstr "%s:输入å‚数的数目错误:应该为%d。\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Non-negative integer expected.\n"
+msgstr "%s:输入å‚æ•°#%d的值错误:应该为éžè´Ÿæ•´æ•°ã€‚\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A square matrix expected.\n"
+msgstr "%s:输入å‚æ•°#%d的大å°é”™è¯¯ï¼šåº”该为一个方阵。\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative scalar expected.\n"
+msgstr "%s:输入å‚æ•°#%d的值错误:应该为éžè´Ÿæ ‡é‡ã€‚\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Symmetric expected"
+msgstr "%s:输入å‚æ•°#%d的大å°é”™è¯¯ï¼šåº”该为对称阵。"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Not semi-definite positive"
+msgstr "%s:输入å‚æ•°#%d的值错误:应该为是åŠæ­£å®šé˜µã€‚"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s:输入å‚æ•°#%d的类型错误。\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Requested rank is greater than "
+"matrix dimension."
+msgstr "%s:输入å‚æ•°#%d的值错误:需è¦çš„秩大于矩阵的维数。"
diff --git a/modules/linear_algebra/locales/zh_TW.po b/modules/linear_algebra/locales/zh_TW.po
new file mode 100755
index 000000000..c1e4032ae
--- /dev/null
+++ b/modules/linear_algebra/locales/zh_TW.po
@@ -0,0 +1,269 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2011-09-01 09:29+0000\n"
+"Last-Translator: Scilab.team <Unknown>\n"
+"Language-Team: Traditional Chinese <zh_TW@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: \n"
+"Revision-Date: 2011-04-04 22:09+0100\n"
+
+#
+# File: sci_gateway/c/sci_qr.c, line: 65
+# File: sci_gateway/c/sci_qr.c, line: 84
+# File: sci_gateway/c/sci_qr.c, line: 107
+# File: sci_gateway/c/sci_qr.c, line: 114
+# File: sci_gateway/c/sci_qr.c, line: 120
+# File: sci_gateway/c/sci_backslash.c, line: 63
+# File: sci_gateway/c/sci_backslash.c, line: 84
+# File: sci_gateway/c/sci_backslash.c, line: 91
+# File: sci_gateway/c/sci_eig.c, line: 79
+# File: sci_gateway/c/sci_eig.c, line: 115
+# File: sci_gateway/c/sci_eig.c, line: 133
+# File: sci_gateway/c/sci_eig.c, line: 139
+# File: sci_gateway/c/sci_hess.c, line: 47
+# File: sci_gateway/c/sci_lu.c, line: 49
+# File: sci_gateway/c/sci_det.c, line: 47
+# File: sci_gateway/c/sci_balanc.c, line: 54
+# File: sci_gateway/c/sci_balanc.c, line: 92
+# File: sci_gateway/c/sci_balanc.c, line: 115
+# File: sci_gateway/c/sci_balanc.c, line: 122
+# File: sci_gateway/c/sci_rcond.c, line: 50
+# File: sci_gateway/c/sci_schur.c, line: 70
+# File: sci_gateway/c/sci_schur.c, line: 90
+# File: sci_gateway/c/sci_schur.c, line: 173
+# File: sci_gateway/c/sci_schur.c, line: 216
+# File: sci_gateway/c/sci_schur.c, line: 231
+# File: sci_gateway/c/sci_schur.c, line: 242
+# File: sci_gateway/c/sci_chol.c, line: 48
+# File: sci_gateway/c/sci_lsq.c, line: 80
+# File: sci_gateway/c/sci_lsq.c, line: 88
+# File: sci_gateway/c/sci_slash.c, line: 59
+# File: sci_gateway/c/sci_slash.c, line: 80
+# File: sci_gateway/c/sci_slash.c, line: 87
+# File: sci_gateway/c/sci_inv.c, line: 49
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"
+msgstr "%s: 第 %d 個輸入åƒæ•¸åž‹æ…‹éŒ¯èª¤: 應為實數或複數矩陣.\n"
+
+#
+# File: sci_gateway/c/sci_bdiag.c, line: 97
+#, c-format
+msgid "%s: Non convergence in QR steps.\n"
+msgstr "%s: 在 QR 計算步驟中未收斂.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: Real or complex matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: String or integer expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s, or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A real expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A real scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real scalar expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_schur.c, line: 109
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Real matrix expected.\n"
+msgstr "%s: 第 %d 個輸入åƒæ•¸åž‹æ…‹éŒ¯èª¤: 應為實數矩陣.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: Polynomial expected."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: must not contain %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A scalar or a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: must be %d, %d, %s, '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d to %d expected.\n"
+msgstr ""
+
+#
+# File: macros/diff.sci, line: 20
+# File: macros/diff.sci, line: 29
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr "%s: 第 %d 個輸入åƒæ•¸é•·åº¦éŒ¯èª¤: 應為純é‡.\n"
+
+#
+# File: macros/diff.sci, line: 24
+# File: macros/diff.sci, line: 33
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative integers expected.\n"
+msgstr "%s: 第 %d 個輸入åƒæ•¸æ•¸å€¼éŒ¯èª¤: 應為éžè² æ•´æ•¸.\n"
+
+#
+# File: macros/givens.sci, line: 24
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A column vector expected.\n"
+msgstr "%s: 第 %d 個輸入åƒæ•¸é•·åº¦éŒ¯èª¤: 應為列å‘é‡.\n"
+
+#, c-format
+msgid "%s: Obsolete function. Please replace '%s' by '%s'."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Obsolete function. Former external functions cannot be used anymore."
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr "%s: 第 %d åŠ ç¬¬ %d 輸入åƒæ•¸ä¸ç›¸å®¹ : 應為相åŒå¤§å°.\n"
+
+#
+# File: macros/kernel.sci, line: 31
+#, c-format
+msgid "%s: SVD and QR not implemented in sparse.\n"
+msgstr "%s: 尚未實作稀ç–矩陣之 SVD åŠ QR 演算法.\n"
+
+#
+# File: macros/kernel.sci, line: 61
+#, c-format
+msgid "%s: This feature has not been implemented.\n"
+msgstr "%s: 此特性尚未實作.\n"
+
+msgid "Conflicting linear constraints."
+msgstr ""
+
+msgid "Recomputing initial guess"
+msgstr ""
+
+#, c-format
+msgid "Possible Conflicting linear constraints, error in the order of %s"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input arguments: %d or %d expected.\n"
+msgstr "%s: 輸入åƒæ•¸çš„個數ä¸å°: 應該是 %d 或 %d 個.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr "%s: 第 %d 個輸入åƒæ•¸æ•¸å€¼éŒ¯èª¤: æ‡‰åœ¨é›†åˆ {%s} 之內.\n"
+
+#, c-format
+msgid "%s: Singular pencil."
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Function not defined for type '%s'. Check argument or define function %s."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong number of input argument(s): %d expected.\n"
+msgstr "%s: 輸入åƒæ•¸æ•¸ç›®éŒ¯èª¤:應為 %d.\n"
+
+#
+# File: macros/range.sci, line: 18
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Non-negative integer expected.\n"
+msgstr "%s: 第 %d 個輸入åƒæ•¸æ•¸å€¼éŒ¯èª¤: 應為éžè² æ•´æ•¸.\n"
+
+#
+# File: macros/range.sci, line: 21
+# File: macros/cond.sci, line: 16
+# File: macros/trace.sci, line: 17
+# File: macros/trace.sci, line: 23
+# File: macros/trace.sci, line: 31
+# File: macros/trace.sci, line: 41
+# File: macros/trace.sci, line: 50
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A square matrix expected.\n"
+msgstr "%s: 第 %d 個輸入åƒæ•¸é•·åº¦éŒ¯èª¤: 應為方陣.\n"
+
+#
+# File: macros/rowcomp.sci, line: 33
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Non-negative scalar expected.\n"
+msgstr "%s: 第 %d 個輸入åƒæ•¸æ•¸å€¼éŒ¯èª¤: 應為éžè² ç´”é‡.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Symmetric expected"
+msgstr "%s: 第 %d 個輸入åƒæ•¸é•·åº¦éŒ¯èª¤: 應為å°ç¨±"
+
+#
+# File: macros/sqroot.sci, line: 18
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Not semi-definite positive"
+msgstr "%s: 第 %d 個輸入åƒæ•¸æ•¸å€¼éŒ¯èª¤: éžåŠæ­£å®š (semi-definite positive)"
+
+#
+# File: macros/trace.sci, line: 35
+# File: macros/trace.sci, line: 45
+# File: macros/trace.sci, line: 54
+# File: macros/squeeze.sci, line: 30
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: 第 %d 個輸入åƒæ•¸åž‹æ…‹éŒ¯èª¤.\n"
+
+#
+# File: macros/sva.sci, line: 22
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Requested rank is greater than "
+"matrix dimension."
+msgstr "%s: 第 %d 個輸入åƒæ•¸æ•¸å€¼éŒ¯èª¤: è¦æ±‚之秩大於矩陣之維度."
diff --git a/modules/linear_algebra/macros/aff2ab.bin b/modules/linear_algebra/macros/aff2ab.bin
new file mode 100755
index 000000000..1d0de8e97
--- /dev/null
+++ b/modules/linear_algebra/macros/aff2ab.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/aff2ab.sci b/modules/linear_algebra/macros/aff2ab.sci
new file mode 100755
index 000000000..2d86b20e9
--- /dev/null
+++ b/modules/linear_algebra/macros/aff2ab.sci
@@ -0,0 +1,44 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [A,b]=aff2ab(lme,dimX,D,flag)
+ //Y,X,D are lists of matrices.
+ //Y=lme(X,D)= affine fct of Xi's;
+ //[A,b]=matrix representation of lme in canonical basis.
+ // if flag=='sp' A matrix is return in sparse storage.
+ [LHS,RHS]=argn(0)
+ if RHS==3 then flag="f";end
+
+ nvars=0;
+ for k=dimX'
+ nvars=nvars+prod(k);
+ end
+ if part(flag,1)=="f" then
+ x0=zeros(nvars,1);
+ b=list2vec(lme(vec2list(x0,dimX),D));
+ [p,un]=size(b);
+ A=zeros(p,nvars);
+ for k=1:nvars
+ xi=x0;xi(k)=1;
+ A(:,k)=list2vec(lme(vec2list(xi,dimX),D))-b;
+ // A=[A,sparse(list2vec(lme(vec2list(xi,dimX),D))-b)];
+ end
+ end
+
+ if part(flag,1)=="s" then
+ x0=zeros(nvars,1);
+ b=list2vec(lme(vec2list(x0,dimX),D));
+ A=[];
+ for k=1:nvars
+ xi=x0;xi(k)=1;
+ A=[A,sparse(list2vec(lme(vec2list(xi,dimX),D))-b)];
+ end
+ end
+endfunction
diff --git a/modules/linear_algebra/macros/buildmacros.bat b/modules/linear_algebra/macros/buildmacros.bat
new file mode 100755
index 000000000..a73ca67f8
--- /dev/null
+++ b/modules/linear_algebra/macros/buildmacros.bat
@@ -0,0 +1,11 @@
+
+rem Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+rem Copyright (C) 2008 - INRIA
+rem
+rem This file must be used under the terms of the CeCILL.
+rem This source file is licensed as described in the file COPYING, which
+rem you should have received as part of this distribution. The terms
+rem are also available at
+rem http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+@..\..\..\bin\scilex -nwni -ns -e exec('buildmacros.sce');quit;
diff --git a/modules/linear_algebra/macros/buildmacros.sce b/modules/linear_algebra/macros/buildmacros.sce
new file mode 100755
index 000000000..9799263d9
--- /dev/null
+++ b/modules/linear_algebra/macros/buildmacros.sce
@@ -0,0 +1,15 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2006-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+if (isdef("genlib") == %f) then
+ exec(SCI+"/modules/functions/scripts/buildmacros/loadgenlib.sce");
+end
+
+genlib("linear_algebralib","SCI/modules/linear_algebra/macros",%f,%t);
diff --git a/modules/linear_algebra/macros/classmarkov.bin b/modules/linear_algebra/macros/classmarkov.bin
new file mode 100755
index 000000000..4bbf3ec5c
--- /dev/null
+++ b/modules/linear_algebra/macros/classmarkov.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/classmarkov.sci b/modules/linear_algebra/macros/classmarkov.sci
new file mode 100755
index 000000000..c68b01b1d
--- /dev/null
+++ b/modules/linear_algebra/macros/classmarkov.sci
@@ -0,0 +1,46 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [perm,rec,tr,indsRec,indsT]=classmarkov(M)
+ //returns a permutation vector perm such that
+ //M(perm,perm) = [M11 0 0 0 0 0]
+ // [0 M22 0 0 0]
+ // [0 0 M33 0]
+ // [ ... ]
+ // [0 0 Mrr 0]
+ // [* * * Q]
+ //Each Mii is a Markov matrix of dimension rec(i) i=1,..,r
+ //Q is sub-Markov matrix of dimension tr
+ //States 1 to sum(rec) are recurrent and states from r+1 to n
+ //are transient.
+ //perm=[indsRec,indsT] where indsRec is a vector of size sum(rec)
+ //and indsT is a vector of size indsT.
+ if type(M)==1
+ Mb=sparse(M<>0);
+ else Mb=M<>0;
+ end
+ g=mat_2_graph(bool2s(Mb),1,"node-node");
+ [nc,ncomp]=strong_connex(g);
+ indsRec=[];indsT=[];rec=[];tr=0;
+ for i=1:nc
+ inds=find(ncomp==i);
+ nb=size(inds,"*");
+ M1=M(inds,:); M1(:,inds)=[];
+ if sum(M1)==0 then
+ indsRec=[indsRec,inds];
+ rec=[rec,nb];
+ else
+ indsT=[indsT,inds];
+ tr=tr+nb;
+ end
+ end
+ perm=[indsRec,indsT];
+endfunction
+
diff --git a/modules/linear_algebra/macros/cleanmacros.bat b/modules/linear_algebra/macros/cleanmacros.bat
new file mode 100755
index 000000000..4ad1bbae2
--- /dev/null
+++ b/modules/linear_algebra/macros/cleanmacros.bat
@@ -0,0 +1,13 @@
+
+rem Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+rem Copyright (C) 2008 - INRIA
+rem
+rem This file must be used under the terms of the CeCILL.
+rem This source file is licensed as described in the file COPYING, which
+rem you should have received as part of this distribution. The terms
+rem are also available at
+rem http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+@del *.bin 2>NUL
+@del lib 2>NUL
+@del names 2>NUL
diff --git a/modules/linear_algebra/macros/cmb_lin.bin b/modules/linear_algebra/macros/cmb_lin.bin
new file mode 100755
index 000000000..f6c6b3e69
--- /dev/null
+++ b/modules/linear_algebra/macros/cmb_lin.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/cmb_lin.sci b/modules/linear_algebra/macros/cmb_lin.sci
new file mode 100755
index 000000000..812589992
--- /dev/null
+++ b/modules/linear_algebra/macros/cmb_lin.sci
@@ -0,0 +1,19 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [x]=cmb_lin(alfa,x,Beta,y)
+ // x =cmb_lin(alfa,x,Beta,y) evaluates alfa*x-Beta*y
+ // (low-level routine)
+ //!
+ n=prod(size(x));
+ for j=1:n,
+ x(j)=addf(mulf(alfa,x(j)),mulf(mulf("-1",Beta),y(j)));
+ end
+endfunction
diff --git a/modules/linear_algebra/macros/coff.bin b/modules/linear_algebra/macros/coff.bin
new file mode 100755
index 000000000..9e9ea29ff
--- /dev/null
+++ b/modules/linear_algebra/macros/coff.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/coff.sci b/modules/linear_algebra/macros/coff.sci
new file mode 100755
index 000000000..41f6edd01
--- /dev/null
+++ b/modules/linear_algebra/macros/coff.sci
@@ -0,0 +1,33 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [n,d]=coff(m,var)
+ //[N,d]=coff(M [,var]) computes (s*eye-M)^-1
+ // N = numerator polynomial matrix
+ // d = common denominator
+ // var character string ('s' if omitted)
+ // See also : coffg
+ //!
+ //
+ if type(m)<>1 then error(53,1),end
+ if m==[] then n=[];d=1;end
+ [lhs,rhs]=argn(0);if rhs==1 then var="s",end
+ d=clean(poly(m,var)); // denominator
+ [n1,n1]=size(m);
+ for k=1:n1,for l=1:n1,
+ mlk=-m(l,k);
+ if abs(mlk)<1 then mlk=1,end
+ m(l,k)=m(l,k)+mlk;
+ n(k,l)=-(poly(m,var)-d)/mlk;
+ m(l,k)=m(l,k)-mlk
+ end;end
+ if norm(imag(m),1)==0 then n=real(n);d=real(d);end
+ n=clean(n);
+endfunction
diff --git a/modules/linear_algebra/macros/colcomp.bin b/modules/linear_algebra/macros/colcomp.bin
new file mode 100755
index 000000000..16dc4c4b3
--- /dev/null
+++ b/modules/linear_algebra/macros/colcomp.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/colcomp.sci b/modules/linear_algebra/macros/colcomp.sci
new file mode 100755
index 000000000..a4dbec36a
--- /dev/null
+++ b/modules/linear_algebra/macros/colcomp.sci
@@ -0,0 +1,36 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA - François DELEBECQUE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [w,rk]=colcomp(a,flag,tol)
+ //Syntaxes : [w,rk]=colcomp(a)
+ // [w,rk]=colcomp(a,flag)
+ // [w,rk]=colcomp(a,flag,tol)
+ //
+ //column compression of a i.e. comput. of ker(a)
+ //flag and tol are optional parameters
+ //flag='qr' or 'svd' (defaut 'svd')
+ //tol tolerance parameter (of order %eps as defaut value)
+ //the ma-rk first columns of w span the kernel of a when size(a)=(na,ma)
+
+ [ma,na]=size(a)
+ [lhs,rhs]=argn(0)
+ if a==[] then w=[];rk=0;return;end
+ if norm(a,1) < sqrt(%eps)/10 then rk=0,w=eye(na,na),return,end
+ if rhs ==2 then tol=sqrt(%eps)*norm(a,1)*max(ma,na),end
+ if rhs==1 then flag="svd",tol=sqrt(%eps)*norm(a,1)*max(ma,na);end
+ select flag
+ case "qr" then [q,r,rk,e]=qr(a',tol);
+ //w=[q(:,rk+1:ma),q(:,1:rk)]; <-- le ma me parait suspect je met na
+ w=q(:,na:-1:1)
+ case "svd" then [u,s,v,rk]=svd(a',tol);
+ //w=[u(:,rk+1:na),u(:,1:rk)];
+ w=u(:,na:-1:1)
+ end
+endfunction
diff --git a/modules/linear_algebra/macros/companion.bin b/modules/linear_algebra/macros/companion.bin
new file mode 100755
index 000000000..20f4026d4
--- /dev/null
+++ b/modules/linear_algebra/macros/companion.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/companion.sci b/modules/linear_algebra/macros/companion.sci
new file mode 100755
index 000000000..8934c60da
--- /dev/null
+++ b/modules/linear_algebra/macros/companion.sci
@@ -0,0 +1,50 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function A = companion(p)
+ // Companion matrix.
+ // A=companion(p) is a companion matrix with
+ // characteristic polynomial equal to (or proportional to)
+ // p. If p is a row or column vector of polynomials, the A matrix is block
+ // diagonal and block number i has characteristic polynomial
+ // equal to p(i).
+
+ if type(p) ~= 2
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: Polynomial expected."),"companion",1));
+ end
+ // Tranform the row or column vector of poly into a column vector of polynomials
+ p=p(:);
+ // Transpose the vector from column in to row vector,
+ // so that the "for" loop can work properly for each poly.
+ // Caution : ".'", NOT "'"
+ p=p.';
+ A=[];
+ //for pp=p;
+ polynumber = length(p);
+ for polyindex=1:polynumber;
+ pp=p(polyindex);
+ c=coeff(pp);
+ // Reverse the order of the coefficients, so that the coefficient associated with s^n
+ // comes first.
+ c=c($:-1:1);
+ n = length(c);
+ if n <= 1
+ B=[];
+ elseif n == 2
+ B=-c(2)/c(1);
+ else
+ // Caution : ".'", NOT "'"
+ c=c(:).';
+ B=diag(ones(1,n-2),-1);
+ B(1,:) = -c(2:n)/c(1);
+ end
+ A=sysdiag(A,B);
+ end
+endfunction
diff --git a/modules/linear_algebra/macros/cond.bin b/modules/linear_algebra/macros/cond.bin
new file mode 100755
index 000000000..7cc980880
--- /dev/null
+++ b/modules/linear_algebra/macros/cond.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/cond.sci b/modules/linear_algebra/macros/cond.sci
new file mode 100755
index 000000000..98f6b8536
--- /dev/null
+++ b/modules/linear_algebra/macros/cond.sci
@@ -0,0 +1,58 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+// Copyright (C) 2012- Scilab Enterprises - Adeline CARNIS
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function c = cond(varargin)
+ rhs = argn(2);
+
+ select rhs
+ case 1
+ // c=cond(A) condition number for 2-norm
+ // cond(A) is the ratio of the largest singular of x to the smallest
+ // Warning: the svd function doesn't manage sparse matrices
+ A = varargin(1);
+ if type(A) == 1 then
+ if or(isnan(A)) | or (isinf(A)) then
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: must not contain %s or %s.\n"), "cond", 1, "%nan", "%inf"));
+ end
+ if A == [] then
+ c = 1;
+ return
+ end
+ s = svd(A);
+ if s($) == 0 then
+ c = %inf;
+ else
+ c = s(1)/s($);
+ end
+ else
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: A matrix expected.\n"), "cond", 1));
+ end
+ case 2
+ // c = cond(A, p) where p = 1, %inf, fro, ..
+ // norm(A, p) * norm(inv(A), p)
+ // Warning inv doesn't manage no square and sparse matrices
+ A = varargin(1);
+ p = varargin(2);
+ [m,n] = size(A);
+ if type(A) <> 1 | m <> n then
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: A square matrix expected.\n"),"cond", 1));
+ end
+ if and(type(p) <> [1, 10]) then
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: A scalar or a string expected.\n"),"cond", 2));
+ end
+ if and(p <> [1 2 %inf] & p <> ["inf","fro"]) then
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: must be %d, %d, %s, ''%s'' or ''%s''.\n"), "cond", 2, 1, 2, "%inf", "inf", "fro"));
+ end
+
+ c = norm(A, p) * norm(inv(A), p);
+ else
+ error(msprintf(gettext("%s: Wrong number of input argument(s): %d to %d expected.\n"), "cond", 1, 2));
+ end
+endfunction
diff --git a/modules/linear_algebra/macros/diff.bin b/modules/linear_algebra/macros/diff.bin
new file mode 100755
index 000000000..2c403705b
--- /dev/null
+++ b/modules/linear_algebra/macros/diff.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/diff.sci b/modules/linear_algebra/macros/diff.sci
new file mode 100755
index 000000000..a28f1c7ec
--- /dev/null
+++ b/modules/linear_algebra/macros/diff.sci
@@ -0,0 +1,51 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function x=diff(x,N,DIM)
+ rhs=argn(2)
+ if rhs<1 then
+ error(msprintf(gettext("%s: Wrong number of input arguments: %d to %d expected.\n"),"diff",1,3));
+ end
+ dims=size(x),nd=prod(size(dims))
+ if rhs<3 then DIM="*",end
+ if rhs<2 then N=1,end
+ if DIM=="r" then DIM=1,end
+ if DIM=="c" then DIM=2,end
+ if DIM=="*" then DIM=-1,end
+ if size(DIM,"*")<>1 then
+ error(msprintf(gettext("%s: Wrong size for input argument #%d: A scalar expected.\n"),"diff",1));
+ end
+ DIM=round(DIM)
+ if DIM<>-1&DIM<1 then
+ error(msprintf(gettext("%s: Wrong values for input argument #%d: Non-negative integers expected.\n"),"diff",3));
+ end
+ if DIM>nd then x=[],return,end
+
+ if type(N)<>1|size(N,"*")<>1 then
+ error(msprintf(gettext("%s: Wrong size for input argument #%d: A scalar expected.\n"),"diff",2));
+ end
+ N=round(N)
+ if N<0 then
+ error(msprintf(gettext("%s: Wrong values for input argument #%d: Non-negative integers expected.\n"),"diff",3));
+ end
+
+
+ if N==1 then
+ if DIM==-1 then
+ x=x(2:$)-x(1:$-1)
+ else
+ args=emptystr(1,nd)+":"
+ arg1=args;arg1(DIM)="2:$";
+ arg2=args;arg2(DIM)="1:$-1";
+ execstr("x=x("+strcat(arg1,",")+")-x("+strcat(arg2,",")+")")
+ end
+ else
+ for i=1:N, x=diff(x,1,DIM),end
+ end
+endfunction
diff --git a/modules/linear_algebra/macros/eigenmarkov.bin b/modules/linear_algebra/macros/eigenmarkov.bin
new file mode 100755
index 000000000..b07e125c6
--- /dev/null
+++ b/modules/linear_algebra/macros/eigenmarkov.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/eigenmarkov.sci b/modules/linear_algebra/macros/eigenmarkov.sci
new file mode 100755
index 000000000..eb0e831ca
--- /dev/null
+++ b/modules/linear_algebra/macros/eigenmarkov.sci
@@ -0,0 +1,49 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [M,Q]=eigenmarkov(P)
+ //Returns normalized left and right eigenvectors
+ //for the eigenvalue 1 of the Markov transition matrix P.
+ //If the multiplicity of this eigenvalue is m and P
+ //is N x N, M is a m x N matrix and Q a N x m matrix.
+ //M(k,:) is the probability distribution vector associated with the kth
+ //ergodic set (recurrent class). M(k,x) is zero if x is not in the
+ //k-th recurrent class.
+ //Q(x,k) is the probability to end in the k-th recurrent class starting
+ //from x.
+ [perm,rec1,tr1,indsRec,indsT]=classmarkov(P)
+ Mn=P(perm,perm);
+ [junk,perminv]=-gsort(-perm);perminv=-perminv;
+ nr=sum(rec1);
+ T=Mn(nr+1:$,nr+1:$);L=Mn(nr+1:$,1:nr);
+ p=0;V=[];
+ for k=rec1
+ v=L(:,p+1:p+k);V=[V,sum(v,"c")];
+ p=p+k;
+ end
+ LL=zeros(nr,size(rec1,"*"));
+ p=0;
+ for k=1:size(rec1,"*")
+ LL(p+1:p+rec1(k),k)=1;
+ p=p+rec1(k);
+ end
+ Q=[LL;inv(eye()-T)*V];
+ Q=Q(perminv,:);
+ p=0;M=[];
+ for kk=1:size(rec1,"*")
+ classe=p+1:p+rec1(kk);
+ p=p+rec1(kk);
+ Mres=Mn(classe,classe);
+ w=kernel((Mres-eye())')';
+ M=sysdiag(M,w./sum(w));
+ end
+ M=[M,zeros(size(M,1),size(P,1)-size(M,2))];
+ M=M(:,perminv);
+endfunction
diff --git a/modules/linear_algebra/macros/fullrf.bin b/modules/linear_algebra/macros/fullrf.bin
new file mode 100755
index 000000000..fa79933b9
--- /dev/null
+++ b/modules/linear_algebra/macros/fullrf.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/fullrf.sci b/modules/linear_algebra/macros/fullrf.sci
new file mode 100755
index 000000000..023461142
--- /dev/null
+++ b/modules/linear_algebra/macros/fullrf.sci
@@ -0,0 +1,30 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [Q,M,rk]=fullrf(A,tol)
+ //[Q,M,rk]=fullrf(A)
+ //Full rank factorization : A=Q.M
+ //with range(Q)=range(A) and ker(M)=ker(A),
+ //Q full column rank , M full row rank
+ // rk = rank(A) = #columns(Q) = #rows(M)
+ //F.D.
+ //!
+ [lhs,rhs]=argn(0)
+ na1=norm(A,1);
+ if rhs==1 then tol=sqrt(%eps);end
+ if na1 < 1.d-10 then Q=[];M=[];rk=0;return;end
+ tol1=tol*na1;
+ [U,s,V,rk]=svd(A,tol1);
+ sq=sqrt(s);
+ Q=U*sq;M=sq*V';
+ Q=Q(:,1:rk);M=M(1:rk,:);
+endfunction
+
+
diff --git a/modules/linear_algebra/macros/fullrfk.bin b/modules/linear_algebra/macros/fullrfk.bin
new file mode 100755
index 000000000..2290c78a8
--- /dev/null
+++ b/modules/linear_algebra/macros/fullrfk.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/fullrfk.sci b/modules/linear_algebra/macros/fullrfk.sci
new file mode 100755
index 000000000..4ae71ec9d
--- /dev/null
+++ b/modules/linear_algebra/macros/fullrfk.sci
@@ -0,0 +1,38 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [Bk,Ck]=fullrfk(A,k)
+ // This macro computes the full rank factorization of A^k i.e.
+ // Bk*Ck=A^k where Bk is full column rank and Ck full row rank.
+ // One has Range(Bk)=Range(A^k) and ker(Ck)=ker(A^k).
+ // For k=1 fullrfk is the same as fullrf.
+ // F.D (1990)
+ //!
+ [lhs,rhs]=argn(0);
+ if rhs==1,
+ k=1;
+ end
+ [n,n]=size(A);
+ //k=0
+ if k==0,
+ Bk=eye(n,n);Ck=Bk;
+ return;
+ end
+ //k=1
+ if k==1,
+ [Bk,Ck]=fullrf(A);
+ return;
+ end
+ [Bk,Ck]=fullrf(A);B=Bk;C=Ck;
+ for l=2:k
+ [B,C,dim]=fullrf(C*B);
+ Bk=Bk*B;Ck=C*Ck; // Bk*Ck = A^k (Full rank factorization)
+ end;
+endfunction
diff --git a/modules/linear_algebra/macros/genmarkov.bin b/modules/linear_algebra/macros/genmarkov.bin
new file mode 100755
index 000000000..65072b774
--- /dev/null
+++ b/modules/linear_algebra/macros/genmarkov.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/genmarkov.sci b/modules/linear_algebra/macros/genmarkov.sci
new file mode 100755
index 000000000..cecb7797c
--- /dev/null
+++ b/modules/linear_algebra/macros/genmarkov.sci
@@ -0,0 +1,62 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function M=genmarkov(rec,tr,flag)
+ //Returns in M a random Markov transition probability matrix
+ //with size(rec,1) recurrent classes with rec(1),...rec($)
+ //entries respectively and tr transient states.
+ // If the optional parameter flag='perm' is entered a random
+ //permutation of the states is performed.
+ [lhs,rhs]=argn(0);
+ if rhs==2 then flag="noperm";end
+ M=[];r=sum(rec);
+ for k=rec
+ m=rand(k,k,"u");
+ m=m./(sum(m,"c")*ones(1,k));
+ M=sysdiag(M,m);
+ end
+ if type(tr) ~= 15 then
+ n=r+tr;
+ MT=rand(tr,n,"u");MT=MT./(sum(MT,"c")*ones(1,n));
+ M=[[M,zeros(r,tr)];MT];
+ if flag=="perm" then [p,q]=gsort(rand(n,1,"u"));M=M(q,q);end
+ else
+ // tr=list(n1,[a1,a2,...ar],n2,[b1,...br],...)
+ l=size(tr)/2; //2*size(rec,2)
+ Q=[];
+ for kk=1:l
+ nt=tr(1+2*(kk-1));
+ Q=sysdiag(Q,rand(nt,nt));
+ end
+ Nt=size(Q,1);
+ L=[];
+ nclrec=size(rec,"*");
+ for kk=1:l
+ L1=[];indi=tr(2+2*(kk-1));nt=tr(1+2*(kk-1));
+ for i=1:nclrec
+ if indi(i)==0 then L1=[L1,zeros(nt,rec(i))]; else L1=[L1,rand(nt,rec(i))];end
+ end
+ L=[L;L1]
+ end
+ LQ=[L,Q];
+ LQ=LQ./(sum(LQ,"c")*ones(1,size(LQ,2)));
+ M=[[M,zeros(size(M,1),size(Q,2))];LQ];
+ end
+ if flag=="perm" then [p,q]=gsort(rand(size(M,1),1,"u"));M=M(q,q);end
+
+ //n=size(M,1);[p,q]=gsort(rand(n,1));M1=M(q,q);M=M1
+
+ //Ms=sparse(M);Ms(find(Ms~=0))=1;
+ //G=mat_2_graph(Ms,1,'node-node');show_graph(G);
+ //[nc,ncomp]=strong_connex(G)
+ //[pp,qq]=gsort(ncomp);Mg=M(qq,qq)
+ //Mgs=sparse(Mg);
+ //Mgs(find(Mgs~=0))=1;Gg=mat_2_graph(Mgs,1,'node-node');show_graph(Gg);
+endfunction
diff --git a/modules/linear_algebra/macros/givens.bin b/modules/linear_algebra/macros/givens.bin
new file mode 100755
index 000000000..cd4a6ed93
--- /dev/null
+++ b/modules/linear_algebra/macros/givens.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/givens.sci b/modules/linear_algebra/macros/givens.sci
new file mode 100755
index 000000000..8c0441f15
--- /dev/null
+++ b/modules/linear_algebra/macros/givens.sci
@@ -0,0 +1,34 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [u,c]=givens(x,y)
+ //Syntax : u=givens(xy)
+ // u=givens(x,y)
+ //
+ // xy = [x;y], u=givens(xy)
+ // returns a 2*2 matrix u such that u*xy=[r;0].
+ // c is equal to u*xy
+ // givens(x,y)=givens([x;y])
+ //
+ //!
+ [lhs,rhs]=argn(0);
+ if rhs==2 then x=[x;y];end
+ if or(size(x)<>[2 1]) then
+ error(msprintf(gettext("%s: Wrong size for input argument #%d: A column vector expected.\n"),"givens",1));
+ end
+ if x(2)<>0 then
+ r = norm(x);
+ u = [x'; -x(2) x(1)]/r;
+ c = [r; 0];
+ else
+ u=eye(2,2)
+ c=x
+ end
+endfunction
diff --git a/modules/linear_algebra/macros/glever.bin b/modules/linear_algebra/macros/glever.bin
new file mode 100755
index 000000000..8c8299d0d
--- /dev/null
+++ b/modules/linear_algebra/macros/glever.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/glever.sci b/modules/linear_algebra/macros/glever.sci
new file mode 100755
index 000000000..135d96f31
--- /dev/null
+++ b/modules/linear_algebra/macros/glever.sci
@@ -0,0 +1,52 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 1988-2008 - INRIA - François DELEBECQUE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [Bfs,Bis,chis]=glever(E,A,s)
+ // [Bfs,Bis,chis]=glever(E,A,'s')
+ // Computation of (s*E-A)^-1 ('s'=character string with default value 's')
+ // Generelized Leverrier's algorithm for a matrix pencil ;
+ // (s*E-A)^-1 = (Bfs/chis) - Bis
+ // chis = characteristic polynomial (up to a multiplicative constant)
+ // Bfs = polynomial matrix
+ // Bis = polynomial matrix ( - expansion of (s*E-A)^-1 at infinity).
+ // Caveat: uses clean to simplify Bfs,Bis and chis !
+ // See also shuffle, determ, invr, coffg
+
+ [LHS,RHS]=argn(0);
+ if RHS==1 then [E,A]=pen2ea(E),s=poly(0,"s");end
+ if RHS==2 then s=poly(0,"s"),end;
+ if RHS==3 then s=poly(0,s);end
+ [Si,Pi,Di,index]=penlaur(E,A);
+ k=round(sum(diag(Si*E)));
+
+ a0=1;
+ B=Si;
+ SiASi=Si*A*Si;
+ chis=a0+0*s;
+ Bfs=Si+0*s*Si;
+
+ for i=1:k,
+ B=SiASi*E*B;
+ alfa=-sum(diag(E*B))/i;
+ B=B+alfa*Si;
+ chis=s*chis+alfa;
+ if i<k then Bfs=s*Bfs+B;end
+ end
+ Bis=Pi;
+ AAD=s*A*Di;
+ P=eye(A);
+
+ for nu=1:index+1,
+ P=AAD*P;
+ Bis=clean(Bis+Pi*P,1.d-10);
+ end
+ Bfs=clean(Bfs,1.d-10);
+ chis=clean(chis,1.d-10);
+endfunction
diff --git a/modules/linear_algebra/macros/gschur.bin b/modules/linear_algebra/macros/gschur.bin
new file mode 100755
index 000000000..d3bfa8286
--- /dev/null
+++ b/modules/linear_algebra/macros/gschur.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/gschur.sci b/modules/linear_algebra/macros/gschur.sci
new file mode 100755
index 000000000..25c23b79e
--- /dev/null
+++ b/modules/linear_algebra/macros/gschur.sci
@@ -0,0 +1,47 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [As,Es,Z,dim]= gschur(A,E,extern)
+
+ if argn(2)<=2 then
+ warning("Obsolete function. Please use schur instead.")
+ if argn(1)==2 then
+ [As,Es]= schur(A,E)
+ else
+ [As,Es,Q,Z]= schur(A,E);Q=Q'
+ end
+ elseif type(extern)==10 then
+ if convstr(extern)=="c"|convstr(extern)=="d" then
+ warning(msprintf(gettext("%s: Obsolete function. Please replace ''%s'' by ''%s''."),"gschur","gschur","schur"));
+ if argn(1)==4 then
+ [As,Es,Z,dim]= schur(A,E,extern)
+ elseif argn(1)==2 then
+ [As,Es,Z,dim]= schur(A,E,extern)
+ Es=dim;As=Z;
+ end
+ else // hard coded
+ warning(msprintf(gettext("%s: Obsolete function. Former external functions cannot be used anymore."),"gschur"));
+ //impossible to redefine
+ end
+ else //coded by a scilab function
+ //---- old------------------
+ //flag=extern(x)
+ //x(1) ==1 ==> x(2:3)=[al,be]
+ //x(1) ==2 ==> x(2:3)=[s,p]
+ warning(msprintf(gettext("%s: Obsolete function. Please replace ''%s'' by ''%s''."),"gschur","gschur","schur"));
+ deff("t=%_rule(Alpha,Beta)",["if imag(Alpha)==0 then"
+ " t=extern([1,real(Alpha),Beta])==1"
+ "else"
+ " c=Alpha/Beta"
+ " t=extern([2,real(c+c''),real(c*c'')])==1"
+ "end;"])
+ [As,Es,Z,dim]= schur(A,E,%_rule)
+ end
+endfunction
+
diff --git a/modules/linear_algebra/macros/gspec.bin b/modules/linear_algebra/macros/gspec.bin
new file mode 100755
index 000000000..743b453f9
--- /dev/null
+++ b/modules/linear_algebra/macros/gspec.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/gspec.sci b/modules/linear_algebra/macros/gspec.sci
new file mode 100755
index 000000000..275109ef4
--- /dev/null
+++ b/modules/linear_algebra/macros/gspec.sci
@@ -0,0 +1,15 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [al,be,Z]=gspec(A,B)
+ //For backward compatibility
+ warning(msprintf(gettext("%s: Obsolete function. Please replace ''%s'' by ''%s''."),"gspec","gspec","spec"));
+ [al,be,Z]=spec(A,B)
+endfunction
diff --git a/modules/linear_algebra/macros/householder.bin b/modules/linear_algebra/macros/householder.bin
new file mode 100755
index 000000000..1ffbdbb80
--- /dev/null
+++ b/modules/linear_algebra/macros/householder.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/householder.sci b/modules/linear_algebra/macros/householder.sci
new file mode 100755
index 000000000..f25e05832
--- /dev/null
+++ b/modules/linear_algebra/macros/householder.sci
@@ -0,0 +1,25 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function u=householder(v,w)
+ //Syntax
+ //u=householder(v [,w])
+ //Description
+ //given 2 column vectors v w of same size householder(v,w) returns a unitary
+ //column vector u, such that (eye-2*u*u')*v is proportional to w.
+ //(eye-2*u*u') is the orthogonal Householder reflexion matrix
+ //
+ // w default value is eye(v). In this case vector (eye-2*u*u')*v is the
+ // vector eye(v)*(+-norm(v))
+ [lhs,rhs]=argn(0)
+ if rhs<2 then w=eye(v),end
+ a=-sqrt((v'*v)/(w'*w))
+ u=v+a*w
+ u=u/norm(u)
+endfunction
diff --git a/modules/linear_algebra/macros/im_inv.bin b/modules/linear_algebra/macros/im_inv.bin
new file mode 100755
index 000000000..56924abac
--- /dev/null
+++ b/modules/linear_algebra/macros/im_inv.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/im_inv.sci b/modules/linear_algebra/macros/im_inv.sci
new file mode 100755
index 000000000..99ea513d2
--- /dev/null
+++ b/modules/linear_algebra/macros/im_inv.sci
@@ -0,0 +1,45 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA - François DELEBECQUE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [X,dim,Y]=im_inv(A,B,tol)
+ //[X,dim]=im_inv(A,B [,tol]) computes (A^-1)(B) i.e vectors whose
+ // image through A are in range(B).
+ // The dim first columns de X span (A^-1) (B)
+ // tol is a threshold to test if a subspace is included in an other
+ // default value tol = 100*%eps;
+
+ [lhs,rhs]=argn(0);
+ [nA,mA]=size(A);[nB,mB]=size(B);
+ if rhs==2 then tol=100*%eps*mA*nA*nB*mB,end;
+ if nA<>nB then
+ error(msprintf(gettext("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"),"im_inv",1,2))
+ return
+ end
+ // basis for im(B)
+ [Y,rB]=rowcomp(B);//u=Y'
+
+ //Trivial cases
+ if rB >= nA then X=eye(mA,mA);dim=mA,return;end;
+ if rB ==0 then [X,k1]=colcomp(A);dim=mA-k1,return,end
+ //
+ up=1:rB;low=rB+1:nA;
+ A=Y*A; //update
+
+ //vectors with image in B
+ [X,r1]=colcomp(A(low,:))
+ A1=A*X; //update
+ Aup=A1(up,:);
+ Alow=A1(low,:); //Alow(:,1:ma-r1)=0 by construction
+ if norm(Alow,1) <= tol*norm(Aup,1) then dim=mA,return,end
+ dim=mA-r1;
+endfunction
+
+
+
diff --git a/modules/linear_algebra/macros/kernel.bin b/modules/linear_algebra/macros/kernel.bin
new file mode 100755
index 000000000..9b4a7110f
--- /dev/null
+++ b/modules/linear_algebra/macros/kernel.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/kernel.sci b/modules/linear_algebra/macros/kernel.sci
new file mode 100755
index 000000000..931492acc
--- /dev/null
+++ b/modules/linear_algebra/macros/kernel.sci
@@ -0,0 +1,65 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function kerA=kernel(A,tol,flag)
+ //Syntax : [x]=kernel(A [,tol [,flag]])
+ // flag = 'svd' or 'sqr' no flag if A sparse
+ if type(A)==1 then
+ [lhs,rhs]=argn(0);
+ [n,m]=size(A);
+ select rhs
+ case 1 then
+ [kerA,rk]=colcomp(A);
+ case 2 then
+ [kerA,rk]=colcomp(A,"svd",tol)
+ case 3 then
+ [kerA,rk]=colcomp(A,flag,tol)
+ end
+ kerA=kerA(:,1:m-rk);return;
+ end
+ if type(A)==5 then
+ [lhs,rhs]=argn(0);
+ [ma,na]=size(A);
+ if rhs==3 then
+ error(msprintf(gettext("%s: SVD and QR not implemented in sparse.\n"),"kernel"));
+ end
+ if rhs==2 then tol=1.d-10;else tol=%eps;end
+ %tol=tol*max(abs(A))*max(ma,na);
+ if ma<na then
+ A=[A;sparse([],[],[na-ma,na])];
+ end
+ if ma>na then
+ A=A'*A;ma=na;
+ end
+ [ptr,rkA]=lufact(A,[%tol,0.001]);
+ [P,L,U,Q]=luget(ptr);
+ ludel(ptr);
+ U=clean(U);
+ [ptrU,rk]=lufact(U,[%tol,.001]);
+ nma=max(na,ma);
+ Y=[sparse([],[],[rkA,nma-rkA]);speye(nma-rkA,nma-rkA)];
+ kerA=[];
+ for k=1:na-rkA
+ bb=full(Y(:,k));
+ ww=sparse(lusolve(ptrU,bb));
+ kerA=[kerA,ww];
+ end
+ ludel(ptrU);
+ if na<>rkA then
+ kerA=clean(Q'*kerA);
+ end
+ if ma>na then kerA=kerA(1:na,:);
+ end
+ else
+ error(msprintf(gettext("%s: This feature has not been implemented.\n"),"kernel"));
+ end
+endfunction
+
+
diff --git a/modules/linear_algebra/macros/kroneck.bin b/modules/linear_algebra/macros/kroneck.bin
new file mode 100755
index 000000000..d2dbe9440
--- /dev/null
+++ b/modules/linear_algebra/macros/kroneck.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/kroneck.sci b/modules/linear_algebra/macros/kroneck.sci
new file mode 100755
index 000000000..472afb479
--- /dev/null
+++ b/modules/linear_algebra/macros/kroneck.sci
@@ -0,0 +1,67 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [Q,Z,Qd,Zd,numbeps,numbeta]=kroneck(E,A)
+ // Kronecker form:
+ //
+ // | sE(eps)-A(eps) | X | X | X |
+ // |----------------|----------------|------------|---------------|
+ // | O | sE(inf)-A(inf) | X | X |
+ // Q(sE-A)Z = |---------------------------------|----------------------------|
+ // | | | | |
+ // | 0 | 0 | sE(f)-A(f) | X |
+ // |--------------------------------------------------------------|
+ // | | | | |
+ // | 0 | 0 | 0 | sE(eta)-A(eta)|
+ //
+ // Ec=Q*E*Z, Ac=Q*A*Z, eps=Qd(1) x Zd(1) ,inf=Qd(2) x Zd(2)
+ // f = Qd(3) x Zd(3), eta=Qd(4)xZd(4)
+ //
+ // numbeps(1) = # of eps blocks of size 0 x 1
+ // numbeps(2) = # of eps blocks of size 1 x 2
+ // numbeps(3) = # of eps blocks of size 2 x 3 etc...
+ //
+ // numbeta(1) = # of eta blocks of size 1 x 0
+ // numbeta(2) = # of eta blocks of size 2 x 1
+ // numbeta(3) = # of eta blocks of size 3 x 2 etc...
+ //
+ // interface F.D. from Slicot-fstair
+ // T. Beelen's routines
+ [LHS,RHS]=argn(0);
+ if RHS==1 then [E,A]=pen2ea(E);end
+ [Q,Z,Ec,Ac,Qd,Zd,numbeps]=quaskro(E,A);
+ rows=Qd(1)+Qd(2)+1:Qd(1)+Qd(2)+Qd(3);
+ cols=Zd(1)+Zd(2)+1:Zd(1)+Zd(2)+Zd(3);
+ if cols==[] then
+ Zd(4)=Zd(3);Qd(4)=Qd(3);Qd(3)=0;
+ numbeta=Qd(4)-Zd(4);
+ return;
+ end;
+ if rows==[] then Qd(4)=0;Zd(4)=0;numbeta=0;return;end;
+ Er=Ec(rows,cols);
+ Ar=Ac(rows,cols);
+ E1=pertrans(Er);
+ A1=pertrans(Ar);
+ [Q2,Z2,Ec2,Ac2,Qd2,Zd2,numbeta]=quaskro(E1,A1);
+ // Here check that...
+ //Zd2(2)=0 Qd2(2)=0;
+ //Zd2(1)+Zd2(3)=Zd(3)
+ //Qd2(1)+Qd2(3)=Qd(3)
+ Z1=pertrans(Q2);
+ Q1=pertrans(Z2);
+ Zd1=[Qd2(3),Qd2(1)];
+ Qd1=[Zd2(3),Zd2(1)];
+ Zd=[Zd(1),Zd(2),Zd1];
+ Qd=[Qd(1),Qd(2),Qd1];
+ Z(:,cols)=Z(:,cols)*Z1;
+ Q(rows,:)=Q1*Q(rows,:);
+endfunction
+
+
diff --git a/modules/linear_algebra/macros/lib b/modules/linear_algebra/macros/lib
new file mode 100755
index 000000000..7160a333c
--- /dev/null
+++ b/modules/linear_algebra/macros/lib
Binary files differ
diff --git a/modules/linear_algebra/macros/linsolve.bin b/modules/linear_algebra/macros/linsolve.bin
new file mode 100755
index 000000000..031d88f81
--- /dev/null
+++ b/modules/linear_algebra/macros/linsolve.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/linsolve.sci b/modules/linear_algebra/macros/linsolve.sci
new file mode 100755
index 000000000..1e9a11cf3
--- /dev/null
+++ b/modules/linear_algebra/macros/linsolve.sci
@@ -0,0 +1,77 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [x0,kerA]=linsolve(A,b,x0)
+ %tol=1.D-10;
+ // Finds all x solution to Ax+b=0;
+ // x0=particular solution; kerA=nullspace of A
+ // Any x=x0+kerA*w with arbitrary w solves A*x+b=0
+ [LHS,RHS]=argn(0);
+ select type(A)
+ case 1 then //full matrix
+ Ab=[A,b];[ma,na]=size(Ab);
+ [W,rk]=colcomp(Ab);
+ W=W(:,1:na-rk);last=W(na,:);
+ [W2,rk1]=colcomp(last);
+ if rk1==0 then
+ warning(gettext("Conflicting linear constraints."));
+ x0=[];kerA=[];return;
+ end
+ W=W*W2;
+ kerA=W(1:na-1,1:na-rk-1);
+ if RHS==3 then
+ if norm(A*x0+b,1)<%tol then
+ return;
+ end
+ disp(gettext("Recomputing initial guess"));
+ end
+ piv=W(na,na-rk);x0=W(1:na-1,na-rk)/piv;
+ case 5 then //sparse matrix
+
+ [ma,na]=size(A);
+ %tol=1.D-10*max(abs(A))*max(ma,na);
+ if ma<na then
+ A=[A;sparse([],[],[na-ma,na])];b=[b;zeros(na-ma,1)];end
+ if ma>na then
+ //A=[A,sparse([],[],[ma,ma-na])];x0=[x0;zeros(ma-na,1)];
+ b=A'*b;A=A'*A;ma=na;
+ end
+ [ptr,rkA]=lufact(A,[%tol,0.001]);
+ [P,L,U,Q]=luget(ptr);
+ if RHS==3 then
+ if norm(A*x0+b,1)>%tol then
+ x0=lusolve(ptr,-b);
+ disp("recomputing initial guess");
+ end
+ end
+ if RHS==2 then
+ x0=lusolve(ptr,-b);
+ end
+ ludel(ptr);
+ U=clean(U);
+ [ptrU,rk]=lufact(U,[%tol,.001]);
+ nma=max(na,ma);
+ Y=[sparse([],[],[rkA,nma-rkA]);speye(nma-rkA,nma-rkA)];
+ kerA=[];
+ for k=1:na-rkA
+ bb=full(Y(:,k));
+ ww=sparse(lusolve(ptrU,bb));
+ kerA=[kerA,ww];
+ end
+ if na<>rkA then
+ kerA=clean(Q'*kerA);
+ end
+ if norm(A*x0+b,1)>%tol then
+ warning(msprintf(gettext("Possible Conflicting linear constraints, error in the order of %s"),string(norm(A*x0+b,1)) ));
+ end
+ if ma>na then kerA=kerA(1:na,:);x0=x0(1:na,1);end
+ ludel(ptrU);
+ end
+endfunction
diff --git a/modules/linear_algebra/macros/names b/modules/linear_algebra/macros/names
new file mode 100755
index 000000000..fdee597e3
--- /dev/null
+++ b/modules/linear_algebra/macros/names
@@ -0,0 +1,46 @@
+aff2ab
+classmarkov
+cmb_lin
+coff
+colcomp
+companion
+cond
+diff
+eigenmarkov
+fullrf
+fullrfk
+genmarkov
+givens
+glever
+gschur
+gspec
+householder
+im_inv
+kernel
+kroneck
+linsolve
+nlev
+orth
+pbig
+pen2ea
+pencan
+penlaur
+pinv
+polar
+proj
+projspec
+psmall
+quaskro
+randpencil
+range
+rank
+rowcomp
+rowshuff
+rref
+spaninter
+spanplus
+spantwo
+sqroot
+squeeze
+sva
+trace
diff --git a/modules/linear_algebra/macros/nlev.bin b/modules/linear_algebra/macros/nlev.bin
new file mode 100755
index 000000000..5c6824cac
--- /dev/null
+++ b/modules/linear_algebra/macros/nlev.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/nlev.sci b/modules/linear_algebra/macros/nlev.sci
new file mode 100755
index 000000000..9a2fe3921
--- /dev/null
+++ b/modules/linear_algebra/macros/nlev.sci
@@ -0,0 +1,65 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 1987-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
+// Copyright (C) 1987-2008 - INRIA - François DELEBECQUE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function[m,den]=nlev(a,z,rmax)
+ //[num,den]=nlev(a,z [,rmax]) calcule (z*eye-a)**(-1) par une version
+ //modifiee de l'algorithme de leverrier numeriquement plus stable.
+ //
+ //z chaine de caracteres donnant le nom de la variable formelle
+ //rmax parametre optionnel utilise pour bloc diagonaliser a (voir la
+ // fonction bdiag)
+ //
+
+ rhs=argn(2);
+ if rhs < 2 then
+ error(msprintf(gettext("%s: Wrong number of input arguments: %d or %d expected.\n"),"nlev",2,3));
+ end
+
+ z=poly(0,z);
+
+ if rhs==3 then
+ [a,x,bs]=bdiag(a,rmax),
+ else
+ [a,x,bs]=bdiag(a),
+ end
+
+ [m1 n1]=size(a)
+ if m1<>n1 then
+ error(20,1);
+ end
+ k=1;
+ m=[];
+ v=ones(1,n1);
+ den=1;
+ for n=bs';k1=k:k-1+n;
+ // algorithme de leverrier
+ h=z*eye(n,n)-a(k1,k1)
+ f=eye(n,n)
+ for kl=1:n-1,
+ b=h*f,
+ d=-sum(diag(b))/kl,
+ f=b+eye()*d,
+ end
+ d=sum(diag(h*f))/n
+ //
+ den=den*d;
+ l=[1:k-1,k+n:n1] ,
+ if l<>[] then
+ v(l)=v(l)*d;
+ end
+ m=[m,x(:,k1)*f];
+ k=k+n;
+ end;
+ m=m*diag(v)*inv(x);
+endfunction
+
+
+
diff --git a/modules/linear_algebra/macros/orth.bin b/modules/linear_algebra/macros/orth.bin
new file mode 100755
index 000000000..eb58dab1f
--- /dev/null
+++ b/modules/linear_algebra/macros/orth.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/orth.sci b/modules/linear_algebra/macros/orth.sci
new file mode 100755
index 000000000..9fd49fd40
--- /dev/null
+++ b/modules/linear_algebra/macros/orth.sci
@@ -0,0 +1,18 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [Q]=orth(A)
+ // Orthogonal basis for the span of A.
+ // Range(Q) = Range(A) and Q'*Q=eye
+ //!
+ [X,n]=rowcomp(A);X=X';
+ Q=X(:,1:n);
+endfunction
+
diff --git a/modules/linear_algebra/macros/pbig.bin b/modules/linear_algebra/macros/pbig.bin
new file mode 100755
index 000000000..9ae7d96c3
--- /dev/null
+++ b/modules/linear_algebra/macros/pbig.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/pbig.sci b/modules/linear_algebra/macros/pbig.sci
new file mode 100755
index 000000000..a9e78fca3
--- /dev/null
+++ b/modules/linear_algebra/macros/pbig.sci
@@ -0,0 +1,49 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA - François DELEBECQUE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [Q,M]=pbig(A,thres,flag)
+ //Projection on eigensubspace associated with eigenvalues
+ //with real part >= thres (flag='c') or with modulus >= thres (flag='d')
+ //Projection is defined by Q*M. Eigenvalues of M*A*Q = eigenvalues
+ //of A with real part >= thres (case 'c',...).
+ //If [Q1,M1]== full rank factorization (fullrf) of eye-Q*M then evals of
+ // M1*A*Q1 = evals of A with real part < thres (case 'c',...).
+ // See also psmall.
+ //!
+
+ [n,n]=size(A);
+ thres=real(thres);
+ if flag=="c" then
+ deff("[flag]=%smallei(x)","flag=real(x) >= thres")
+ deff("[flag]=%bigeig(x)","flag=real(x) < thres")
+ elseif flag=="d" then
+ deff("[flag]=%smallei(x)","flag=abs(x) >= thres")
+ deff("[flag]=%bigeig(x)","flag=abs(x) < thres")
+ else
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"),"pbig",3,"''c'',''d''"));
+ end
+ //
+ [X,dsmall] = schur(A,%smallei);
+ [Y,dbig] = schur(A,%bigeig);
+ Q=X(:,1:dsmall);
+ if Q==[] then M=[];return;end
+ Y1=Y';
+ M1=Y1(dbig+1:n,:);
+ E=M1*Q;
+ if rcond(E)>1.d-7 then
+ M=E\M1;
+ else
+ [Ab,X0]=balanc(A);
+ [X,dsmall] = schur(Ab,%smallei);X1=X*X0;Q=X1(:,1:dsmall);
+ [Y,dbig] = schur(Ab,%bigeig);Y1=inv(X0)*Y';M=Y1(dbig+1:n,:);
+ E=M*Q;
+ M=E\M;
+ end
+endfunction
diff --git a/modules/linear_algebra/macros/pen2ea.bin b/modules/linear_algebra/macros/pen2ea.bin
new file mode 100755
index 000000000..a4bf4499e
--- /dev/null
+++ b/modules/linear_algebra/macros/pen2ea.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/pen2ea.sci b/modules/linear_algebra/macros/pen2ea.sci
new file mode 100755
index 000000000..17dbf0ede
--- /dev/null
+++ b/modules/linear_algebra/macros/pen2ea.sci
@@ -0,0 +1,14 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [e,a]=pen2ea(f)
+ e=coeff(f,1);
+ a=-coeff(f,0);
+endfunction
diff --git a/modules/linear_algebra/macros/pencan.bin b/modules/linear_algebra/macros/pencan.bin
new file mode 100755
index 000000000..0431f3dc5
--- /dev/null
+++ b/modules/linear_algebra/macros/pencan.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/pencan.sci b/modules/linear_algebra/macros/pencan.sci
new file mode 100755
index 000000000..77b551000
--- /dev/null
+++ b/modules/linear_algebra/macros/pencan.sci
@@ -0,0 +1,30 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA - François DELEBECQUE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [Q,M,i1]=pencan(E,A)
+ // [Q,M,i1]=pencan(E,A)
+ // Given the pencil s*E-A pencan returns matrices Q and M
+ // such than M*(s*E-A)*Q is in "canonical" form i.e.
+ // M*E*Q is a block matrix [I,0;
+ // 0,N] with N nilpotent
+ // and i1 = size of the I matrix above (# of finite zeros of (sE-A)).
+ // M*A*Q is a block matrix [Ar,0;
+ // 0,I ]
+ //See glever, penlaur
+ //!
+ [LHS,RHS]=argn(0);
+ if RHS==1 then [E,A]=pen2ea(E);end
+ [Si,Pi,Di,index]=penlaur(E,A);
+ [Q1,M1]=fullrf(Si);
+ [Q2,M2]=fullrf(Pi);
+ [i1,i2]=size(M1);
+ M=[M1;M2];
+ Q=[Q1,Q2];
+endfunction
diff --git a/modules/linear_algebra/macros/penlaur.bin b/modules/linear_algebra/macros/penlaur.bin
new file mode 100755
index 000000000..9d24cf952
--- /dev/null
+++ b/modules/linear_algebra/macros/penlaur.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/penlaur.sci b/modules/linear_algebra/macros/penlaur.sci
new file mode 100755
index 000000000..27d57d372
--- /dev/null
+++ b/modules/linear_algebra/macros/penlaur.sci
@@ -0,0 +1,43 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 1988-2008 - INRIA - François DELEBECQUE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [Si,Pi,Di,order]=penlaur(E,A)
+ //[Si,Pi,Di,order]=penlaur(E,A)
+ // First Laurent coefficients of (s*E-A)^-1;
+ // (s*E-A)^-1 = ... + Si/s - (Pi + s*Di + ... +s^order Ni) at s = infinity
+ // order = order of the singularity
+ // The matrix s*E-A should be invertible.
+ // Experimental version: troubles when bad conditioning of
+ // (so*E-A)...)
+ //!
+ [LHS,RHS]=argn(0);
+ if RHS==1 then [E,A]=pen2ea(E);end
+ seed=rand("seed");typ=rand("info");
+ rand("normal");rand("seed",0);
+ tests=rand(1,10);
+ conditions=0*tests;k=1;
+ for s0=tests, conditions(k)=cond(s0*E-A);k=k+1;end
+ [w,k1]=min(conditions);
+ rand(typ);rand("seed",seed)
+ if w>1.d+20 then
+ error(msprintf(gettext("%s: Singular pencil."),"penlaur"));
+ return;
+ end
+ s0=tests(k1);
+ J=inv(s0*E-A);
+ [Se,Pe,De,i1]=projspec(J*E);
+ [Sa,Pa,Da,i2]=projspec(J*A);
+ order=i1-1;
+ Si=Se*J;
+ Pi=Pe*Sa*J;
+ Di=Pi*E*Pi;
+ if order==0 then Di=0*Di;end
+ //[S,P,D,index]=projspec(Di*E);
+endfunction
diff --git a/modules/linear_algebra/macros/pinv.bin b/modules/linear_algebra/macros/pinv.bin
new file mode 100755
index 000000000..81b456f14
--- /dev/null
+++ b/modules/linear_algebra/macros/pinv.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/pinv.sci b/modules/linear_algebra/macros/pinv.sci
new file mode 100755
index 000000000..056ad2f66
--- /dev/null
+++ b/modules/linear_algebra/macros/pinv.sci
@@ -0,0 +1,42 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function X=pinv(A,tol)
+ //Pseudo inverse
+ if type(A)==1 then
+ if A==[] then X=[],return,end
+
+ [U,S,V] = svd(A,"e");
+ S = diag(S)
+ if argn(2) < 2
+ tol = max(size(A)) * S(1) * %eps;
+ end
+ r=size(find(S>tol),"*") //Rank
+ if r == 0 then
+ X = zeros(A');
+ else
+ //X=V1*inv(S1)*U1'
+ X = V(:,1:r)* diag(ones(r,1)./S(1:r)) *U(:,1:r)';
+ end
+ else
+ [t,n]=typename();n=stripblanks(n(find(t==type(A))))
+ fun="%"+n+"_pinv"
+ if exists(fun)==1 then
+ if argn(2)==1 then
+ execstr("X="+fun+"(A)")
+ else
+ execstr("X="+fun+"(A,tol)")
+ end
+ else
+ error(msprintf(gettext("%s: Function not defined for type ''%s''. Check argument or define function %s."),"pinv",n,fun));
+ end
+ end
+endfunction
+
diff --git a/modules/linear_algebra/macros/polar.bin b/modules/linear_algebra/macros/polar.bin
new file mode 100755
index 000000000..228b528e1
--- /dev/null
+++ b/modules/linear_algebra/macros/polar.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/polar.sci b/modules/linear_algebra/macros/polar.sci
new file mode 100755
index 000000000..0d416625a
--- /dev/null
+++ b/modules/linear_algebra/macros/polar.sci
@@ -0,0 +1,29 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [ro,teta]=polar(a);
+ //[ro,Teta]=polar(A);
+ // Polar form of A
+ // A=Ro*exp(%i*Teta) Ro symmetric >=0
+ // Teta hermitian >=0
+ //F.D.
+ //!
+ [U,s,V]=svd(a);
+ ro1=U*sqrt(s);
+ ro=ro1*ro1';
+ W=U*V';
+ // A = Ro*W (Ro sdp ; W unit)
+ // W=exp(%i*Teta)
+ //
+ [ab,x,bs]=bdiag(W+0*%i*W);
+ z=log(diag(ab));
+ lw=x*diag(z)*inv(x);
+ teta=-%i*lw;
+endfunction
diff --git a/modules/linear_algebra/macros/proj.bin b/modules/linear_algebra/macros/proj.bin
new file mode 100755
index 000000000..aff7c53d2
--- /dev/null
+++ b/modules/linear_algebra/macros/proj.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/proj.sci b/modules/linear_algebra/macros/proj.sci
new file mode 100755
index 000000000..ccb93f635
--- /dev/null
+++ b/modules/linear_algebra/macros/proj.sci
@@ -0,0 +1,19 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [y]=proj(x1,x2)
+ //[y]=proj(x1,x2) projection on x2 parallel to x1
+ //F.D.
+ //!
+ [l,k]=size(x1);
+ [w,n]=rowcomp(x1);w1=w(:,1:n);
+ x1t=w(n+1:l,:);
+ y=x2/(x1t*x2)*x1t
+endfunction
diff --git a/modules/linear_algebra/macros/projspec.bin b/modules/linear_algebra/macros/projspec.bin
new file mode 100755
index 000000000..424f4573e
--- /dev/null
+++ b/modules/linear_algebra/macros/projspec.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/projspec.sci b/modules/linear_algebra/macros/projspec.sci
new file mode 100755
index 000000000..f3080787c
--- /dev/null
+++ b/modules/linear_algebra/macros/projspec.sci
@@ -0,0 +1,61 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA - François DELEBECQUE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [S,P,D,index]=projspec(A,tol)
+ //[S,P,D,index]=projspec(A)
+ //Spectral characteristics of A at 0
+ //S = reduced resolvent at 0 (S=-Drazin_inverse(A))
+ //P = spectral projection at 0
+ //D = Nilpotent operator at 0
+ //index = index of the 0 eigenvalue
+ //!
+ [LHS,RHS]=argn(0)
+ [n,n]=size(A);
+ if RHS==1 then tol=1.d-6;end;
+ // A=0 ?
+ if norm(A,1) < %eps*n*n
+ P=eye(A),D=A,S=0*P;index=1;
+ end
+ // nonsingular A: index 0
+ if rcond(A) > tol
+ S=inv(A),P=0*eye(A);D=P;index=0;return;
+ end;
+ //write(%io(2),' rank A^k rcond')
+ // index 1
+ index=1;
+ [B,C,dim]=fullrf(A);
+ if dim==0
+ P=eye(n,n);S=0*P;D=A;return
+ end;
+ Ck=C;Bk=B;//write(%io(2),[dim,rcond(C*B)],'(7x,f3.0,6x,e9.3)');
+ tst=rcond(Ck*Bk);
+ if size(Ck,1)==1 then tst=norm(Ck*Bk,1);end
+ if tst > tol then
+ M=inv(C*B);P=eye(A)-B*M*C;S=B*M*M*C;D=0*A;return
+ end
+ // Higher index
+ for k=2:n
+ [B,C,dim]=fullrf(C*B);
+ if dim==0
+ P=eye(n,n);S=0*P;D=A;index=k;return;
+ end;
+ Bk=Bk*B;Ck=C*Ck; // Bk*Ck = A^k (Full rank factorization)
+ index=k;
+ //write(%io(2),[dim,rcond(C*B)],'(7x,f3.0,6x,e9.3)');
+ if norm(C*B)*rcond(C*B) > tol,
+ M=inv((C*B)**index); // M=inv(Ck*Bk); (Alternative computation)
+ P=eye(n,n)-Bk*M*Ck; // P=eye(n,n)-Bk*inv(Ck*Bk)*Ck;
+ S=Bk*M*inv(C*B)*Ck; // S=inv(A-P-D)+P
+ D=0.5*(A*P+P*A);return;
+ end
+ end;
+ P=eye(n,n);S=0*P;D=A;index=k;return;
+endfunction
+
diff --git a/modules/linear_algebra/macros/psmall.bin b/modules/linear_algebra/macros/psmall.bin
new file mode 100755
index 000000000..a48865079
--- /dev/null
+++ b/modules/linear_algebra/macros/psmall.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/psmall.sci b/modules/linear_algebra/macros/psmall.sci
new file mode 100755
index 000000000..1002dee0f
--- /dev/null
+++ b/modules/linear_algebra/macros/psmall.sci
@@ -0,0 +1,50 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA - François DELEBECQUE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [Q,M]=psmall(A,thres,flag)
+ // [Q,M]=psmall(A,thres,flag)
+ //Projection on eigensubspace associated with eigenvalues
+ //with real part < thres (case flag='c') or with modulus <thres (flag='d')
+ //Projection is defined by Q*M. Eigenvalues of M*A*Q = eigenvalues
+ //of A with real part < thres (case flag='c',...).
+ //If [Q1,M1]== full rank factorization (fullrf) of eye-Q*M then evals of
+ // M1*A*Q1 =evals of A with real part >= thres (case flag='d',...).
+ // See also pbig
+ //!
+ [n,n]=size(A);
+ thres=real(thres);
+ if flag=="c" then
+ deff("[flag]=%smallei(x)","flag=real(x) < thres")
+ deff("[flag]=%bigeig(x)","flag=real(x) >= thres")
+
+ elseif flag=="d" then
+ deff("[flag]=%smallei(x)","flag=abs(x) < thres")
+ deff("[flag]=%bigeig(x)","flag=abs(x) >= thres")
+ else
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"),"psmall",3,"''c'',''d''"));
+ end
+ //
+ [X,dsmall] = schur(A,%smallei);
+ [Y,dbig] = schur(A,%bigeig);
+ Q=X(:,1:dsmall);
+ if Q==[] then M=[];return;end
+ Y1=Y';
+ M1=Y1(dbig+1:n,:);
+ E=M1*Q;
+ if rcond(E)>1.d-6 then
+ M=E\M1;
+ else
+ [Ab,X0]=balanc(A);
+ [X,dsmall] = schur(Ab,%smallei);X1=X*X0;Q=X1(:,1:dsmall);
+ [Y,dbig] = schur(Ab,%bigeig);Y1=inv(X0)*Y';M=Y1(dbig+1:n,:);
+ E=M*Q;
+ M=E\M;
+ end
+endfunction
diff --git a/modules/linear_algebra/macros/quaskro.bin b/modules/linear_algebra/macros/quaskro.bin
new file mode 100755
index 000000000..7419b9a37
--- /dev/null
+++ b/modules/linear_algebra/macros/quaskro.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/quaskro.sci b/modules/linear_algebra/macros/quaskro.sci
new file mode 100755
index 000000000..8a7417c7c
--- /dev/null
+++ b/modules/linear_algebra/macros/quaskro.sci
@@ -0,0 +1,52 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+
+function [Q,Z,Ec,Ac,Qd,Zd,numbeps]=quaskro(E,A,tol)
+ // quasi- Kronecker form: s*Ec - Ac = Q*(sE-A)*Z
+ //
+ // | sE(eps)-A(eps) | X | X |
+ // |----------------|----------------|------------|
+ // | O | sE(inf)-A(inf) | X |
+ // Q(sE-A)Z = |=================================|============|
+ // | | |
+ // | O | sE(r)-A(r) |
+ //
+ // Ec=Q*E*Z, Ac=Q*A*Z, eps=Qd(1) x Zd(1) ,inf=Qd(2) x Zd(2)
+ // r = Qd(3) x Zd(3)
+ // numbeps(1) = # of eps blocks of size 0 x 1
+ // numbeps(2) = # of eps blocks of size 1 x 2
+ // numbeps(3) = # of eps blocks of size 2 x 3 etc...
+ // interface from Slicot-fstair (F.D.)
+ // T. Beelen's routines
+ //!
+ [LHS,RHS]=argn(0);
+ if RHS==1 then [E,A]=pen2ea(E);tol=1.d-10;end
+ if RHS==2 then
+ if type(E)==2 then [E,A]=pen2ea(E);end //quaskro(pencil,tol)
+ if type(E)==1 then tol=1.d-10;end //quaskro(E,A);
+ end
+ [na,ma]=size(A);
+ Q=eye(na,na);Z=eye(ma,ma);
+ if E~=[] then nE=norm(E,1);else nE=0;end
+ [E,Q,Z,stair,rk]=ereduc(E,1000*%eps+tol*nE)
+ A=Q*A*Z;
+
+ if A~=[] then
+ tol=tol*max([norm(A,"fro"),norm(E,"fro")])+10*tol;
+ else
+ tol=0
+ end
+ [Ac,Ec,Q,Z,nlbcks,muk,nuk,muk0,nuk0,mnei]=fstair(A,E,Q,Z,stair,rk,tol)
+ numbeps=muk0(1:nlbcks)-nuk0(1:nlbcks);
+ Qd=[mnei(1),mnei(3),na-mnei(1)-mnei(3)];
+ Zd=[mnei(2),mnei(3),ma-mnei(2)-mnei(3)];
+
+endfunction
diff --git a/modules/linear_algebra/macros/randpencil.bin b/modules/linear_algebra/macros/randpencil.bin
new file mode 100755
index 000000000..08d3d1a4b
--- /dev/null
+++ b/modules/linear_algebra/macros/randpencil.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/randpencil.sci b/modules/linear_algebra/macros/randpencil.sci
new file mode 100755
index 000000000..28d01d1c2
--- /dev/null
+++ b/modules/linear_algebra/macros/randpencil.sci
@@ -0,0 +1,95 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function F=randpencil(eps,infi,fin,eta)
+ //returns a random pencil with given kronecker structure
+ //eps=[eps1,...,epsk]; epsilon blocks (size eps1x(eps1+1),....)
+ //fin=[l1,...,ln] finite eigenvalues (assumed real) (possibly [])
+ //infi=[k1,...,kp] size of J blocks, ki>=1 (infi=[] if no J blocks)
+ //eta=[eta1,...,etap]; eta blocks size (eta1+1)xeta1,...)
+ // epsi's should be >=0
+ // etai's should be >=0
+ // infi's should be >=1
+ // If called with eps=[0,...,0], infi=[], fin=[], eta=[]
+ // randpencil returns F=[];
+ // this should be an empty matrix with zero rows and coldim(eps) columns
+ // If called with eps=[], infi=[], fin=[], eta=[0,..,0]
+ // randpencil returns F=[];
+ // this should be an empty matrix with coldim(eta) rows and 0 columns.
+ // (bad behavior of the empty matrix!!!!!)
+
+ [LHS,RHS]=argn(0);
+ if RHS<>4 then
+ error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"),"randpencil",4));
+ end
+ select type(fin)
+ case 1
+ if diag(fin)<>[] then Fin=%s*eye()-diag(fin);else Fin=[];end
+ case 2
+ Fin=%s*eye()-companion(fin);
+ end
+ deff("j=%jdrn(n)","j=zeros(n,n);for k=1:n-1;j(k,k+1)=1;end")
+ deff("Lk=%eta(k)","Lk=zeros(k+1,k);if k==0 then return;end;for j=1:k;Lk(j,j)=%s;Lk(j+1,j)=-1;end");
+ deff("Lk=%epsilon(k)","Lk=zeros(k,k+1);if k==0 then return;end;for j=1:k;Lk(j,j)=%s;Lk(j,j+1)=-1;end");
+
+ J=[];
+ for kk=infi;
+ J=sysdiag(J,%jdrn(kk));
+ end
+ if J==[] then Infin=[],else Infin=%s*J-eye();end
+
+ flageps=%f;
+ Eps=[];
+ seps=gsort(eps);
+ if seps(1)==0 then flageps=%t;end
+ if ~flageps then
+ for k=seps;
+ if k==0 then [p,q]=size(Eps); Eps=[Eps,zeros(p,1)];end
+ if k<>0 then Eps=sysdiag(Eps,%epsilon(k));end
+ end
+ end
+
+ flageta=%f;
+ Eta=[];
+ seta=gsort(eta);
+ if seta(1)==0 then flageta=%t;end
+ if ~flageta then
+ for k=seta;
+ if k==0 then [p,q]=size(Eta); Eta=[Eta;zeros(1,q)];end
+ if k<>0 then Eta=sysdiag(Eta,%eta(k));end
+ end
+ end
+
+ F=sysdiag(Eps,Infin,Fin,Eta);
+
+ [p,q]=size(F);ncols=q;
+
+ if flageps then
+ F=[zeros(p,prod(size(eps))),F];
+ if F==[] then ncols=prod(size(eps));end
+ end
+
+ if flageta then
+ [p,q]=size(F);
+ if F~=[] then
+ F=[F;zeros(prod(size(eta)),q)];
+ else
+ F=[F;zeros(prod(size(eta)),ncols)];
+ end
+ end
+ // This can be uncommented for a seemingly more random pencil!
+ //[p,q]=size(F);
+ //rand('seed',0);
+ //rand('normal')
+ //Q=rand(p,p);
+ //Z=rand(q,q);
+ //F=Q*F*Z;
+endfunction
+
diff --git a/modules/linear_algebra/macros/range.bin b/modules/linear_algebra/macros/range.bin
new file mode 100755
index 000000000..69ce81568
--- /dev/null
+++ b/modules/linear_algebra/macros/range.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/range.sci b/modules/linear_algebra/macros/range.sci
new file mode 100755
index 000000000..ed45a765b
--- /dev/null
+++ b/modules/linear_algebra/macros/range.sci
@@ -0,0 +1,34 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA - François DELEBECQUE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [X,dim]=range(A,k)
+ // Computation of Range A^k ; the first dim rows of X span the
+ // range of A^k.
+ //!
+ if argn(2)==1 then k=1,end
+ k=double(k)
+ if int(k)<>k|k<0 then
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: Non-negative integer expected.\n"),"range",2));
+ end
+ if size(A,1)<>size(A,2)|~isreal(A) then
+ error(msprintf(gettext("%s: Wrong size for input argument #%d: A square matrix expected.\n"),"range",1));
+ end
+
+ if k==0 then
+ dim=size(A,1);X=eye(A);
+ else
+ [U,dim]=rowcomp(A);X=U;
+ for l=2:k
+ A=A*U';
+ [U,dim]=rowcomp(A(:,1:dim));
+ X=U*X;
+ end;
+ end
+endfunction
diff --git a/modules/linear_algebra/macros/rank.bin b/modules/linear_algebra/macros/rank.bin
new file mode 100755
index 000000000..a0c915c24
--- /dev/null
+++ b/modules/linear_algebra/macros/rank.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/rank.sci b/modules/linear_algebra/macros/rank.sci
new file mode 100755
index 000000000..9de89b22c
--- /dev/null
+++ b/modules/linear_algebra/macros/rank.sci
@@ -0,0 +1,33 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function r=rank(A,tol)
+ //Matrix rank
+ if type(A)==1 then
+ if A==[] then r=0;return,end
+ s = svd(A);
+ if argn(2) == 1 then
+ tol = max(size(A)) * s(1) * %eps;
+ end
+ r = size(find(s > tol),"*");
+ else
+ [t,n]=typename();n=stripblanks(n(find(t==type(A))))
+ fun="%"+n+"_rank"
+ if exists(fun)==1 then
+ if argn(2)==1 then
+ execstr("r="+fun+"(A)")
+ else
+ execstr("r="+fun+"(A,tol)")
+ end
+ else
+ error(msprintf(gettext("%s: Function not defined for type ''%s''. Check argument or define function %s."),"rank",n,fun));
+ end
+ end
+endfunction
diff --git a/modules/linear_algebra/macros/rowcomp.bin b/modules/linear_algebra/macros/rowcomp.bin
new file mode 100755
index 000000000..42e1d1578
--- /dev/null
+++ b/modules/linear_algebra/macros/rowcomp.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/rowcomp.sci b/modules/linear_algebra/macros/rowcomp.sci
new file mode 100755
index 000000000..d3292f263
--- /dev/null
+++ b/modules/linear_algebra/macros/rowcomp.sci
@@ -0,0 +1,46 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 1987-2008 - INRIA - François DELEBECQUE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [w,rk]=rowcomp(A,flag,tol)
+ //Row compression of A <--> computation of im(A)
+ //flag and tol are optional parameters
+ //flag='qr' or 'svd' (default 'svd')
+ //tol tolerance parameter (sqrt(%eps)*norm(A,1) as default value)
+ //the rk first (top) rows of w span the row range of a
+ //the rk first columns of w' span the image of a
+
+ if A==[] then w=[];rk=0;return;end
+
+ [ma,na]=size(A)
+ rhs=argn(2)
+
+ if norm(A,1) < sqrt(%eps)/10 then rk=0,w=eye(ma,ma),return;end
+
+ select rhs
+ case 1 then// default values for flag and tol
+ flag="svd",tol=sqrt(%eps)*norm(A,1);
+ case 2 then //default value for tol
+ tol=sqrt(%eps)*norm(A,1)
+ else
+ if size(tol,"*")>1|~isreal(tol)|tol<0 then
+ error(msprintf(gettext("%s: Wrong values for input argument #%d: Non-negative scalar expected.\n"),"rowcomp",3));
+ end
+ end
+ select flag
+ case "qr" then
+ [q,r,rk,e]=qr(A,tol);w=q';
+ case "svd" then
+ [u,s,v,rk]=svd(A,tol);w=u' ;
+ else
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"),"rowcomp",2,"''qr'',''svd''"));
+ end
+endfunction
+
+
diff --git a/modules/linear_algebra/macros/rowshuff.bin b/modules/linear_algebra/macros/rowshuff.bin
new file mode 100755
index 000000000..39adf82a6
--- /dev/null
+++ b/modules/linear_algebra/macros/rowshuff.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/rowshuff.sci b/modules/linear_algebra/macros/rowshuff.sci
new file mode 100755
index 000000000..42dabd9fd
--- /dev/null
+++ b/modules/linear_algebra/macros/rowshuff.sci
@@ -0,0 +1,50 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - François DELEBECQUE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [Ws,Fs1]=rowshuff(Fs,alfa)
+ // Shuffle algorithm: Given the pencil Fs=s*E-A, returns Ws=W(s)
+ // (square polynomial matrix) such that:
+ // Fs1 = s*E1-A1 = W(s)*(s*E-A) is a pencil with non singular E1 matrix.
+ // This is possible iff the pencil Fs = s*E-A is regular (i.e. invertible).
+ // The poles @ infinity of Fs are put to alfa and the zeros of Ws are @ alfa.
+ // Note that (s*E-A)^-1 = (s*E1-A1)^-1 * W(s) = (W(s)*(s*E-A))^-1 *W(s)
+
+ [LHS,RHS]=argn(0);
+ if RHS==1 then
+ alfa=0;
+ end
+ [E,A]=pen2ea(Fs);
+ // E is non singular: --> exit
+ if rcond(E) >= 1.d-5 then W=eye(E);Fs1=Fs;return;end
+ // E is singular:
+ s=poly(0,"s");tol=1.d-10*(norm(E,1)+norm(A,1));
+ [n,n]=size(E);Ws=eye(n,n);
+ //
+ rk=0;i=0;
+ while rk < n
+ if i==n then
+ error(msprintf(gettext("%s: Singular pencil."),"rowshuffle"));
+ W=[];
+ end
+ [W,rk]=rowcomp(E);
+ if rk==n then return;end
+ W1=W(1:rk,:);W2=W(rk+1:n,:);
+ E=[W1*E;
+ -W2*A];
+ A=[W1*A;
+ -alfa*W2*A];
+ Fs1=s*E-A;
+ // Update
+ Ws=[eye(rk,rk),zeros(rk,n-rk);
+ zeros(n-rk,rk),(s-alfa)*eye(n-rk,n-rk)]*W*Ws;
+ i=i+1;
+ end
+endfunction
+
diff --git a/modules/linear_algebra/macros/rref.bin b/modules/linear_algebra/macros/rref.bin
new file mode 100755
index 000000000..efe0eea80
--- /dev/null
+++ b/modules/linear_algebra/macros/rref.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/rref.sci b/modules/linear_algebra/macros/rref.sci
new file mode 100755
index 000000000..dc9bef402
--- /dev/null
+++ b/modules/linear_algebra/macros/rref.sci
@@ -0,0 +1,45 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [A,jb]=rref(A,tol)
+ //R = rref(A) produces the reduced row echelon form of A.
+ if argn(2)<2 then
+ tol=2*%eps*norm(A,"inf")*max(size(A))
+ end
+
+ if type(A)==1 then
+ if A==[] then R=[],return,end
+ [m,n]=size(A)
+ k = 1;l = 1;jb = [];
+ while (k <= m) & (l <= n)
+ // Find value and index of largest element in the remainder of column l.
+ [p,i] = max(abs(A(k:$,l))); i = i+k-1;
+ if (p <= tol) // The column is negligible
+ A(k:$,l) = zeros(m-k+1,1);
+ l = l + 1;
+ else
+ jb = [jb, l]; // Remember column index
+ A([k,i],l:$) = A([i,k],l:$); //swap rows i and j
+ A(k,l:$) = A(k,l:$)/A(k,l); // Normalize the pivot row
+
+ i = [1:k-1 k+1:m]; //other rows
+ A(i,l:$) = A(i,l:$) - A(i,l)*A(k,l:$); //eliminate
+ k = k + 1;l = l + 1;
+ end
+ end
+ else
+ [t,n]=typename();n=stripblanks(n(find(t==type(A))))
+ fun="%"+n+"_rref"
+ if exists(fun)==1 then
+ execstr("[A,jb]="+fun+"(A)")
+ else
+ error(msprintf(gettext("%s: Function not defined for type ''%s''. Check argument or define function %s."),"rref",n,fun));
+ end
+ end
+endfunction
diff --git a/modules/linear_algebra/macros/spaninter.bin b/modules/linear_algebra/macros/spaninter.bin
new file mode 100755
index 000000000..81d2f4737
--- /dev/null
+++ b/modules/linear_algebra/macros/spaninter.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/spaninter.sci b/modules/linear_algebra/macros/spaninter.sci
new file mode 100755
index 000000000..e181e4a05
--- /dev/null
+++ b/modules/linear_algebra/macros/spaninter.sci
@@ -0,0 +1,52 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA - François DELEBECQUE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [x,dim]=spaninter(a,b,tol)
+ //[X,dim]=spaninter(a,b [,tol]) computes intersection of Range(A)
+ // and Range(B)
+ //
+ // x(:,1:dim) is an orthogonal basis for A inter B.
+ // In the X basis A and B are respectively:
+ // X'*A and X'*B.
+ // dim dimension of subspace A inter B.
+ // tol threshold (sqrt(%eps) is the default value).
+
+ [lhs,rhs]=argn(0);
+ [na,ma]=size(a);[nb,mb]=size(b);
+ if ma*na==0 then dim=0;x=eye(nb,nb);return;end
+ if mb*nb==0 then dim=0;x=eye(na,na);return;end
+ if rhs==2 then tol=sqrt(%eps);end
+ if na <> nb then
+ error(msprintf(gettext("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"),"spaninter",1,2));
+ end
+ if mb > ma then [x,dim]=spaninter(b,a,tol),return,end
+ [xp,ra]=rowcomp(a);x=xp'
+ //test trivial cases :
+ //a surjective a inter b is b
+ if ra == na then [xp,dim]=rowcomp(b),x=xp',return,end
+ //a is zero
+ if ra == 0 then dim=0,return,end
+ b=xp*b; //update
+
+ // b2=vectors in b whch are in a
+ up=1:ra;low=ra+1:na;
+ [v1,k2]=colcomp(b(low,:));
+ b1=b*v1; //update
+ bup=b1(up,:);blow=b1(low,:)
+ if norm(blow,1) <= tol*norm(bup,1) then k2=0,end
+ k1=mb-k2;
+ if k1==0 then dim=0;return;end
+ b2=b1(:,1:k1); //intersection in base x
+ if norm(b2,1) < tol*norm(b,1)*mb*nb then dim=0,return,end
+ [u2p,dim]=rowcomp(b2(up,:));
+ x(:,up)=x(:,up)*u2p' //update
+endfunction
+
+
+
diff --git a/modules/linear_algebra/macros/spanplus.bin b/modules/linear_algebra/macros/spanplus.bin
new file mode 100755
index 000000000..45e19018d
--- /dev/null
+++ b/modules/linear_algebra/macros/spanplus.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/spanplus.sci b/modules/linear_algebra/macros/spanplus.sci
new file mode 100755
index 000000000..2f2f33be6
--- /dev/null
+++ b/modules/linear_algebra/macros/spanplus.sci
@@ -0,0 +1,40 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA - François DELEBECQUE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [x,dim,dima]=spanplus(a,b,tol)
+ //[X,dim,dima]=spanplus(A,B,tol) computes an orthogonal basis of
+ // a+b such that : the first dima columns of x span Range(A)
+ // and the following (dim-dima) columns make a basis of a+b
+ // relative to a. tol is an optional argument.
+ // The dim first columns of x make a basis for A+B.
+ //!
+ [na,ma]=size(a);[nb,mb]=size(b);
+ if na*ma==0 then
+ dima=0;[x,dim]=rowcomp(b);x=x';return;
+ end
+ if nb*mb==0 then [x,dima]=rowcomp(a);dim=dima;x=x';return;end
+ [lhs,rhs]=argn(0);
+ if rhs==2 then tol=%eps*na*nb*ma*mb;end
+ if na<>nb then
+ error(msprintf(gettext("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"),"spanplus",1,2));
+ end
+ [x,dima]=rowcomp(a);
+ b=x*b;x=x' //update b,x
+ if dima == na then dim=dima,return,end;
+ low=(dima+1):na;
+ blow=b(low,:);
+ if norm(blow,1) <= tol*norm(b,1),dim=dima,return,end
+ [u2,r2]=rowcomp(blow);
+ dim=dima+r2;
+ x(:,low)=x(:,low)*u2'; //update
+endfunction
+
+
+
diff --git a/modules/linear_algebra/macros/spantwo.bin b/modules/linear_algebra/macros/spantwo.bin
new file mode 100755
index 000000000..b2b50afba
--- /dev/null
+++ b/modules/linear_algebra/macros/spantwo.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/spantwo.sci b/modules/linear_algebra/macros/spantwo.sci
new file mode 100755
index 000000000..f52a36efb
--- /dev/null
+++ b/modules/linear_algebra/macros/spantwo.sci
@@ -0,0 +1,48 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA - François DELEBECQUE
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [Xp,dima,dimb,dim]=spantwo(A,B)
+ //Given two matrices A and B with same number of rows,
+ //returns a square matrix Xp (not necessarily orthogonal)
+ //such that :
+ // [*,0] (dim-dimb rows)
+ //Xp*[A,B]=[*,*] (dima+dimb-dim rows)
+ // [0,*] (dim-dima rows)
+ // [0,0]
+ //The dima first columns of inv(Xp) span range(A).
+ //Columns dim-dimb+1 to dima of inv(Xp) span the intesection of
+ //range(A) and range(B).
+ //The dim first columns of inv(Xp) span range(A)+range(B).
+ // Ex: A=[1,0,0,4;
+ // 5,6,7,8;
+ // 0,0,11,12;
+ // 0,0,0,16];
+ //B=[1,2,0,0]';C=[4,0,0,1];
+ //Sl=ss2ss(syslin('c',A,B,C),rand(A));
+ //[no,X]=contr(Sl(2),Sl(3));CO=X(:,1:no); //Controllable part
+ //[uo,Y]=unobs(Sl(2),Sl(4));UO=Y(:,1:uo); //Unobservable part
+ //[Xp,dimc,dimu,dim]=spantwo(CO,UO); //Kalman decomposition
+ //Slcan=ss2ss(Sl,inv(Xp));
+
+ [X1,dim,dima]=spanplus(A,B);Xp=X1';
+ B1B2B3=Xp*B;B1B2B3=B1B2B3(1:dim,:);
+ [W,dimb]=rowcomp(B1B2B3);W=W(dim:-1:1,:);
+ W11=W(1:dima,1:dima);W21=W(dima+1:dim,1:dima);
+ if rcond(W11)<1.d-10 then
+ // Which is better?
+ B1B2=B1B2B3(1:dima,:);[W,dimb0]=rowcomp(B1B2);W=W(dima:-1:1,:);
+ [n1,n2]=size(A);
+ Xp=sysdiag(W,eye(n1-dima,n1-dima))*Xp;
+ return;
+ end
+ Q=[eye(dima,dima),zeros(dima,dim-dima);
+ -W21*inv(W11),eye(dim-dima,dim-dima)];
+ Xp(1:dim,:)=Q*W*Xp(1:dim,:);
+endfunction
diff --git a/modules/linear_algebra/macros/sqroot.bin b/modules/linear_algebra/macros/sqroot.bin
new file mode 100755
index 000000000..c17947bd7
--- /dev/null
+++ b/modules/linear_algebra/macros/sqroot.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/sqroot.sci b/modules/linear_algebra/macros/sqroot.sci
new file mode 100755
index 000000000..88a9253cf
--- /dev/null
+++ b/modules/linear_algebra/macros/sqroot.sci
@@ -0,0 +1,24 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [S]=sqroot(Q)
+ Q1=(Q+Q')/2;
+ if norm(Q1-Q,1) > 100*%eps then
+ warning(msprintf(gettext("%s: Wrong size for input argument #%d: Symmetric expected"),"sqroot",1));
+ end
+ tt=min(spec(Q1));
+ if tt <-10*%eps then
+ warning(msprintf(gettext("%s: Wrong value for input argument #%d: Not semi-definite positive"),"sqroot",1));
+ end
+ if norm(Q,1) < sqrt(%eps) then S=[];return;end
+ [u,S,v,rk]=svd(Q);
+ S=v(:,1:rk)*sqrt(S(1:rk,1:rk));
+ if norm(imag(Q1),1) <1.d-8 then S=real(S);;end
+endfunction
diff --git a/modules/linear_algebra/macros/squeeze.bin b/modules/linear_algebra/macros/squeeze.bin
new file mode 100755
index 000000000..e4164b68a
--- /dev/null
+++ b/modules/linear_algebra/macros/squeeze.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/squeeze.sci b/modules/linear_algebra/macros/squeeze.sci
new file mode 100755
index 000000000..0a2114d9f
--- /dev/null
+++ b/modules/linear_algebra/macros/squeeze.sci
@@ -0,0 +1,37 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2002-2007 - INRIA - Eric Dubois
+// Copyright (C) 2007 - INRIA - Jean-Baptiste Silvy
+// Copyright (C) 2011 - INRIA - Serge Steer (extension to Structs, Cells,
+// 2D arrays of any types)
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function A = squeeze(A)
+
+ // PURPOSE: Remove singleton dimensions, that is any dimension
+ // for which the size of the input hypermatrix is 1; if the
+ // input is a matrix, it is unaffected
+ // ------------------------------------------------------------
+ // INPUT:
+ // * A = a hypermatrix or a matrix
+ // ------------------------------------------------------------
+
+ if or(typeof(A)==["hypermat","ce","st"]) then
+ Dims=size(A)
+ newDims = Dims(Dims <> 1) ;
+ if size(newDims,"*") <2 then
+ A=A(:)
+ else
+ A=matrix(A,newDims)
+ end
+ elseif type(A)<=10 then
+ // it is a standard matrix nothing to do
+ else
+ error(msprintf(gettext("%s: Wrong type for input argument #%d.\n"),"squeeze",1))
+ end
+
+endfunction
diff --git a/modules/linear_algebra/macros/sva.bin b/modules/linear_algebra/macros/sva.bin
new file mode 100755
index 000000000..de527bf20
--- /dev/null
+++ b/modules/linear_algebra/macros/sva.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/sva.sci b/modules/linear_algebra/macros/sva.sci
new file mode 100755
index 000000000..98135b85a
--- /dev/null
+++ b/modules/linear_algebra/macros/sva.sci
@@ -0,0 +1,32 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function [U,S,V]=sva(A,tol)
+ // approximation de rang donne d'une matrice
+ if A==[] then U=[],S=[],V=[],return,end
+ [U,S,V]=svd(A,"e")
+ if argn(2)==1 then
+ tol = max(size(A)) * S(1) * %eps;
+ rk = size(find(diag(S) > tol),"*");
+ else
+ if tol>1 then //rank given
+ rk=tol
+ if rk>min(size(A)) then
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: Requested rank is greater than matrix dimension."),"sva",1));
+ end
+ else
+ rk = size(find(diag(S) > tol),"*");
+ end
+ end
+ U=U(:,1:rk);S=S(1:rk,1:rk),V=V(:,1:rk)
+endfunction
+
+
+
diff --git a/modules/linear_algebra/macros/trace.bin b/modules/linear_algebra/macros/trace.bin
new file mode 100755
index 000000000..1ae164f0f
--- /dev/null
+++ b/modules/linear_algebra/macros/trace.bin
Binary files differ
diff --git a/modules/linear_algebra/macros/trace.sci b/modules/linear_algebra/macros/trace.sci
new file mode 100755
index 000000000..953502bc2
--- /dev/null
+++ b/modules/linear_algebra/macros/trace.sci
@@ -0,0 +1,56 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function t=trace(a)
+ // trace - computes the trace of a matrix
+ select type(a)
+ case 1 then
+ [m,n]=size(a)
+ if m<>n then
+ error(msprintf(gettext("%s: Wrong size for input argument #%d: A square matrix expected.\n"),"trace",1));
+ end
+ t=sum(diag(a))
+ case 2 then
+ [m,n]=size(a)
+ if m<>n then
+ error(msprintf(gettext("%s: Wrong size for input argument #%d: A square matrix expected.\n"),"trace",1));
+ end
+ t=sum(diag(a))
+ //-compat next case retained for list /tlist compatibility
+ case 15 then
+ if a(1)=="r" then
+ [m,n]=size(a)
+ if m<>n then
+ error(msprintf(gettext("%s: Wrong size for input argument #%d: A square matrix expected.\n"),"trace",1));
+ end
+ t=sum(diag(a))
+ else
+ error(msprintf(gettext("%s: Wrong type for input argument #%d.\n"),"trace",1));
+ end
+ case 16 then
+ if a(1)=="r" then
+ [m,n]=size(a)
+ if m<>n then
+ error(msprintf(gettext("%s: Wrong size for input argument #%d: A square matrix expected.\n"),"trace",1));
+ end
+ t=sum(diag(a))
+ else
+ error(msprintf(gettext("%s: Wrong type for input argument #%d.\n"),"trace",1));
+ end
+ case 5 then
+ [m,n]=size(a)
+ if m<>n then
+ error(msprintf(gettext("%s: Wrong size for input argument #%d: A square matrix expected.\n"),"trace",1));
+ end
+ t=sum(diag(a))
+ else
+ error(msprintf(gettext("%s: Wrong type for input argument #%d.\n"),"trace",1));
+ end
+endfunction
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/.dirstamp b/modules/linear_algebra/sci_gateway/c/.deps/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/.dirstamp
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-assembleEigenvectors.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-assembleEigenvectors.Plo
new file mode 100755
index 000000000..b412e8847
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-assembleEigenvectors.Plo
@@ -0,0 +1,198 @@
+sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo: \
+ sci_gateway/c/assembleEigenvectors.c /usr/include/stdc-predef.h \
+ ../../modules/elementary_functions/includes/elementary_functions.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/values.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/float.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/elementary_functions/includes/elementary_functions.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/values.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/float.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-gw_linear_algebra.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-gw_linear_algebra.Plo
new file mode 100755
index 000000000..67975ca7d
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-gw_linear_algebra.Plo
@@ -0,0 +1,277 @@
+sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo: \
+ sci_gateway/c/gw_linear_algebra.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h /usr/include/wchar.h \
+ /usr/include/stdio.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/callFunctionFromGateway.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/callFunctionFromGateway.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-gw_linear_algebra2.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-gw_linear_algebra2.Plo
new file mode 100755
index 000000000..7fe068e85
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-gw_linear_algebra2.Plo
@@ -0,0 +1,285 @@
+sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo: \
+ sci_gateway/c/gw_linear_algebra2.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/gw_linear_algebra.h includes/dynlib_linear_algebra.h \
+ ../../modules/core/includes/machine.h includes/gw_linear_algebra2.h \
+ ../../modules/core/includes/callFunctionFromGateway.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/values.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/float.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h /usr/include/wchar.h \
+ /usr/include/stdio.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+includes/gw_linear_algebra2.h:
+
+../../modules/core/includes/callFunctionFromGateway.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/values.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/float.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_backslash.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_backslash.Plo
new file mode 100755
index 000000000..2bff1ef45
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_backslash.Plo
@@ -0,0 +1,236 @@
+sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo: \
+ sci_gateway/c/sci_backslash.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_balanc.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_balanc.Plo
new file mode 100755
index 000000000..ba5439c49
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_balanc.Plo
@@ -0,0 +1,236 @@
+sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo: \
+ sci_gateway/c/sci_balanc.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_bdiag.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_bdiag.Plo
new file mode 100755
index 000000000..247b808ca
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_bdiag.Plo
@@ -0,0 +1,214 @@
+sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo: \
+ sci_gateway/c/sci_bdiag.c /usr/include/stdc-predef.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_chol.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_chol.Plo
new file mode 100755
index 000000000..1def6c4db
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_chol.Plo
@@ -0,0 +1,236 @@
+sci_gateway/c/libscilinear_algebra_la-sci_chol.lo: \
+ sci_gateway/c/sci_chol.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_det.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_det.Plo
new file mode 100755
index 000000000..1d6fca45e
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_det.Plo
@@ -0,0 +1,235 @@
+sci_gateway/c/libscilinear_algebra_la-sci_det.lo: sci_gateway/c/sci_det.c \
+ /usr/include/stdc-predef.h /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_dgeev.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_dgeev.Plo
new file mode 100755
index 000000000..5ce7b8a29
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_dgeev.Plo
@@ -0,0 +1,216 @@
+sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo: \
+ sci_gateway/c/sci_dgeev.c /usr/include/stdc-predef.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/elementary_functions/includes/vfinite.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/elementary_functions/includes/dynlib_elementary_functions.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ sci_gateway/c/assembleEigenvectors.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/elementary_functions/includes/vfinite.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/elementary_functions/includes/dynlib_elementary_functions.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+sci_gateway/c/assembleEigenvectors.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_dggev.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_dggev.Plo
new file mode 100755
index 000000000..90fc23457
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_dggev.Plo
@@ -0,0 +1,225 @@
+sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo: \
+ sci_gateway/c/sci_dggev.c /usr/include/stdc-predef.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/elementary_functions/includes/elementary_functions.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/elementary_functions/includes/vfinite.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/elementary_functions/includes/dynlib_elementary_functions.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/output_stream/includes/msgs.h \
+ ../../modules/output_stream/includes/dynlib_output_stream.h \
+ sci_gateway/c/assembleEigenvectors.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/elementary_functions/includes/elementary_functions.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/elementary_functions/includes/vfinite.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/elementary_functions/includes/dynlib_elementary_functions.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/output_stream/includes/msgs.h:
+
+../../modules/output_stream/includes/dynlib_output_stream.h:
+
+sci_gateway/c/assembleEigenvectors.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_dsyev.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_dsyev.Plo
new file mode 100755
index 000000000..488cf9833
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_dsyev.Plo
@@ -0,0 +1,219 @@
+sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo: \
+ sci_gateway/c/sci_dsyev.c /usr/include/stdc-predef.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/elementary_functions/includes/elementary_functions.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/elementary_functions/includes/vfinite.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/elementary_functions/includes/dynlib_elementary_functions.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ sci_gateway/c/assembleEigenvectors.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/elementary_functions/includes/elementary_functions.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/elementary_functions/includes/vfinite.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/elementary_functions/includes/dynlib_elementary_functions.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+sci_gateway/c/assembleEigenvectors.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_hess.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_hess.Plo
new file mode 100755
index 000000000..6094c4841
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_hess.Plo
@@ -0,0 +1,236 @@
+sci_gateway/c/libscilinear_algebra_la-sci_hess.lo: \
+ sci_gateway/c/sci_hess.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_inv.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_inv.Plo
new file mode 100755
index 000000000..69d344e9f
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_inv.Plo
@@ -0,0 +1,235 @@
+sci_gateway/c/libscilinear_algebra_la-sci_inv.lo: sci_gateway/c/sci_inv.c \
+ /usr/include/stdc-predef.h /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_lsq.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_lsq.Plo
new file mode 100755
index 000000000..a36268b45
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_lsq.Plo
@@ -0,0 +1,235 @@
+sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo: sci_gateway/c/sci_lsq.c \
+ /usr/include/stdc-predef.h /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_lu.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_lu.Plo
new file mode 100755
index 000000000..fe56b4f17
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_lu.Plo
@@ -0,0 +1,235 @@
+sci_gateway/c/libscilinear_algebra_la-sci_lu.lo: sci_gateway/c/sci_lu.c \
+ /usr/include/stdc-predef.h /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_norm.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_norm.Plo
new file mode 100755
index 000000000..9eb35e4e3
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_norm.Plo
@@ -0,0 +1,310 @@
+sci_gateway/c/libscilinear_algebra_la-sci_norm.lo: \
+ sci_gateway/c/sci_norm.c /usr/include/stdc-predef.h /usr/include/stdio.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h includes/gw_linear_algebra2.h \
+ includes/dynlib_linear_algebra.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h src/c/norm.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_linear_algebra2.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+src/c/norm.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_qr.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_qr.Plo
new file mode 100755
index 000000000..7a98090a6
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_qr.Plo
@@ -0,0 +1,235 @@
+sci_gateway/c/libscilinear_algebra_la-sci_qr.lo: sci_gateway/c/sci_qr.c \
+ /usr/include/stdc-predef.h /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_rcond.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_rcond.Plo
new file mode 100755
index 000000000..0cc478793
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_rcond.Plo
@@ -0,0 +1,236 @@
+sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo: \
+ sci_gateway/c/sci_rcond.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_schur.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_schur.Plo
new file mode 100755
index 000000000..a4d5f65c1
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_schur.Plo
@@ -0,0 +1,236 @@
+sci_gateway/c/libscilinear_algebra_la-sci_schur.lo: \
+ sci_gateway/c/sci_schur.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_slash.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_slash.Plo
new file mode 100755
index 000000000..5f70e242f
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_slash.Plo
@@ -0,0 +1,236 @@
+sci_gateway/c/libscilinear_algebra_la-sci_slash.lo: \
+ sci_gateway/c/sci_slash.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_spec.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_spec.Plo
new file mode 100755
index 000000000..7b2db2cde
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_spec.Plo
@@ -0,0 +1,239 @@
+sci_gateway/c/libscilinear_algebra_la-sci_spec.lo: \
+ sci_gateway/c/sci_spec.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/issymmetric.h \
+ includes/dynlib_linear_algebra.h includes/gw_linear_algebra.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/issymmetric.h:
+
+includes/dynlib_linear_algebra.h:
+
+includes/gw_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_svd.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_svd.Plo
new file mode 100755
index 000000000..5f4c189d1
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_svd.Plo
@@ -0,0 +1,235 @@
+sci_gateway/c/libscilinear_algebra_la-sci_svd.lo: sci_gateway/c/sci_svd.c \
+ /usr/include/stdc-predef.h /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_zgeev.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_zgeev.Plo
new file mode 100755
index 000000000..391c77c19
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_zgeev.Plo
@@ -0,0 +1,219 @@
+sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo: \
+ sci_gateway/c/sci_zgeev.c /usr/include/stdc-predef.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/elementary_functions/includes/elementary_functions.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/elementary_functions/includes/vfinite.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/elementary_functions/includes/dynlib_elementary_functions.h \
+ sci_gateway/c/assembleEigenvectors.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/elementary_functions/includes/elementary_functions.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/elementary_functions/includes/vfinite.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/elementary_functions/includes/dynlib_elementary_functions.h:
+
+sci_gateway/c/assembleEigenvectors.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_zggev.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_zggev.Plo
new file mode 100755
index 000000000..97991d121
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_zggev.Plo
@@ -0,0 +1,225 @@
+sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo: \
+ sci_gateway/c/sci_zggev.c /usr/include/stdc-predef.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/elementary_functions/includes/elementary_functions.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/output_stream/includes/msgs.h \
+ ../../modules/output_stream/includes/dynlib_output_stream.h \
+ ../../modules/elementary_functions/includes/vfinite.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/elementary_functions/includes/dynlib_elementary_functions.h \
+ sci_gateway/c/assembleEigenvectors.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/elementary_functions/includes/elementary_functions.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/output_stream/includes/msgs.h:
+
+../../modules/output_stream/includes/dynlib_output_stream.h:
+
+../../modules/elementary_functions/includes/vfinite.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/elementary_functions/includes/dynlib_elementary_functions.h:
+
+sci_gateway/c/assembleEigenvectors.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_zheev.Plo b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_zheev.Plo
new file mode 100755
index 000000000..7285c9f8f
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.deps/libscilinear_algebra_la-sci_zheev.Plo
@@ -0,0 +1,219 @@
+sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo: \
+ sci_gateway/c/sci_zheev.c /usr/include/stdc-predef.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/elementary_functions/includes/elementary_functions.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/elementary_functions/includes/vfinite.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/elementary_functions/includes/dynlib_elementary_functions.h \
+ sci_gateway/c/assembleEigenvectors.h includes/gw_linear_algebra.h \
+ includes/dynlib_linear_algebra.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/elementary_functions/includes/elementary_functions.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/elementary_functions/includes/vfinite.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/elementary_functions/includes/dynlib_elementary_functions.h:
+
+sci_gateway/c/assembleEigenvectors.h:
+
+includes/gw_linear_algebra.h:
+
+includes/dynlib_linear_algebra.h:
diff --git a/modules/linear_algebra/sci_gateway/c/.dirstamp b/modules/linear_algebra/sci_gateway/c/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.dirstamp
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-assembleEigenvectors.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-assembleEigenvectors.o
new file mode 100755
index 000000000..43ede2f04
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-assembleEigenvectors.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-gw_linear_algebra.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-gw_linear_algebra.o
new file mode 100755
index 000000000..a5a13e68f
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-gw_linear_algebra.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-gw_linear_algebra2.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-gw_linear_algebra2.o
new file mode 100755
index 000000000..12cd4c0a8
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-gw_linear_algebra2.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_backslash.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_backslash.o
new file mode 100755
index 000000000..f42905691
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_backslash.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_balanc.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_balanc.o
new file mode 100755
index 000000000..4b1c3a829
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_balanc.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_bdiag.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_bdiag.o
new file mode 100755
index 000000000..f893e1685
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_bdiag.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_chol.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_chol.o
new file mode 100755
index 000000000..e37ef0ae5
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_chol.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_det.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_det.o
new file mode 100755
index 000000000..f143070b9
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_det.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_dgeev.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_dgeev.o
new file mode 100755
index 000000000..2c27e2de0
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_dgeev.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_dggev.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_dggev.o
new file mode 100755
index 000000000..2a7fa2ee9
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_dggev.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_dsyev.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_dsyev.o
new file mode 100755
index 000000000..c8776d7d4
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_dsyev.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_hess.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_hess.o
new file mode 100755
index 000000000..bcbeafdc9
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_hess.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_inv.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_inv.o
new file mode 100755
index 000000000..64828b239
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_inv.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_lsq.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_lsq.o
new file mode 100755
index 000000000..d7d3170c6
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_lsq.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_lu.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_lu.o
new file mode 100755
index 000000000..238e4068d
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_lu.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_norm.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_norm.o
new file mode 100755
index 000000000..6ad81634a
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_norm.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_qr.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_qr.o
new file mode 100755
index 000000000..06d609cd6
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_qr.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_rcond.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_rcond.o
new file mode 100755
index 000000000..c32234b2c
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_rcond.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_schur.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_schur.o
new file mode 100755
index 000000000..515eb3270
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_schur.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_slash.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_slash.o
new file mode 100755
index 000000000..1675a1a69
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_slash.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_spec.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_spec.o
new file mode 100755
index 000000000..9dc04adb1
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_spec.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_svd.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_svd.o
new file mode 100755
index 000000000..074b9049e
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_svd.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_zgeev.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_zgeev.o
new file mode 100755
index 000000000..f90ee59bc
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_zgeev.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_zggev.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_zggev.o
new file mode 100755
index 000000000..bc2b6ada9
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_zggev.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_zheev.o b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_zheev.o
new file mode 100755
index 000000000..264e5e575
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/.libs/libscilinear_algebra_la-sci_zheev.o
Binary files differ
diff --git a/modules/linear_algebra/sci_gateway/c/assembleEigenvectors.c b/modules/linear_algebra/sci_gateway/c/assembleEigenvectors.c
new file mode 100755
index 000000000..08bf2f1dd
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/assembleEigenvectors.c
@@ -0,0 +1,226 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2008 - INRIA - Michaël Baudin
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+
+#include "elementary_functions.h"
+#include "stack-c.h"
+extern int C2F(dlaset)();
+
+//
+// assembleEigenvectorsSourceToTarget --
+// Assemble conjugated eigenvectors from the real part into real and imaginary parts.
+// Dispatch the real part of the eigenvectors into the real and imaginary parts,
+// depending on the imaginary part of the eigenvalues.
+// The current function reorder the values in the eigenvector array
+// and convert from Lapack, compact storage to the Scilab, natural storage.
+// Arguments
+// iRows : number of rows
+// eigenvaluesImg, input : the imaginary part of the eigenvalues
+// EVRealSource, input : the real parts of the source eigenvectors
+// EVRealTarget, output : real part of the target eigenvectors
+// EVImgTarget, output : imaginary part of the target eigenvectors
+// Notes
+// In some eigenvalue computing routines, such as dggev for example,
+// the eigenvectors are :
+// - real (that is with an imaginary part = 0),
+// - conjugated.
+// In that case, Lapack stores the eigenvectors in the following compact way.
+// (Extracted from DGGEV comments)
+//------------------------
+// The right eigenvectors v(j) are stored one
+// after another in the columns of VR, in the same order as
+// their eigenvalues. If the j-th eigenvalue is real, then
+// v(j) = VR(:,j), the j-th column of VR. If the j-th and
+// (j+1)-th eigenvalues form a complex conjugate pair, then
+// v(j) = VR(:,j)+i*VR(:,j+1) and v(j+1) = VR(:,j)-i*VR(:,j+1).
+//------------------------
+// But in Scilab, the eigenvectors must be order in a more natural order,
+// and this is why a conversion must be performed.
+//
+int assembleEigenvectorsSourceToTarget(int iRows, double * eigenvaluesImg,
+ double * EVRealSource,
+ double * EVRealTarget, double * EVImgTarget)
+{
+
+ double ZERO = 0;
+ int i;
+ int ij;
+ int ij1;
+ int j;
+
+ j = 0;
+ while (j < iRows)
+ {
+ if (eigenvaluesImg[j] == ZERO)
+ {
+ for (i = 0 ; i < iRows ; i++)
+ {
+ ij = i + j * iRows;
+ EVRealTarget[ij] = EVRealSource[ij];
+ EVImgTarget[ij] = ZERO;
+ }
+ j = j + 1;
+ }
+ else
+ {
+ for (i = 0 ; i < iRows ; i++)
+ {
+ ij = i + j * iRows;
+ ij1 = i + (j + 1) * iRows;
+ EVRealTarget[ij] = EVRealSource[ij];
+ EVImgTarget[ij] = EVRealSource[ij1];
+ EVRealTarget[ij1] = EVRealSource[ij];
+ EVImgTarget[ij1] = -EVRealSource[ij1];
+ }
+ j = j + 2;
+ }
+ }
+ return 0;
+}
+//
+// assembleEigenvectorsInPlace --
+// Assemble conjugated eigenvectors from the real part into real and imaginary parts.
+// Dispatch the real part of the eigenvectors into the real and imaginary parts,
+// depending on the imaginary part of the eigenvalues.
+// The current function reorder the values in the eigenvector array
+// and convert from Lapack, compact storage to the Scilab, natural storage.
+// Perform the assembling in place, that is, update the matrix.
+// Arguments
+// iRows : number of rows
+// iCols : number of columns
+// eigenvaluesImg, input : the imaginary part of the eigenvalues
+// EVReal, input/output : real part of the eigenvectors
+// EVImg, output : imaginary part of the eigenvectors
+//
+int assembleEigenvectorsInPlace(int iRows, double * eigenvaluesImg,
+ double * EVReal, double * EVImg)
+{
+
+ double ZERO = 0;
+ int j;
+ int INCY;
+ int totalsize;
+
+ totalsize = iRows * iRows;
+
+ INCY = 1;
+ C2F(dset)(&totalsize, &ZERO, EVImg, &INCY);
+
+ j = 0;
+ INCY = 1;
+ while (j < iRows)
+ {
+ if (eigenvaluesImg[j] == ZERO)
+ {
+ j = j + 1;
+ }
+ else
+ {
+ int i;
+ int ij;
+ int ij1;
+ for (i = 0 ; i < iRows ; i++)
+ {
+ ij = i + j * iRows;
+ ij1 = i + (j + 1) * iRows;
+ EVImg[ij] = EVReal[ij1];
+ EVImg[ij1] = - EVReal[ij1];
+ EVReal[ij1] = EVReal[ij];
+ }
+ j = j + 2;
+ }
+ }
+ return 0;
+}
+//
+// assembleComplexEigenvaluesFromDoublePointer --
+// Assemble the source complex eigenvalues array into the target complex eigenvalues diagonal matrix.
+// Arguments
+// iRows : number of rows
+// EVRealSource, input : the real parts of source eigenvalues array, with size iRows
+// EVImgSource, input : the imaginary parts of source eigenvalues array, with size iRows
+// EVRealTarget, output : the real parts of target eigenvalues matrix, with size iRows x iRows
+// EVImgTarget, output : the imaginary parts of target eigenvalues matrix, with size iRows x iRows
+//
+int assembleComplexEigenvaluesFromDoublePointer(int iRows, double * EVRealSource, double * EVImgSource,
+ double * EVRealTarget, double * EVImgTarget)
+{
+ int INCY = 1;
+ int i;
+ int ii;
+ int totalsize;
+ double ZERO = 0;
+ totalsize = iRows * iRows;
+
+ C2F(dset)(&totalsize, &ZERO, EVRealTarget, &INCY);
+ C2F(dset)(&totalsize, &ZERO, EVImgTarget, &INCY);
+
+ for (i = 0 ; i < iRows ; i++)
+ {
+ ii = i + i * iRows;
+ EVRealTarget[ii] = EVRealSource[i];
+ EVImgTarget[ii] = EVImgSource[i];
+ }
+ return 0;
+}
+
+//
+// assembleComplexEigenvaluesFromDoubleComplexPointer --
+// Assemble the source complex eigenvalues array into the target complex eigenvalues diagonal matrix.
+// Arguments
+// iRows : number of rows
+// EVSource, input : the real and imaginary parts of source eigenvalues array, with size iRows
+// EVRealTarget, output : the real parts of target eigenvalues matrix, with size iRows x iRows
+// EVImgTarget, output : the imaginary parts of target eigenvalues matrix, with size iRows x iRows
+//
+int assembleComplexEigenvaluesFromDoubleComplexPointer(int iRows, doublecomplex * EVSource,
+ double * EVRealTarget, double * EVImgTarget)
+{
+ // Transfert eigenvalues
+ char UPLO = 'F';
+ double ZERO = 0;
+ int icol;
+ int ii;
+ C2F(dlaset)( &UPLO, &iRows, &iRows, &ZERO, &ZERO, EVRealTarget, &iRows );
+ C2F(dlaset)( &UPLO, &iRows, &iRows, &ZERO, &ZERO, EVImgTarget, &iRows );
+ // SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+ for (icol = 0 ; icol < iRows ; icol++)
+ {
+ ii = icol + icol * iRows;
+ EVRealTarget[ii] = EVSource[icol].r;
+ EVImgTarget[ii] = EVSource[icol].i;
+ }
+ return 0;
+}
+//
+// assembleEigenvaluesFromDoublePointer --
+// Assemble the source real eigenvalues array into the target real eigenvalues diagonal matrix.
+// Arguments
+// iRows : number of rows
+// EVSource, input : the source eigenvalues array, with size iRows
+// EVTarget, output : the target eigenvalues matrix, with size iRows x iRows
+//
+int assembleEigenvaluesFromDoublePointer(int iRows, double * EVSource, double * EVTarget)
+{
+ int icol = 0;
+ int ii;
+ char UPLO = 'F';
+ double ZERO = 0;
+ C2F(dlaset)( &UPLO, &iRows, &iRows, &ZERO, &ZERO, EVTarget, &iRows );
+ // SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+
+ for (icol = 0 ; icol < iRows ; icol++)
+ {
+ ii = icol + icol * iRows;
+ EVTarget[ii] = EVSource[icol];
+ }
+ return 0;
+}
diff --git a/modules/linear_algebra/sci_gateway/c/assembleEigenvectors.h b/modules/linear_algebra/sci_gateway/c/assembleEigenvectors.h
new file mode 100755
index 000000000..8756d3432
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/assembleEigenvectors.h
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __ASSEMBLEEIGENVECTORS__
+#define __ASSEMBLEEIGENVECTORS__
+
+int assembleEigenvectorsSourceToTarget(int iRows, double * eigenvaluesImg,
+ double * EVRealSource,
+ double * EVRealTarget, double * EVImgTarget);
+int assembleEigenvectorsInPlace(int iRows, double * eigenvaluesImg,
+ double * EVReal, double * EVImg);
+int assembleComplexEigenvaluesFromDoublePointer(int iRows, double * EVRealSource, double * EVImgSource,
+ double * EVRealTarget, double * EVImgTarget);
+int assembleComplexEigenvaluesFromDoubleComplexPointer(int iRows, doublecomplex * EVSource,
+ double * EVRealTarget, double * EVImgTarget);
+int assembleEigenvaluesFromDoublePointer(int iRows, double * EVSource, double * EVTarget);
+#endif /* !__ASSEMBLEEIGENVECTORS__ */
diff --git a/modules/linear_algebra/sci_gateway/c/gw_linear_algebra.c b/modules/linear_algebra/sci_gateway/c/gw_linear_algebra.c
new file mode 100755
index 000000000..b67ebaabe
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/gw_linear_algebra.c
@@ -0,0 +1,49 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include "api_scilab.h"
+#include "MALLOC.h"
+#include "gw_linear_algebra.h"
+#include "callFunctionFromGateway.h"
+/*--------------------------------------------------------------------------*/
+static int C2F(intvoid)(char *fname, unsigned long fname_len)
+{
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
+static gw_generic_table Tab[] =
+{
+ {C2F(inthess), "hess"},
+ {C2F(intschur), "schur"},
+ {C2F(intspec), "spec"},
+ {C2F(intbdiagr), "bdiag"},
+ {C2F(intvoid), "xxxx"},
+ {C2F(intbalanc), "balanc"}
+};
+/*--------------------------------------------------------------------------*/
+int gw_linear_algebra(void)
+{
+ Rhs = Max(0, Rhs);
+
+ if (pvApiCtx == NULL)
+ {
+ pvApiCtx = (StrCtx*)MALLOC(sizeof(StrCtx));
+ }
+
+ pvApiCtx->pstName = (char*)Tab[Fin - 1].name;
+ callFunctionFromGateway(Tab, SIZE_CURRENT_GENERIC_TABLE(Tab));
+ PutLhsVar();
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/gw_linear_algebra2.c b/modules/linear_algebra/sci_gateway/c/gw_linear_algebra2.c
new file mode 100755
index 000000000..8882f16b8
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/gw_linear_algebra2.c
@@ -0,0 +1,57 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include "gw_linear_algebra.h"
+#include "gw_linear_algebra2.h"
+#include "callFunctionFromGateway.h"
+#include "api_scilab.h"
+#include "MALLOC.h"
+/*--------------------------------------------------------------------------*/
+static gw_generic_table Tab[] =
+{
+ {C2F(intqr), "qr"},
+ {C2F(intsvd), "svd"},
+ {C2F(intlsq), "lsq"},
+ {C2F(intspec), "spec"},
+ {C2F(intinv), "inv"},
+ {C2F(intrcond), "rcond"},
+ {C2F(intchol), "chol"},
+ {C2F(intlu), "lu"},
+ {C2F(intslash), "slash"},
+ {C2F(intbackslash), "backslash"},
+ {C2F(intschur), "schur"},
+ {C2F(inthess), "hess"},
+ {C2F(intdet), "det"},
+ {C2F(intbalanc), "balanc"},
+ {C2F(intnorm),"norm"}
+};
+/*--------------------------------------------------------------------------*/
+int gw_linear_algebra2(void)
+{
+ Rhs = Max(0, Rhs);
+
+ if (pvApiCtx == NULL)
+ {
+ pvApiCtx = (StrCtx*)MALLOC(sizeof(StrCtx));
+ }
+
+ pvApiCtx->pstName = (char*)Tab[Fin - 1].name;
+ callFunctionFromGateway(Tab, SIZE_CURRENT_GENERIC_TABLE(Tab));
+ if (Err <= 0 && C2F(errgst).err1 <= 0)
+ {
+ PutLhsVar();
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo
new file mode 100755
index 000000000..74f2fe0f6
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-assembleEigenvectors.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-assembleEigenvectors.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo
new file mode 100755
index 000000000..5e6e185ca
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-gw_linear_algebra.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo
new file mode 100755
index 000000000..bd2b86f6f
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-gw_linear_algebra2.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-gw_linear_algebra2.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo
new file mode 100755
index 000000000..c8c9164a6
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_backslash.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_backslash.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo
new file mode 100755
index 000000000..a5b1bc6d9
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_balanc.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_balanc.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo
new file mode 100755
index 000000000..8e97b1cc3
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_bdiag.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_bdiag.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_chol.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_chol.lo
new file mode 100755
index 000000000..6890f4eb4
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_chol.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_chol.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_chol.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_det.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_det.lo
new file mode 100755
index 000000000..75b3e7468
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_det.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_det.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_det.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo
new file mode 100755
index 000000000..518e433ef
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_dgeev.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_dgeev.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo
new file mode 100755
index 000000000..fde9a8c3b
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_dggev.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_dggev.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo
new file mode 100755
index 000000000..08c5bb2ba
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_dsyev.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_dsyev.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_hess.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_hess.lo
new file mode 100755
index 000000000..16ce92e5a
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_hess.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_hess.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_hess.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_inv.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_inv.lo
new file mode 100755
index 000000000..dd319448e
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_inv.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_inv.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_inv.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo
new file mode 100755
index 000000000..d25647296
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_lsq.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_lsq.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_lu.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_lu.lo
new file mode 100755
index 000000000..edba9a87f
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_lu.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_lu.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_lu.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_norm.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_norm.lo
new file mode 100755
index 000000000..5ccc28ded
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_norm.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_norm.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_norm.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_qr.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_qr.lo
new file mode 100755
index 000000000..f9b699ba7
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_qr.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_qr.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_qr.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo
new file mode 100755
index 000000000..33965fa66
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_rcond.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_rcond.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_schur.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_schur.lo
new file mode 100755
index 000000000..53eba5708
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_schur.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_schur.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_schur.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_slash.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_slash.lo
new file mode 100755
index 000000000..a5b9c0263
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_slash.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_slash.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_slash.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_spec.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_spec.lo
new file mode 100755
index 000000000..c17038fed
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_spec.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_spec.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_spec.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_svd.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_svd.lo
new file mode 100755
index 000000000..d4cf5b435
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_svd.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_svd.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_svd.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo
new file mode 100755
index 000000000..8eb81ef85
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_zgeev.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_zgeev.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo
new file mode 100755
index 000000000..ecb8512c6
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_zggev.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_zggev.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo
new file mode 100755
index 000000000..23b200031
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscilinear_algebra_la-sci_zheev.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_la-sci_zheev.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/sci_gateway/c/sci_backslash.c b/modules/linear_algebra/sci_gateway/c/sci_backslash.c
new file mode 100755
index 000000000..444ee808a
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_backslash.c
@@ -0,0 +1,100 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "stack-c.h"
+#include "gw_linear_algebra.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(complexify)(int *num);
+extern int C2F(intdgesv3)(char *fname, unsigned long fname_len);
+extern int C2F(intzgesv3)(char *fname, unsigned long fname_len);
+
+/*--------------------------------------------------------------------------*/
+int C2F(intbackslash)(char *fname, unsigned long fname_len)
+{
+ int *header1;
+ int *header2;
+ int CmplxA;
+ int CmplxB;
+ int ret;
+ int X;
+
+ /* backslash(A,B) */
+ header1 = (int *) GetData(1);
+ header2 = (int *) GetData(2);
+
+ CmplxA = header1[3];
+ CmplxB = header2[3];
+
+ if ((header1[1] != header2[1]) & (header2[1]*header2[2] == 1))
+ {
+ C2F(com).fun = 0;
+ Fin = -Fin;
+ return 0;
+ }
+
+ switch (CmplxA)
+ {
+ case REAL:
+ switch (CmplxB)
+ {
+ case REAL :
+ /* A real, B real */
+ ret = C2F(intdgesv3)("lsq", 3L);
+ break;
+
+ case COMPLEX :
+ /* A real, B complex : complexify A */
+ C2F(complexify)((X = 1, &X));
+ ret = C2F(intzgesv3)("lsq", 3L);
+ break;
+
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 2);
+ break;
+ }
+ return 0;
+
+ case COMPLEX :
+ switch (CmplxB)
+ {
+ case REAL :
+ /* A complex, B real : complexify B */
+ C2F(complexify)((X = 2, &X));
+ ret = C2F(intzgesv3)("lsq", 3L);
+ break;
+
+ case COMPLEX :
+ /* A complex, B complex */
+ ret = C2F(intzgesv3)("lsq", 3L);
+ break;
+
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 2);
+ break;
+ }
+ return 0;
+
+ default :
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ return 0;
+ break;
+ }
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_balanc.c b/modules/linear_algebra/sci_gateway/c/sci_balanc.c
new file mode 100755
index 000000000..590e10a18
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_balanc.c
@@ -0,0 +1,131 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "stack-c.h"
+#include "gw_linear_algebra.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(complexify)(int *num);
+extern int C2F(intdgebal)(char *fname, unsigned long fname_len);
+extern int C2F(intzgebal)(char *fname, unsigned long fname_len);
+extern int C2F(intdggbal)(char *fname, unsigned long fname_len);
+extern int C2F(intzggbal)(char *fname, unsigned long fname_len);
+/*--------------------------------------------------------------------------*/
+int C2F(intbalanc)(char *fname, unsigned long fname_len)
+{
+ int *header1, *header2;
+ int CmplxA, CmplxB;
+ int ret;
+ int X;
+
+ switch (Rhs)
+ {
+ case 1: /* balanc(A) */
+ if (GetType(1) != sci_matrix)
+ {
+ OverLoad(1);
+ return 0;
+ }
+ header1 = (int *) GetData(1);
+ CmplxA = header1[3];
+ switch (CmplxA)
+ {
+ case REAL:
+ ret = C2F(intdgebal)("balanc", 6L);
+ break;
+
+ case COMPLEX:
+ ret = C2F(intzgebal)("balanc", 6L);
+ break;
+
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ } /* end switch (CmplxA) */
+ break; /* end case 1 */
+
+ case 2: /* balanc(A,B) */
+ if (GetType(1) != sci_matrix)
+ {
+ OverLoad(1);
+ return 0;
+ }
+ if (GetType(2) != sci_matrix)
+ {
+ OverLoad(2);
+ return 0;
+ }
+ header1 = (int *) GetData(1);
+ header2 = (int *) GetData(2);
+ CmplxA = header1[3];
+ CmplxB = header2[3];
+ switch (CmplxA)
+ {
+ case REAL:
+ switch (CmplxB)
+ {
+ case REAL :
+ /* A real, Breal */
+ ret = C2F(intdggbal)("balanc", 6L);
+ break;
+
+ case COMPLEX :
+ /* A real, B complex : complexify A */
+ C2F(complexify)((X = 1, &X));
+ ret = C2F(intzggbal)("balanc", 6L);
+ break;
+
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+
+ break;
+ }
+ break;
+
+ case COMPLEX :
+ switch (CmplxB)
+ {
+ case REAL :
+ /* A complex, B real : complexify B */
+ C2F(complexify)((X = 2, &X));
+ ret = C2F(intzggbal)("balanc", 6L);
+ break;
+
+ case COMPLEX :
+ /* A complex, B complex */
+ ret = C2F(intzggbal)("balanc", 6L);
+ return 0;
+ break;
+
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 2);
+ break;
+ }
+ break;
+
+ default :
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ } /*end switch (CmplxA) */
+ break;/* end case 2 */
+ }/* end switch (Rhs) */
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_bdiag.c b/modules/linear_algebra/sci_gateway/c/sci_bdiag.c
new file mode 100755
index 000000000..76e5c1abf
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_bdiag.c
@@ -0,0 +1,137 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "stack-c.h"
+#include "gw_linear_algebra.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+static int cx1 = 1;
+static int cx0 = 0;
+static double c_b40 = 0.;
+/*--------------------------------------------------------------------------*/
+extern int C2F(vfinite)(int *n, double *v);
+extern int C2F(wbdiag)();
+extern int C2F(bdiag)();
+/*--------------------------------------------------------------------------*/
+/* [Ab [,X [,bs]]]=bdiag(A [,rMax]) */
+/*--------------------------------------------------------------------------*/
+int C2F(intbdiagr)(char *fname, long unsigned int fname_len)
+{
+ int ix1, ix2;
+ double dx1;
+ int fail;
+ double rMax;
+ int ix, j, k, m, n;
+ double t;
+ int nbloc, lrMax;
+ int m1, n1, la, le, lj, it;
+ int lw, lx ;
+ int lai, lib, lbs, lxi, lxr;
+
+ CheckRhs(1, 2);
+ CheckLhs(1, 3);
+
+ GetRhsCVar(1, MATRIX_OF_DOUBLE_DATATYPE, &it, &m, &n, &la, &lai);
+ CheckSquare(1, m, n);
+
+ if (n == 0)
+ {
+ CreateVar(2, MATRIX_OF_DOUBLE_DATATYPE, &cx0, &cx0, &lx);
+ CreateVar(3, MATRIX_OF_DOUBLE_DATATYPE, &cx0, &cx0, &lbs);
+ LhsVar(1) = 1;
+ LhsVar(2) = 2;
+ LhsVar(3) = 3;
+ return 0;
+ }
+ ix1 = (it + 1) * m * n;
+ if (C2F(vfinite)(&ix1, stk(la )) == 0)
+ {
+ Err = 1;
+ SciError(264);
+ return 0;
+ }
+ if (Rhs == 2)
+ {
+ GetRhsVar(2, MATRIX_OF_DOUBLE_DATATYPE, &n1, &m1, &lrMax);
+ CheckScalar(2, n1, m1);
+ rMax = *stk(lrMax );
+ }
+ else
+ {
+ rMax = 1.;
+ lj = la - 1;
+ ix1 = n;
+ for (j = 1; j <= ix1; ++j)
+ {
+ t = 0.;
+ ix2 = n;
+ for (ix = 1; ix <= ix2; ++ix)
+ {
+ t += (dx1 = *stk(lj + ix ), Abs(dx1));
+ }
+ if (t > rMax)
+ {
+ rMax = t;
+ }
+ lj += n;
+ }
+ }
+ CreateCVar(2, MATRIX_OF_DOUBLE_DATATYPE, &it, &n, &n, &lxr, &lxi);
+ ix1 = n << 1;
+ CreateVar(3, MATRIX_OF_DOUBLE_DATATYPE, &cx1, &ix1, &le);
+ CreateVar(4, MATRIX_OF_INTEGER_DATATYPE, &cx1, &n, &lib);
+ CreateVar(5, MATRIX_OF_DOUBLE_DATATYPE, &cx1, &n, &lw);
+ if (it == 0)
+ {
+ /* subroutine bdiag(lda,n,a,epsshr,rMax,er,ei,bs,x,xi,scale,job,fail) */
+ C2F(bdiag)(&n, &n, stk(la ), &c_b40, &rMax, stk(le ), stk(le + n ),
+ istk(lib ), stk(lxr ), stk(lxi ), stk(lw ), &cx0, &fail);
+ }
+ else
+ {
+ C2F(wbdiag)(&n, &n, stk(la ), stk(la + n * n ), &rMax, stk(le ),
+ stk(le + n ), istk(lib ), stk(lxr ), stk(lxi ), &t, &t, stk(lw ), &cx0, &fail);
+ }
+
+ if (fail)
+ {
+ Scierror(24, _("%s: Non convergence in QR steps.\n"), fname);
+ return 0;
+ }
+ if (Lhs == 3)
+ {
+ nbloc = 0;
+ for (k = 1; k <= n; ++k)
+ if (*istk(lib + k - 2 + 1) >= 0)
+ {
+ ++nbloc;
+ }
+ CreateVar(6, MATRIX_OF_DOUBLE_DATATYPE, &nbloc, &cx1, &lbs);
+ ix = 0;
+ for (k = 1; k <= n; ++k)
+ {
+ if (*istk(lib + k - 2 + 1) >= 0)
+ {
+ *stk(lbs + ix ) = (double) * istk(lib + k - 2 + 1);
+ ++ix;
+ }
+ }
+ }
+ LhsVar(1) = 1;
+ LhsVar(2) = 2;
+ LhsVar(3) = 6;
+ return 0;
+} /* intbdiagr_ */
+
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_chol.c b/modules/linear_algebra/sci_gateway/c/sci_chol.c
new file mode 100755
index 000000000..2afe3796b
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_chol.c
@@ -0,0 +1,55 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "stack-c.h"
+#include "gw_linear_algebra.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(intdpotrf)(char *fname, unsigned long fname_len);
+extern int C2F(intzpotrf)(char *fname, unsigned long fname_len);
+/*--------------------------------------------------------------------------*/
+int C2F(intchol)(char *fname, unsigned long fname_len)
+{
+ int *header1;
+ int CmplxA;
+ int ret;
+
+ /* chol(A) */
+ if (GetType(1) != sci_matrix)
+ {
+ OverLoad(1);
+ return 0;
+ }
+
+ header1 = (int *) GetData(1);
+ CmplxA = header1[3];
+
+ switch (CmplxA)
+ {
+ case REAL:
+ ret = C2F(intdpotrf)("chol", 4L);
+ break;
+ case COMPLEX:
+ ret = C2F(intzpotrf)("chol", 4L);
+ break;
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_det.c b/modules/linear_algebra/sci_gateway/c/sci_det.c
new file mode 100755
index 000000000..79e4b9355
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_det.c
@@ -0,0 +1,54 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "stack-c.h"
+#include "gw_linear_algebra.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(intddet)(char *fname, unsigned long fname_len);
+extern int C2F(intzdet)(char *fname, unsigned long fname_len);
+/*--------------------------------------------------------------------------*/
+int C2F(intdet)(char *fname, unsigned long fname_len)
+{
+ int *header1;
+ int CmplxA;
+ int ret;
+
+ /* det(A) */
+ if (GetType(1) != sci_matrix)
+ {
+ OverLoad(1);
+ return 0;
+ }
+ header1 = (int *) GetData(1);
+ CmplxA = header1[3];
+ switch (CmplxA)
+ {
+ case REAL:
+ ret = C2F(intddet)("det", 3L);
+ break;
+ case COMPLEX:
+ ret = C2F(intzdet)("det", 3L);
+ break;
+
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_dgeev.c b/modules/linear_algebra/sci_gateway/c/sci_dgeev.c
new file mode 100755
index 000000000..fec61a332
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_dgeev.c
@@ -0,0 +1,183 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Michaël Baudin
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+#include "stack-c.h"
+#include "vfinite.h"
+#include "do_error_number.h"
+#include "MALLOC.h"
+#include "assembleEigenvectors.h"
+#include "gw_linear_algebra.h"
+
+extern int C2F(dsyev) ();
+extern int C2F(dlaset) ();
+extern int C2F(dcopy) ();
+extern int C2F(dgeev) ();
+
+//
+// intdgeev --
+// Interface to LAPACK's DGEEV
+// Computes the eigenvalues and, if required, the eigenvectors of an asymmetric real matrix.
+// Possible uses :
+// * With 1 LHS :
+// eigenvalues=spec(A)
+// where
+// A : asymmetric, square real matrix of size NxN
+// eigenvalues : matrix of size Nx1 with right eigenvectors, type complex
+// * With 2 LHS :
+// [eigenvectors,eigenvalues]=spec(A)
+// where
+// eigenvalues : matrix of size NxN with eigenvalues as diagonal terms
+// eigenvectors : matrix of size NxN with right eigenvectors, type complex
+//
+int sci_dgeev(char *fname, unsigned long fname_len)
+{
+ int totalsize;
+ int iRows = 0;
+ int iCols = 0;
+ int ONE = 1;
+ int iWorkSize;
+
+ int INFO;
+
+ char JOBVR;
+ char JOBVL;
+
+ double *pdblWork = NULL;
+ double *pdblRealData = NULL;
+ double *pdblFinalEigenvaluesReal = NULL; //SCILAB return Var
+ double *pdblFinalEigenvaluesImg = NULL; //SCILAB return Var
+ double *pdblFinalEigenvectorsReal = NULL; //SCILAB return Var
+ double *pdblFinalEigenvectorsImg = NULL; //SCILAB return Var
+ double *pdblEigenvalReal = NULL; //return by LAPACK
+ double *pdblEigenvalImg = NULL; //return by LAPACK
+ double *pdblRightvectors = NULL; //return by LAPACK
+ double *pdblLeftvectors = NULL; //return by LAPACK
+
+ CheckRhs(1, 1);
+ CheckLhs(1, 2);
+
+ GetRhsVarMatrixDouble(1, &iRows, &iCols, &pdblRealData);
+ totalsize = iRows * iCols;
+
+ if (iRows != iCols)
+ {
+ Err = 1;
+ SciError(20);
+ return 0;
+ }
+
+ if (iCols == 0)
+ {
+ if (Lhs == 1)
+ {
+ int lD;
+ int ZERO = 0;
+
+ CreateVar(2, MATRIX_OF_COMPLEX_DATATYPE, &ZERO, &ZERO, &lD);
+ LhsVar(1) = 2;
+ return 0;
+ }
+ else if (Lhs == 2)
+ {
+ int lD;
+ int ZERO = 0;
+ int lV;
+
+ CreateVar(2, MATRIX_OF_COMPLEX_DATATYPE, &ZERO, &ZERO, &lD);
+ CreateVar(3, MATRIX_OF_COMPLEX_DATATYPE, &ZERO, &ZERO, &lV);
+
+ LhsVar(1) = 2;
+ LhsVar(2) = 3;
+
+ return 0;
+ }
+ }
+
+ if (C2F(vfinite) (&totalsize, pdblRealData) == 0)
+ {
+ SciError(264);
+ return 0;
+ }
+ if (Lhs == 1)
+ {
+ iAllocComplexMatrixOfDouble(2, iCols, ONE, &pdblFinalEigenvaluesReal, &pdblFinalEigenvaluesImg);
+ }
+ else
+ {
+ iAllocComplexMatrixOfDouble(2, iCols, iCols, &pdblFinalEigenvaluesReal, &pdblFinalEigenvaluesImg);
+ iAllocComplexMatrixOfDouble(3, iCols, iCols, &pdblFinalEigenvectorsReal, &pdblFinalEigenvectorsImg);
+ pdblRightvectors = (double *)MALLOC(totalsize * sizeof(double));
+ }
+ pdblEigenvalReal = (double *)MALLOC(iCols * sizeof(double));
+ pdblEigenvalImg = (double *)MALLOC(iCols * sizeof(double));
+
+ if (Lhs == 2)
+ {
+ iWorkSize = 4 * iCols;
+ }
+ else
+ {
+ iWorkSize = 3 * iCols;
+ }
+ pdblWork = (double *)MALLOC(iWorkSize * sizeof(double));
+
+ JOBVL = 'N'; // Never compute left eigenvectors
+ if (Lhs == 1)
+ {
+ JOBVR = 'N'; // Do not compute right eigenvectors
+ }
+ else
+ {
+ JOBVR = 'V'; // Compute right eigenvectors.
+ }
+ C2F(dgeev) (&JOBVL, &JOBVR, &iCols, pdblRealData, &iCols, pdblEigenvalReal, pdblEigenvalImg,
+ pdblLeftvectors, &iCols, pdblRightvectors, &iCols, pdblWork, &iWorkSize, &INFO);
+ // SUBROUTINE DGEEV( JOBVL, JOBVR, N, A, LDA, WR, WI, VL, LDVL, VR, LDVR,
+ // $ WORK, INFO )
+ FREE(pdblWork);
+ if (INFO != 0)
+ {
+ SciError(24);
+ return 0;
+ }
+ if (Lhs == 1)
+ {
+ // Fill eigenvalues with computed real and imaginary parts
+ int INCX = 1;
+ int INCY = 1;
+
+ C2F(dcopy) (&iCols, pdblEigenvalReal, &INCX, pdblFinalEigenvaluesReal, &INCY);
+ C2F(dcopy) (&iCols, pdblEigenvalImg, &INCX, pdblFinalEigenvaluesImg, &INCY);
+ // DCOPY(N,DX,INCX,DY,INCY)
+ }
+ else
+ {
+ assembleComplexEigenvaluesFromDoublePointer(iRows, pdblEigenvalReal, pdblEigenvalImg, pdblFinalEigenvaluesReal, pdblFinalEigenvaluesImg);
+
+ assembleEigenvectorsSourceToTarget(iRows, pdblEigenvalImg, pdblRightvectors, pdblFinalEigenvectorsReal, pdblFinalEigenvectorsImg);
+
+ }
+
+ if (Lhs == 1)
+ {
+ LhsVar(1) = 2;
+ }
+ else
+ {
+
+ LhsVar(1) = 3;
+ LhsVar(2) = 2;
+ FREE(pdblRightvectors);
+ }
+ FREE(pdblEigenvalReal);
+ FREE(pdblEigenvalImg);
+ return 0;
+}
diff --git a/modules/linear_algebra/sci_gateway/c/sci_dggev.c b/modules/linear_algebra/sci_gateway/c/sci_dggev.c
new file mode 100755
index 000000000..bfd8dccba
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_dggev.c
@@ -0,0 +1,235 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Michaël Baudin
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+#include "stack-c.h"
+#include "elementary_functions.h"
+#include "vfinite.h"
+#include "do_error_number.h"
+#include "MALLOC.h"
+#include "msgs.h"
+#include "assembleEigenvectors.h"
+#include "gw_linear_algebra.h"
+
+extern int C2F(dsyev) ();
+extern int C2F(dlaset) ();
+extern int C2F(dcopy) ();
+extern int C2F(dggev) ();
+
+//
+// intdggev --
+// Interface to LAPACK's dggev
+// Computes the generalized eigenvalues and, if required, the generalized
+// eigenvectors of two real matrix.
+// Possible uses :
+// * With 1 LHS :
+// eigenvalues=spec(A,B)
+// where
+// A : square real matrix of size NxN
+// B : square real matrix of size NxN
+// eigenvalues : matrix of size Nx1 with right eigenvectors, type complex
+// * With 2 LHS :
+// [alpha,beta]=spec(A,B)
+// where
+// alpha,beta : the coefficients such that the generalized eigenvalues
+// are alpha(i)/beta(i), where alpha is of type complex, beta is real
+// * With 3 LHS :
+// [alpha,beta,R]=spec(A,B)
+// where
+// R : the matrix of generalized right eigenvectors, type complex
+// * With 4 LHS :
+// [alpha,beta,L,R]=spec(A,B)
+// where
+// L : the matrix of generalized left eigenvectors, type complex
+//
+int sci_dggev(char *fname, unsigned long fname_len)
+{
+ int totalsize;
+ int iRowsA = 0;
+ int iColsA = 0;
+ int iRowsB = 0;
+ int iColsB = 0;
+ int ONE = 1;
+ int iWorkSize;
+ int INFO;
+
+ double *pdblWork = NULL;
+ char JOBVR;
+ char JOBVL;
+
+ double *pdblMatrixA = NULL;
+ double *pdblMatrixB = NULL;
+ double *pdblFinalAlphaReal = NULL; //SCILAB return Var
+ double *pdblFinalAlphaImg = NULL; //SCILAB return Var
+ double *pdblFinalBeta = NULL; //SCILAB return Var
+ double *pdblFinalRReal = NULL; //SCILAB return Var
+ double *pdblFinalRImg = NULL; //SCILAB return Var
+ double *pdblFinalLReal = NULL; //SCILAB return Var
+ double *pdblFinalLImg = NULL; //SCILAB return Var
+
+ CheckRhs(2, 2);
+ CheckLhs(1, 4);
+
+ GetRhsVarMatrixDouble(1, &iRowsA, &iColsA, &pdblMatrixA);
+ GetRhsVarMatrixDouble(2, &iRowsB, &iColsB, &pdblMatrixB);
+
+ totalsize = iRowsA * iColsA;
+
+ if (iRowsA != iColsA)
+ {
+ Err = 1;
+ SciError(20);
+ return 0;
+ }
+ if (iRowsB != iColsB)
+ {
+ Err = 2;
+ SciError(20);
+ return 0;
+ }
+ if (iRowsA != iRowsB)
+ {
+ SciError(267);
+ return 0;
+ }
+
+ if (iColsA == 0)
+ {
+ if (Lhs == 1)
+ {
+ LhsVar(1) = 1;
+ return 0;
+ }
+ else if (Lhs == 2)
+ {
+ LhsVar(1) = 1;
+ LhsVar(2) = 2;
+ return 0;
+ }
+ else if (Lhs == 3)
+ {
+ int ZERO = 0;
+ int lVR;
+
+ CreateVar(3, MATRIX_OF_DOUBLE_DATATYPE, &ZERO, &ZERO, &lVR);
+ LhsVar(1) = 1;
+ LhsVar(2) = 2;
+ LhsVar(3) = 3;
+ return 0;
+ }
+ else if (Lhs == 4)
+ {
+ int ZERO = 0;
+ int lVR;
+ int lVL;
+
+ CreateVar(3, MATRIX_OF_DOUBLE_DATATYPE, &ZERO, &ZERO, &lVR);
+ CreateVar(4, MATRIX_OF_DOUBLE_DATATYPE, &ZERO, &ZERO, &lVL);
+ LhsVar(1) = 1;
+ LhsVar(2) = 2;
+ LhsVar(3) = 3;
+ LhsVar(4) = 4;
+ return 0;
+ }
+ }
+
+ if (C2F(vfinite) (&totalsize, pdblMatrixA) == 0)
+ {
+ SciError(264);
+ return 0;
+ }
+ if (C2F(vfinite) (&totalsize, pdblMatrixB) == 0)
+ {
+ SciError(264);
+ return 0;
+ }
+
+ iAllocComplexMatrixOfDouble(3, iColsA, ONE, &pdblFinalAlphaReal, &pdblFinalAlphaImg);
+ iAllocMatrixOfDouble(4, iColsA, ONE, &pdblFinalBeta);
+ if (Lhs == 3 || Lhs == 4)
+ {
+ iAllocComplexMatrixOfDouble(5, iColsA, iColsA, &pdblFinalRReal, &pdblFinalRImg);
+ }
+ if (Lhs == 4)
+ {
+ iAllocComplexMatrixOfDouble(6, iColsA, iColsA, &pdblFinalLReal, &pdblFinalLImg);
+ }
+
+ iWorkSize = Max(1, 8 * iColsA);
+ pdblWork = (double *)MALLOC(iWorkSize * sizeof(double));
+
+ if (Lhs == 1 || Lhs == 2)
+ {
+ JOBVL = 'N'; // Do not compute left eigenvectors
+ JOBVR = 'N'; // Do not compute right eigenvectors
+ }
+ else if (Lhs == 3)
+ {
+ JOBVL = 'N'; // Do not compute left eigenvectors
+ JOBVR = 'V'; // Compute right eigenvectors
+ }
+ else if (Lhs == 4)
+ {
+ JOBVL = 'V'; // Compute left eigenvectors
+ JOBVR = 'V'; // Compute right eigenvectors
+ }
+ C2F(dggev) (&JOBVL, &JOBVR, &iColsA, pdblMatrixA, &iColsA, pdblMatrixB, &iColsA, pdblFinalAlphaReal,
+ pdblFinalAlphaImg, pdblFinalBeta, pdblFinalLReal, &iColsA, pdblFinalRReal, &iColsA, pdblWork, &iWorkSize, &INFO);
+ // SUBROUTINE DGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR,
+ // $ ALPHAI, BETA, VL, LDVL, VR, LDVR, WORK, LWORK, INFO )
+ FREE(pdblWork);
+ if (INFO != 0)
+ {
+ if (INFO <= iColsA)
+ {
+ C2F(msgs) (&ONE, &INFO);
+ }
+ else
+ {
+ SciError(24);
+ return 0;
+ }
+ }
+ if (Lhs == 1)
+ {
+ int i;
+
+ for (i = 0; i < iColsA; i++)
+ {
+ pdblFinalAlphaReal[i] = pdblFinalAlphaReal[i] / pdblFinalBeta[i];
+ pdblFinalAlphaImg[i] = pdblFinalAlphaImg[i] / pdblFinalBeta[i];
+ }
+ LhsVar(1) = 3;
+ }
+ else if (Lhs == 2)
+ {
+ LhsVar(1) = 3;
+ LhsVar(2) = 4;
+ }
+ if (Lhs == 3 || Lhs == 4)
+ {
+ assembleEigenvectorsInPlace(iRowsA, pdblFinalAlphaImg, pdblFinalRReal, pdblFinalRImg);
+ }
+ if (Lhs == 3)
+ {
+ LhsVar(1) = 3;
+ LhsVar(2) = 4;
+ LhsVar(3) = 5;
+ }
+ if (Lhs == 4)
+ {
+ assembleEigenvectorsInPlace(iRowsA, pdblFinalAlphaImg, pdblFinalLReal, pdblFinalLImg);
+ LhsVar(1) = 3;
+ LhsVar(2) = 4;
+ LhsVar(3) = 6;
+ LhsVar(4) = 5;
+ }
+ return 0;
+}
diff --git a/modules/linear_algebra/sci_gateway/c/sci_dsyev.c b/modules/linear_algebra/sci_gateway/c/sci_dsyev.c
new file mode 100755
index 000000000..ba2c1491e
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_dsyev.c
@@ -0,0 +1,134 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Michaël Baudin
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+#include "stack-c.h"
+#include "elementary_functions.h"
+#include "vfinite.h"
+#include "do_error_number.h"
+#include "MALLOC.h"
+#include "assembleEigenvectors.h"
+#include "gw_linear_algebra.h"
+
+extern int C2F(dsyev) ();
+extern int C2F(dlaset) ();
+extern int C2F(dcopy) ();
+
+//
+// intdsyev --
+// Interface to LAPACK's DSYEV
+// Computes the eigenvalues and, if required, the eigenvectors of a symmetric real matrix.
+// Possible uses :
+// * With 1 LHS :
+// eigenvalues=spec(A)
+// where
+// A : symmetric, square, real matrix of size NxN
+// eigenvalues : matrix of size Nx1, type real
+// * With 2 LHS :
+// [eigenvectors,eigenvalues]=spec(A)
+// where
+// eigenvalues : matrix of size NxN with eigenvalues as diagonal terms, type real
+// eigenvectors : matrix of size NxN, type real
+//
+int sci_dsyev(char *fname, unsigned long fname_len)
+{
+ int totalsize;
+
+ int iRows = 0;
+ int iCols = 0;
+ int ONE = 1;
+ int INFO;
+ int iWorkSize;
+
+ char UPLO;
+ char JOBZ;
+
+ double *pdblRealData = NULL;
+ double *pdblWork = NULL;
+ double *pdblFinalEigenvalues = NULL; //SCILAB return Var
+ double *pdblEigenValues = NULL; //return by LAPACK
+
+ CheckRhs(1, 1);
+ CheckLhs(1, 2);
+
+ GetRhsVarMatrixDouble(1, &iRows, &iCols, &pdblRealData);
+ totalsize = iRows * iCols;
+
+ if (iRows != iCols)
+ {
+ Err = 1;
+ SciError(20);
+ return 0;
+ }
+ if (iCols == 0)
+ {
+ if (Lhs == 1)
+ {
+ LhsVar(1) = 1;
+ return 0;
+ }
+ else if (Lhs == 2)
+ {
+ int lV;
+
+ CreateVar(Rhs + 1, MATRIX_OF_DOUBLE_DATATYPE, &iCols, &iCols, &lV);
+ LhsVar(1) = 2;
+ LhsVar(2) = 1;
+ return 0;
+ }
+ }
+ if (C2F(vfinite) (&totalsize, pdblRealData) == 0)
+ {
+ SciError(264);
+ return 0;
+ }
+ if (Lhs == 1)
+ {
+ iAllocMatrixOfDouble(2, iCols, ONE, &pdblFinalEigenvalues);
+ }
+ else
+ {
+ iAllocMatrixOfDouble(2, iCols, iCols, &pdblFinalEigenvalues);
+ }
+
+ iAllocMatrixOfDouble(3, iCols, ONE, &pdblEigenValues);
+
+ iWorkSize = Max(1, 3 * iCols - 1);
+ pdblWork = (double *)MALLOC(iWorkSize * sizeof(double));
+
+ if (Lhs == 1)
+ {
+ JOBZ = 'N'; // Compute eigenvalues only;
+ }
+ else
+ {
+ JOBZ = 'V'; // Compute eigenvalues and eigenvectors.
+ }
+ UPLO = 'U';
+ C2F(dsyev) (&JOBZ, &UPLO, &iCols, pdblRealData, &iCols, pdblEigenValues, pdblWork, &iWorkSize, &INFO);
+ // SUBROUTINE DSYEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO )
+ FREE(pdblWork);
+ if (INFO != 0)
+ {
+ SciError(24);
+ }
+ if (Lhs == 1)
+ {
+ C2F(dcopy) (&iCols, pdblEigenValues, &ONE, pdblFinalEigenvalues, &ONE);
+ LhsVar(1) = 2;
+ }
+ else
+ {
+ assembleEigenvaluesFromDoublePointer(iRows, pdblEigenValues, pdblFinalEigenvalues);
+ LhsVar(1) = 1; // Eigenvectors are stored in matrix A, which is variable #1
+ LhsVar(2) = 2; // Eigenvalues are stored in variable #2
+ }
+ return 0;
+}
diff --git a/modules/linear_algebra/sci_gateway/c/sci_hess.c b/modules/linear_algebra/sci_gateway/c/sci_hess.c
new file mode 100755
index 000000000..27935bf7b
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_hess.c
@@ -0,0 +1,53 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "stack-c.h"
+#include "gw_linear_algebra.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(intdgehrd)(char *fname, unsigned long fname_len);
+extern int C2F(intzgehrd)(char *fname, unsigned long fname_len);
+/*--------------------------------------------------------------------------*/
+int C2F(inthess)(char *fname, unsigned long fname_len)
+{
+ int *header1;
+ int CmplxA;
+ int ret;
+
+ /* hess(A) */
+ if (GetType(1) != sci_matrix)
+ {
+ OverLoad(1);
+ return 0;
+ }
+ header1 = (int *) GetData(1);
+ CmplxA = header1[3];
+ switch (CmplxA)
+ {
+ case REAL:
+ ret = C2F(intdgehrd)("hess", 4L);
+ break;
+ case COMPLEX:
+ ret = C2F(intzgehrd)("hess", 4L);
+ break;
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_inv.c b/modules/linear_algebra/sci_gateway/c/sci_inv.c
new file mode 100755
index 000000000..9a9ab0d82
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_inv.c
@@ -0,0 +1,55 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "stack-c.h"
+#include "gw_linear_algebra.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(intdgetri)(char *fname, unsigned long fname_len);
+extern int C2F(intzgetri)(char *fname, unsigned long fname_len);
+/*--------------------------------------------------------------------------*/
+int C2F(intinv)(char *fname, unsigned long fname_len)
+
+{
+ int *header1;
+ int CmplxA;
+ int ret;
+
+ /* inv(A) */
+ if (GetType(1) != sci_matrix)
+ {
+ OverLoad(1);
+ return 0;
+ }
+ header1 = (int *) GetData(1);
+ CmplxA = header1[3];
+
+ switch (CmplxA)
+ {
+ case REAL:
+ ret = C2F(intdgetri)("inv", 3L);
+ break;
+ case COMPLEX:
+ ret = C2F(intzgetri)("inv", 3L);
+ break;
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_lsq.c b/modules/linear_algebra/sci_gateway/c/sci_lsq.c
new file mode 100755
index 000000000..e86bea85f
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_lsq.c
@@ -0,0 +1,100 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "stack-c.h"
+#include "gw_linear_algebra.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(complexify)(int *num);
+extern int C2F(intdgelsy)(char *fname, unsigned long fname_len);
+extern int C2F(intzgelsy)(char *fname, unsigned long fname_len);
+
+/*--------------------------------------------------------------------------*/
+int C2F(intlsq)(char *fname, unsigned long fname_len)
+{
+ int *header1;
+ int *header2;
+ int CmplxA;
+ int Cmplxb;
+ int ret;
+ int I2;
+
+ /* lsq(A,b) */
+ if (GetType(1) != sci_matrix)
+ {
+ OverLoad(1);
+ return 0;
+ }
+ if (GetType(2) != sci_matrix)
+ {
+ OverLoad(2);
+ return 0;
+ }
+ header1 = (int *) GetData(1);
+ header2 = (int *) GetData(2);
+ CmplxA = header1[3];
+ Cmplxb = header2[3];
+ switch (CmplxA)
+ {
+ case REAL:
+ switch (Cmplxb)
+ {
+ case REAL :
+ /* A real, b real */
+ ret = C2F(intdgelsy)("lsq", 3L);
+ break;
+
+ case COMPLEX :
+ /* A real, b complex */
+ C2F(complexify)((I2 = 1, &I2));
+ ret = C2F(intzgelsy)("lsq", 3L);
+ break;
+
+ default:
+ break;
+ }
+ return 0;
+
+ case COMPLEX :
+ switch (Cmplxb)
+ {
+ case REAL :
+ /* A complex, b real */
+ C2F(complexify)((I2 = 2, &I2));
+ ret = C2F(intzgelsy)("lsq", 3L);
+ break;
+
+ case COMPLEX :
+ /* A complex, b complex */
+ ret = C2F(intzgelsy)("lsq", 3L);
+ break;
+
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 2);
+ break;
+ }
+ return 0;
+ break;
+
+ default :
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ return 0;
+ break;
+ }
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_lu.c b/modules/linear_algebra/sci_gateway/c/sci_lu.c
new file mode 100755
index 000000000..4971118ae
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_lu.c
@@ -0,0 +1,55 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "stack-c.h"
+#include "gw_linear_algebra.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(intdgetrf)(char *fname, unsigned long fname_len);
+extern int C2F(intzgetrf)(char *fname, unsigned long fname_len);
+/*--------------------------------------------------------------------------*/
+int C2F(intlu)(char *fname, unsigned long fname_len)
+{
+ int *header1;
+ int CmplxA;
+ int ret;
+
+ /* lu(A) */
+ if (GetType(1) != sci_matrix)
+ {
+ OverLoad(1);
+ return 0;
+ }
+ header1 = (int *) GetData(1);
+ CmplxA = header1[3];
+ switch (CmplxA)
+ {
+ case REAL:
+ ret = C2F(intdgetrf)("lu", 2L);
+ break;
+
+ case COMPLEX:
+ ret = C2F(intzgetrf)("lu", 2L);
+ break;
+
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_norm.c b/modules/linear_algebra/sci_gateway/c/sci_norm.c
new file mode 100755
index 000000000..adb500042
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_norm.c
@@ -0,0 +1,247 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+#include <stdio.h>
+#include "api_scilab.h"
+#include "gw_linear_algebra2.h"
+#include "Scierror.h"
+#include "localization.h"
+#include "MALLOC.h"
+#include "norm.h"
+
+/*--------------------------------------------------------------------------*/
+int C2F(intnorm)(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+ // Arguments' addresses
+ int *pAAddr = NULL;
+ int *pflagAddr = NULL;
+ // Arguments' values
+ double *pA = NULL;
+ char *pflagChar = NULL;
+ doublecomplex *pAC = NULL;
+ double flagVal = 0;
+ // Arguments' properties (type, dimensions, length)
+ int iLen = 0;
+ int iType = 0;
+ int iRows = 0;
+ int iCols = 0;
+ // Return value
+ double ret = 0;
+
+ double RowsColsTemp = 0;
+ int i = 0;
+ int isMat = 0;
+ int isComplex = 0;
+
+ CheckInputArgument(pvApiCtx, 1, 2);
+ CheckOutputArgument(pvApiCtx, 1, 1);
+
+ // Checking A.
+ sciErr = getVarAddressFromPosition(pvApiCtx, 1, &pAAddr); // Retrieving A address.
+ if (sciErr.iErr)
+ {
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
+ printError(&sciErr, 0);
+ return 0;
+ }
+
+ sciErr = getVarType(pvApiCtx, pAAddr, &iType); // Retrieving A type.
+ if (iType != sci_matrix)
+ {
+ OverLoad(1);
+ return 0;
+ }
+
+ if (isVarComplex(pvApiCtx, pAAddr))
+ {
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, pAAddr, &iRows, &iCols, &pAC);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: Real or complex matrix expected.\n"), fname, 1);
+ return 0;
+ }
+
+ isComplex = 1;
+ for (i = 0; i < iRows * iCols; ++i) // Checking A for %inf, which is not supported by Lapack.
+ {
+ if (isinf(pAC[i].r) != 0 || isinf(pAC[i].i) != 0 || ISNAN(pAC[i].r) || ISNAN(pAC[i].i))
+ {
+ Scierror(264, _("%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"), fname, 1);
+ return 0;
+ }
+ }
+ }
+ else
+ {
+ sciErr = getMatrixOfDouble(pvApiCtx, pAAddr, &iRows, &iCols, &pA);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: Real or complex matrix expected.\n"), fname, 1);
+ return 0;
+ }
+
+ for (i = 0 ; i < iRows * iCols ; i++) // Checking A for %inf, which is not supported by Lapack.
+ {
+ if (isinf(pA[i]) != 0 || ISNAN(pA[i]))
+ {
+ Scierror(264, _("%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"), fname, 1);
+ return 0;
+ }
+ }
+ }
+ if (iRows == 0) // A = [] => returning 0.
+ {
+ createScalarDouble(pvApiCtx, Rhs + 1, 0);
+ AssignOutputVariable(pvApiCtx, 1) = Rhs + 1;
+ return 0;
+ }
+
+ if (iRows > 1 && iCols > 1) // If A is a matrix, only 1, 2 and %inf are allowed as second argument.
+ {
+ isMat = 1;
+ }
+
+ if (iRows == 1) // If iRows == 1, then transpose A to consider it like a vector.
+ {
+ RowsColsTemp = iRows;
+ iRows = iCols;
+ iCols = (int)RowsColsTemp;
+ }
+
+ if (Rhs == 1) // One argument => returning norm 2.
+ {
+ // Call normP() or normPC().
+ if (isComplex)
+ {
+ ret = normPC(pAC, iRows, iCols, 2); // if A is a complex matrix, call the complex function.
+ }
+ else
+ {
+ ret = normP(pA, iRows, iCols, 2);
+ }
+
+ createScalarDouble(pvApiCtx, Rhs + 1, ret);
+ AssignOutputVariable(pvApiCtx, 1) = Rhs + 1;
+ return 0;
+ }
+
+ // Checking flag.
+ sciErr = getVarAddressFromPosition(pvApiCtx, 2, &pflagAddr); // Retrieving flag address.
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 0;
+ }
+
+ sciErr = getVarType(pvApiCtx, pflagAddr, &iType); // Retrieving flag type.
+ if (iType != sci_strings && iType != sci_matrix)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: String or integer expected.\n"), fname, 2);
+ return 0;
+ }
+
+ if (iType == sci_strings)
+ {
+ if (getAllocatedSingleString(pvApiCtx, pflagAddr, &pflagChar)) // Retrieving flag dimensions.
+ {
+ Scierror(205, _("%s: Wrong size for input argument #%d: A string expected.\n"), fname, 2);
+ return 0;
+ }
+
+ iLen = (int)strlen(pflagChar);
+ if (iLen != 3 && iLen != 1)
+ {
+ Scierror(116, _("%s: Wrong value for input argument #%d: %s, %s, %s, or %s expected.\n"), fname, 2, "i", "inf", "f", "fro");
+ freeAllocatedSingleString(pflagChar);
+ return 0;
+ }
+
+ if (strcmp(pflagChar, "inf") != 0 && strcmp(pflagChar, "i") != 0 &&
+ strcmp(pflagChar, "fro") != 0 && strcmp(pflagChar, "f") != 0) // flag must be = "inf", "i", "fro" or "f".
+ {
+ Scierror(116, _("%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"), fname, 2, "i", "inf", "f", "fro");
+ freeAllocatedSingleString(pflagChar);
+ return 0;
+ }
+
+ if (isComplex)
+ {
+ ret = normStringC(pAC, iRows, iCols, pflagChar); // if A is a complex matrix, call the complex function.
+ }
+ else
+ {
+ ret = normString(pA, iRows, iCols, pflagChar); // flag is a string => returning the corresponding norm.
+ }
+
+ createScalarDouble(pvApiCtx, Rhs + 1, ret);
+ AssignOutputVariable(pvApiCtx, 1) = Rhs + 1;
+ freeAllocatedSingleString(pflagChar);
+ return 0;
+ }
+ else
+ {
+ if (isVarComplex(pvApiCtx, pflagAddr))
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: A real expected.\n"), fname, 2);
+ return 0;
+ }
+ if (getScalarDouble(pvApiCtx, pflagAddr, &flagVal)) // Retrieving flag value & dimensions as a double.
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Wrong size for input argument #%d: A real scalar expected.\n"), fname, 2);
+ return 0;
+ }
+
+ // Call the norm functions.
+ if (isinf(flagVal) == 1 && flagVal > 0) // flag = %inf
+ {
+ if (isComplex)
+ {
+ ret = normStringC(pAC, iRows, iCols, "inf"); // if A is a complex matrix, call the complex function.
+ }
+ else
+ {
+ ret = normString(pA, iRows, iCols, "inf"); // The infinite norm is computed by normString().
+ }
+
+ createScalarDouble(pvApiCtx, Rhs + 1, ret);
+ AssignOutputVariable(pvApiCtx, 1) = Rhs + 1;
+ return 0;
+ }
+ else
+ {
+ if (isMat == 1 && flagVal != 1 && flagVal != 2 && isinf(flagVal) == 0)
+ {
+ Scierror(116, _("%s: Wrong value for input argument #%d: %s, %s, %s or %s expected.\n"), fname, 2, "1", "2", "inf", "-inf");
+ return 0;
+ }
+
+ if (isComplex)
+ {
+ ret = normPC(pAC, iRows, iCols, flagVal); // if A is a complex matrix, call the complex function.
+ }
+ else
+ {
+ ret = normP(pA, iRows, iCols, flagVal); // flag is an integer => returning the corresponding norm.
+ }
+
+ createScalarDouble(pvApiCtx, Rhs + 1, ret);
+ AssignOutputVariable(pvApiCtx, 1) = Rhs + 1;
+ return 0;
+ }
+ }
+
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_qr.c b/modules/linear_algebra/sci_gateway/c/sci_qr.c
new file mode 100755
index 000000000..8c03de948
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_qr.c
@@ -0,0 +1,144 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "stack-c.h"
+#include "gw_linear_algebra.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(intdgeqpf3)(char *fname, unsigned long fname_len);
+extern int C2F(intzgeqpf3)(char *fname, unsigned long fname_len);
+extern int C2F(intdgeqpf4)(char *fname, unsigned long fname_len);
+extern int C2F(intzgeqpf4)(char *fname, unsigned long fname_len);
+extern int C2F(doldqr)(double *tol, char *fname, unsigned long fname_len);
+extern int C2F(zoldqr)(double *tol, char *fname, unsigned long fname_len);
+
+/*--------------------------------------------------------------------------*/
+int C2F(intqr)(char *fname, unsigned long fname_len)
+{
+ int *header1;
+ int *header2;
+ int Cmplx;
+ int ret;
+ double *snd;
+ double tol;
+
+ if (GetType(1) != sci_matrix)
+ {
+ OverLoad(1);
+ return 0;
+ }
+ header1 = (int *) GetData(1);
+ Cmplx = header1[3];
+
+ if (header1[0] == 10)
+ {
+ Cmplx = 10;
+ }
+
+ if (Lhs == 4)
+ {
+ /* obsolete : [Q,R,rk,E]=qr(A) or = qr(A,tol) */
+ if (Rhs == 2)
+ {
+ if (GetType(2) == sci_matrix)
+ {
+ snd = (double *) GetData(2);
+ tol = snd[2];
+ }
+ else
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real scalar expected.\n"),
+ fname, 2);
+ return 0;
+ }
+ }
+ else
+ {
+ tol = -1;
+ Rhs = 1;
+ }
+
+ switch (Cmplx)
+ {
+ case REAL :
+ ret = C2F(doldqr)(&tol, "qr", 2L);
+ break;
+ case COMPLEX :
+ ret = C2F(zoldqr)(&tol, "qr", 2L);
+ break;
+ default :
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ return 0;
+ }
+ return 0;
+ }
+
+ switch (Rhs)
+ {
+ case 1: /* qr(A) */
+ switch (Cmplx)
+ {
+ case REAL :
+ ret = C2F(intdgeqpf3)("qr", 2L);
+ break;
+ case COMPLEX :
+ ret = C2F(intzgeqpf3)("qr", 2L);
+ break;
+ default :
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ }
+ break;
+
+ case 2 : /* qr(A, something) */
+ header2 = (int *) GetData(2);
+ switch (header2[0])
+ {
+ case STRING :
+ /* Economy size: ...=qr(A,"e") */
+ switch (Cmplx)
+ {
+ case REAL :
+ ret = C2F(intdgeqpf4)("qr", 2L);
+ break;
+
+ case COMPLEX :
+ ret = C2F(intzgeqpf4)("qr", 2L);
+ break;
+
+ default :
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ }
+ break;
+
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 2);
+ break;
+ }
+ return 0;
+ default :
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_rcond.c b/modules/linear_algebra/sci_gateway/c/sci_rcond.c
new file mode 100755
index 000000000..0b102168f
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_rcond.c
@@ -0,0 +1,57 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "stack-c.h"
+#include "gw_linear_algebra.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(intdgecon)(char *fname, unsigned long fname_len);
+extern int C2F(intzgecon)(char *fname, unsigned long fname_len);
+/*--------------------------------------------------------------------------*/
+int C2F(intrcond)(char *fname, unsigned long fname_len)
+{
+ int *header1;
+ int CmplxA;
+ int ret;
+
+ /* rcond(A) */
+ if (GetType(1) != sci_matrix)
+ {
+ OverLoad(1);
+ return 0;
+ }
+
+ header1 = (int *) GetData(1);
+ CmplxA = header1[3];
+
+ switch (CmplxA)
+ {
+ case REAL:
+ ret = C2F(intdgecon)("rcond", 5L);
+ break;
+
+ case COMPLEX:
+ ret = C2F(intzgecon)("rcond", 5L);
+ break;
+
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_schur.c b/modules/linear_algebra/sci_gateway/c/sci_schur.c
new file mode 100755
index 000000000..8fdfc1f9c
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_schur.c
@@ -0,0 +1,289 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "stack-c.h"
+#include "gw_linear_algebra.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(intdgees0)(char *fname, unsigned long fname_len);
+extern int C2F(intzgees0)(char *fname, unsigned long fname_len);
+extern int C2F(intoschur)(char *fname, unsigned long fname_len);
+extern int C2F(intzschur)(char *fname, unsigned long fname_len);
+extern int C2F(intdgees1)(char *fname, unsigned long fname_len);
+extern int C2F(intzgees1)(char *fname, unsigned long fname_len);
+extern int C2F(intfschur)(char *fname, unsigned long fname_len);
+extern int C2F(intzfschur)(char *fname, unsigned long fname_len);
+
+extern int C2F(intdgges)(char *fname, unsigned long fname_len);
+extern int C2F(intzgges)(char *fname, unsigned long fname_len);
+extern int C2F(intogschur)(char *fname, unsigned long fname_len);
+extern int C2F(intozgschur)(char *fname, unsigned long fname_len);
+extern int C2F(intzgschur)(char *fname, unsigned long fname_len);
+extern int C2F(intgschur)(char *fname, unsigned long fname_len);
+
+extern int schtst(int longueur, int *header);
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(complexify)(int *num);
+/*--------------------------------------------------------------------------*/
+int C2F(intschur)(char *fname, unsigned long fname_len)
+{
+ int *header1;
+ int *header2;
+ int *header3;
+ int Cmplx, CmplxA, CmplxB;
+ int ret, something, X;
+ int which = 1;
+ int longueur;
+
+ if (GetType(1) != sci_matrix)
+ {
+ OverLoad(1);
+ return 0;
+ }
+
+ header1 = (int *) GetData(1);
+ CmplxA = header1[3];
+ switch (Rhs)
+ {
+ case 1: /* schur(A) */
+ switch (CmplxA)
+ {
+ case REAL :
+ ret = C2F(intdgees0)("schur", 5L);
+ break;
+
+ case COMPLEX :
+ ret = C2F(intzgees0)("schur", 5L);
+ break;
+
+ default :
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ }
+ break;
+
+ case 2 : /* schur(A, something) */
+ header2 = (int *) GetData(2);
+ something = header2[0];
+ switch (something)
+ {
+ case FUNCTION :
+ switch (CmplxA)
+ {
+ case REAL :
+ ret = C2F(intoschur)("schur", 5L);
+ break;
+ case COMPLEX :
+ ret = C2F(intzschur)("schur", 5L);
+ break;
+ default :
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 2);
+ break;
+ }
+ break;
+
+ case STRING :
+ longueur = header2[5] - header2[4];
+ which = schtst(longueur, header2);
+ switch (which)
+ {
+ case STRINGREAL:
+ switch (CmplxA)
+ {
+ case REAL:
+ ret = C2F(intdgees1)("schur", 5L);
+ break;
+
+ case COMPLEX:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real matrix expected.\n"),
+ fname, 2);
+ break;
+ }
+ return 0;
+
+ case STRINGCOMPLEX:
+ switch (CmplxA)
+ {
+ case REAL:
+ ret = C2F(intdgees1)("schur", 5L);
+ break;
+
+ case COMPLEX:
+ ret = C2F(intzgees1)("schur", 5L);
+ break;
+ }
+ break;
+
+ default:
+ /* String is an external function */
+ switch (CmplxA)
+ {
+ case REAL:
+ ret = C2F(intfschur)("schur", 5L);
+ break;
+ case COMPLEX:
+ ret = C2F(intzfschur)("schur", 5L);
+ break;
+ }
+ }
+ break;
+
+ case SCI_DOUBLE: /*schur(A,B)*/
+ if (GetType(2) != sci_matrix)
+ {
+ OverLoad(2);
+ return 0;
+ }
+ CmplxB = header2[3];
+ if ((CmplxA == 0) && (CmplxB == 0))
+ {
+ Cmplx = 0;
+ }
+ else if ((CmplxA == 1) && (CmplxB == 0))
+ {
+ C2F(complexify)((X = 2, &X));
+ Cmplx = 1;
+ }
+ else if ((CmplxA == 0) && (CmplxB == 1))
+ {
+ C2F(complexify)((X = 1, &X));
+ Cmplx = 1;
+ }
+ else
+ {
+ Cmplx = 1;
+ }
+
+ switch (Cmplx)
+ {
+ case REAL :
+ ret = C2F(intdgges)("schur", 6L);
+ break;
+
+ case COMPLEX :
+ ret = C2F(intzgges)("schur", 6L);
+ break;
+
+ default :
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ }
+ break;
+ } /* end of switch (something) */
+ break;
+ case 3: /* schur(A,B,something) */
+ if (GetType(2) != sci_matrix)
+ {
+ OverLoad(2);
+ return 0;
+ }
+ header2 = (int *) GetData(2);
+ something = header2[0];
+ CmplxB = header2[3];
+ if ((CmplxA == 0) && (CmplxB == 0))
+ {
+ Cmplx = 0;
+ }
+ else if ((CmplxA == 1) && (CmplxB == 0))
+ {
+ C2F(complexify)((X = 2, &X));
+ Cmplx = 1;
+ }
+ else if ((CmplxA == 0) && (CmplxB == 1))
+ {
+ C2F(complexify)((X = 1, &X));
+ Cmplx = 1;
+ }
+ else
+ {
+ Cmplx = 1;
+ }
+
+ header3 = (int *) GetData(3);
+ something = header3[0];
+ switch (something)
+ {
+ case FUNCTION :
+ switch (Cmplx)
+ {
+ case REAL :
+ ret = C2F(intogschur)("schur", 6L);
+ break;
+
+ case COMPLEX :
+ ret = C2F(intozgschur)("schur", 6L);
+ break;
+
+ default :
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 3);
+ break;
+ }
+ break;
+ case STRING :
+ switch (Cmplx)
+ {
+ case REAL:
+ ret = C2F(intgschur)("schur", 6L);
+ break;
+ case COMPLEX:
+ ret = C2F(intzgschur)("schur", 6L);
+ break;
+ default :
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 3);
+ break;
+ }
+ break;
+ default: /* switch (something) */
+ break;
+ }
+ break; /* end of case 3 */
+
+ default :
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ } /*end of switch(Rhs) */
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
+int schtst (int longueur, int *header)
+{
+ if ( (longueur == 1) && ( Abs(header[6]) == 27 ) )
+ {
+ return STRINGREAL; /* "r" */
+ }
+
+ if ( (longueur == 4) && ( Abs(header[6]) == 27 ) && (Abs(header[7]) == 14 ) && (Abs(header[8]) == 10 ) && ( Abs(header[9]) == 21 ) )
+ {
+ return STRINGREAL; /* "real" */
+ }
+ if ( (longueur == 4) && ( Abs(header[6]) == 12 ) && (Abs(header[7]) == 24 ) && (Abs(header[8]) == 22 ) && ( Abs(header[9]) == 25 ) )
+ {
+ return STRINGCOMPLEX; /* "comp" */
+ }
+ if ( (longueur == 7) && ( Abs(header[6]) == 12 ) && (Abs(header[7]) == 24 ) && (Abs(header[8]) == 22 ) && ( Abs(header[9]) == 25 ) && ( Abs(header[10]) == 21) && ( Abs(header[11]) == 14) && ( Abs(header[12]) == 33) )
+ {
+ return STRINGCOMPLEX; /* "complex" */
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_slash.c b/modules/linear_algebra/sci_gateway/c/sci_slash.c
new file mode 100755
index 000000000..461747bd7
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_slash.c
@@ -0,0 +1,97 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "stack-c.h"
+#include "gw_linear_algebra.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(complexify)(int *num);
+
+extern int C2F(intdgesv4)(char *fname, unsigned long fname_len);
+extern int C2F(intzgesv4)(char *fname, unsigned long fname_len);
+
+/*--------------------------------------------------------------------------*/
+int C2F(intslash)(char *fname, unsigned long fname_len)
+{
+ int *header1;
+ int *header2;
+ int CmplxA;
+ int CmplxB;
+ int ret;
+ int X;
+
+ /* X = slash(A,B) <=> X = A / B */
+ header1 = (int *) GetData(1);
+ header2 = (int *) GetData(2);
+ CmplxA = header1[3];
+ CmplxB = header2[3];
+ if ((header1[2] != header2[2]) & (header1[1]*header1[2] == 1))
+ {
+ C2F(com).fun = 0;
+ Fin = -Fin;
+ return 0;
+ }
+ switch (CmplxA)
+ {
+ case REAL:
+ switch (CmplxB)
+ {
+ case REAL :
+ /* A real, Breal */
+ ret = C2F(intdgesv4)("slash", 5L);
+ break;
+
+ case COMPLEX :
+ /* A real, B complex : complexify A */
+ C2F(complexify)((X = 1, &X));
+ ret = C2F(intzgesv4)("slash", 5L);
+ break;
+
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 2);
+ break;
+ }
+ return 0;
+
+ case COMPLEX :
+ switch (CmplxB)
+ {
+ case REAL :
+ /* A complex, B real : complexify B */
+ C2F(complexify)((X = 2, &X));
+ ret = C2F(intzgesv4)("slash", 5L);
+ break;
+
+ case COMPLEX :
+ /* A complex, B complex */
+ ret = C2F(intzgesv4)("slash", 5L);
+ break;
+
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 2);
+ break;
+ }
+ return 0;
+
+ default :
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ return 0;
+ }
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_spec.c b/modules/linear_algebra/sci_gateway/c/sci_spec.c
new file mode 100755
index 000000000..e4378fd0b
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_spec.c
@@ -0,0 +1,143 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+
+#include <string.h>
+#include <stdio.h>
+#include "stack-c.h"
+#include "issymmetric.h"
+#include "gw_linear_algebra.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(complexify)(int *num);
+/*--------------------------------------------------------------------------*/
+int C2F(intspec)(char *fname, unsigned long fname_len)
+{
+ int *header1, *header2;
+ int CmplxA, CmplxB;
+ int ret;
+ int Symmetric;
+ int X;
+
+ switch (Rhs)
+ {
+ case 1: /* spec(A) */
+ if (GetType(1) != sci_matrix)
+ {
+ OverLoad(1);
+ return 0;
+ }
+ header1 = (int *) GetData(1);
+ CmplxA = header1[3];
+ X = 1;
+ Symmetric = C2F(issymmetric)(&X);
+ switch (CmplxA)
+ {
+ case REAL:
+ switch (Symmetric)
+ {
+ case NO :
+ ret = sci_dgeev("spec", 4L);
+ break;
+ case YES :
+ ret = sci_dsyev("spec", 4L);
+ break;
+ }
+ break;
+
+ case COMPLEX:
+ switch (Symmetric)
+ {
+ case NO :
+ ret = sci_zgeev("spec", 4L);
+ break;
+ case YES:
+ ret = sci_zheev("spec", 4L);
+ break;
+ }
+ break;
+
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ } /* end switch (CmplxA) */
+ break; /* end case 1 */
+
+ case 2: /* gspec(A,B) */
+ if (GetType(1) != sci_matrix)
+ {
+ OverLoad(1);
+ return 0;
+ }
+ if (GetType(2) != sci_matrix)
+ {
+ OverLoad(2);
+ return 0;
+ }
+ header1 = (int *) GetData(1);
+ header2 = (int *) GetData(2);
+ CmplxA = header1[3];
+ CmplxB = header2[3];
+ switch (CmplxA)
+ {
+ case REAL:
+ switch (CmplxB)
+ {
+ case REAL :
+ /* A real, Breal */
+ ret = sci_dggev("gspec", 5L);
+ break;
+ case COMPLEX :
+ /* A real, B complex : complexify A */
+ X = 1;
+ C2F(complexify)(&X);
+ ret = sci_zggev("gspec", 5L);
+ break;
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 2);
+ break;
+ }
+ break;
+ case COMPLEX :
+ switch (CmplxB)
+ {
+ case REAL :
+ /* A complex, B real : complexify B */
+ X = 2;
+ C2F(complexify)(&X);
+ ret = sci_zggev("gspec", 5L);
+ break;
+ case COMPLEX :
+ /* A complex, B complex */
+ ret = sci_zggev("gspec", 5L);
+ break;
+ default:
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 2);
+ break;
+ }
+ break;
+ default :
+ Scierror(999, _("%s: Wrong type for input argument #%d: Real or Complex matrix expected.\n"),
+ fname, 1);
+ break;
+ } /*end switch (CmplxA) */
+ break;/* end case 2 */
+
+ }/* end switch (Rhs) */
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_svd.c b/modules/linear_algebra/sci_gateway/c/sci_svd.c
new file mode 100755
index 000000000..b67c0a911
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_svd.c
@@ -0,0 +1,137 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include "stack-c.h"
+#include "gw_linear_algebra.h"
+#include "Scierror.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(intdgesvd1)(char *fname, unsigned long fname_len);
+extern int C2F(intzgesvd1)(char *fname, unsigned long fname_len);
+extern int C2F(intdgesvd2)(char *fname, unsigned long fname_len);
+extern int C2F(intzgesvd2)(char *fname, unsigned long fname_len);
+extern int C2F(intdoldsvd)(double *tol, char *fname, unsigned long fname_len);
+extern int C2F(intzoldsvd)(double *tol, char *fname, unsigned long fname_len);
+/*--------------------------------------------------------------------------*/
+int C2F(intsvd)(char *fname, unsigned long fname_len)
+{
+ int *header1;
+ int *header2;
+ int Cmplx;
+ int ret;
+ double tol;
+
+ if (GetType(1) != sci_matrix)
+ {
+ OverLoad(1);
+ return 0;
+ }
+ header1 = (int *) GetData(1);
+ Cmplx = header1[3];
+
+ switch (Rhs)
+ {
+ case 1: /* s=svd(A) or [U,s,V]=svd(A) */
+ switch (Lhs)
+ {
+ case 1:
+ case 2:
+ case 3:
+ if (Cmplx == 0)
+ {
+ ret = C2F(intdgesvd1)("svd", 3L);
+ return 0;
+ }
+ if (Cmplx == 1)
+ {
+ ret = C2F(intzgesvd1)("svd", 3L);
+ return 0;
+ }
+ break;
+
+ case 4:
+ if (Cmplx == 0)
+ {
+ ret = C2F(intdoldsvd)((tol = 0, &tol), "svd", 3L);
+ return 0;
+ }
+ if (Cmplx == 1)
+ {
+ ret = C2F(intzoldsvd)((tol = 0, &tol), "svd", 3L);
+ return 0;
+ }
+ break;
+ }
+ case 2 : /* svd(A, something) */
+ header2 = (int *) GetData(2);
+ switch (header2[0])
+ {
+ case SCI_DOUBLE :
+ if (Lhs == 4)
+ {
+ /* old svd, tolerance is passed: [U,S,V,rk]=svd(A,tol) */
+ /* ret = C2F(intsvdold)("svd",2L); */
+ if (Cmplx == 0)
+ {
+ tol = ((double *) header2)[2];
+ ret = C2F(intdoldsvd)(&tol, "svd", 3L);
+ return 0;
+ }
+ if (Cmplx == 1)
+ {
+ tol = ((double *) header2)[2];
+ ret = C2F(intzoldsvd)(&tol, "svd", 3L);
+ return 0;
+ }
+ }
+ else
+ {
+ /* old Economy size: [U,S,V]=svd(A,0) */
+ if (Cmplx == 0)
+ {
+ ret = C2F(intdgesvd2)("svd", 3L);
+ return 0;
+ }
+ if (Cmplx == 1)
+ {
+ ret = C2F(intzgesvd2)("svd", 3L);
+ return 0;
+ }
+ }
+ break;
+
+ case STRING :
+ /* Economy size: [U,S,V]=svd(A,"e") */
+ if (Cmplx == 0)
+ {
+ ret = C2F(intdgesvd2)("svd", 3L);
+ return 0;
+ }
+ if (Cmplx == 1)
+ {
+ ret = C2F(intzgesvd2)("svd", 3L);
+ return 0;
+ }
+ break;
+ }
+ break;
+
+ default : /* rhs > 2 */
+ Scierror(999, ("%s: Wrong number of input argument(s).\n"), fname);
+ break;
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/sci_gateway/c/sci_zgeev.c b/modules/linear_algebra/sci_gateway/c/sci_zgeev.c
new file mode 100755
index 000000000..1f21e4edf
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_zgeev.c
@@ -0,0 +1,174 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Michaël Baudin
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+#include "stack-c.h"
+#include "elementary_functions.h"
+#include "do_error_number.h"
+#include "MALLOC.h"
+#include "vfinite.h"
+#include "assembleEigenvectors.h"
+#include "gw_linear_algebra.h"
+
+extern int C2F(dlaset) ();
+extern int C2F(zgeev) ();
+
+//
+// intzgeev --
+// Interface to LAPACK's ZGEEV
+// Computes the eigenvalues and, if required, the eigenvectors of a complex asymmetric matrix.
+// Possible uses :
+// * With 1 LHS :
+// eigenvalues=spec(A)
+// where
+// A : symmetric, square matrix of size NxN
+// eigenvalues : matrix of size Nx1, type complex
+// * With 2 LHS :
+// [eigenvectors,eigenvalues]=spec(A)
+// where
+// A : square matrix of size NxN
+// eigenvalues : matrix of size NxN with eigenvalues as diagonal terms, type complex
+// eigenvectors : matrix of size NxN, type complex
+//
+int sci_zgeev(char *fname, unsigned long fname_len)
+{
+
+ int totalsize;
+ int iRows = 0;
+ int iCols = 0;
+ int ONE = 1;
+ int iWorkSize;
+ int INFO;
+
+ char JOBVL;
+ char JOBVR;
+
+ double *pdblDataReal = NULL;
+ double *pdblDataImg = NULL;
+ double *pdblFinalEigenvaluesReal = NULL; //SCILAB return Var
+ double *pdblFinalEigenvaluesImg = NULL; //SCILAB return Var
+ double *pdblFinalEigenvectorsReal = NULL; //SCILAB return Var
+ double *pdblFinalEigenvectorsImg = NULL; //SCILAB return Var
+ doublecomplex *pdblData = NULL;
+ doublecomplex *pdblEigenValues = NULL; //return by LAPACK
+ doublecomplex *pdblWork = NULL; // Used by LAPACK
+ doublecomplex *pdblRWork = NULL; // Used by LAPACK
+ doublecomplex *pdblLeftvectors = NULL; // Used by LAPACK
+ doublecomplex *pdblRightvectors = NULL; // Used by LAPACK
+
+ CheckRhs(1, 1);
+ CheckLhs(1, 2);
+
+ GetRhsVarMatrixComplex(1, &iRows, &iCols, &pdblDataReal, &pdblDataImg);
+ totalsize = iRows * iCols;
+ pdblData = oGetDoubleComplexFromPointer(pdblDataReal, pdblDataImg, totalsize);
+
+ if (iRows != iCols)
+ {
+ Err = 1;
+ SciError(20);
+ vFreeDoubleComplexFromPointer(pdblData);
+ return 0;
+ }
+ if (iCols == 0)
+ {
+ if (Lhs == 1)
+ {
+ int lD;
+
+ CreateVar(2, MATRIX_OF_COMPLEX_DATATYPE, &iCols, &iCols, &lD);
+ LhsVar(1) = 2;
+ vFreeDoubleComplexFromPointer(pdblData);
+ return 0;
+ }
+ else if (Lhs == 2)
+ {
+ int lD;
+ int lV;
+
+ CreateVar(2, MATRIX_OF_COMPLEX_DATATYPE, &iCols, &iCols, &lD);
+ CreateVar(3, MATRIX_OF_DOUBLE_DATATYPE, &iCols, &iCols, &lV);
+ LhsVar(1) = 2;
+ LhsVar(2) = 3;
+ vFreeDoubleComplexFromPointer(pdblData);
+ return 0;
+ }
+ }
+ if (C2F(vfiniteComplex) (&totalsize, pdblData) == 0)
+ {
+ SciError(264);
+ vFreeDoubleComplexFromPointer(pdblData);
+ return 0;
+ }
+ if (Lhs == 1)
+ {
+ iAllocComplexMatrixOfDouble(2, iCols, ONE, &pdblFinalEigenvaluesReal, &pdblFinalEigenvaluesImg);
+ }
+ else
+ {
+ iAllocComplexMatrixOfDouble(2, iCols, iCols, &pdblFinalEigenvaluesReal, &pdblFinalEigenvaluesImg);
+ iAllocComplexMatrixOfDouble(3, iCols, iCols, &pdblFinalEigenvectorsReal, &pdblFinalEigenvectorsImg);
+ pdblRightvectors = (doublecomplex *) MALLOC(sizeof(doublecomplex) * totalsize);
+ }
+
+ pdblEigenValues = (doublecomplex *) MALLOC(sizeof(doublecomplex) * iCols);
+
+ iWorkSize = Max(1, 2 * iCols);
+ pdblWork = (doublecomplex *) MALLOC(sizeof(doublecomplex) * iWorkSize);
+ pdblRWork = (doublecomplex *) MALLOC(sizeof(doublecomplex) * 2 * iCols);
+
+ JOBVL = 'N';
+ if (Lhs == 1)
+ {
+ JOBVR = 'N'; // Compute eigenvalues only;
+ }
+ else
+ {
+ JOBVR = 'V'; // Compute eigenvalues and eigenvectors.
+ }
+ C2F(zgeev) (&JOBVL, &JOBVR, &iCols, pdblData, &iCols, pdblEigenValues,
+ pdblLeftvectors, &iCols, pdblRightvectors, &iCols, pdblWork, &iWorkSize, pdblRWork, &INFO);
+ // SUBROUTINE ZGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL,
+ // $ VR, LDVR, WORK, LWORK, RWORK, INFO )
+ FREE(pdblWork);
+ FREE(pdblRWork);
+ if (INFO != 0)
+ {
+ SciError(24);
+ }
+ if (Lhs == 2)
+ {
+ // Transfert eigenvalues
+ assembleComplexEigenvaluesFromDoubleComplexPointer(iRows, pdblEigenValues, pdblFinalEigenvaluesReal, pdblFinalEigenvaluesImg);
+ // Transfert eigenvectors from doublecomplex to real and imaginary parts
+ vGetPointerFromDoubleComplex(pdblRightvectors, totalsize, pdblFinalEigenvectorsReal, pdblFinalEigenvectorsImg);
+ }
+ else
+ {
+ // Transfert eigenvalues from doublecomplex to real and imaginary parts
+ vGetPointerFromDoubleComplex(pdblEigenValues, iCols, pdblFinalEigenvaluesReal, pdblFinalEigenvaluesImg);
+ }
+ if (Lhs == 1)
+ {
+ LhsVar(1) = 2;
+ }
+ else
+ {
+ LhsVar(1) = 3;
+ LhsVar(2) = 2;
+ }
+ FREE(pdblEigenValues);
+ if (Lhs == 2)
+ {
+ FREE(pdblRightvectors);
+ }
+ vFreeDoubleComplexFromPointer(pdblData);
+ return 0;
+}
diff --git a/modules/linear_algebra/sci_gateway/c/sci_zggev.c b/modules/linear_algebra/sci_gateway/c/sci_zggev.c
new file mode 100755
index 000000000..f6059a039
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_zggev.c
@@ -0,0 +1,622 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2008 - INRIA - Michaël Baudin
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+#include "stack-c.h"
+#include "elementary_functions.h"
+#include "do_error_number.h"
+#include "MALLOC.h"
+#include "msgs.h"
+#include "vfinite.h"
+#include "assembleEigenvectors.h"
+#include "gw_linear_algebra.h"
+
+extern int C2F(dsyev) ();
+extern int C2F(dlaset) ();
+extern int C2F(dcopy) ();
+extern int C2F(zggev) ();
+extern int C2F(wwdiv) (double *ar, double *ai, double *br, double *bi, double *cr, double *ci, int *ierr);
+extern int C2F(dggev) ();
+
+static int isarrayzero(int size, double *values);
+static int intzggev_real(char *fname);
+static int intzggev_complex(char *fname);
+
+//
+// intzggev --
+// Interface to LAPACK's zggev
+// Computes the generalized eigenvalues and, if required, the generalized
+// eigenvectors of two real matrix.
+// Possible uses :
+// * With 1 LHS :
+// eigenvalues=spec(A,B)
+// where
+// A : square real matrix of size NxN
+// B : square real matrix of size NxN
+// eigenvalues : matrix of size Nx1 with right eigenvectors, type complex
+// * With 2 LHS :
+// [alpha,beta]=spec(A,B)
+// where
+// alpha,beta : the coefficients such that the generalized eigenvalues
+// are alpha(i)/beta(i), where alpha is of type complex, beta is real
+// * With 3 LHS :
+// [alpha,beta,R]=spec(A,B)
+// where
+// R : the matrix of generalized right eigenvectors, type complex
+// * With 4 LHS :
+// [alpha,beta,L,R]=spec(A,B)
+// where
+// L : the matrix of generalized left eigenvectors, type complex
+//
+int sci_zggev(char *fname, unsigned long fname_len)
+{
+ int totalsizeA;
+ int totalsizeB;
+ int iRowsA = 0;
+ int iColsA = 0;
+ int iRowsB = 0;
+ int iColsB = 0;
+ int isImaginaryMatrixAZero;
+ int isImaginaryMatrixBZero;
+
+ double *pdblMatrixAReal = NULL;
+ double *pdblMatrixAImg = NULL;
+ double *pdblMatrixBReal = NULL;
+ double *pdblMatrixBImg = NULL;
+
+ CheckRhs(2, 2);
+
+ GetRhsVarMatrixComplex(1, &iRowsA, &iColsA, &pdblMatrixAReal, &pdblMatrixAImg);
+ totalsizeA = iRowsA * iColsA;
+ GetRhsVarMatrixComplex(2, &iRowsB, &iColsB, &pdblMatrixBReal, &pdblMatrixBImg);
+ totalsizeB = iRowsB * iColsB;
+
+ // Check the imaginary parts of both matrices.
+ isImaginaryMatrixAZero = isarrayzero(totalsizeA, pdblMatrixAImg);
+ isImaginaryMatrixBZero = isarrayzero(totalsizeB, pdblMatrixBImg);
+ if (isImaginaryMatrixAZero == 1 && isImaginaryMatrixBZero == 1)
+ {
+ // If both imaginary parts are zero, then the used solver is DGGEV.
+ // This is a work-around for bug #3652
+ // http://bugzilla.scilab.org/show_bug.cgi?id=3652
+ // When LAPACK bug is solved, this thin layer may be removed.
+ // For simplicity reasons, the two branches are separated rather than factored.
+ // Moreover, when the bug is solved (if ever ?), the current layer will be easier to disconnect.
+ intzggev_real(fname);
+ }
+ else
+ {
+ // If one imaginary part non-zero, then the used solver is ZGGEV.
+ intzggev_complex(fname);
+ }
+ return 0;
+}
+
+//
+// isarrayzero --
+// Returns 1 if the given array is zero.
+// Arguments
+// size : the size of the array
+// values : the values
+//
+static int isarrayzero(int size, double *values)
+{
+ int index;
+ int result;
+
+ result = 1;
+ for (index = 0; index < size; index++)
+ {
+ if (values[index] != 0)
+ {
+ result = 0;
+ break;
+ }
+ }
+ return result;
+}
+
+//
+// intzggev_complex --
+// Perform the interface in the case where A and B are general complex
+// matrices.
+// Interface to LAPACK's zggev
+//
+static int intzggev_complex(char *fname)
+{
+ int totalsize;
+ int iRowsA = 0;
+ int iColsA = 0;
+ int iRowsB = 0;
+ int iColsB = 0;
+ int ONE = 1;
+ int iWorkSize;
+ int INFO;
+ int iRWorkSize;
+
+ char JOBVR;
+ char JOBVL;
+
+ double *pdblMatrixAReal = NULL;
+ double *pdblMatrixAImg = NULL;
+ double *pdblMatrixBReal = NULL;
+ double *pdblMatrixBImg = NULL;
+ double *pdblRWork = NULL; // Used by LAPACK
+ double *pdblFinalAlphaReal = NULL; //SCILAB return Var
+ double *pdblFinalAlphaImg = NULL; //SCILAB return Var
+ double *pdblFinalBetaReal = NULL; //SCILAB return Var, in complex case
+ double *pdblFinalBetaImg = NULL; //SCILAB return Var, in complex case
+ double *pdblFinalRReal = NULL; //SCILAB return Var
+ double *pdblFinalRImg = NULL; //SCILAB return Var
+ double *pdblFinalLReal = NULL; //SCILAB return Var
+ double *pdblFinalLImg = NULL; //SCILAB return Var
+ doublecomplex *pdblWork = NULL;
+ doublecomplex *pdblMatrixA = NULL;
+ doublecomplex *pdblMatrixB = NULL;
+ doublecomplex *pdblLeftvectors = NULL; // Used by LAPACK
+ doublecomplex *pdblRightvectors = NULL; // Used by LAPACK
+ doublecomplex *pdblAlpha = NULL; //Used by LAPACK
+ doublecomplex *pdblBeta = NULL; //Used by LAPACK
+
+ CheckRhs(2, 2);
+ CheckLhs(1, 4);
+
+ GetRhsVarMatrixComplex(1, &iRowsA, &iColsA, &pdblMatrixAReal, &pdblMatrixAImg);
+ totalsize = iRowsA * iColsA;
+ pdblMatrixA = oGetDoubleComplexFromPointer(pdblMatrixAReal, pdblMatrixAImg, totalsize);
+ GetRhsVarMatrixComplex(2, &iRowsB, &iColsB, &pdblMatrixBReal, &pdblMatrixBImg);
+ pdblMatrixB = oGetDoubleComplexFromPointer(pdblMatrixBReal, pdblMatrixBImg, totalsize);
+
+ if (iRowsA != iColsA)
+ {
+ Err = 1;
+ SciError(20);
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ if (iRowsB != iColsB)
+ {
+ Err = 2;
+ SciError(20);
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ if (iRowsA != iRowsB)
+ {
+ SciError(267);
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+
+ if (iColsA == 0)
+ {
+ if (Lhs == 1)
+ {
+ LhsVar(1) = 1;
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ else if (Lhs == 2)
+ {
+ LhsVar(1) = 1;
+ LhsVar(2) = 2;
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ else if (Lhs == 3)
+ {
+ int ZERO = 0;
+ int lVR;
+
+ CreateVar(3, MATRIX_OF_COMPLEX_DATATYPE, &ZERO, &ZERO, &lVR);
+ LhsVar(1) = 1;
+ LhsVar(2) = 2;
+ LhsVar(3) = 3;
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ else if (Lhs == 4)
+ {
+ int ZERO = 0;
+ int lVR;
+ int lVL;
+
+ CreateVar(3, MATRIX_OF_COMPLEX_DATATYPE, &ZERO, &ZERO, &lVR);
+ CreateVar(4, MATRIX_OF_COMPLEX_DATATYPE, &ZERO, &ZERO, &lVL);
+ LhsVar(1) = 1;
+ LhsVar(2) = 2;
+ LhsVar(3) = 3;
+ LhsVar(4) = 4;
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ }
+
+ if (C2F(vfiniteComplex) (&totalsize, pdblMatrixA) == 0)
+ {
+ SciError(264);
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ if (C2F(vfiniteComplex) (&totalsize, pdblMatrixB) == 0)
+ {
+ SciError(264);
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ iAllocComplexMatrixOfDouble(3, iColsA, ONE, &pdblFinalAlphaReal, &pdblFinalAlphaImg);
+ iAllocComplexMatrixOfDouble(4, iColsA, ONE, &pdblFinalBetaReal, &pdblFinalBetaImg);
+ pdblAlpha = (doublecomplex *) MALLOC(iColsA * sizeof(doublecomplex));
+ pdblBeta = (doublecomplex *) MALLOC(iColsA * sizeof(doublecomplex));
+
+ if (Lhs == 3 || Lhs == 4)
+ {
+ iAllocComplexMatrixOfDouble(5, iColsA, iColsA, &pdblFinalRReal, &pdblFinalRImg);
+ pdblRightvectors = (doublecomplex *) MALLOC(totalsize * sizeof(doublecomplex));
+ }
+ if (Lhs == 4)
+ {
+ iAllocComplexMatrixOfDouble(6, iColsA, iColsA, &pdblFinalLReal, &pdblFinalLImg);
+ pdblLeftvectors = (doublecomplex *) MALLOC(totalsize * sizeof(doublecomplex));
+ }
+
+ iWorkSize = Max(1, 2 * iColsA);
+ pdblWork = (doublecomplex *) MALLOC(iWorkSize * sizeof(doublecomplex));
+ iRWorkSize = Max(1, 8 * iColsA);
+ pdblRWork = (double *)MALLOC(sizeof(double) * iRWorkSize);
+
+ if (Lhs == 1 || Lhs == 2)
+ {
+ JOBVL = 'N'; // Do not compute left eigenvectors
+ JOBVR = 'N'; // Do not compute right eigenvectors
+ }
+ else if (Lhs == 3)
+ {
+ JOBVL = 'N'; // Do not compute left eigenvectors
+ JOBVR = 'V'; // Compute right eigenvectors
+ }
+ else if (Lhs == 4)
+ {
+ JOBVL = 'V'; // Compute left eigenvectors
+ JOBVR = 'V'; // Compute right eigenvectors
+ }
+ C2F(zggev) (&JOBVL, &JOBVR, &iColsA, pdblMatrixA, &iColsA, pdblMatrixB, &iColsA, pdblAlpha,
+ pdblBeta, pdblLeftvectors, &iColsA, pdblRightvectors, &iColsA, pdblWork, &iWorkSize, pdblRWork, &INFO);
+ // ZGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHA, BETA,
+ // $ VL, LDVL, VR, LDVR, WORK, LWORK, RWORK, INFO )
+
+ FREE(pdblWork);
+ FREE(pdblRWork);
+ if (INFO != 0)
+ {
+ if (INFO <= iColsA)
+ {
+ C2F(msgs) (&ONE, &INFO);
+ }
+ else
+ {
+ SciError(24);
+ return 0;
+ }
+ }
+ if (Lhs == 1)
+ {
+ /*int i;
+ * int ierr;
+ * double ar, ai, br, bi, cr, ci;
+ * for(i = 0 ; i < iColsA ; i++)
+ * {
+ * ar = pdblAlpha[i].r;
+ * ai = pdblAlpha[i].i;
+ * br = pdblBeta[i].r;
+ * bi = pdblBeta[i].i;
+ * C2F(wwdiv)(&ar, &ai, &br, &bi, &cr, &ci, &ierr);
+ * pdblFinalAlphaReal[i]=cr;
+ * pdblFinalAlphaImg[i]=ci;
+ * } */
+ double *ar, *ai, *br, *bi, *rr, *ri;
+ int ia = 2, ib = 2, ir = 1, ierr;
+
+ LhsVar(1) = 3;
+ ar = &pdblAlpha[0].r;
+ ai = &pdblAlpha[0].i;
+ br = &pdblBeta[0].r;
+ bi = &pdblBeta[0].i;
+ rr = pdblFinalAlphaReal;
+ ri = pdblFinalAlphaImg;
+ C2F(wwrdiv) (ar, ai, &ia, br, bi, &ib, rr, ri, &ir, &iColsA, &ierr);
+ }
+ if (Lhs == 2 || Lhs == 3 || Lhs == 4)
+ {
+ // Transfert eigenvalues from doublecomplex to real and imaginary parts
+ vGetPointerFromDoubleComplex(pdblAlpha, iColsA, pdblFinalAlphaReal, pdblFinalAlphaImg);
+ vGetPointerFromDoubleComplex(pdblBeta, iColsA, pdblFinalBetaReal, pdblFinalBetaImg);
+ }
+ if (Lhs == 2)
+ {
+ LhsVar(1) = 3;
+ LhsVar(2) = 4;
+ }
+ if (Lhs == 3 || Lhs == 4)
+ {
+ // Transfert eigenvectors from doublecomplex to real and imaginary parts
+ vGetPointerFromDoubleComplex(pdblRightvectors, totalsize, pdblFinalRReal, pdblFinalRImg);
+ }
+ if (Lhs == 3)
+ {
+ LhsVar(1) = 3;
+ LhsVar(2) = 4;
+ LhsVar(3) = 5;
+ }
+ if (Lhs == 4)
+ {
+ // Transfert eigenvectors from doublecomplex to real and imaginary parts
+ vGetPointerFromDoubleComplex(pdblLeftvectors, totalsize, pdblFinalLReal, pdblFinalLImg);
+ LhsVar(1) = 3;
+ LhsVar(2) = 4;
+ LhsVar(3) = 6;
+ LhsVar(4) = 5;
+ }
+ FREE(pdblAlpha);
+ FREE(pdblBeta);
+ if (Lhs == 3 || Lhs == 4)
+ {
+ FREE(pdblRightvectors);
+ }
+ if (Lhs == 4)
+ {
+ FREE(pdblLeftvectors);
+ }
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+}
+
+//
+// intzggev_real --
+// Perform the interface in the case where A and B are complex
+// matrices where the imaginary parts are ZERO.
+// Interface to LAPACK's dggev
+// The following source code is an adaptation of intdggev.
+//
+static int intzggev_real(char *fname)
+{
+ int totalsize;
+ int iRowsA = 0;
+ int iColsA = 0;
+ int iRowsB = 0;
+ int iColsB = 0;
+ int ONE = 1;
+ int iWorkSize = 0;
+ int INFO = 0;
+
+ char JOBVR;
+ char JOBVL;
+
+ double *pdblMatrixAReal = NULL;
+ double *pdblMatrixAImg = NULL;
+ double *pdblMatrixBReal = NULL;
+ double *pdblMatrixBImg = NULL;
+ double *pdblFinalAlphaReal = NULL; //SCILAB return Var
+ double *pdblFinalAlphaImg = NULL; //SCILAB return Var
+ double *pdblFinalBeta = NULL; //SCILAB return Var, in real-only case
+ double *pdblFinalRReal = NULL; //SCILAB return Var
+ double *pdblFinalRImg = NULL; //SCILAB return Var
+ double *pdblFinalLReal = NULL; //SCILAB return Var
+ double *pdblFinalLImg = NULL; //SCILAB return Var
+ double *pdblWork = NULL;
+ doublecomplex *pdblMatrixA = NULL;
+ doublecomplex *pdblMatrixB = NULL;
+ doublecomplex *pdblLeftvectors = NULL; // Used by LAPACK
+ doublecomplex *pdblRightvectors = NULL; // Used by LAPACK
+
+ CheckRhs(2, 2);
+ CheckLhs(1, 4);
+
+ GetRhsVarMatrixComplex(1, &iRowsA, &iColsA, &pdblMatrixAReal, &pdblMatrixAImg);
+ totalsize = iRowsA * iColsA;
+ pdblMatrixA = oGetDoubleComplexFromPointer(pdblMatrixAReal, pdblMatrixAImg, totalsize);
+ GetRhsVarMatrixComplex(2, &iRowsB, &iColsB, &pdblMatrixBReal, &pdblMatrixBImg);
+ pdblMatrixB = oGetDoubleComplexFromPointer(pdblMatrixBReal, pdblMatrixBImg, totalsize);
+
+ if (iRowsA != iColsA)
+ {
+ Err = 1;
+ SciError(20);
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ if (iRowsB != iColsB)
+ {
+ Err = 2;
+ SciError(20);
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ if (iRowsA != iRowsB)
+ {
+ SciError(267);
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+
+ if (iColsA == 0)
+ {
+ if (Lhs == 1)
+ {
+ LhsVar(1) = 1;
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ else if (Lhs == 2)
+ {
+ LhsVar(1) = 1;
+ LhsVar(2) = 2;
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ else if (Lhs == 3)
+ {
+ int ZERO = 0;
+ int lVR;
+
+ CreateVar(3, MATRIX_OF_COMPLEX_DATATYPE, &ZERO, &ZERO, &lVR);
+ LhsVar(1) = 1;
+ LhsVar(2) = 2;
+ LhsVar(3) = 3;
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ else if (Lhs == 4)
+ {
+ int ZERO = 0;
+ int lVR;
+ int lVL;
+
+ CreateVar(3, MATRIX_OF_COMPLEX_DATATYPE, &ZERO, &ZERO, &lVR);
+ CreateVar(4, MATRIX_OF_COMPLEX_DATATYPE, &ZERO, &ZERO, &lVL);
+ LhsVar(1) = 1;
+ LhsVar(2) = 2;
+ LhsVar(3) = 3;
+ LhsVar(4) = 4;
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ }
+
+ if (C2F(vfiniteComplex) (&totalsize, pdblMatrixA) == 0)
+ {
+ SciError(264);
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ if (C2F(vfiniteComplex) (&totalsize, pdblMatrixB) == 0)
+ {
+ SciError(264);
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ iAllocComplexMatrixOfDouble(3, iColsA, ONE, &pdblFinalAlphaReal, &pdblFinalAlphaImg);
+ iAllocMatrixOfDouble(4, iColsA, ONE, &pdblFinalBeta);
+
+ if (Lhs == 3 || Lhs == 4)
+ {
+ iAllocComplexMatrixOfDouble(5, iColsA, iColsA, &pdblFinalRReal, &pdblFinalRImg);
+ }
+ if (Lhs == 4)
+ {
+ iAllocComplexMatrixOfDouble(6, iColsA, iColsA, &pdblFinalLReal, &pdblFinalLImg);
+ }
+
+ iWorkSize = Max(1, 8 * iColsA);
+ pdblWork = (double *)MALLOC(iWorkSize * sizeof(double));
+
+ if (Lhs == 1 || Lhs == 2)
+ {
+ JOBVL = 'N'; // Do not compute left eigenvectors
+ JOBVR = 'N'; // Do not compute right eigenvectors
+ }
+ else if (Lhs == 3)
+ {
+ JOBVL = 'N'; // Do not compute left eigenvectors
+ JOBVR = 'V'; // Compute right eigenvectors
+ }
+ else if (Lhs == 4)
+ {
+ JOBVL = 'V'; // Compute left eigenvectors
+ JOBVR = 'V'; // Compute right eigenvectors
+ }
+ C2F(dggev) (&JOBVL, &JOBVR, &iColsA, pdblMatrixAReal, &iColsA, pdblMatrixBReal, &iColsA, pdblFinalAlphaReal,
+ pdblFinalAlphaImg, pdblFinalBeta, pdblFinalLReal, &iColsA, pdblFinalRReal, &iColsA, pdblWork, &iWorkSize, &INFO);
+ // SUBROUTINE DGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR,
+ // $ ALPHAI, BETA, VL, LDVL, VR, LDVR, WORK, LWORK, INFO )
+ if (pdblWork)
+ {
+ FREE(pdblWork);
+ pdblWork = NULL;
+ }
+ if (INFO != 0)
+ {
+ if (INFO <= iColsA)
+ {
+ C2F(msgs) (&ONE, &INFO);
+ }
+ else
+ {
+ SciError(24);
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+ }
+ }
+ if (Lhs == 1)
+ {
+ int i;
+
+ for (i = 0; i < iColsA; i++)
+ {
+ pdblFinalAlphaReal[i] = pdblFinalAlphaReal[i] / pdblFinalBeta[i];
+ pdblFinalAlphaImg[i] = pdblFinalAlphaImg[i] / pdblFinalBeta[i];
+ }
+ LhsVar(1) = 3;
+ }
+ if (Lhs == 2)
+ {
+ LhsVar(1) = 3;
+ LhsVar(2) = 4;
+ }
+ if (Lhs == 3 || Lhs == 4)
+ {
+ assembleEigenvectorsInPlace(iRowsA, pdblFinalAlphaImg, pdblFinalRReal, pdblFinalRImg);
+ }
+ if (Lhs == 3)
+ {
+ LhsVar(1) = 3;
+ LhsVar(2) = 4;
+ LhsVar(3) = 5;
+ }
+ if (Lhs == 4)
+ {
+ assembleEigenvectorsInPlace(iRowsA, pdblFinalAlphaImg, pdblFinalLReal, pdblFinalLImg);
+ LhsVar(1) = 3;
+ LhsVar(2) = 4;
+ LhsVar(3) = 6;
+ LhsVar(4) = 5;
+ }
+ if (Lhs == 3 || Lhs == 4)
+ {
+ FREE(pdblRightvectors);
+ }
+ if (Lhs == 4)
+ {
+ FREE(pdblLeftvectors);
+ }
+ vFreeDoubleComplexFromPointer(pdblMatrixA);
+ vFreeDoubleComplexFromPointer(pdblMatrixB);
+ return 0;
+}
diff --git a/modules/linear_algebra/sci_gateway/c/sci_zheev.c b/modules/linear_algebra/sci_gateway/c/sci_zheev.c
new file mode 100755
index 000000000..7d7ebf0a7
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/c/sci_zheev.c
@@ -0,0 +1,155 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Michaël Baudin
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+#include "stack-c.h"
+#include "elementary_functions.h"
+#include "do_error_number.h"
+#include "MALLOC.h"
+#include "vfinite.h"
+#include "assembleEigenvectors.h"
+#include "gw_linear_algebra.h"
+
+extern int C2F(dlaset) ();
+extern int C2F(zheev) ();
+
+//
+// intzheev --
+// Interface to LAPACK's ZHEEV
+// Computes the eigenvalues and, if required, the eigenvectors of a complex symmetric matrix.
+// Possible uses :
+// * With 1 LHS :
+// eigenvalues=spec(A)
+// where
+// A : symmetric, square matrix of size NxN
+// eigenvalues : matrix of size Nx1, type real
+// * With 2 LHS :
+// [eigenvectors,eigenvalues]=spec(A)
+// where
+// A : square matrix of size NxN
+// eigenvalues : matrix of size NxN with eigenvalues as diagonal terms, type real
+// eigenvectors : matrix of size NxN, type complex
+//
+int sci_zheev(char *fname, unsigned long fname_len)
+{
+ int totalsize;
+ int iRows = 0;
+ int iCols = 0;
+ int ONE = 1;
+ int iWorkSize;
+ int iRWorkSize;
+ int INFO;
+
+ char JOBZ;
+ char UPLO;
+
+ double *pdblDataReal = NULL;
+ double *pdblDataImg = NULL;
+ double *pdblFinalEigenvalues = NULL; //SCILAB return Var
+ double *pdblEigenValues = NULL; //return by LAPACK
+ double *pdblRWork = NULL; // Used by LAPACK
+ double *pdblFinalEigenvectorsReal; // returned by Scilab
+ double *pdblFinalEigenvectorsImg; // returned by Scilab
+ doublecomplex *pdblData = NULL;
+ doublecomplex *pdblWork = NULL; // Used by LAPACK
+
+ CheckRhs(1, 1);
+ CheckLhs(1, 2);
+
+ GetRhsVarMatrixComplex(1, &iRows, &iCols, &pdblDataReal, &pdblDataImg);
+ totalsize = iRows * iCols;
+ pdblData = oGetDoubleComplexFromPointer(pdblDataReal, pdblDataImg, totalsize);
+
+ if (iRows != iCols)
+ {
+ Err = 1;
+ SciError(20);
+ vFreeDoubleComplexFromPointer(pdblData);
+ return 0;
+ }
+ if (iCols == 0)
+ {
+ if (Lhs == 1)
+ {
+ LhsVar(1) = 1;
+ vFreeDoubleComplexFromPointer(pdblData);
+ return 0;
+ }
+ else if (Lhs == 2)
+ {
+ int lD;
+
+ CreateVar(2, MATRIX_OF_DOUBLE_DATATYPE, &iCols, &iCols, &lD);
+ LhsVar(1) = 1;
+ LhsVar(2) = 2;
+ vFreeDoubleComplexFromPointer(pdblData);
+ return 0;
+ }
+ }
+ if (C2F(vfiniteComplex) (&totalsize, pdblData) == 0)
+ {
+ SciError(264);
+ vFreeDoubleComplexFromPointer(pdblData);
+ return 0;
+ }
+ if (Lhs == 1)
+ {
+ iAllocMatrixOfDouble(2, iCols, ONE, &pdblFinalEigenvalues);
+ }
+ else
+ {
+ iAllocMatrixOfDouble(2, iCols, iCols, &pdblFinalEigenvalues);
+ iAllocComplexMatrixOfDouble(3, iCols, iCols, &pdblFinalEigenvectorsReal, &pdblFinalEigenvectorsImg);
+ }
+
+ pdblEigenValues = (double *)MALLOC(sizeof(double) * iCols);
+
+ iWorkSize = Max(1, 2 * iCols - 1);
+ pdblWork = (doublecomplex *) MALLOC(sizeof(doublecomplex) * iWorkSize);
+ iRWorkSize = Max(1, 3 * iCols - 2);
+ pdblRWork = (double *)MALLOC(sizeof(double) * iRWorkSize);
+
+ if (Lhs == 1)
+ {
+ JOBZ = 'N'; // Compute eigenvalues only;
+ }
+ else
+ {
+ JOBZ = 'V'; // Compute eigenvalues and eigenvectors.
+ }
+ UPLO = 'U';
+ C2F(zheev) (&JOBZ, &UPLO, &iCols, pdblData, &iCols, pdblEigenValues, pdblWork, &iWorkSize, pdblRWork, &INFO);
+ // SUBROUTINE ZHEEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK,
+ // $ INFO )
+ FREE(pdblWork);
+ FREE(pdblRWork);
+ if (INFO != 0)
+ {
+ SciError(24);
+ }
+ if (Lhs == 1)
+ {
+ int INCX = 1;
+ int INCY = 1;
+
+ C2F(dcopy) (&iCols, pdblEigenValues, &INCX, pdblFinalEigenvalues, &INCY);
+ LhsVar(1) = 2;
+ }
+ else
+ {
+ assembleEigenvaluesFromDoublePointer(iRows, pdblEigenValues, pdblFinalEigenvalues);
+ vGetPointerFromDoubleComplex(pdblData, totalsize, pdblFinalEigenvectorsReal, pdblFinalEigenvectorsImg);
+ LhsVar(1) = 3; // Eigenvectors are stored in variable #3
+ LhsVar(2) = 2; // Eigenvalues are stored in variable #2
+ }
+ FREE(pdblEigenValues);
+ vFreeDoubleComplexFromPointer(pdblData);
+ return 0;
+}
diff --git a/modules/linear_algebra/sci_gateway/linear_algebra_gateway.xml b/modules/linear_algebra/sci_gateway/linear_algebra_gateway.xml
new file mode 100755
index 000000000..8c3b9d831
--- /dev/null
+++ b/modules/linear_algebra/sci_gateway/linear_algebra_gateway.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+ * Copyright (C) 2007-2008 - INRIA - Sylvestre LEDRU <sylvestre.ledru@inria.fr>
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<!--
+ Scilab
+ Interface description. In this file, we define the list of the function which
+ will be available into Scilab and the link to the "native" function.
+
+ gatewayId is the position in the hashtable 'Interfaces' defined in the
+ file SCI/modules/core/src/c/callinterf.h
+
+ primitiveId is the position in the hashtable '<module>Table Tab[]' defined
+ in the file modules/<module>/sci_gateway/c/gw_<module>.c
+
+ primitiveName is the name of the Scilab function
+
+ Don't touch if you do not know what you are doing
+-->
+
+<!DOCTYPE GATEWAY SYSTEM "../../functions/xml/gateway.dtd">
+<GATEWAY name="linear_algebra">
+ <PRIMITIVE gatewayId="2" primitiveId="4" primitiveName="bdiag" />
+ <PRIMITIVE gatewayId="44" primitiveId="1" primitiveName="qr" />
+ <PRIMITIVE gatewayId="44" primitiveId="2" primitiveName="svd" />
+ <PRIMITIVE gatewayId="44" primitiveId="3" primitiveName="lsq" />
+ <PRIMITIVE gatewayId="44" primitiveId="4" primitiveName="spec" />
+ <PRIMITIVE gatewayId="44" primitiveId="5" primitiveName="inv" />
+ <PRIMITIVE gatewayId="44" primitiveId="6" primitiveName="rcond" />
+ <PRIMITIVE gatewayId="44" primitiveId="7" primitiveName="chol" />
+ <PRIMITIVE gatewayId="44" primitiveId="8" primitiveName="lu" />
+ <PRIMITIVE gatewayId="44" primitiveId="9" primitiveName="slash" />
+ <PRIMITIVE gatewayId="44" primitiveId="10" primitiveName="backslash" />
+ <PRIMITIVE gatewayId="44" primitiveId="11" primitiveName="schur" />
+ <PRIMITIVE gatewayId="44" primitiveId="12" primitiveName="hess" />
+ <PRIMITIVE gatewayId="44" primitiveId="13" primitiveName="det" />
+ <PRIMITIVE gatewayId="44" primitiveId="14" primitiveName="balanc" />
+ <PRIMITIVE gatewayId="44" primitiveId="15" primitiveName="norm" />
+</GATEWAY>
diff --git a/modules/linear_algebra/src/c/.deps/.dirstamp b/modules/linear_algebra/src/c/.deps/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/linear_algebra/src/c/.deps/.dirstamp
diff --git a/modules/linear_algebra/src/c/.deps/libscilinear_algebra_algo_la-issymmetric.Plo b/modules/linear_algebra/src/c/.deps/libscilinear_algebra_algo_la-issymmetric.Plo
new file mode 100755
index 000000000..77b922b04
--- /dev/null
+++ b/modules/linear_algebra/src/c/.deps/libscilinear_algebra_algo_la-issymmetric.Plo
@@ -0,0 +1,192 @@
+src/c/libscilinear_algebra_algo_la-issymmetric.lo: src/c/issymmetric.c \
+ /usr/include/stdc-predef.h ../../modules/core/includes/stack-c.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h includes/issymmetric.h \
+ includes/dynlib_linear_algebra.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+includes/issymmetric.h:
+
+includes/dynlib_linear_algebra.h:
diff --git a/modules/linear_algebra/src/c/.deps/libscilinear_algebra_algo_la-norm.Plo b/modules/linear_algebra/src/c/.deps/libscilinear_algebra_algo_la-norm.Plo
new file mode 100755
index 000000000..735fe3985
--- /dev/null
+++ b/modules/linear_algebra/src/c/.deps/libscilinear_algebra_algo_la-norm.Plo
@@ -0,0 +1,176 @@
+src/c/libscilinear_algebra_algo_la-norm.lo: src/c/norm.c \
+ /usr/include/stdc-predef.h src/c/norm.h /usr/include/string.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h
+
+/usr/include/stdc-predef.h:
+
+src/c/norm.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
diff --git a/modules/linear_algebra/src/c/.deps/libscilinear_algebra_algo_la-schurtable.Plo b/modules/linear_algebra/src/c/.deps/libscilinear_algebra_algo_la-schurtable.Plo
new file mode 100755
index 000000000..9aeb91237
--- /dev/null
+++ b/modules/linear_algebra/src/c/.deps/libscilinear_algebra_algo_la-schurtable.Plo
@@ -0,0 +1,71 @@
+src/c/libscilinear_algebra_algo_la-schurtable.lo: src/c/schurtable.c \
+ /usr/include/stdc-predef.h /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/dynamic_link/includes/GetFunctionByName.h \
+ ../../modules/dynamic_link/includes/dynlib_dynamic_link.h \
+ src/c/linear_FTables.h includes/schur.h includes/dynlib_linear_algebra.h \
+ ../../modules/core/includes/machine.h src/c/linear_FTables.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/dynamic_link/includes/GetFunctionByName.h:
+
+../../modules/dynamic_link/includes/dynlib_dynamic_link.h:
+
+src/c/linear_FTables.h:
+
+includes/schur.h:
+
+includes/dynlib_linear_algebra.h:
+
+../../modules/core/includes/machine.h:
+
+src/c/linear_FTables.h:
diff --git a/modules/linear_algebra/src/c/.dirstamp b/modules/linear_algebra/src/c/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/linear_algebra/src/c/.dirstamp
diff --git a/modules/linear_algebra/src/c/.libs/libscilinear_algebra_algo_la-issymmetric.o b/modules/linear_algebra/src/c/.libs/libscilinear_algebra_algo_la-issymmetric.o
new file mode 100755
index 000000000..e78a30caa
--- /dev/null
+++ b/modules/linear_algebra/src/c/.libs/libscilinear_algebra_algo_la-issymmetric.o
Binary files differ
diff --git a/modules/linear_algebra/src/c/.libs/libscilinear_algebra_algo_la-norm.o b/modules/linear_algebra/src/c/.libs/libscilinear_algebra_algo_la-norm.o
new file mode 100755
index 000000000..7244c9db1
--- /dev/null
+++ b/modules/linear_algebra/src/c/.libs/libscilinear_algebra_algo_la-norm.o
Binary files differ
diff --git a/modules/linear_algebra/src/c/.libs/libscilinear_algebra_algo_la-schurtable.o b/modules/linear_algebra/src/c/.libs/libscilinear_algebra_algo_la-schurtable.o
new file mode 100755
index 000000000..87a8d3bfa
--- /dev/null
+++ b/modules/linear_algebra/src/c/.libs/libscilinear_algebra_algo_la-schurtable.o
Binary files differ
diff --git a/modules/linear_algebra/src/c/Core_f_Import.def b/modules/linear_algebra/src/c/Core_f_Import.def
new file mode 100755
index 000000000..0638da93a
--- /dev/null
+++ b/modules/linear_algebra/src/c/Core_f_Import.def
@@ -0,0 +1,10 @@
+ LIBRARY core_f.dll
+
+
+EXPORTS
+;
+;core_f
+;
+find_
+folhp_
+
diff --git a/modules/linear_algebra/src/c/DllmainLinear_algebra.c b/modules/linear_algebra/src/c/DllmainLinear_algebra.c
new file mode 100755
index 000000000..b4e9187c9
--- /dev/null
+++ b/modules/linear_algebra/src/c/DllmainLinear_algebra.c
@@ -0,0 +1,36 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <windows.h>
+/*--------------------------------------------------------------------------*/
+#pragma comment(lib,"../../../../bin/libintl.lib")
+#pragma comment(lib,"../../../../bin/blasplus.lib")
+#pragma comment(lib,"../../../../bin/lapack.lib")
+/*--------------------------------------------------------------------------*/
+int WINAPI DllMain (HINSTANCE hInstance , DWORD reason, PVOID pvReserved)
+{
+ switch (reason)
+ {
+ case DLL_PROCESS_ATTACH:
+ break;
+ case DLL_PROCESS_DETACH:
+ break;
+ case DLL_THREAD_ATTACH:
+ break;
+ case DLL_THREAD_DETACH:
+ break;
+ }
+ return 1;
+}
+/*--------------------------------------------------------------------------*/
+
diff --git a/modules/linear_algebra/src/c/core_Import.def b/modules/linear_algebra/src/c/core_Import.def
new file mode 100755
index 000000000..0d5528363
--- /dev/null
+++ b/modules/linear_algebra/src/c/core_Import.def
@@ -0,0 +1,34 @@
+ LIBRARY core.dll
+
+
+EXPORTS
+;
+;core
+;
+callFunctionFromGateway
+com_
+errgst_
+iop_
+stack_
+vstk_
+GetData
+overload_
+gettype_
+createcvar_
+check_scalar
+getrhsvar_
+intersci_
+createvar_
+check_square
+checklhs_
+checkrhs_
+iAllocComplexMatrixOfDouble
+GetRhsVarMatrixDouble
+iAllocMatrixOfDouble
+vGetPointerFromDoubleComplex
+vFreeDoubleComplexFromPointer
+oGetDoubleComplexFromPointer
+GetRhsVarMatrixComplex
+getrhscvar_
+MyHeapAlloc
+MyHeapFree
diff --git a/modules/linear_algebra/src/c/elementary_functions_f_Import.def b/modules/linear_algebra/src/c/elementary_functions_f_Import.def
new file mode 100755
index 000000000..349091d49
--- /dev/null
+++ b/modules/linear_algebra/src/c/elementary_functions_f_Import.def
@@ -0,0 +1,11 @@
+LIBRARY elementary_functions_f.dll
+
+
+EXPORTS
+; ---------------------------------------
+; elementary_functions_f
+; ---------------------------------------
+wbdiag_
+bdiag_
+wwrdiv_
+dset_ \ No newline at end of file
diff --git a/modules/linear_algebra/src/c/issymmetric.c b/modules/linear_algebra/src/c/issymmetric.c
new file mode 100755
index 000000000..e80be1dde
--- /dev/null
+++ b/modules/linear_algebra/src/c/issymmetric.c
@@ -0,0 +1,128 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Bruno Jofret <bruno.jofret@inria.fr>
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+/*
+** -*- C -*-
+**
+** issymmetric.c
+**
+** Started on Thu Jul 19 12:12:28 2007 bruno
+** Last update Thu Sep 13 09:48:48 2007 bruno
+*/
+#include "stack-c.h"
+#include "issymmetric.h"
+
+/*
+** Check wether or not a Matrix is Symmetric.
+*/
+
+/*
+** Two cases :
+** ~ Real Case :
+** --------------
+** - Check that symmetrics elements are strictly equals.
+**
+** ~ Complex Case :
+** -----------------
+** - Check that symmetrics elements are conjugate.
+** - Check that diagonal's elements are Real.
+*/
+
+
+int C2F(issymmetric)(int *stackPosition)
+{
+
+ int relativePosition = Top - Rhs + *stackPosition;
+ int address = *Lstk(relativePosition);
+ int intAddress = iadr(address);
+ int m = getNumberOfLines(intAddress);
+ int n = getNumberOfColumns(intAddress);
+ int l = getDoubleDataAddress(intAddress);
+ int size = m * n;
+
+ /* Local variables */
+ int lineIterator = 0;
+ int columnIterator = 0;
+ int elementAddress = 0;
+ int symetricElementAddress = 0;
+ double realRest = 0;
+ double imagRest = 0;
+
+ /** If the matrix is not Square, it can not be symmetric */
+ if (m != n)
+ {
+ return(NOT_SYMMETRIC);
+ }
+
+ if (isComplex(intAddress))
+ {
+ /*
+ ** REAL Case.
+ */
+ for (lineIterator = 0 ; lineIterator < n ; ++lineIterator)
+ {
+ for (columnIterator = 0 ; columnIterator < lineIterator ; ++columnIterator)
+ {
+ elementAddress = l + columnIterator + lineIterator * n;
+ symetricElementAddress = l + columnIterator * n + lineIterator;
+ realRest = fabs(getElementByAddress(elementAddress) - getElementByAddress(symetricElementAddress));
+ if (realRest > 0)
+ {
+ return NOT_SYMMETRIC;
+ }
+ }
+ }
+ /* We have not detected the Matrix is not Symetric */
+ return SYMMETRIC;
+ }
+ else
+ {
+ /*
+ ** COMPLEX case.
+ */
+
+ /*
+ ** Just Checking that diags are completely real
+ ** i.e their imaginary part is 0.
+ */
+ /** { BEGIN : Diag check */
+ for (lineIterator = 0 ; lineIterator < n ; ++lineIterator)
+ {
+ elementAddress = l + lineIterator + lineIterator * n;
+ symetricElementAddress = elementAddress + size;
+ if (fabs(getElementByAddress(symetricElementAddress)) > 0)
+ {
+ return NOT_SYMMETRIC;
+ }
+ }
+ /** END : Diag Check */
+
+ /** Generic Complex case */
+ for (lineIterator = 1 ; lineIterator < n ; ++lineIterator)
+ {
+ for (columnIterator = 1 ; columnIterator <= lineIterator ; ++columnIterator)
+ {
+ elementAddress = l + columnIterator - 1 + lineIterator * n;
+ symetricElementAddress = l + (columnIterator - 1) * n + lineIterator;
+ realRest = fabs(getElementByAddress(elementAddress) - getElementByAddress(symetricElementAddress));
+ imagRest = fabs(getElementByAddress(elementAddress + size) + getElementByAddress(symetricElementAddress + size));
+ if (realRest > 0 || imagRest > 0)
+ {
+ return NOT_SYMMETRIC;
+ }
+ }
+ }
+ /* We have not detected the Matrix is not Symetric */
+ return SYMMETRIC;
+ }
+}
diff --git a/modules/linear_algebra/src/c/libscilinear_algebra_algo_la-issymmetric.lo b/modules/linear_algebra/src/c/libscilinear_algebra_algo_la-issymmetric.lo
new file mode 100755
index 000000000..bc13975cd
--- /dev/null
+++ b/modules/linear_algebra/src/c/libscilinear_algebra_algo_la-issymmetric.lo
@@ -0,0 +1,12 @@
+# src/c/libscilinear_algebra_algo_la-issymmetric.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_algo_la-issymmetric.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/c/libscilinear_algebra_algo_la-norm.lo b/modules/linear_algebra/src/c/libscilinear_algebra_algo_la-norm.lo
new file mode 100755
index 000000000..db5e549e6
--- /dev/null
+++ b/modules/linear_algebra/src/c/libscilinear_algebra_algo_la-norm.lo
@@ -0,0 +1,12 @@
+# src/c/libscilinear_algebra_algo_la-norm.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_algo_la-norm.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/c/libscilinear_algebra_algo_la-schurtable.lo b/modules/linear_algebra/src/c/libscilinear_algebra_algo_la-schurtable.lo
new file mode 100755
index 000000000..35740c1f3
--- /dev/null
+++ b/modules/linear_algebra/src/c/libscilinear_algebra_algo_la-schurtable.lo
@@ -0,0 +1,12 @@
+# src/c/libscilinear_algebra_algo_la-schurtable.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscilinear_algebra_algo_la-schurtable.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/c/linear_FTables.h b/modules/linear_algebra/src/c/linear_FTables.h
new file mode 100755
index 000000000..0930b5a24
--- /dev/null
+++ b/modules/linear_algebra/src/c/linear_FTables.h
@@ -0,0 +1,27 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Sylvestre LEDRU <sylvestre.ledru@inria.fr>
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __LINEAR_FTABLES_H__
+#define __LINEAR_FTABLES_H__
+
+
+
+#define OK 1
+#define FAIL 0
+
+typedef struct
+{
+ double r, i;
+} doublecmplx;
+
+#endif /* __LINEAR_FTABLES_H__ */
diff --git a/modules/linear_algebra/src/c/linear_algebra.rc b/modules/linear_algebra/src/c/linear_algebra.rc
new file mode 100755
index 000000000..ec3f91f1d
--- /dev/null
+++ b/modules/linear_algebra/src/c/linear_algebra.rc
@@ -0,0 +1,96 @@
+// Microsoft Visual C++ generated resource script.
+//
+
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+//#include "afxres.h"
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "windows.h"
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// French (France) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
+#ifdef _WIN32
+LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 5,5,2,0
+ PRODUCTVERSION 5,5,2,0
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040c04b0"
+ BEGIN
+ VALUE "FileDescription", "linear_algebra module"
+ VALUE "FileVersion", "5, 5, 2, 0"
+ VALUE "InternalName", "linear_algebra module"
+ VALUE "LegalCopyright", "Copyright (C) 2017"
+ VALUE "OriginalFilename", "linear_algebra.dll"
+ VALUE "ProductName", "linear_algebra module"
+ VALUE "ProductVersion", "5, 5, 2, 0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x40c, 1200
+ END
+END
+
+#endif // French (France) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/modules/linear_algebra/src/c/linear_algebra.vcxproj b/modules/linear_algebra/src/c/linear_algebra.vcxproj
new file mode 100755
index 000000000..6d96ddcf4
--- /dev/null
+++ b/modules/linear_algebra/src/c/linear_algebra.vcxproj
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{BC462A57-C5B3-4F93-8067-80363827DCDA}</ProjectGuid>
+ <RootNamespace>linear_algebra</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../src/c;../../../core/includes;../../../output_stream/includes;../../../dynamic_link/includes;../../../dynamic_link/src/c;../../../localization/includes;../../../core/src/c;../../../../libs/intl;../../../elementary_functions/includes;../../../api_scilab/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;_DEBUG;_WINDOWS;_USRDLL;LINEAR_ALGEBRA_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linear_algebra_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linear_algebra_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)slicot_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)slicot_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)core_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core_f.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;core_f.lib;linear_algebra_f.lib;elementary_functions_f.lib;slicot_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../includes;../../src/c;../../../core/includes;../../../output_stream/includes;../../../dynamic_link/includes;../../../dynamic_link/src/c;../../../localization/includes;../../../core/src/c;../../../../libs/intl;../../../elementary_functions/includes;../../../api_scilab/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;_DEBUG;_WINDOWS;_USRDLL;LINEAR_ALGEBRA_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linear_algebra_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linear_algebra_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)slicot_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)slicot_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)core_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core_f.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;core_f.lib;linear_algebra_f.lib;elementary_functions_f.lib;slicot_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>../../includes;../../src/c;../../../core/includes;../../../output_stream/includes;../../../dynamic_link/includes;../../../dynamic_link/src/c;../../../localization/includes;../../../core/src/c;../../../../libs/intl;../../../elementary_functions/includes;../../../api_scilab/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;NDEBUG;_WINDOWS;_USRDLL;LINEAR_ALGEBRA_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linear_algebra_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linear_algebra_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)slicot_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)slicot_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)core_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core_f.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;core_f.lib;linear_algebra_f.lib;elementary_functions_f.lib;slicot_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>../../includes;../../src/c;../../../core/includes;../../../output_stream/includes;../../../dynamic_link/includes;../../../dynamic_link/src/c;../../../localization/includes;../../../core/src/c;../../../../libs/intl;../../../elementary_functions/includes;../../../api_scilab/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;NDEBUG;_WINDOWS;_USRDLL;LINEAR_ALGEBRA_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linear_algebra_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linear_algebra_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)slicot_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)slicot_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)core_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core_f.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;core_f.lib;linear_algebra_f.lib;elementary_functions_f.lib;slicot_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\sci_gateway\c\assembleEigenvectors.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_spec.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_norm.c" />
+ <ClCompile Include="DllmainLinear_algebra.c" />
+ <ClCompile Include="..\..\sci_gateway\c\gw_linear_algebra.c" />
+ <ClCompile Include="..\..\sci_gateway\c\gw_linear_algebra2.c" />
+ <ClCompile Include="issymmetric.c" />
+ <ClCompile Include="norm.c" />
+ <ClCompile Include="schurtable.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_backslash.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_balanc.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_bdiag.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_chol.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_det.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_dgeev.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_dggev.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_dsyev.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_hess.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_inv.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_lsq.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_lu.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_qr.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_rcond.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_schur.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_slash.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_svd.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_zgeev.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_zggev.c" />
+ <ClCompile Include="..\..\sci_gateway\c\sci_zheev.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\sci_gateway\c\assembleEigenvectors.h" />
+ <ClInclude Include="..\..\includes\dynlib_linear_algebra.h" />
+ <ClInclude Include="..\..\includes\gschur.h" />
+ <ClInclude Include="..\..\includes\gw_linear_algebra.h" />
+ <ClInclude Include="..\..\includes\gw_linear_algebra2.h" />
+ <ClInclude Include="..\..\includes\issymmetric.h" />
+ <ClInclude Include="linear_FTables.h" />
+ <ClInclude Include="..\..\includes\schur.h" />
+ <ClInclude Include="norm.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="..\..\locales\linear_algebra.pot" />
+ <None Include="Core_f_Import.def" />
+ <None Include="elementary_functions_f_Import.def" />
+ <None Include="core_import.def" />
+ <None Include="linear_algebra_f_Import.def" />
+ <None Include="..\..\linear_algebra.iss" />
+ <None Include="..\..\sci_gateway\linear_algebra_gateway.xml" />
+ <None Include="..\..\Makefile.am" />
+ <None Include="slicot_f_Import.def" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="linear_algebra.rc" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\..\tools\Dumpexts\Dumpexts.vcxproj">
+ <Project>{3170e4c2-1173-4264-a222-7ee8ccb3ddf7}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\api_scilab\api_scilab.vcxproj">
+ <Project>{43c5bab1-1dca-4743-a183-77e0d42fe7d0}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\dynamic_link\src\c\dynamic_link.vcxproj">
+ <Project>{eab6c580-22b3-4359-ba1d-dd7499a96163}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\elementary_functions\src\c\elementary_functions.vcxproj">
+ <Project>{5b110267-7c18-437c-b87d-dba2b50729e9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\localization\src\localization.vcxproj">
+ <Project>{ecffeb0c-1eda-45ee-9a10-b18143852e17}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\output_stream\src\c\output_stream.vcxproj">
+ <Project>{a5911cd7-f8e8-440c-a23e-4843a0636f3a}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/modules/linear_algebra/src/c/linear_algebra.vcxproj.filters b/modules/linear_algebra/src/c/linear_algebra.vcxproj.filters
new file mode 100755
index 000000000..72efa40bb
--- /dev/null
+++ b/modules/linear_algebra/src/c/linear_algebra.vcxproj.filters
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{b57b15f9-2aee-42eb-8013-1bb4f8421f7b}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{67cf3887-9383-45e0-952f-9151ebb1a9dd}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="localization">
+ <UniqueIdentifier>{953abc14-186a-4dc4-bfcf-70212d364ded}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Libraries Dependencies">
+ <UniqueIdentifier>{5d65a9b1-5b80-4f5f-a595-6ecb497ce9e0}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Libraries Dependencies\Imports">
+ <UniqueIdentifier>{ffd43533-ec0f-4ef2-8df7-68565fcb9bd4}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Resource File">
+ <UniqueIdentifier>{0d992d75-2a84-4f60-bf0c-9a7816d802a2}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\sci_gateway\c\assembleEigenvectors.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="DllmainLinear_algebra.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\gw_linear_algebra.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\gw_linear_algebra2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="issymmetric.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="schurtable.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_backslash.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_balanc.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_bdiag.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_chol.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_det.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_dgeev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_dggev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_dsyev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_hess.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_inv.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_lsq.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_lu.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_qr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_rcond.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_schur.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_slash.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_svd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_zgeev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_zggev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_zheev.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_spec.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="norm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\sci_gateway\c\sci_norm.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\sci_gateway\c\assembleEigenvectors.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\dynlib_linear_algebra.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\gschur.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\gw_linear_algebra.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\gw_linear_algebra2.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\issymmetric.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="linear_FTables.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\schur.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="norm.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="core_import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ <None Include="linear_algebra_f_Import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ <None Include="..\..\linear_algebra.iss" />
+ <None Include="..\..\sci_gateway\linear_algebra_gateway.xml" />
+ <None Include="..\..\Makefile.am" />
+ <None Include="elementary_functions_f_Import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ <None Include="..\..\locales\linear_algebra.pot">
+ <Filter>localization</Filter>
+ </None>
+ <None Include="slicot_f_Import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ <None Include="Core_f_Import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="linear_algebra.rc">
+ <Filter>Resource File</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+</Project>
diff --git a/modules/linear_algebra/src/c/linear_algebra_f_Import.def b/modules/linear_algebra/src/c/linear_algebra_f_Import.def
new file mode 100755
index 000000000..c99815594
--- /dev/null
+++ b/modules/linear_algebra/src/c/linear_algebra_f_Import.def
@@ -0,0 +1,56 @@
+LIBRARY linear_algebra_f.dll
+
+
+EXPORTS
+; ---------------------------------------
+; linear_algebra_f
+; ---------------------------------------
+intdgesv3_
+complexify_
+intzgesv3_
+intdgebal_
+intzgebal_
+intdggbal_
+intzggbal_
+intdpotrf_
+intzpotrf_
+intddet_
+intzdet_
+intdgehrd_
+intzgehrd_
+intdgetri_
+intzgetri_
+intdgelsy_
+intzgelsy_
+intdgetrf_
+intzgetrf_
+intdgeqpf3_
+intzgeqpf4_
+doldqr_
+zoldqr_
+intdgecon_
+intzgecon_
+intdgees0_
+intzgees0_
+intdgges_
+intzgges_
+intzgees1_
+intdgees1_
+intzgeqpf3_
+intdgeqpf4_
+intfschur_
+intzfschur_
+intoschur_
+intzschur_
+intgschur_
+intzgschur_
+intogschur_
+intozgschur_
+intdgesv4_
+intzgesv4_
+intzgesvd2_
+intdgesvd2_
+intzgesvd1_
+intdgesvd1_
+intzoldsvd_
+intdoldsvd_
diff --git a/modules/linear_algebra/src/c/norm.c b/modules/linear_algebra/src/c/norm.c
new file mode 100755
index 000000000..84faba3ad
--- /dev/null
+++ b/modules/linear_algebra/src/c/norm.c
@@ -0,0 +1,325 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "norm.h"
+#include "MALLOC.h"
+
+#ifdef _MSC_VER
+int isinf(double dbl)
+{
+ //check finite and non NaN values
+ if (_finite(dbl) == 0 && dbl == dbl)
+ {
+ if (dbl < 0)
+ {
+ return -1;
+ }
+ else
+ {
+ return 1;
+ }
+ }
+
+ return 0;
+}
+#endif
+
+// Lapack routines, for complex and real input
+extern double C2F(dlange) (const char *norm, int *m, int *n, double *A, int *lda, double *work);
+extern int C2F(dgesdd) (const char *job, int *m, int *n, double *A, int *lda,
+ double *s, double *u, int *ldu, double *vt, int *ldvt,
+ double *work, int *lwork, int *iwork, int *info);
+extern double C2F(zlange) (const char *norm, int *m, int *n, doublecomplex *A, int *lda, double *work);
+extern int C2F(zgesdd) (const char *job, int *m, int *n, doublecomplex *A, int *lda,
+ double *s, doublecomplex *u, int *ldu, doublecomplex *vt, int *ldvt,
+ doublecomplex *work, int *lwork, double *rwork, int *iwork, int *info);
+
+double normString (double *A, int iRows, int iCols, char *flag)
+{
+ double ret = 0;
+ double *work = NULL;
+
+ if (strcmp(flag, "inf") == 0 || strcmp(flag, "i") == 0)
+ {
+ work = (double *)CALLOC(Max(1, iRows), sizeof(double));
+
+ // Call Lapack routine for computation of the infinite norm.
+ ret = C2F(dlange)("I", &iRows, &iCols, A, &iRows, work);
+
+ FREE(work);
+ return ret;
+ }
+
+ if (strcmp(flag, "fro") == 0 || strcmp(flag, "f") == 0)
+ {
+ // Call Lapack routine for computation of the Frobenius norm.
+ ret = C2F(dlange)("F", &iRows, &iCols, A, &iRows, NULL);
+
+ return ret;
+ }
+
+ return 0;
+}
+
+double normStringC (doublecomplex *A, int iRows, int iCols, char *flag)
+{
+ double ret = 0;
+ double *work = NULL;
+
+ if (strcmp(flag, "inf") == 0 || strcmp(flag, "i") == 0)
+ {
+ work = (double *)MALLOC(Max(1, iRows) * sizeof(double));
+
+ // Call Lapack routine for computation of the infinite norm.
+ ret = C2F(zlange)("I", &iRows, &iCols, A, &iRows, work);
+
+ FREE(work);
+ return ret;
+ }
+
+ if (strcmp(flag, "fro") == 0 || strcmp(flag, "f") == 0)
+ {
+ // Call Lapack routine for computation of the Frobenius norm.
+ ret = C2F(zlange)("F", &iRows, &iCols, A, &iRows, NULL);
+
+ return ret;
+ }
+
+ return 0;
+}
+
+double normP (double *A, int iRows, int iCols, double p)
+{
+ double ret = 0, minA, scale = 0, x = 0;
+ double *S, *work;
+ int *iwork;
+ int i, maxRC, minRC, lwork, info, one = 1;
+
+ maxRC = Max(iRows, iCols);
+ minRC = Min(iRows, iCols);
+ lwork = 3 * minRC + Max(maxRC, 7 * minRC);
+
+ if (ISNAN(p)) // p = %nan is a special case, return 0./0 = %nan.
+ {
+ double a = 1.0;
+ double b = 1.0;
+ ret = (b - a) / (a - b);
+ return ret;
+ }
+
+ //
+ // /!\ isinf return only 0 or 1 on non Linux platforms
+ //
+ if (isinf(p) != 0 && p < 0) // p = -%inf is a special case, return min(abs(A)).
+ {
+
+ minA = Abs(A[0]);
+ for (i = 0; i < iRows; ++i)
+ {
+ minA = Min(minA, Abs(A[i]));
+ }
+ return minA;
+ }
+ if (p == 0) // p = 0 is a special case, return 1./0 = %inf.
+ {
+ double a = 1.0;
+ double b = 1.0;
+ ret = 1. / (a - b);
+ return ret;
+ }
+ if (p == 1) // Call the Lapack routine for computation of norm 1.
+ {
+ ret = C2F(dlange)("1", &iRows, &iCols, A, &iRows, NULL);
+ return ret;
+ }
+ if (p == 2) // Call the Lapack routine for computation of norm 2.
+ {
+ if (iCols == 1) // In the vector case, doing a direct calculation is faster.
+ {
+ for (i = 0; i < iRows; ++i)
+ {
+ scale = Max(Abs(A[i]), scale);
+ }
+ if (scale == 0.0)
+ {
+ return 0;
+ }
+ else
+ {
+ for (i = 0; i < iRows; ++i)
+ {
+ x = A[i] / scale;
+ ret += x * x;
+ }
+ return scale * sqrt(ret);
+ }
+ }
+ // Allocating workspaces.
+ S = (double *)MALLOC(minRC * sizeof(double));
+ work = (double *)MALLOC(Max(1, lwork) * sizeof(double));
+ iwork = (int *)MALLOC(8 * minRC * sizeof(int));
+
+ // Not computing singular vectors, so arguments 7, 8, 9 and 10 are dummies.
+ C2F(dgesdd)("N", &iRows, &iCols, A, &iRows, S, NULL, &one, NULL, &one, work, &lwork, iwork, &info);
+ if (info < 0)
+ {
+ // Lapack provides its own error messages. Return.
+ FREE(S);
+ FREE(work);
+ FREE(iwork);
+ return 0;
+ }
+ else
+ {
+ if (info > 0)
+ {
+ // Lapack provides its own error messages. Return.
+ FREE(S);
+ FREE(work);
+ FREE(iwork);
+ return 0;
+ }
+ else
+ {
+ // info = 0: successful termination.
+ // The largest singular value of A is stored in the first element of S, return it.
+ ret = S[0];
+ FREE(S);
+ FREE(work);
+ FREE(iwork);
+ return ret;
+ }
+ }
+ }
+ // Here, A is a vector of length iRows, return sum(abs(A(i))^p))^(1/p).
+ if ((int) p == p && (int) p % 2 == 0) // No need to call Abs if p is divisible by 2.
+ {
+ for (i = 0; i < iRows; ++i)
+ {
+ ret += pow(A[i], p);
+ }
+ }
+ else
+ {
+ for (i = 0; i < iRows; ++i)
+ {
+ ret += pow(Abs(A[i]), p);
+ }
+ }
+ return pow(ret, 1. / p);
+}
+
+double normPC (doublecomplex *A, int iRows, int iCols, double p)
+{
+ double ret = 0, sqmod, minA;
+ double *S, *rwork;
+ doublecomplex *work;
+ int *iwork;
+ int i, maxRC, minRC, lwork, lrwork, info, one = 1;
+
+ maxRC = Max(iRows, iCols);
+ minRC = Min(iRows, iCols);
+ lwork = 2 * minRC + maxRC;
+ lrwork = 5 * minRC;
+
+ if (ISNAN(p)) // p = %nan is a special case, return 0./0 = %nan.
+ {
+ double a = 1.0;
+ double b = 1.0;
+ ret = (a - b) / (a - b);
+ return ret;
+ }
+
+ if (isinf(p) != 0 && p < 0) // p = -%inf is a special case, return min(abs(A)).
+ {
+ minA = sqrt(A[0].r * A[0].r + A[0].i * A[0].i); // Retrieving A[0] modulus.
+ for (i = 0; i < iRows; ++i)
+ {
+ sqmod = A[i].r * A[i].r + A[i].i * A[i].i; // Retrieving A[i] modulus^2, starting at zero in case A has only one element.
+ minA = Min(minA, sqrt(sqmod)); // min(minA, modulus(A[i])).
+ }
+ return minA;
+ }
+ if (p == 0) // p = 0 is a special case, return 1./0 = %inf.
+ {
+ double a = 1.0;
+ double b = 1.0;
+ ret = 1. / (a - b);
+ return ret;
+ }
+ if (p == 1) // Call the Lapack routine for computation of norm 1.
+ {
+ ret = C2F(zlange)("1", &iRows, &iCols, A, &iRows, NULL);
+
+ return ret;
+ }
+ if (p == 2) // Call the Lapack routine for computation of norm 2.
+ {
+ if (iCols == 1) // In the vector case, doing a direct calculation is faster.
+ {
+ for (i = 0; i < iRows; ++i)
+ {
+ ret += A[i].r * A[i].r + A[i].i * A[i].i; // Retrieving A[i] modulus^2.
+ }
+ return sqrt(ret);
+ }
+ // Allocating workspaces.
+ S = (double *)MALLOC(minRC * sizeof(double));
+ work = (doublecomplex *)MALLOC(Max(1, lwork) * sizeof(doublecomplex));
+ rwork = (double *)MALLOC(Max(1, lrwork) * sizeof(double));
+ iwork = (int *)MALLOC(8 * minRC * sizeof(int));
+
+ // Not computing singular vectors, so arguments 7, 8, 9 and 10 are dummies.
+ C2F(zgesdd)("N", &iRows, &iCols, A, &iRows, S, NULL, &one, NULL, &one, work, &lwork, rwork, iwork, &info);
+ if (info < 0)
+ {
+ // Lapack provides its own error messages. Return.
+ // Since the arguments have all been checked before, this error should not occur.
+ FREE(S);
+ FREE(work);
+ FREE(rwork);
+ FREE(iwork);
+ return 0;
+ }
+ else
+ {
+ if (info > 0)
+ {
+ // Lapack provides its own error messages. Return.
+ // Since the arguments have all been checked before, this error should not occur.
+ FREE(S);
+ FREE(work);
+ FREE(rwork);
+ FREE(iwork);
+ return 0;
+ }
+ else
+ {
+ // info = 0: successful termination.
+ // The largest singular value of A is stored in the first element of S, return it.
+ ret = S[0];
+ FREE(S);
+ FREE(work);
+ FREE(rwork);
+ FREE(iwork);
+ return ret;
+ }
+ }
+ }
+ // Here, A is a vector of length iRows, return sum(abs(A(i))^p))^(1/p).
+ for (i = 0; i < iRows; ++i)
+ {
+ sqmod = A[i].r * A[i].r + A[i].i * A[i].i; // Retrieving A[i] modulus^2.
+ ret += pow(sqmod, p / 2); // sum(modulus(A[i])^p).
+ }
+ return pow(ret, 1. / p); // sum(modulus(A[i])^p)^(1/p).
+}
diff --git a/modules/linear_algebra/src/c/norm.h b/modules/linear_algebra/src/c/norm.h
new file mode 100755
index 000000000..8bf7e5e70
--- /dev/null
+++ b/modules/linear_algebra/src/c/norm.h
@@ -0,0 +1,30 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h> // strcmp
+#include "core_math.h" // Abs, pow, Min and Max
+#include "machine.h" // C2F
+#include "localization.h" // Translations
+#include "doublecomplex.h" // Type doublecomplex
+
+double normString (double *A, int iRows, int iCols, char *flag);
+
+double normStringC (doublecomplex *A, int iRows, int iCols, char *flag);
+
+double normP (double *A, int iRows, int iCols, double p);
+
+double normPC (doublecomplex *A, int iRows, int iCols, double p);
+
+#ifdef _MSC_VER
+int isinf(double dbl);
+#endif
+
diff --git a/modules/linear_algebra/src/c/schurtable.c b/modules/linear_algebra/src/c/schurtable.c
new file mode 100755
index 000000000..5d3bde742
--- /dev/null
+++ b/modules/linear_algebra/src/c/schurtable.c
@@ -0,0 +1,242 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+/*--------------------------------------------------------------------------*/
+/*
+ * @TODO : a lot of code here could be factorized
+ */
+/*--------------------------------------------------------------------------*/
+#include <string.h>
+#include "GetFunctionByName.h"
+#include "linear_FTables.h"
+#include "schur.h"
+
+/***********************************
+* Search Table for fschur
+***********************************/
+
+#define ARGS_fschur int*,double *,double*,double*,double*
+typedef int * (*fschurf)(ARGS_fschur);
+
+
+/***********************************
+* Search Table for gshsel
+***********************************/
+
+#define ARGS_gshsel double *,double*,double*
+typedef int * (*gshself)(ARGS_gshsel);
+
+/***********************************
+* Search Table for gzhsel
+***********************************/
+
+#define ARGS_gzhsel doublecmplx *,doublecmplx *
+typedef int * (*gzhself)(ARGS_gzhsel);
+
+/**************** fschur ***************/
+extern void C2F(folhp)(ARGS_fschur);
+extern void C2F(find)(ARGS_fschur);
+
+FTAB FTab_fschur[] =
+{
+ {"find", (voidf) C2F(find)},
+ {"folhp", (voidf) C2F(folhp)},
+ {(char *) 0, (voidf) 0}
+};
+/**************** gshsel ***************/
+extern void C2F(sb02ow)(ARGS_gshsel);
+extern void C2F(sb02ox)(ARGS_gshsel);
+
+FTAB FTab_gshsel[] =
+{
+ {"sb02ow", (voidf) C2F(sb02ow)},
+ {"sb02ox", (voidf) C2F(sb02ox)},
+ {(char *) 0, (voidf) 0}
+};
+/**************** gzhsel ***************/
+extern void C2F(zb02ow)(ARGS_gzhsel);
+extern void C2F(zb02ox)(ARGS_gzhsel);
+
+FTAB FTab_gzhsel[] =
+{
+ {"zb02ow", (voidf) C2F(zb02ow)},
+ {"zb02ox", (voidf) C2F(zb02ox)},
+ {(char *) 0, (voidf) 0}
+};
+
+
+/***********************************
+* Search Table for schur uses : schsel
+***********************************/
+
+/** the current function fixed by setschsel **/
+
+static schself schselfonc ;
+
+/** function call : schsel **/
+
+int *C2F(schsel)(double *alpha, double *beta)
+{
+ return((*schselfonc)(alpha, beta));
+}
+
+/** fixes the function associated to name **/
+
+void C2F(setschsel)(int *len, char *name, int *rep)
+{
+ if ( ((strncmp(name, "c", 1) == 0 ) && (*len == 1)) || strncmp(name, "cont", 4) == 0 )
+ {
+ schselfonc = (schself) GetFunctionByName("sb02mv", rep, FTab_schsel);
+ }
+ else if ( ((strncmp(name, "d", 1) == 0) && (*len == 1)) || strncmp(name, "disc", 4) == 0 )
+ {
+ schselfonc = (schself) GetFunctionByName("sb02mw", rep, FTab_schsel);
+ }
+ else
+ {
+ schselfonc = (schself) GetFunctionByName(name, rep, FTab_schsel);
+ }
+}
+
+/***********************************
+* Search Table for schur uses : zchsel
+***********************************/
+
+/** the current function fixed by setzschsel **/
+
+static zchself zchselfonc ;
+
+/** function call : zchsel **/
+
+int *C2F(zchsel)(doublecmplx *alpha)
+{
+ return((*zchselfonc)(alpha));
+}
+
+/** fixes the function associated to name **/
+
+void C2F(setzchsel)(int *len, char *name, int *rep)
+{
+ if ( ((strncmp(name, "c", 1) == 0) && (*len == 1)) || strncmp(name, "cont", 4) == 0 )
+ {
+ zchselfonc = (zchself) GetFunctionByName("zb02mv", rep, FTab_zchsel);
+ }
+ else if ( ( (strncmp(name, "d", 1) == 0) && (*len == 1) ) || strncmp(name, "disc", 4) == 0 )
+ {
+ zchselfonc = (zchself) GetFunctionByName("zb02mw", rep, FTab_zchsel);
+ }
+ else
+ {
+ zchselfonc = (zchself) GetFunctionByName(name, rep, FTab_zchsel);
+ }
+}
+
+/***********************************
+* Search Table for gschur uses : gshsel
+***********************************/
+
+/** the current function fixed by setgshsel **/
+
+static gshself gshselfonc ;
+
+/** function call : gshsel **/
+
+int *C2F(gshsel)(double *alphar, double *alphai, double *beta)
+{
+ return((*gshselfonc)(alphar, alphai, beta));
+}
+
+/** fixes the function associated to name **/
+
+void C2F(setgshsel)(int *len, char *name, int *rep)
+{
+ if ( ((strncmp(name, "c", 1) == 0) && (*len == 1)) || strncmp(name, "cont", 4) == 0 )
+ {
+ gshselfonc = (gshself) GetFunctionByName("sb02ow", rep, FTab_gshsel);
+ }
+ else if ( ( (strncmp(name, "d", 1) == 0) && (*len == 1) ) || strncmp(name, "disc", 4) == 0 )
+ {
+ gshselfonc = (gshself) GetFunctionByName("sb02ox", rep, FTab_gshsel);
+ }
+ else
+ {
+ gshselfonc = (gshself) GetFunctionByName(name, rep, FTab_gshsel);
+ }
+}
+
+/***********************************
+* Search Table for gschur uses : gzhsel
+***********************************/
+
+/** the current function fixed by setgzhsel **/
+
+static gzhself gzhselfonc ;
+
+/** function call : gzhsel **/
+
+int *C2F(gzhsel)(doublecmplx *alpha, doublecmplx *beta)
+{
+ return((*gzhselfonc)(alpha, beta));
+}
+
+/** fixes the function associated to name **/
+
+void C2F(setgzhsel)(int *len, char *name, int *rep)
+{
+ if ( ((strncmp(name, "c", 1) == 0) && (*len == 1)) || strncmp(name, "cont", 4) == 0 )
+ {
+ gzhselfonc = (gzhself) GetFunctionByName("zb02ow", rep, FTab_gzhsel);
+ }
+ else if ( ( (strncmp(name, "d", 1) == 0) && (*len == 1) ) || strncmp(name, "disc", 4) == 0 )
+ {
+ gzhselfonc = (gzhself) GetFunctionByName("zb02ox", rep, FTab_gzhsel);
+ }
+ else
+ {
+ gzhselfonc = (gzhself) GetFunctionByName(name, rep, FTab_gzhsel);
+ }
+}
+
+/***********************************
+* Search Table for schur uses : fschur
+***********************************/
+
+/** the current function fixed by setsolvf **/
+
+static fschurf fschurfonc ;
+
+/** function call : fschur **/
+
+int *C2F(fschur)(int *lsize, double *alpha, double *beta, double *s, double *p)
+{
+ return((*fschurfonc)(lsize, alpha, beta, s, p));
+}
+
+/** fixes the function associated to name **/
+
+void C2F(setfschur)(char *name, int *rep)
+{
+ if (strncmp(name, "c", 1) == 0 || strncmp(name, "cont", 4) == 0 )
+ {
+ fschurfonc = (fschurf) GetFunctionByName("folhp", rep, FTab_fschur);
+ }
+ else if (strncmp(name, "d", 1) == 0 || strncmp(name, "disc", 4) == 0 )
+ {
+ fschurfonc = (fschurf) GetFunctionByName("find", rep, FTab_fschur);
+ }
+ else
+ {
+ fschurfonc = (fschurf) GetFunctionByName(name, rep, FTab_fschur);
+ }
+}
+
diff --git a/modules/linear_algebra/src/c/slicot_f_Import.def b/modules/linear_algebra/src/c/slicot_f_Import.def
new file mode 100755
index 000000000..2c85788aa
--- /dev/null
+++ b/modules/linear_algebra/src/c/slicot_f_Import.def
@@ -0,0 +1,15 @@
+LIBRARY slicot_f.dll
+
+
+EXPORTS
+; ---------------------------------------
+; slicot_f
+; ---------------------------------------
+zb02ox_
+zb02ow_
+sb02ox_
+sb02ow_
+zb02mw_
+zb02mv_
+sb02mw_
+sb02mv_
diff --git a/modules/linear_algebra/src/fortran/.deps/.dirstamp b/modules/linear_algebra/src/fortran/.deps/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.deps/.dirstamp
diff --git a/modules/linear_algebra/src/fortran/.dirstamp b/modules/linear_algebra/src/fortran/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.dirstamp
diff --git a/modules/linear_algebra/src/fortran/.libs/DGELSY1.o b/modules/linear_algebra/src/fortran/.libs/DGELSY1.o
new file mode 100755
index 000000000..044f2888a
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/DGELSY1.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/ZGELSY1.o b/modules/linear_algebra/src/fortran/.libs/ZGELSY1.o
new file mode 100755
index 000000000..7dee21ad5
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/ZGELSY1.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/complexify.o b/modules/linear_algebra/src/fortran/.libs/complexify.o
new file mode 100755
index 000000000..97cb997ca
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/complexify.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/doldqr.o b/modules/linear_algebra/src/fortran/.libs/doldqr.o
new file mode 100755
index 000000000..7d90bd7d9
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/doldqr.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intddet.o b/modules/linear_algebra/src/fortran/.libs/intddet.o
new file mode 100755
index 000000000..df8cfabc4
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intddet.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdgebal.o b/modules/linear_algebra/src/fortran/.libs/intdgebal.o
new file mode 100755
index 000000000..14dcfe963
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdgebal.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdgecon.o b/modules/linear_algebra/src/fortran/.libs/intdgecon.o
new file mode 100755
index 000000000..9e1c82f00
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdgecon.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdgees0.o b/modules/linear_algebra/src/fortran/.libs/intdgees0.o
new file mode 100755
index 000000000..70f6b241d
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdgees0.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdgees1.o b/modules/linear_algebra/src/fortran/.libs/intdgees1.o
new file mode 100755
index 000000000..d21e4ab85
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdgees1.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdgehrd.o b/modules/linear_algebra/src/fortran/.libs/intdgehrd.o
new file mode 100755
index 000000000..d31bd14bc
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdgehrd.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdgelsy.o b/modules/linear_algebra/src/fortran/.libs/intdgelsy.o
new file mode 100755
index 000000000..7956895d2
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdgelsy.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdgeqpf3.o b/modules/linear_algebra/src/fortran/.libs/intdgeqpf3.o
new file mode 100755
index 000000000..5c9305425
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdgeqpf3.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdgeqpf4.o b/modules/linear_algebra/src/fortran/.libs/intdgeqpf4.o
new file mode 100755
index 000000000..206641e2f
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdgeqpf4.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdgesv3.o b/modules/linear_algebra/src/fortran/.libs/intdgesv3.o
new file mode 100755
index 000000000..5c43a199c
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdgesv3.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdgesv4.o b/modules/linear_algebra/src/fortran/.libs/intdgesv4.o
new file mode 100755
index 000000000..59e3fdcaf
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdgesv4.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdgesvd1.o b/modules/linear_algebra/src/fortran/.libs/intdgesvd1.o
new file mode 100755
index 000000000..f9134eb3c
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdgesvd1.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdgesvd2.o b/modules/linear_algebra/src/fortran/.libs/intdgesvd2.o
new file mode 100755
index 000000000..a18151f72
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdgesvd2.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdgetrf.o b/modules/linear_algebra/src/fortran/.libs/intdgetrf.o
new file mode 100755
index 000000000..a6e1fe6ed
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdgetrf.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdgetri.o b/modules/linear_algebra/src/fortran/.libs/intdgetri.o
new file mode 100755
index 000000000..273717779
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdgetri.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdggbal.o b/modules/linear_algebra/src/fortran/.libs/intdggbal.o
new file mode 100755
index 000000000..0eecae0bc
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdggbal.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdgges.o b/modules/linear_algebra/src/fortran/.libs/intdgges.o
new file mode 100755
index 000000000..7ce35c178
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdgges.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdoldsvd.o b/modules/linear_algebra/src/fortran/.libs/intdoldsvd.o
new file mode 100755
index 000000000..40d08c95e
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdoldsvd.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intdpotrf.o b/modules/linear_algebra/src/fortran/.libs/intdpotrf.o
new file mode 100755
index 000000000..4aa726b61
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intdpotrf.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intfschur.o b/modules/linear_algebra/src/fortran/.libs/intfschur.o
new file mode 100755
index 000000000..0255309b3
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intfschur.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intgschur.o b/modules/linear_algebra/src/fortran/.libs/intgschur.o
new file mode 100755
index 000000000..a4f8f3e84
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intgschur.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intogschur.o b/modules/linear_algebra/src/fortran/.libs/intogschur.o
new file mode 100755
index 000000000..a779cd7bc
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intogschur.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intoschur.o b/modules/linear_algebra/src/fortran/.libs/intoschur.o
new file mode 100755
index 000000000..73000adcd
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intoschur.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intozgschur.o b/modules/linear_algebra/src/fortran/.libs/intozgschur.o
new file mode 100755
index 000000000..d84173672
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intozgschur.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzdet.o b/modules/linear_algebra/src/fortran/.libs/intzdet.o
new file mode 100755
index 000000000..4ae3958b6
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzdet.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzfschur.o b/modules/linear_algebra/src/fortran/.libs/intzfschur.o
new file mode 100755
index 000000000..10ed27ce5
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzfschur.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgebal.o b/modules/linear_algebra/src/fortran/.libs/intzgebal.o
new file mode 100755
index 000000000..3b7cc57b9
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgebal.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgecon.o b/modules/linear_algebra/src/fortran/.libs/intzgecon.o
new file mode 100755
index 000000000..050f8b207
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgecon.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgees0.o b/modules/linear_algebra/src/fortran/.libs/intzgees0.o
new file mode 100755
index 000000000..01c7e83cb
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgees0.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgees1.o b/modules/linear_algebra/src/fortran/.libs/intzgees1.o
new file mode 100755
index 000000000..a7f46da2a
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgees1.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgehrd.o b/modules/linear_algebra/src/fortran/.libs/intzgehrd.o
new file mode 100755
index 000000000..260da9df4
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgehrd.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgelsy.o b/modules/linear_algebra/src/fortran/.libs/intzgelsy.o
new file mode 100755
index 000000000..f1c029d39
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgelsy.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgeqpf3.o b/modules/linear_algebra/src/fortran/.libs/intzgeqpf3.o
new file mode 100755
index 000000000..1cff522b9
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgeqpf3.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgeqpf4.o b/modules/linear_algebra/src/fortran/.libs/intzgeqpf4.o
new file mode 100755
index 000000000..77601285f
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgeqpf4.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgesv3.o b/modules/linear_algebra/src/fortran/.libs/intzgesv3.o
new file mode 100755
index 000000000..c9f53ec57
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgesv3.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgesv4.o b/modules/linear_algebra/src/fortran/.libs/intzgesv4.o
new file mode 100755
index 000000000..9cdd70972
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgesv4.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgesvd1.o b/modules/linear_algebra/src/fortran/.libs/intzgesvd1.o
new file mode 100755
index 000000000..8a629f327
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgesvd1.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgesvd2.o b/modules/linear_algebra/src/fortran/.libs/intzgesvd2.o
new file mode 100755
index 000000000..e9d7be4ec
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgesvd2.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgetrf.o b/modules/linear_algebra/src/fortran/.libs/intzgetrf.o
new file mode 100755
index 000000000..c7a8deae7
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgetrf.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgetri.o b/modules/linear_algebra/src/fortran/.libs/intzgetri.o
new file mode 100755
index 000000000..32e3f9833
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgetri.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzggbal.o b/modules/linear_algebra/src/fortran/.libs/intzggbal.o
new file mode 100755
index 000000000..c8f133584
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzggbal.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgges.o b/modules/linear_algebra/src/fortran/.libs/intzgges.o
new file mode 100755
index 000000000..8c2e324ce
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgges.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzgschur.o b/modules/linear_algebra/src/fortran/.libs/intzgschur.o
new file mode 100755
index 000000000..a3160e234
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzgschur.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzoldsvd.o b/modules/linear_algebra/src/fortran/.libs/intzoldsvd.o
new file mode 100755
index 000000000..06a61d660
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzoldsvd.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzpotrf.o b/modules/linear_algebra/src/fortran/.libs/intzpotrf.o
new file mode 100755
index 000000000..811c48eb0
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzpotrf.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/intzschur.o b/modules/linear_algebra/src/fortran/.libs/intzschur.o
new file mode 100755
index 000000000..4b4b2188a
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/intzschur.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/scischur.o b/modules/linear_algebra/src/fortran/.libs/scischur.o
new file mode 100755
index 000000000..5d9ed4473
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/scischur.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/writebuf.o b/modules/linear_algebra/src/fortran/.libs/writebuf.o
new file mode 100755
index 000000000..adbf65b3a
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/writebuf.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/.libs/zoldqr.o b/modules/linear_algebra/src/fortran/.libs/zoldqr.o
new file mode 100755
index 000000000..4f1dd8f29
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/.libs/zoldqr.o
Binary files differ
diff --git a/modules/linear_algebra/src/fortran/Core_f_Import.def b/modules/linear_algebra/src/fortran/Core_f_Import.def
new file mode 100755
index 000000000..4b7b7fd34
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/Core_f_Import.def
@@ -0,0 +1,14 @@
+ LIBRARY core_f.dll
+
+
+EXPORTS
+;
+;core_f
+;
+allowptr_
+btof_
+ftob_
+ref2val_
+funs_
+isbyref_
+
diff --git a/modules/linear_algebra/src/fortran/DGELSY1.f b/modules/linear_algebra/src/fortran/DGELSY1.f
new file mode 100755
index 000000000..8cfb1f33c
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/DGELSY1.f
@@ -0,0 +1,410 @@
+ SUBROUTINE DGELSY1( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK,
+ $ WORK, LWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.3.1) --
+* -- LAPACK is a software package provided by Univ. of Tennessee, --
+* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
+* -- April 2011 --
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS, RANK
+ DOUBLE PRECISION RCOND
+* ..
+* .. Array Arguments ..
+ INTEGER JPVT( * )
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), WORK( * )
+* ..
+*
+* Purpose
+* =======
+*
+* DGELSY1 computes a solution, either with at least N-RANK zeros or
+* the minimum-norm to a real linear least squares problem:
+* minimize || A * X - B ||
+* using a complete orthogonal factorization of A. A is an M-by-N
+* matrix which may be rank-deficient.
+*
+* Several right hand side vectors b and solution vectors x can be
+* handled in a single call; they are stored as the columns of the
+* M-by-NRHS right hand side matrix B and the N-by-NRHS solution
+* matrix X.
+*
+* The routine first computes a QR factorization with column pivoting:
+* A * P = Q * [ R11 R12 ]
+* [ 0 R22 ]
+* with R11 defined as the largest leading submatrix whose estimated
+* condition number is less than 1/RCOND. The order of R11, RANK,
+* is the effective rank of A.
+*
+* Then, R22 is considered to be negligible. If we ask for the
+* minimum-norm solution, then R12 is annihilated by unitary
+* transformations from the right, arriving at the
+* complete orthogonal factorization:
+* A * P = Q * [ T11 0 ] * Z
+* [ 0 0 ]
+* The minimum-norm solution is then
+* X = P * Z**T [ inv(T11)*Q1**T*B ]
+* [ 0 ]
+* Otherwise, the returned solution is
+* X = P * [ inv(R11)*Q1'*B ]
+* [ 0 ]
+* where Q1 consists of the first RANK columns of Q.
+*
+* This routine is basically identical to the original xGELSX except
+* three differences:
+* o The call to the subroutine xGEQPF has been substituted by the
+* the call to the subroutine xGEQP3. This subroutine is a Blas-3
+* version of the QR factorization with column pivoting.
+* o Matrix B (the right hand side) is updated with Blas-3.
+* o The permutation of matrix B (the right hand side) is faster and
+* more simple.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of
+* columns of matrices B and X. NRHS >= 0.
+*
+* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, A has been overwritten by details of its
+* complete orthogonal factorization.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS)
+* On entry, the M-by-NRHS right hand side matrix B.
+* On exit, the N-by-NRHS solution matrix X.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,M,N).
+*
+* JPVT (input/output) INTEGER array, dimension (N)
+* On entry, if JPVT(i) .ne. 0, the i-th column of A is permuted
+* to the front of AP, otherwise column i is a free column.
+* On exit, if JPVT(i) = k, then the i-th column of AP
+* was the k-th column of A.
+*
+* RCOND (input) DOUBLE PRECISION
+* RCOND is used to determine the effective rank of A, which
+* is defined as the order of the largest leading triangular
+* submatrix R11 in the QR factorization with pivoting of A,
+* whose estimated condition number < 1/RCOND.
+*
+* RANK (output) INTEGER
+* The effective rank of A, i.e., the order of the submatrix
+* R11. This is the same as the order of the submatrix T11
+* in the complete orthogonal factorization of A.
+*
+* WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK))
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* The unblocked strategy requires that:
+* LWORK >= MAX( MN+3*N+1, 2*MN+NRHS ),
+* where MN = min( M, N ).
+* The block algorithm requires that:
+* LWORK >= MAX( MN+2*N+NB*(N+1), 2*MN+NB*NRHS ),
+* where NB is an upper bound on the blocksize returned
+* by ILAENV for the routines DGEQP3, DTZRZF, STZRQF, DORMQR,
+* and DORMRZ.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+ccccc Scilab Enterprises input, allow INFO to be input
+* INFO (input/output) INTEGER
+* On entry:
+* = 0: minimum norm least square solution requested
+* > 0: least square solution requested
+ccccc
+* On exit:
+* = 0: successful exit
+* < 0: If INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+* E. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+* G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER IMAX, IMIN
+ PARAMETER ( IMAX = 1, IMIN = 2 )
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER I, IASCL, IBSCL, ISMAX, ISMIN, J, LWKMIN,
+ $ LWKOPT, MN, NB, NB1, NB2, NB3, NB4
+ DOUBLE PRECISION ANRM, BIGNUM, BNRM, C1, C2, S1, S2, SMAX,
+ $ SMAXPR, SMIN, SMINPR, SMLNUM, WSIZE
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, DLANGE
+ EXTERNAL ILAENV, DLAMCH, DLANGE
+* ..
+* .. External Subroutines ..
+ EXTERNAL DCOPY, DGEQP3, DLABAD, DLAIC1, DLASCL, DLASET,
+ $ DORMQR, DORMRZ, DTRSM, DTZRZF, XERBLA
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, MAX, MIN
+* ..
+* .. Executable Statements ..
+*
+ MN = MIN( M, N )
+ ISMIN = MN + 1
+ ISMAX = 2*MN + 1
+*
+* Test the input arguments.
+*
+ccccc Scilab Enterprises input, save the input INFO
+ MIN_NORM = INFO
+ccccc
+ INFO = 0
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, M, N ) ) THEN
+ INFO = -7
+ END IF
+*
+* Figure out optimal block size
+*
+ IF( INFO.EQ.0 ) THEN
+ IF( MN.EQ.0 .OR. NRHS.EQ.0 ) THEN
+ LWKMIN = 1
+ LWKOPT = 1
+ ELSE
+ NB1 = ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
+ NB2 = ILAENV( 1, 'DGERQF', ' ', M, N, -1, -1 )
+ NB3 = ILAENV( 1, 'DORMQR', ' ', M, N, NRHS, -1 )
+ NB4 = ILAENV( 1, 'DORMRQ', ' ', M, N, NRHS, -1 )
+ NB = MAX( NB1, NB2, NB3, NB4 )
+ LWKMIN = MN + MAX( 2*MN, N + 1, MN + NRHS )
+ LWKOPT = MAX( LWKMIN,
+ $ MN + 2*N + NB*( N + 1 ), 2*MN + NB*NRHS )
+ END IF
+ WORK( 1 ) = LWKOPT
+*
+ IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) THEN
+ INFO = -12
+ END IF
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'DGELSY1', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( MN.EQ.0 .OR. NRHS.EQ.0 ) THEN
+ RANK = 0
+ RETURN
+ END IF
+*
+* Get machine parameters
+*
+ SMLNUM = DLAMCH( 'S' ) / DLAMCH( 'P' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+*
+* Scale A, B if max entries outside range [SMLNUM,BIGNUM]
+*
+ ANRM = DLANGE( 'M', M, N, A, LDA, WORK )
+ IASCL = 0
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+*
+* Scale matrix norm up to SMLNUM
+*
+ CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, M, N, A, LDA, INFO )
+ IASCL = 1
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+*
+* Scale matrix norm down to BIGNUM
+*
+ CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, M, N, A, LDA, INFO )
+ IASCL = 2
+ ELSE IF( ANRM.EQ.ZERO ) THEN
+*
+* Matrix all zero. Return zero solution.
+*
+ CALL DLASET( 'F', MAX( M, N ), NRHS, ZERO, ZERO, B, LDB )
+ RANK = 0
+ GO TO 70
+ END IF
+*
+ BNRM = DLANGE( 'M', M, NRHS, B, LDB, WORK )
+ IBSCL = 0
+ IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
+*
+* Scale matrix norm up to SMLNUM
+*
+ CALL DLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB, INFO )
+ IBSCL = 1
+ ELSE IF( BNRM.GT.BIGNUM ) THEN
+*
+* Scale matrix norm down to BIGNUM
+*
+ CALL DLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB, INFO )
+ IBSCL = 2
+ END IF
+*
+* Compute QR factorization with column pivoting of A:
+* A * P = Q * R
+*
+ CALL DGEQP3( M, N, A, LDA, JPVT, WORK( 1 ), WORK( MN+1 ),
+ $ LWORK-MN, INFO )
+ WSIZE = MN + WORK( MN+1 )
+*
+* workspace: MN+2*N+NB*(N+1).
+* Details of Householder rotations stored in WORK(1:MN).
+*
+* Determine RANK using incremental condition estimation
+*
+ WORK( ISMIN ) = ONE
+ WORK( ISMAX ) = ONE
+ SMAX = ABS( A( 1, 1 ) )
+ SMIN = SMAX
+ IF( ABS( A( 1, 1 ) ).EQ.ZERO ) THEN
+ RANK = 0
+ CALL DLASET( 'F', MAX( M, N ), NRHS, ZERO, ZERO, B, LDB )
+ GO TO 70
+ ELSE
+ RANK = 1
+ END IF
+*
+ 10 CONTINUE
+ IF( RANK.LT.MN ) THEN
+ I = RANK + 1
+ CALL DLAIC1( IMIN, RANK, WORK( ISMIN ), SMIN, A( 1, I ),
+ $ A( I, I ), SMINPR, S1, C1 )
+ CALL DLAIC1( IMAX, RANK, WORK( ISMAX ), SMAX, A( 1, I ),
+ $ A( I, I ), SMAXPR, S2, C2 )
+*
+ IF( SMAXPR*RCOND.LE.SMINPR ) THEN
+ DO 20 I = 1, RANK
+ WORK( ISMIN+I-1 ) = S1*WORK( ISMIN+I-1 )
+ WORK( ISMAX+I-1 ) = S2*WORK( ISMAX+I-1 )
+ 20 CONTINUE
+ WORK( ISMIN+RANK ) = C1
+ WORK( ISMAX+RANK ) = C2
+ SMIN = SMINPR
+ SMAX = SMAXPR
+ RANK = RANK + 1
+ GO TO 10
+ END IF
+ END IF
+*
+* workspace: 3*MN.
+*
+* Logically partition R = [ R11 R12 ]
+* [ 0 R22 ]
+* where R11 = R(1:RANK,1:RANK)
+*
+* [R11,R12] = [ T11, 0 ] * Y
+*
+ IF ( MIN_NORM.EQ.0 ) THEN
+ IF( RANK.LT.N )
+ $ CALL DTZRZF( RANK, N, A, LDA, WORK( MN+1 ), WORK( 2*MN+1 ),
+ $ LWORK-2*MN, INFO )
+ END IF
+*
+* workspace: 2*MN.
+* Details of Householder rotations stored in WORK(MN+1:2*MN)
+*
+* B(1:M,1:NRHS) := Q' * B(1:M,1:NRHS)
+*
+ CALL DORMQR( 'Left', 'Transpose', M, NRHS, MN, A, LDA, WORK( 1 ),
+ $ B, LDB, WORK( 2*MN+1 ), LWORK-2*MN, INFO )
+ WSIZE = MAX( WSIZE, 2*MN+WORK( 2*MN+1 ) )
+*
+* workspace: 2*MN+NB*NRHS.
+*
+* B(1:RANK,1:NRHS) := inv(T11) * B(1:RANK,1:NRHS)
+*
+ CALL DTRSM( 'Left', 'Upper', 'No transpose', 'Non-unit', RANK,
+ $ NRHS, ONE, A, LDA, B, LDB )
+*
+ DO 40 J = 1, NRHS
+ DO 30 I = RANK + 1, N
+ B( I, J ) = ZERO
+ 30 CONTINUE
+ 40 CONTINUE
+*
+* B(1:N,1:NRHS) := Y' * B(1:N,1:NRHS)
+*
+ IF ( MIN_NORM.EQ.0 ) THEN
+ IF( RANK.LT.N ) THEN
+ CALL DORMRZ( 'Left', 'Transpose', N, NRHS, RANK, N-RANK, A,
+ $ LDA, WORK( MN+1 ), B, LDB, WORK( 2*MN+1 ),
+ $ LWORK-2*MN, INFO )
+ END IF
+ END IF
+*
+* workspace: 2*MN+NRHS.
+*
+* B(1:N,1:NRHS) := P * B(1:N,1:NRHS)
+*
+ DO 60 J = 1, NRHS
+ DO 50 I = 1, N
+ WORK( JPVT( I ) ) = B( I, J )
+ 50 CONTINUE
+ CALL DCOPY( N, WORK( 1 ), 1, B( 1, J ), 1 )
+ 60 CONTINUE
+*
+* workspace: N.
+*
+* Undo scaling
+*
+ IF( IASCL.EQ.1 ) THEN
+ CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB, INFO )
+ CALL DLASCL( 'U', 0, 0, SMLNUM, ANRM, RANK, RANK, A, LDA,
+ $ INFO )
+ ELSE IF( IASCL.EQ.2 ) THEN
+ CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB, INFO )
+ CALL DLASCL( 'U', 0, 0, BIGNUM, ANRM, RANK, RANK, A, LDA,
+ $ INFO )
+ END IF
+ IF( IBSCL.EQ.1 ) THEN
+ CALL DLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB, INFO )
+ ELSE IF( IBSCL.EQ.2 ) THEN
+ CALL DLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB, INFO )
+ END IF
+*
+ 70 CONTINUE
+ WORK( 1 ) = LWKOPT
+*
+ RETURN
+*
+* End of DGELSY1
+*
+ END
+
diff --git a/modules/linear_algebra/src/fortran/DGELSY1.lo b/modules/linear_algebra/src/fortran/DGELSY1.lo
new file mode 100755
index 000000000..ad1aa5781
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/DGELSY1.lo
@@ -0,0 +1,12 @@
+# src/fortran/DGELSY1.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/DGELSY1.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/ZGELSY1.f b/modules/linear_algebra/src/fortran/ZGELSY1.f
new file mode 100755
index 000000000..39e2a6ff9
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/ZGELSY1.f
@@ -0,0 +1,448 @@
+ SUBROUTINE ZGELSY1( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND, RANK,
+ $ WORK, LWORK, RWORK, INFO )
+*
+* -- LAPACK driver routine (version 3.0) --
+* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+* Courant Institute, Argonne National Lab, and Rice University
+* June 30, 1999
+*
+* .. Scalar Arguments ..
+ INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS, RANK
+ DOUBLE PRECISION RCOND
+* ..
+* .. Array Arguments ..
+ INTEGER JPVT( * )
+ DOUBLE PRECISION RWORK( * )
+ COMPLEX*16 A( LDA, * ), B( LDB, * ), WORK( * )
+* ..
+* Common blocks to return operation counts and timings
+* .. Common blocks ..
+ COMMON / LATIME / OPS, ITCNT
+ COMMON / LSTIME / OPCNT, TIMNG
+* ..
+* .. Scalars in Common ..
+ DOUBLE PRECISION ITCNT, OPS
+* ..
+* .. Arrays in Common ..
+ DOUBLE PRECISION OPCNT( 6 ), TIMNG( 6 )
+* ..
+*
+* Purpose
+* =======
+*
+* ZGELSY1 computes a solution, either with at least N-RANK zeros or
+* the minimum-norm to a complex linear least squares problem:
+* min || A * X - B ||
+* using a complete orthogonal factorization of A. A is an M-by-N
+* matrix which may be rank-deficient.
+*
+* Several right hand side vectors b and solution vectors x can be
+* handled in a single call; they are stored as the columns of the
+* M-by-NRHS right hand side matrix B and the N-by-NRHS solution
+* matrix X.
+*
+* The routine first computes a QR factorization with column pivoting:
+* A * P = Q * [ R11 R12 ]
+* [ 0 R22 ]
+* with R11 defined as the largest leading submatrix whose estimated
+* condition number is less than 1/RCOND. The order of R11, RANK,
+* is the effective rank of A.
+*
+* Then, R22 is considered to be negligible. If we ask for the
+* minimum-norm solution, then R12 is annihilated by unitary
+* transformations from the right, arriving at the
+* complete orthogonal factorization:
+* A * P = Q * [ T11 0 ] * Z
+* [ 0 0 ]
+* The minimum-norm solution is then
+* X = P * Z' [ inv(T11)*Q1'*B ]
+* [ 0 ]
+* Otherwise, the returned solution is
+* X = P * [ inv(T11)*Q1'*B ]
+* [ 0 ]
+* where Q1 consists of the first RANK columns of Q.
+*
+* This routine is basically identical to the original xGELSX except
+* three differences:
+* o The permutation of matrix B (the right hand side) is faster and
+* more simple.
+* o The call to the subroutine xGEQPF has been substituted by the
+* the call to the subroutine xGEQP3. This subroutine is a Blas-3
+* version of the QR factorization with column pivoting.
+* o Matrix B (the right hand side) is updated with Blas-3.
+*
+* Arguments
+* =========
+*
+* M (input) INTEGER
+* The number of rows of the matrix A. M >= 0.
+*
+* N (input) INTEGER
+* The number of columns of the matrix A. N >= 0.
+*
+* NRHS (input) INTEGER
+* The number of right hand sides, i.e., the number of
+* columns of matrices B and X. NRHS >= 0.
+*
+* A (input/output) COMPLEX*16 array, dimension (LDA,N)
+* On entry, the M-by-N matrix A.
+* On exit, A has been overwritten by details of its
+* complete orthogonal factorization.
+*
+* LDA (input) INTEGER
+* The leading dimension of the array A. LDA >= max(1,M).
+*
+* B (input/output) COMPLEX*16 array, dimension (LDB,NRHS)
+* On entry, the M-by-NRHS right hand side matrix B.
+* On exit, the N-by-NRHS solution matrix X.
+*
+* LDB (input) INTEGER
+* The leading dimension of the array B. LDB >= max(1,M,N).
+*
+* JPVT (input/output) INTEGER array, dimension (N)
+* On entry, if JPVT(i) .ne. 0, the i-th column of A is permuted
+* to the front of AP, otherwise column i is a free column.
+* On exit, if JPVT(i) = k, then the i-th column of A*P
+* was the k-th column of A.
+*
+* RCOND (input) DOUBLE PRECISION
+* RCOND is used to determine the effective rank of A, which
+* is defined as the order of the largest leading triangular
+* submatrix R11 in the QR factorization with pivoting of A,
+* whose estimated condition number < 1/RCOND.
+*
+* RANK (output) INTEGER
+* The effective rank of A, i.e., the order of the submatrix
+* R11. This is the same as the order of the submatrix T11
+* in the complete orthogonal factorization of A.
+*
+* WORK (workspace/output) COMPLEX*16 array, dimension (LWORK)
+* On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
+*
+* LWORK (input) INTEGER
+* The dimension of the array WORK.
+* The unblocked strategy requires that:
+* LWORK >= MN + MAX( 2*MN, N+1, MN+NRHS )
+* where MN = min(M,N).
+* The block algorithm requires that:
+* LWORK >= MN + MAX( 2*MN, NB*(N+1), MN+MN*NB, MN+NB*NRHS )
+* where NB is an upper bound on the blocksize returned
+* by ILAENV for the routines ZGEQP3, ZTZRZF, CTZRQF, ZUNMQR,
+* and ZUNMRZ.
+*
+* If LWORK = -1, then a workspace query is assumed; the routine
+* only calculates the optimal size of the WORK array, returns
+* this value as the first entry of the WORK array, and no error
+* message related to LWORK is issued by XERBLA.
+*
+* RWORK (workspace) DOUBLE PRECISION array, dimension (2*N)
+*
+ccccc Scilab Enterprises input, allow INFO to be input
+* INFO (input/output) INTEGER
+* On entry:
+* = 0: minimum norm least square solution requested
+* > 0: least square solution requested
+ccccc
+* On exit:
+* = 0: successful exit
+* < 0: if INFO = -i, the i-th argument had an illegal value
+*
+* Further Details
+* ===============
+*
+* Based on contributions by
+* A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
+* E. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+* G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER IMAX, IMIN
+ PARAMETER ( IMAX = 1, IMIN = 2 )
+ DOUBLE PRECISION ZERO, ONE
+ PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
+ COMPLEX*16 CZERO, CONE
+ PARAMETER ( CZERO = ( 0.0D+0, 0.0D+0 ),
+ $ CONE = ( 1.0D+0, 0.0D+0 ) )
+* ..
+* .. Local Scalars ..
+ LOGICAL LQUERY
+ INTEGER GELSY, GEQP3, I, IASCL, IBSCL, ISMAX, ISMIN, J,
+ $ LWKOPT, MN, NB, NB1, NB2, NB3, NB4, TRSM,
+ $ TZRZF, UNMQR, UNMRZ
+ DOUBLE PRECISION ANRM, BIGNUM, BNRM, SMAX, SMAXPR, SMIN, SMINPR,
+ $ SMLNUM, T1, T2, WSIZE
+ COMPLEX*16 C1, C2, S1, S2
+* ..
+* .. External Functions ..
+ INTEGER ILAENV
+ DOUBLE PRECISION DLAMCH, DOPBL3, DOPLA, DSECND, ZLANGE
+ EXTERNAL ILAENV, DLAMCH, DOPBL3, DOPLA, DSECND, ZLANGE
+* ..
+* .. External Subroutines ..
+ EXTERNAL DLABAD, XERBLA, ZCOPY, ZGEQP3, ZLAIC1, ZLASCL,
+ $ ZLASET, ZTRSM, ZTZRZF, ZUNMQR, ZUNMRZ
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC ABS, DBLE, DCMPLX, MAX, MIN
+* ..
+* .. Data statements ..
+ DATA GELSY / 1 / , GEQP3 / 2 / , TRSM / 5 / ,
+ $ TZRZF / 3 / , UNMQR / 4 / , UNMRZ / 6 /
+* ..
+* .. Executable Statements ..
+*
+ MN = MIN( M, N )
+ ISMIN = MN + 1
+ ISMAX = 2*MN + 1
+*
+* Test the input arguments.
+*
+ccccc Scilab Enterprises input, save the input INFO
+ MIN_NORM = INFO
+ccccc
+ INFO = 0
+ NB1 = ILAENV( 1, 'ZGEQRF', ' ', M, N, -1, -1 )
+ NB2 = ILAENV( 1, 'ZGERQF', ' ', M, N, -1, -1 )
+ NB3 = ILAENV( 1, 'ZUNMQR', ' ', M, N, NRHS, -1 )
+ NB4 = ILAENV( 1, 'ZUNMRQ', ' ', M, N, NRHS, -1 )
+ NB = MAX( NB1, NB2, NB3, NB4 )
+ LWKOPT = MAX( 1, MN+2*N+NB*( N+1 ), 2*MN+NB*NRHS )
+ WORK( 1 ) = DCMPLX( LWKOPT )
+ LQUERY = ( LWORK.EQ.-1 )
+ IF( M.LT.0 ) THEN
+ INFO = -1
+ ELSE IF( N.LT.0 ) THEN
+ INFO = -2
+ ELSE IF( NRHS.LT.0 ) THEN
+ INFO = -3
+ ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
+ INFO = -5
+ ELSE IF( LDB.LT.MAX( 1, M, N ) ) THEN
+ INFO = -7
+ ELSE IF( LWORK.LT.( MN+MAX( 2*MN, N+1, MN+NRHS ) ) .AND. .NOT.
+ $ LQUERY ) THEN
+ INFO = -12
+ END IF
+*
+ IF( INFO.NE.0 ) THEN
+ CALL XERBLA( 'ZGELSY1', -INFO )
+ RETURN
+ ELSE IF( LQUERY ) THEN
+ RETURN
+ END IF
+*
+* Quick return if possible
+*
+ IF( MIN( M, N, NRHS ).EQ.0 ) THEN
+ RANK = 0
+ RETURN
+ END IF
+*
+* Get machine parameters
+*
+c OPCNT( GELSY ) = OPCNT( GELSY ) + DBLE( 2 )
+ SMLNUM = DLAMCH( 'S' ) / DLAMCH( 'P' )
+ BIGNUM = ONE / SMLNUM
+ CALL DLABAD( SMLNUM, BIGNUM )
+*
+* Scale A, B if max entries outside range [SMLNUM,BIGNUM]
+*
+ ANRM = ZLANGE( 'M', M, N, A, LDA, RWORK )
+ IASCL = 0
+ IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN
+*
+* Scale matrix norm up to SMLNUM
+*
+c OPCNT( GELSY ) = OPCNT( GELSY ) + DBLE( 6*M*N )
+ CALL ZLASCL( 'G', 0, 0, ANRM, SMLNUM, M, N, A, LDA, INFO )
+ IASCL = 1
+ ELSE IF( ANRM.GT.BIGNUM ) THEN
+*
+* Scale matrix norm down to BIGNUM
+*
+c OPCNT( GELSY ) = OPCNT( GELSY ) + DBLE( 6*M*N )
+ CALL ZLASCL( 'G', 0, 0, ANRM, BIGNUM, M, N, A, LDA, INFO )
+ IASCL = 2
+ ELSE IF( ANRM.EQ.ZERO ) THEN
+*
+* Matrix all zero. Return zero solution.
+*
+ CALL ZLASET( 'F', MAX( M, N ), NRHS, CZERO, CZERO, B, LDB )
+ RANK = 0
+ GO TO 70
+ END IF
+*
+ BNRM = ZLANGE( 'M', M, NRHS, B, LDB, RWORK )
+ IBSCL = 0
+ IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN
+*
+* Scale matrix norm up to SMLNUM
+*
+c OPCNT( GELSY ) = OPCNT( GELSY ) + DBLE( 6*M*NRHS )
+ CALL ZLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB, INFO )
+ IBSCL = 1
+ ELSE IF( BNRM.GT.BIGNUM ) THEN
+*
+* Scale matrix norm down to BIGNUM
+*
+c OPCNT( GELSY ) = OPCNT( GELSY ) + DBLE( 6*M*NRHS )
+ CALL ZLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB, INFO )
+ IBSCL = 2
+ END IF
+*
+* Compute QR factorization with column pivoting of A:
+* A * P = Q * R
+*
+c OPCNT( GEQP3 ) = OPCNT( GEQP3 ) + DOPLA( 'ZGEQPF', M, N, 0, 0, 0 )
+c T1 = DSECND( )
+ CALL ZGEQP3( M, N, A, LDA, JPVT, WORK( 1 ), WORK( MN+1 ),
+ $ LWORK-MN, RWORK, INFO )
+c T2 = DSECND( )
+c TIMNG( GEQP3 ) = TIMNG( GEQP3 ) + ( T2-T1 )
+ WSIZE = MN + DBLE( WORK( MN+1 ) )
+*
+* complex workspace: MN+NB*(N+1). real workspace 2*N.
+* Details of Householder rotations stored in WORK(1:MN).
+*
+* Determine RANK using incremental condition estimation
+*
+ WORK( ISMIN ) = CONE
+ WORK( ISMAX ) = CONE
+ SMAX = ABS( A( 1, 1 ) )
+ SMIN = SMAX
+ IF( ABS( A( 1, 1 ) ).EQ.ZERO ) THEN
+ RANK = 0
+ CALL ZLASET( 'F', MAX( M, N ), NRHS, CZERO, CZERO, B, LDB )
+ GO TO 70
+ ELSE
+ RANK = 1
+ END IF
+*
+ 10 CONTINUE
+ IF( RANK.LT.MN ) THEN
+ I = RANK + 1
+c OPS = 0
+ CALL ZLAIC1( IMIN, RANK, WORK( ISMIN ), SMIN, A( 1, I ),
+ $ A( I, I ), SMINPR, S1, C1 )
+ CALL ZLAIC1( IMAX, RANK, WORK( ISMAX ), SMAX, A( 1, I ),
+ $ A( I, I ), SMAXPR, S2, C2 )
+c OPCNT( GELSY ) = OPCNT( GELSY ) + OPS + DBLE( 1 )
+*
+ IF( SMAXPR*RCOND.LE.SMINPR ) THEN
+c OPCNT( GELSY ) = OPCNT( GELSY ) + DBLE( RANK*6 )
+ DO 20 I = 1, RANK
+ WORK( ISMIN+I-1 ) = S1*WORK( ISMIN+I-1 )
+ WORK( ISMAX+I-1 ) = S2*WORK( ISMAX+I-1 )
+ 20 CONTINUE
+ WORK( ISMIN+RANK ) = C1
+ WORK( ISMAX+RANK ) = C2
+ SMIN = SMINPR
+ SMAX = SMAXPR
+ RANK = RANK + 1
+ GO TO 10
+ END IF
+ END IF
+*
+* complex workspace: 3*MN.
+*
+* Logically partition R = [ R11 R12 ]
+* [ 0 R22 ]
+* where R11 = R(1:RANK,1:RANK)
+*
+* [R11,R12] = [ T11, 0 ] * Y
+*
+ IF ( MIN_NORM.EQ.0 ) THEN
+ IF( RANK.LT.N ) THEN
+ CALL ZTZRZF( RANK, N, A, LDA, WORK( MN+1 ), WORK( 2*MN+1 ),
+ $ LWORK-2*MN, INFO )
+ END IF
+ END IF
+*
+* complex workspace: 2*MN.
+* Details of Householder rotations stored in WORK(MN+1:2*MN)
+*
+* B(1:M,1:NRHS) := Q' * B(1:M,1:NRHS)
+*
+c OPCNT( UNMQR ) = OPCNT( UNMQR ) +
+c $ DOPLA( 'ZUNMQR', M, NRHS, MN, 0, 0 )
+c T1 = DSECND( )
+ CALL ZUNMQR( 'Left', 'Conjugate transpose', M, NRHS, MN, A, LDA,
+ $ WORK( 1 ), B, LDB, WORK( 2*MN+1 ), LWORK-2*MN, INFO )
+c T2 = DSECND( )
+c TIMNG( UNMQR ) = TIMNG( UNMQR ) + ( T2-T1 )
+ WSIZE = MAX( WSIZE, 2*MN+DBLE( WORK( 2*MN+1 ) ) )
+*
+* complex workspace: 2*MN+NB*NRHS.
+*
+* B(1:RANK,1:NRHS) := inv(T11) * B(1:RANK,1:NRHS)
+*
+c OPCNT( TRSM ) = OPCNT( TRSM ) + DOPBL3( 'ZTRSM ', RANK, NRHS, 0 )
+c T1 = DSECND( )
+ CALL ZTRSM( 'Left', 'Upper', 'No transpose', 'Non-unit', RANK,
+ $ NRHS, CONE, A, LDA, B, LDB )
+c T2 = DSECND( )
+c TIMNG( TRSM ) = TIMNG( TRSM ) + ( T2-T1 )
+*
+ DO 40 J = 1, NRHS
+ DO 30 I = RANK + 1, N
+ B( I, J ) = CZERO
+ 30 CONTINUE
+ 40 CONTINUE
+*
+* B(1:N,1:NRHS) := Y' * B(1:N,1:NRHS)
+*
+ IF ( MIN_NORM.EQ.0 ) THEN
+ IF( RANK.LT.N ) THEN
+ CALL ZUNMRZ( 'Left', 'Conjugate transpose', N, NRHS, RANK,
+ $ N-RANK, A, LDA, WORK( MN+1 ), B, LDB,
+ $ WORK( 2*MN+1 ), LWORK-2*MN, INFO )
+ END IF
+ END IF
+*
+* complex workspace: 2*MN+NRHS.
+*
+* B(1:N,1:NRHS) := P * B(1:N,1:NRHS)
+*
+ DO 60 J = 1, NRHS
+ DO 50 I = 1, N
+ WORK( JPVT( I ) ) = B( I, J )
+ 50 CONTINUE
+ CALL ZCOPY( N, WORK( 1 ), 1, B( 1, J ), 1 )
+ 60 CONTINUE
+*
+* complex workspace: N.
+*
+* Undo scaling
+*
+ IF( IASCL.EQ.1 ) THEN
+c OPCNT( GELSY ) = OPCNT( GELSY ) +
+c $ DBLE( ( N*NRHS+RANK*RANK )*6 )
+ CALL ZLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB, INFO )
+ CALL ZLASCL( 'U', 0, 0, SMLNUM, ANRM, RANK, RANK, A, LDA,
+ $ INFO )
+ ELSE IF( IASCL.EQ.2 ) THEN
+c OPCNT( GELSY ) = OPCNT( GELSY ) +
+c $ DBLE( ( N*NRHS+RANK*RANK )*6 )
+ CALL ZLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB, INFO )
+ CALL ZLASCL( 'U', 0, 0, BIGNUM, ANRM, RANK, RANK, A, LDA,
+ $ INFO )
+ END IF
+ IF( IBSCL.EQ.1 ) THEN
+c OPCNT( GELSY ) = OPCNT( GELSY ) + DBLE( N*NRHS*6 )
+ CALL ZLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB, INFO )
+ ELSE IF( IBSCL.EQ.2 ) THEN
+c OPCNT( GELSY ) = OPCNT( GELSY ) + DBLE( N*NRHS*6 )
+ CALL ZLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB, INFO )
+ END IF
+*
+ 70 CONTINUE
+ WORK( 1 ) = DCMPLX( LWKOPT )
+*
+ RETURN
+*
+* End of ZGELSY1
+*
+ END
+
diff --git a/modules/linear_algebra/src/fortran/ZGELSY1.lo b/modules/linear_algebra/src/fortran/ZGELSY1.lo
new file mode 100755
index 000000000..a12b1be30
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/ZGELSY1.lo
@@ -0,0 +1,12 @@
+# src/fortran/ZGELSY1.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/ZGELSY1.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/common_f2c.c b/modules/linear_algebra/src/fortran/common_f2c.c
new file mode 100755
index 000000000..fdacf1d73
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/common_f2c.c
@@ -0,0 +1,24 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2010 - DIGITEO - Allan CORNET
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+
+/* ONLY used by F2C with scilab_f2c.sln on Windows */
+/* this modification removes some warning about no defined or redefined COMMON */
+/* We force definition of COMMON only used in current dynamic library */
+/*--------------------------------------------------------------------------*/
+/* see fortran code for definition of this COMMON */
+#ifdef _MSC_VER
+struct
+{
+ long int iero;
+} ierinv_;
+#endif
+/*--------------------------------------------------------------------------*/
diff --git a/modules/linear_algebra/src/fortran/complexify.f b/modules/linear_algebra/src/fortran/complexify.f
new file mode 100755
index 000000000..6534b89fc
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/complexify.f
@@ -0,0 +1,49 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ logical function complexify(n)
+c transforms the real matrix at position n into complex
+ include 'stack.h'
+c
+ integer iadr
+c
+ iadr(l)=l+l-1
+c
+ complexify=.false.
+ nn=top-rhs+n
+ ln=lstk(nn)
+ ln1=lstk(nn+1)
+ isize=ln1-ln
+ iln=iadr(ln)
+ if(istk(iln+3).eq.1) then
+ complexify=.true.
+ return
+ endif
+ istk(iln+3)=1
+ m1=istk(iln+1)
+ n1=istk(iln+2)
+ mn=m1*n1
+ do 1 k=top-rhs+n,top
+ lstk(k+1)=lstk(k+1)+mn
+ 1 continue
+ lfree=lstk(top+1)
+ lw=lfree-ln
+ err=lfree+lw+mn-lstk(bot)
+ if (err .gt. 0) then
+ call error(17)
+ return
+ endif
+ call dcopy(isize,stk(ln),1,stk(lfree),1)
+ call dcopy(mn,0.0d0,0,stk(lfree+isize),1)
+ call dcopy(lw-isize-mn,stk(ln1),1,stk(lfree+isize+mn),1)
+ call dcopy(lw,stk(lfree),1,stk(ln),1)
+ complexify=.true.
+ return
+ end
+
diff --git a/modules/linear_algebra/src/fortran/complexify.lo b/modules/linear_algebra/src/fortran/complexify.lo
new file mode 100755
index 000000000..15647e1fa
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/complexify.lo
@@ -0,0 +1,12 @@
+# src/fortran/complexify.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/complexify.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/core_Import.def b/modules/linear_algebra/src/fortran/core_Import.def
new file mode 100755
index 000000000..6683cd33a
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/core_Import.def
@@ -0,0 +1,35 @@
+ LIBRARY core.dll
+
+
+EXPORTS
+;
+;core
+;
+adre_
+iop_
+recu_
+stack_
+vstk_
+com_
+cha1_
+errgst_
+mtlbc_
+scigsch_
+scisch_
+scizgsch_
+intersci_
+checkrhs_
+checklhs_
+getrhsvar_
+createvar_
+maxvol_
+createcvar_
+scifunction_
+parse_
+callinterf_
+getrecursiongatewaytocall_
+isrecursioncalltofunction_
+;
+;core_f
+;
+
diff --git a/modules/linear_algebra/src/fortran/doldqr.f b/modules/linear_algebra/src/fortran/doldqr.f
new file mode 100755
index 000000000..71127dfa0
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/doldqr.f
@@ -0,0 +1,151 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine doldqr(tol,fname)
+
+c [Q,R,rk,E]=qr(A,tol)
+c [Q,R,rk,E]=qr(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision ZERO, ONE,eps,tt,tol
+ parameter ( ZERO=0.0D0, ONE=1.0D0 )
+c
+ minrhs=1
+ maxrhs=2
+ minlhs=1
+ maxlhs=4
+ eps=stk(leps)
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(M.eq.0 .or.N.eq.0) then
+ if(.not.createvar(2,'d', 0, 0, lQ)) return
+ if(.not.createvar(3,'d', 0, 0, lR)) return
+ if(.not.createvar(4,'d', 1, 1, lrk)) return
+ stk(lrk)=0.0d0
+ if(.not.createvar(5,'d', 0, 0, lE)) return
+ lhsvar(1) = 2
+ lhsvar(2) = 3
+ lhsvar(3) = 4
+ lhsvar(4) = 5
+ return
+ elseif(M.eq.-1 .or.N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.createvar(2,'d', M, M, lQ)) return
+ if(.not.createvar(3,'d', M, N, lR)) return
+ if(.not.createvar(4,'d', N, N, lE)) return
+ if(.not.createvar(5,'i', 1, N, lJPVT)) return
+ if(.not.createvar(6,'d', 1, 1, lrk)) return
+ k=7
+ if(.not.createvar(k,'d', 1, min(M,N), lTAU)) return
+ if(lhs.le.2) then
+ LWORKMIN = MAX(1,N)
+ else
+ LWORKMIN = 3*N
+ endif
+ LWORK=maxvol(k+1,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=LWORK-LWORKMIN
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+1,'d',1,LWORK,lDWORK)) return
+ if(lhs.le.2) then
+ call DGEQRF( M, N, stk(lA), M, stk(lTAU), stk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE DGEQRF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+ else
+ do 5 i = 1, N
+ istk(lJPVT+i-1) = 0
+ 5 continue
+ call DGEQPF( M, N, stk(lA), M, istk(lJPVT), stk(lTAU),
+ $ stk(lDWORK), INFO )
+c SUBROUTINE DGEQPF( M, N, A, LDA, JPVT, TAU, WORK, INFO )
+ endif
+ if(info.ne.0) then
+ return
+ endif
+ call DLACPY( 'U', M, N, stk(lA), M, stk(lR), M )
+c SUBROUTINE DLACPY( UPLO, M, N, A, B, LDB )
+c if(N.ge.2) then
+ if(M.gt.N) then
+ do 20 j = 1, N
+ do 10 i = j+1, M
+ ij = i+(j-1)*M
+ stk(lR+ij-1) = ZERO
+ 10 continue
+ 20 continue
+ else
+ do 40 j = 1, M-1
+ do 30 i = j+1, M
+ ij = i+(j-1)*M
+ stk(lR+ij-1) = ZERO
+ 30 continue
+ 40 continue
+ endif
+c endif
+
+ if(M.gt.N) then
+ call DLACPY( 'F', M, N, stk(lA), M, stk(lQ), M )
+c SUBROUTINE DLACPY( UPLO, M, N, A, B, LDB )
+ do 60 j = N+1, M
+ do 50 i = 1, M
+ ij = i+(j-1)*M
+ stk(lQ+ij-1) = ZERO
+ 50 continue
+ 60 continue
+ else
+ call DLACPY( 'F', M, M, stk(lA), M, stk(lQ), M )
+c SUBROUTINE DLACPY( UPLO, M, N, A, LDA, B, LDB )
+ endif
+ call DORGQR( M, M, min(M,N), stk(lQ), M, stk(lTAU), stk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE DORGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
+
+ if(lhs.gt.2) then
+ call DLASET( 'F', N, N, ZERO, ZERO, stk(lE), N )
+c SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+ do 70 j = 1, N
+ i = istk(lJPVT+j-1)
+ ij = i + (j-1)*N
+ stk(lE+ij-1) = ONE
+ 70 continue
+ endif
+
+c evaluating the rank
+ tt = abs(stk(lR))
+ if(tol.eq.-1.0d0) tol = dble(max(m,n)) * eps * tt
+ k = 0
+ ls = lr
+ m1 = min(m,n)
+ do 450 j = 1,m1
+ tt = abs(stk(ls))
+ if (tt .le. tol) goto 460
+ k = j
+ ls = ls + m + 1
+ 450 continue
+ 460 continue
+
+c
+ stk(lrk)=dble(k)
+ lhsvar(1)=2
+ lhsvar(2)=3
+ lhsvar(3)=6
+ lhsvar(4)=4
+c
+ end
+
diff --git a/modules/linear_algebra/src/fortran/doldqr.lo b/modules/linear_algebra/src/fortran/doldqr.lo
new file mode 100755
index 000000000..fc89fa7f7
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/doldqr.lo
@@ -0,0 +1,12 @@
+# src/fortran/doldqr.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/doldqr.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/elementary_functions_Import.def b/modules/linear_algebra/src/fortran/elementary_functions_Import.def
new file mode 100755
index 000000000..f4080e5ac
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/elementary_functions_Import.def
@@ -0,0 +1,9 @@
+ LIBRARY elementary_functions.dll
+
+
+EXPORTS
+;
+;elementary_functions
+;
+unsfdcopy_
+vfinite_
diff --git a/modules/linear_algebra/src/fortran/elementary_functions_f_Import.def b/modules/linear_algebra/src/fortran/elementary_functions_f_Import.def
new file mode 100755
index 000000000..13d99e77f
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/elementary_functions_f_Import.def
@@ -0,0 +1,8 @@
+ LIBRARY elementary_functions_f.dll
+
+
+EXPORTS
+;
+;elementary_functions_f
+;
+iset_ \ No newline at end of file
diff --git a/modules/linear_algebra/src/fortran/intddet.f b/modules/linear_algebra/src/fortran/intddet.f
new file mode 100755
index 000000000..1990a12ae
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intddet.f
@@ -0,0 +1,100 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intddet(fname)
+
+c det(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision ZERO, ONE, TEN
+ double precision D, E
+ parameter ( ZERO = 0.0D0, ONE = 1.0D0, TEN = 10.0D0 )
+c
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=2
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(M.ne.N) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(N.eq.0) then
+ lhsvar(1) = 2
+ if(.not.createvar(2,'d',1,1,lL)) return
+ stk(lL)=1.0d0
+ if (lhs.eq.2) then
+ if(.not.createvar(3,'d',1,1,lL)) return
+ stk(lL)=0.0d0
+ lhsvar(2) = 3
+ endif
+ return
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+
+ if(.not.createvar(2,'i',1,M,lIPIV)) return
+
+
+ call DGETRF( M, N, stk(lA), M, istk(lIPIV), INFO )
+c SUBROUTINE DGETRF( M, N, A, LDA, IPIV, INFO )
+ if(info.lt.0) then
+ return
+ endif
+ if (lhs.eq.1) then
+ D=one
+ do 10 i=0,N-1
+ if(istk(lIPIV+i).ne.i+1 ) D=-D
+ D=D*stk(lA+i*(M+1))
+ 10 continue
+ if(.not.createvar(1,'d',1,1,lD)) return
+ stk(lD)=D
+ lhsvar(1)=1
+ else
+c . [e,m]=det(A)
+ D = ONE
+ E = ZERO
+ do 40 i = 0, N-1
+ if(istk(lIPIV+i).ne.i+1 ) D=-D
+ D = D*stk(lA+i*(M+1))
+ if (D .eq. ZERO) go to 50
+ 15 if (abs(D) .ge. ONE) go to 20
+ D = ten*D
+ E = E - ONE
+ go to 15
+ 20 continue
+ 25 if (abs(D) .lt. ten) go to 30
+ D = D/ten
+ E = E + ONE
+ go to 25
+ 30 continue
+ 40 continue
+ 50 continue
+ if(.not.createvar(1,'d',1,1,le)) return
+ stk(le) = E
+ if(.not.createvar(2,'d',1,1,lm)) return
+ stk(lm) = D
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ endif
+c
+ return
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intddet.lo b/modules/linear_algebra/src/fortran/intddet.lo
new file mode 100755
index 000000000..b3eac0749
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intddet.lo
@@ -0,0 +1,12 @@
+# src/fortran/intddet.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intddet.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdgebal.f b/modules/linear_algebra/src/fortran/intdgebal.f
new file mode 100755
index 000000000..4c98c81d3
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgebal.f
@@ -0,0 +1,65 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intdgebal(fname)
+
+c [V,D]=balanc(A)
+c d = balanc(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+c integer vfinite
+
+ character fname*(*)
+ character JOB
+ double precision ZERO, ONE
+ parameter ( ZERO=0.0D0, ONE=1.0D0 )
+
+ minrhs=1
+ maxrhs=1
+ minlhs=2
+ maxlhs=2
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(M.ne.N) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(N.eq.0) then
+ if(.not.createvar(2,'d', 0, 0, lD)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ return
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+
+ if(.not.createvar(2,'d', N, N, lZ)) return
+ if(.not.createvar(3,'d', 1, N, lSCALE)) return
+ JOB='B'
+c SUBROUTINE DGEBAL( JOB, N, A, LDA, ILO, IHI, SCALE, INFO )
+ call DGEBAL(JOB, N, stk(lA), N, ILO, IHI,stk(lSCALE),INF0)
+
+ call DLASET( 'F', N, N, ZERO, ONE, stk(lZ), N )
+c SUBROUTINE DGEBAK( JOB, SIDE, N, ILO, IHI, SCALE, M, V, LDV, INFO )
+ call DGEBAK(JOB, 'R', N, ILO, IHI, stk(lSCALE), N,
+ $ stk(lZ), N, INFO )
+
+ lhsvar(1)=1
+ lhsvar(2)=2
+c
+ end
diff --git a/modules/linear_algebra/src/fortran/intdgebal.lo b/modules/linear_algebra/src/fortran/intdgebal.lo
new file mode 100755
index 000000000..a6747fe97
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgebal.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdgebal.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdgebal.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdgecon.f b/modules/linear_algebra/src/fortran/intdgecon.f
new file mode 100755
index 000000000..01dcb4a27
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgecon.f
@@ -0,0 +1,75 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intdgecon(fname)
+
+c rcond
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision ANORM
+ double precision dlange
+ external dlange
+c
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=1
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', MA, NA, lA)) return
+ if(MA .ne. NA) then
+ err=1
+ call error(20)
+ return
+ endif
+ N = MA
+
+ if(N.eq.0) then
+ if(.not.createvar(2,'d', 0, 0, lRCOND)) return
+ lhsvar(1) = 2
+ return
+ elseif(n.eq.-1) then
+ if(.not.createvar(2,'d', 1, 1, lRCOND)) return
+ stk(lRCOND)=1.0d0
+ lhsvar(1) = 2
+ return
+ endif
+
+ if(.not.createvar(2,'d', 1, 1, lRCOND)) return
+ if(.not.createvar(3,'i', 1, N, lIPIV)) return
+ if(.not.createvar(4,'i', 1, N, lIWORK)) return
+ LWORKMIN = 4*N
+ LWORK=maxvol(5,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(5,'d',1,LWORK,lDWORK)) return
+ ANORM = dlange( '1', N, N, stk(lA), N, stk(lDWORK) )
+c DOUBLE PRECISION FUNCTION DLANGE( NORM, M, N, A, LDA, WORK )
+ call DGETRF( N, N, stk(lA), N, istk(lIPIV), INFO )
+c SUBROUTINE DGETRF( N, N, A, LDA, IPIV, INFO )
+ stk(lRCOND) = 0.0d0
+ if(INFO.eq.0) then
+ call DGECON( '1', N, stk(lA), N, ANORM, stk(lRCOND),
+ $ stk(lDWORK), istk(lIWORK), INFO )
+c SUBROUTINE DGECON( NORM, N, A, LDA, ANORM, RCOND, WORK,
+c $ IWORK, INFO )
+ endif
+
+ lhsvar(1) = 2
+ return
+c
+ end
diff --git a/modules/linear_algebra/src/fortran/intdgecon.lo b/modules/linear_algebra/src/fortran/intdgecon.lo
new file mode 100755
index 000000000..8d5daba85
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgecon.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdgecon.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdgecon.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdgees0.f b/modules/linear_algebra/src/fortran/intdgees0.f
new file mode 100755
index 000000000..f82f8afd3
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgees0.f
@@ -0,0 +1,93 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intdgees0(fname)
+
+c [VS,T]=schur(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ character*4 JOBVS, SORT
+ integer SDIM
+ logical voiddummy
+ external voiddummy
+
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=2
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(M.ne.N) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(N.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ return
+ else if(lhs.eq.2) then
+ if(.not.createvar(2,'d', N, N, lV)) return
+ lhsvar(1) = 2
+ lhsvar(2) = 1
+ return
+ endif
+ endif
+
+ if(.not.createvar(2,'d', N, 1, lWR)) return
+ if(.not.createvar(3,'d', N, 1, lWI)) return
+ k = 4
+ if(lhs.gt.1) then
+ if(.not.createvar(4,'d', N, N, lVS)) return
+ k = 5
+ endif
+ if(.not.createvar(k,'i', N, 1, lBWORK)) return
+ LWORKMIN = 3*N
+ LWORK=maxvol(k+1,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+1,'d',1,LWORK,lDWORK)) return
+
+
+ if(lhs.eq.1) then
+ JOBVS = 'N'
+ else
+ JOBVS = 'V'
+ endif
+ SORT = 'N'
+
+ call DGEES( JOBVS, SORT, voiddummy, N, stk(lA), N, SDIM,
+ $ stk(lWR), stk(lWI), stk(lVS), N, stk(lDWORK), LWORK,
+ $ istk(lBWORK), INFO )
+c SUBROUTINE DGEES( JOBVS, SORT, SELECT, N, A, LDA, SDIM, WR, WI,
+c $ VS, LDVS, WORK, LWORK, INFO )
+ if(info.gt.0) then
+ call msgs(2,info)
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ else
+ lhsvar(1)=4
+ lhsvar(2)=1
+ endif
+c
+ end
+
+
diff --git a/modules/linear_algebra/src/fortran/intdgees0.lo b/modules/linear_algebra/src/fortran/intdgees0.lo
new file mode 100755
index 000000000..e3cf08b10
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgees0.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdgees0.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdgees0.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdgees1.f b/modules/linear_algebra/src/fortran/intdgees1.f
new file mode 100755
index 000000000..0d11f40d9
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgees1.f
@@ -0,0 +1,157 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intdgees1(fname)
+
+c [VS,T]=schur(A,'type')
+c type is r orc$
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+
+ character TYPE, JOBVS, SORT
+ integer SDIM
+ logical voiddummy, WANTD, WANTZ
+ double precision ZERO
+ parameter (ZERO = 0.0D0)
+ external voiddummy
+ INTRINSIC DCMPLX
+
+ minrhs=2
+ maxrhs=2
+ minlhs=1
+ maxlhs=2
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(M.ne.N) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(N.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ else if(lhs.eq.2) then
+ if(.not.createvar(2,'d', 0, 0, lS)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ endif
+ return
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.getrhsvar(2,'c', M1, N1, lTYPE)) return
+ TYPE = cstk(lTYPE:lTYPE)
+ WANTD = (TYPE.eq.'r' .or. TYPE.eq.'R')
+ WANTZ = (TYPE.eq.'c' .or. TYPE.eq.'C')
+
+ if(.not.WANTD .and. .not.WANTZ) then
+ buf='schur'//': type must be real or complex'
+ call error(998)
+ return
+ endif
+ if(WANTD) then
+ if(.not.createvar(3,'d', N, 1, lWR)) return
+ if(.not.createvar(4,'d', N, 1, lWI)) return
+ k = 5
+ if(lhs.gt.1) then
+ if(.not.createvar(5,'d', N, N, lVS)) return
+ k = 6
+ endif
+ if(.not.createvar(k,'i', N, 1, lBWORK)) return
+ LWORKMIN = 3*N
+ LWORK=maxvol(k+1,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+1,'d',1,LWORK,lDWORK)) return
+ else
+ if(.not.createvar(3,'z', N, N, lT)) return
+ if(.not.createvar(4,'z', N, 1, lW)) return
+ k = 5
+ if(lhs.gt.1) then
+ if(.not.createvar(5,'z', N, N, lVS)) return
+ k = 6
+ endif
+ if(.not.createvar(k,'d', N, 1, lRWORK)) return
+ if(.not.createvar(k+1,'i', N, 1, lBWORK)) return
+ LWORKMIN = 2*N
+ LWORK=maxvol(k+2,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+2,'z',1,LWORK,lDWORK)) return
+ endif
+
+ if(lhs.eq.1) then
+ JOBVS = 'N'
+ else
+ JOBVS = 'V'
+ endif
+ SORT = 'N'
+
+ if(WANTD) then
+ call DGEES( JOBVS, SORT, voiddummy, N, stk(lA), N, SDIM,
+ $ stk(lWR),
+ $ stk(lWI), stk(lVS), N, stk(lDWORK), LWORK, istk(lBWORK),
+ $ INFO )
+c SUBROUTINE DGEES( JOBVS, SORT, SELECT, N, A, LDA, SDIM, WR, WI,
+c $ VS, LDVS, WORK, LWORK, INFO )
+ if(info.gt.0) then
+ call msgs(2,info)
+ endif
+ else
+ do 20 i = 1, N
+ do 10 j = 1, N
+ ij = i+(j-1)*N
+ zstk(lT+ij-1) = dcmplx(stk(lA+ij-1),ZERO)
+ 10 continue
+ 20 continue
+ call ZGEES( JOBVS, SORT, voiddummy, N, zstk(lT), N, SDIM,
+ $ zstk(lW), zstk(lVS), N, zstk(lDWORK), LWORK, stk(lRWORK),
+ $ istk(lBWORK), INFO )
+c SUBROUTINE ZGEES( JOBVS, SORT, SELECT, N, A, LDA, SDIM, W,
+c $ VS, LDVS, WORK, LWORK, RWORK, BWORK, INFO )
+ if(info.gt.0) then
+ call msgs(2,info)
+ endif
+ endif
+
+ if(WANTD) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ else
+ lhsvar(1)=5
+ lhsvar(2)=1
+ endif
+ else
+ if(lhs.eq.1) then
+ lhsvar(1) = 3
+ else
+ lhsvar(1)=5
+ lhsvar(2)=3
+ endif
+ endif
+c
+ end
+
+
diff --git a/modules/linear_algebra/src/fortran/intdgees1.lo b/modules/linear_algebra/src/fortran/intdgees1.lo
new file mode 100755
index 000000000..ae87b48b6
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgees1.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdgees1.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdgees1.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdgehrd.f b/modules/linear_algebra/src/fortran/intdgehrd.f
new file mode 100755
index 000000000..ef3ee74e7
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgehrd.f
@@ -0,0 +1,102 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intdgehrd(fname)
+
+c [H,Q]=hess(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ double precision ZERO
+ parameter ( ZERO=0.0D0 )
+
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=2
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(M.ne.N) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(N.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ return
+ else if(lhs.eq.2) then
+ if(.not.createvar(2,'d', N, N, lQ)) return
+ lhsvar(1)=1
+ lhsvar(2)=2
+ return
+ endif
+ elseif(N.eq.-1) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ else if(lhs.eq.2) then
+ if(.not.createvar(2,'d', N, N, lQ)) return
+ stk(lQ)=stk(lA)
+ stk(lA)=1.0d0
+ lhsvar(1)=1
+ lhsvar(2)=2
+ endif
+ return
+ endif
+ if(.not.createvar(2,'d', N-1, 1, lTAU)) return
+ k = 3
+ if(lhs.gt.1) then
+ if(.not.createvar(3,'d', N, N, lQ)) return
+ k = 4
+ endif
+ LWORKMIN = N
+ LWORK=maxvol(k,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k,'d',1,LWORK,lDWORK)) return
+ call DGEHRD( N, 1, N, stk(lA), N, stk(lTAU), stk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE DGEHRD( N, 1, N, A, LDA, TAU, WORK, INFO )
+
+ if(lhs.gt.1) call DLACPY( 'F', N, N, stk(lA), N, stk(lQ), N )
+c SUBROUTINE DLACPY( UPLO, N, N, A, LDA, B, LDB )
+ if(N.gt.2) then
+ do 20 j = 1, N-2
+ do 10 i = j+2, N
+ ij = i+(j-1)*N
+ stk(lA+ij-1) = ZERO
+ 10 continue
+ 20 continue
+ endif
+
+ if(lhs.gt.1) then
+ call DORGHR( N, 1, N, stk(lQ), N, stk(lTAU), stk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE DORGHR( N, 1, N, A, LDA, TAU, WORK, INFO )
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ else
+ lhsvar(1)=3
+ lhsvar(2)=1
+ endif
+c
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intdgehrd.lo b/modules/linear_algebra/src/fortran/intdgehrd.lo
new file mode 100755
index 000000000..0b412fa16
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgehrd.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdgehrd.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdgehrd.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdgelsy.f b/modules/linear_algebra/src/fortran/intdgelsy.f
new file mode 100755
index 000000000..3d75431fe
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgelsy.f
@@ -0,0 +1,102 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intdgelsy(fname)
+
+c [X,rank]=lsq(A,B,rcond)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision EPS, RCOND
+ double precision dlamch
+ external dlamch
+ intrinsic sqrt
+c
+ minrhs=2
+ maxrhs=3
+ minlhs=1
+ maxlhs=2
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', MA, N, lA)) return
+ if(.not.getrhsvar(2,'d', MB, NRHS, lB)) return
+ if(MA .ne. MB) then
+ call error(265)
+ return
+ endif
+ M = MA
+ if(M.eq.0 .or. N.eq.0) then
+ if(.not.createvar(3,'d', 0, 0, lX)) return
+ if(.not.createvar(4,'i', 0, 0, lRANK)) return
+ lhsvar(1) = 3
+ lhsvar(2) = 4
+ return
+ elseif(M.eq.-1 .or.N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(rhs.eq.2) then
+ eps = dlamch('eps')
+ rcond = sqrt(eps)
+ MR = 1
+ NR = 1
+ if(.not.createvar(3,'d', MR, NR, lRCOND)) return
+ stk(lRCOND) = RCOND
+ else
+ if(.not.getrhsvar(3,'d', MR, NR, lRCOND)) return
+ endif
+ if(MR.ne.1 .or. NR.ne.1 ) then
+ err=3
+ call error(204)
+ return
+ endif
+ if(.not.createvar(4,'d', N, NRHS, lX)) return
+ if(.not.createvar(5,'d', max(M,N), NRHS, lXB)) return
+ if(.not.createvar(6,'i', 1, 1, lRANK)) return
+ if(.not.createvar(7,'i', 1, N, lJPVT)) return
+
+ LWORKMIN = max( min(M,N)+3*N+1, 2*min(M,N)+NRHS )
+ LWORK=maxvol(8,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(8,'d',1,LWORK,lDWORK)) return
+
+ call DLACPY( 'F', M, NRHS, stk(lB), M, stk(lXB), max(M,N) )
+c SUBROUTINE DLACPY( UPLO, M, N, A, LDA, B, LDB )
+ do 10 i = 1, N
+ istk(lJPVT+i-1) = 0
+ 10 continue
+ call DGELSY( M, N, NRHS, stk(lA), M, stk(lXB), max(M,N),
+ $ istk(lJPVT), stk(lRCOND), istk(lRANK), stk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE DGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND,
+c $ RANK, WORK, LWORK, INFO )
+ if(info.ne.0) then
+ return
+ endif
+
+ call DLACPY( 'F', N, NRHS, stk(lXB), max(M,N), stk(lX), N )
+c SUBROUTINE DLACPY( UPLO, M, N, A, LDA, B, LDB )
+
+ if(lhs.eq.1) then
+ lhsvar(1)=4
+ else
+ lhsvar(1)=4
+ lhsvar(2)=6
+ endif
+c
+ end
diff --git a/modules/linear_algebra/src/fortran/intdgelsy.lo b/modules/linear_algebra/src/fortran/intdgelsy.lo
new file mode 100755
index 000000000..5cb6e40a6
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgelsy.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdgelsy.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdgelsy.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdgeqpf3.f b/modules/linear_algebra/src/fortran/intdgeqpf3.f
new file mode 100755
index 000000000..beb058453
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgeqpf3.f
@@ -0,0 +1,142 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intdgeqpf3(fname)
+
+c [Q,R]=qr(A)
+c [Q,R,E]=qr(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision ZERO, ONE
+ parameter ( ZERO=0.0D0, ONE=1.0D0 )
+c
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=3
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(M.eq.0 .or.N.eq.0) then
+ if(.not.createvar(2,'d', 0, 0, lQ)) return
+ if(.not.createvar(3,'d', 0, 0, lR)) return
+ if(lhs.gt.2) then
+ if(.not.createvar(4,'d', 0, 0, lE)) return
+ endif
+ lhsvar(1) = 2
+ lhsvar(2) = 3
+ if(lhs.gt.2) then
+ lhsvar(3) = 4
+ endif
+ return
+ elseif(M.eq.-1 .or.N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.createvar(2,'d', M, M, lQ)) return
+ if(.not.createvar(3,'d', M, N, lR)) return
+ k=4
+ if(lhs.gt.2) then
+ if(.not.createvar(4,'d', N, N, lE)) return
+ if(.not.createvar(5,'i', 1, N, lJPVT)) return
+ k=6
+ endif
+ if(.not.createvar(k,'d', 1, min(M,N), lTAU)) return
+ if(lhs.le.2) then
+ LWORKMIN = MAX(1,N)
+ else
+ LWORKMIN = 3*N
+ endif
+ LWORK=maxvol(k+1,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=LWORK-LWORKMIN
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+1,'d',1,LWORK,lDWORK)) return
+ if(lhs.le.2) then
+ call DGEQRF( M, N, stk(lA), M, stk(lTAU), stk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE DGEQRF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+ else
+ do 5 i = 1, N
+ istk(lJPVT+i-1) = 0
+ 5 continue
+ call DGEQPF( M, N, stk(lA), M, istk(lJPVT), stk(lTAU),
+ $ stk(lDWORK), INFO )
+c SUBROUTINE DGEQPF( M, N, A, LDA, JPVT, TAU, WORK, INFO )
+ endif
+ if(info.ne.0) then
+ return
+ endif
+ call DLACPY( 'U', M, N, stk(lA), M, stk(lR), M )
+c SUBROUTINE DLACPY( UPLO, M, N, A, B, LDB )
+c if(N.ge.2) then
+ if(M.gt.N) then
+ do 20 j = 1, N
+ do 10 i = j+1, M
+ ij = i+(j-1)*M
+ stk(lR+ij-1) = ZERO
+ 10 continue
+ 20 continue
+ else
+ do 40 j = 1, M-1
+ do 30 i = j+1, M
+ ij = i+(j-1)*M
+ stk(lR+ij-1) = ZERO
+ 30 continue
+ 40 continue
+ endif
+c endif
+
+ if(M.gt.N) then
+ call DLACPY( 'F', M, N, stk(lA), M, stk(lQ), M )
+c SUBROUTINE DLACPY( UPLO, M, N, A, B, LDB )
+ do 60 j = N+1, M
+ do 50 i = 1, M
+ ij = i+(j-1)*M
+ stk(lQ+ij-1) = ZERO
+ 50 continue
+ 60 continue
+ else
+ call DLACPY( 'F', M, M, stk(lA), M, stk(lQ), M )
+c SUBROUTINE DLACPY( UPLO, M, N, A, LDA, B, LDB )
+ endif
+ call DORGQR( M, M, min(M,N), stk(lQ), M, stk(lTAU), stk(lDWORK)
+ $ ,LWORK, INFO )
+c SUBROUTINE DORGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
+
+ if(lhs.gt.2) then
+ call DLASET( 'F', N, N, ZERO, ZERO, stk(lE), N )
+c SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+ do 70 j = 1, N
+ i = istk(lJPVT+j-1)
+ ij = i + (j-1)*N
+ stk(lE+ij-1) = ONE
+ 70 continue
+ endif
+
+ if(lhs.le.2) then
+ lhsvar(1)=2
+ lhsvar(2)=3
+ else
+ lhsvar(1)=2
+ lhsvar(2)=3
+ lhsvar(3)=4
+ endif
+c
+ end
+
+
diff --git a/modules/linear_algebra/src/fortran/intdgeqpf3.lo b/modules/linear_algebra/src/fortran/intdgeqpf3.lo
new file mode 100755
index 000000000..a7c4321b8
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgeqpf3.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdgeqpf3.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdgeqpf3.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdgeqpf4.f b/modules/linear_algebra/src/fortran/intdgeqpf4.f
new file mode 100755
index 000000000..c2d0071ce
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgeqpf4.f
@@ -0,0 +1,124 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intdgeqpf4(fname)
+
+c [Q,R]=qr(A,'e')
+c [Q,R,E]=qr(A,'e')
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision ZERO, ONE
+ parameter ( ZERO=0.0D0, ONE=1.0D0 )
+c
+ minrhs=2
+ maxrhs=2
+ minlhs=1
+ maxlhs=3
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(M.eq.0 .or. N.eq.0) then
+ if(.not.createvar(2,'d', 0, 0, lQ)) return
+ if(.not.createvar(3,'d', 0, 0, lR)) return
+ if(lhs.gt.2) then
+ if(.not.createvar(4,'d', 0, 0, lE)) return
+ endif
+ lhsvar(1)=2
+ lhsvar(2)=3
+ if(lhs.gt.2) then
+ lhsvar(3)=4
+ endif
+ return
+ elseif(M.eq.-1 .or.N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.createvar(2,'d', M, min(M,N), lQ)) return
+ if(.not.createvar(3,'d', min(M,N), N, lR)) return
+ k=4
+ if(lhs.gt.2) then
+ if(.not.createvar(4,'d', N, N, lE)) return
+ if(.not.createvar(5,'i', 1, N, lJPVT)) return
+ k=6
+ endif
+ if(.not.createvar(k,'d', 1, min(M,N), lTAU)) return
+ if(lhs.le.2) then
+ LWORKMIN = MAX(1,N)
+ else
+ LWORKMIN = 3*N
+ endif
+ LWORK=maxvol(k+1,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=LWORK-LWORKMIN
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+1,'d',1,LWORK,lDWORK)) return
+ if(lhs.le.2) then
+ call DGEQRF( M, N, stk(lA), M, stk(lTAU), stk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE DGEQRF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+ else
+ do 5 i = 1, N
+ 5 istk(lJPVT+i-1) = 0
+ call DGEQPF( M, N, stk(lA), M, istk(lJPVT), stk(lTAU),
+ $ stk(lDWORK), INFO )
+c SUBROUTINE DGEQPF( M, N, A, LDA, JPVT, TAU, WORK, INFO )
+ endif
+ if(info.ne.0) then
+ return
+ endif
+ call DLACPY( 'U', min(M,N), N, stk(lA), M, stk(lR), min(M,N) )
+c SUBROUTINE DLACPY( UPLO, M, N, A, B, LDB )
+ if(N.ge.2) then
+ do 20 j = 1, N-1
+ if(j+1.le.min(M,N)) then
+ do 10 i = j+1, min(M,N)
+ ij = i+(j-1)*min(M,N)
+ stk(lR+ij-1) = ZERO
+ 10 continue
+ endif
+ 20 continue
+ endif
+
+ call DLACPY( 'F', M, min(M,N), stk(lA), M, stk(lQ), M )
+c SUBROUTINE DLACPY( UPLO, M, N, A, B, LDB )
+ call DORGQR( M, min(M,N), min(M,N), stk(lQ), M, stk(lTAU),
+ $ stk(lDWORK), LWORK, INFO )
+c SUBROUTINE DORGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
+
+ if(lhs.gt.2) then
+ call DLASET( 'F', N, N, ZERO, ZERO, stk(lE), N )
+c SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+ do 30 j = 1, N
+ i = istk(lJPVT+j-1)
+ ij = i + (j-1)*N
+ stk(lE+ij-1) = ONE
+ 30 continue
+ endif
+
+ if(lhs.le.2) then
+ lhsvar(1)=2
+ lhsvar(2)=3
+ else
+ lhsvar(1)=2
+ lhsvar(2)=3
+ lhsvar(3)=4
+ endif
+c
+ end
+
+
diff --git a/modules/linear_algebra/src/fortran/intdgeqpf4.lo b/modules/linear_algebra/src/fortran/intdgeqpf4.lo
new file mode 100755
index 000000000..9750eaaef
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgeqpf4.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdgeqpf4.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdgeqpf4.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdgesv3.f b/modules/linear_algebra/src/fortran/intdgesv3.f
new file mode 100755
index 000000000..2bd2e84e4
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgesv3.f
@@ -0,0 +1,140 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c Copyright (C) 2013 - Michael Baudin
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intdgesv3(fname)
+
+c a\b
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision ANORM, EPS, RCOND
+ double precision dlamch, dlange
+ double precision RCONDthresh
+ integer vfinite
+ external dlamch, dlange, vfinite
+ intrinsic sqrt
+
+c
+ minrhs=2
+ maxrhs=2
+ minlhs=1
+ maxlhs=1
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', MA, NA, lA)) return
+ if(.not.getrhsvar(2,'d', MB, NRHS, lB)) return
+ if(MB.eq.0) then
+ lhsvar(1) = 2
+ return
+ endif
+ if(MA .ne. MB) then
+ call error(265)
+ return
+ endif
+ M = MA
+ N = NA
+ if(M.eq.0 .or. N.eq.0) then
+ if(.not.createvar(3,'d', 0, 0, lX)) return
+ lhsvar(1) = 3
+ return
+ endif
+c Check if A and B matrices contains Inf or NaN's
+ if (vfinite(M*N, stk(lA)).eq.0) then
+ call error(229)
+ return
+ endif
+ if (vfinite(MB*NRHS, stk(lB)).eq.0) then
+ call error(229)
+ return
+ endif
+
+
+ if(.not.createvar(3,'d', M, N, lAF)) return
+ if(.not.createvar(4,'d', N, NRHS, lX)) return
+ if(.not.createvar(5,'d', max(M,N), NRHS, lXB)) return
+ if(.not.createvar(6,'i', 1, 1, lRANK)) return
+ if(.not.createvar(7,'i', 1, N, lIPIV)) return
+ if(.not.createvar(8,'i', 1, N, lJPVT)) return
+ if(.not.createvar(9,'i', 1, N, lIWORK)) return
+ LWORKMIN = max( 4*N, min(M,N)+3*N+1, 2*min(M,N)+NRHS )
+ LWORK=maxvol(10,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(10,'d',1,LWORK,lDWORK)) return
+
+ EPS = dlamch('eps')
+ RCONDthresh=EPS*10
+ ANORM = dlange( '1', M, N, stk(lA), M, stk(lDWORK) )
+c
+ if(M.eq.N) then
+c
+c M = N
+c
+ call DLACPY( 'F', N, N, stk(lA), N, stk(lAF), N )
+c SUBROUTINE DLACPY( UPLO, M, N, A, LDA, B, LDB )
+ call DGETRF( N, N, stk(lAF), N, istk(lIPIV), INFO )
+c SUBROUTINE DGETRF( N, N, A, LDA, IPIV, INFO )
+ RCOND = 0.0d0
+ if(INFO.eq.0) then
+ call DGECON( '1', N, stk(lAF), N, ANORM, RCOND, stk(lDWORK),
+ $ istk(lIWORK), INFO )
+c SUBROUTINE DGECON( NORM, N, A, LDA, ANORM, RCOND, WORK,
+c $ IWORK, INFO )
+ if(RCOND.gt.RCONDthresh) then
+ call DGETRS( 'N', N, NRHS, stk(lAF), N, istk(lIPIV),
+ $ stk(lB), N, INFO )
+c SUBROUTINE DGETRS( TRANS, N, NRHS, A, LDA, IPIV,
+c B, LDB, INFO )
+ call DLACPY( 'F', N, NRHS, stk(lB), N, stk(lX), N )
+c SUBROUTINE DLACPY( UPLO, M, N, A, LDA, B, LDB )
+ lhsvar(1) = 4
+ return
+ endif
+ endif
+ call writebufdgesv3(buf,RCOND)
+ call msgs(5,1)
+ endif
+c
+c M.ne.N or A singular
+c
+ RCOND = RCONDthresh
+ call DLACPY( 'F', M, NRHS, stk(lB), M, stk(lXB), max(M,N) )
+c SUBROUTINE DLACPY( UPLO, M, N, A, LDA, B, LDB )
+ do 10 i = 1, N
+ istk(lJPVT+i-1) = 0
+ 10 continue
+ info = 1
+ call DGELSY1( M, N, NRHS, stk(lA), M, stk(lXB), max(M,N),
+ $ istk(lJPVT), RCOND, istk(lRANK), stk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE DGELSY1( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND,
+c $ RANK, WORK, LWORK, INFO )
+ if(info.ne.0) then
+ return
+ endif
+ if( M.ne.N .and. istk(lRANK).lt.min(M,N) )then
+ call msgs(9,istk(lRANK))
+ endif
+ call DLACPY( 'F', N, NRHS, stk(lXB), max(M,N), stk(lX), N )
+c SUBROUTINE DLACPY( UPLO, M, N, A, LDA, B, LDB )
+
+ lhsvar(1)=4
+ return
+c
+ end
+
+
diff --git a/modules/linear_algebra/src/fortran/intdgesv3.lo b/modules/linear_algebra/src/fortran/intdgesv3.lo
new file mode 100755
index 000000000..d3c2aa40d
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgesv3.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdgesv3.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdgesv3.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdgesv4.f b/modules/linear_algebra/src/fortran/intdgesv4.f
new file mode 100755
index 000000000..48fb7f323
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgesv4.f
@@ -0,0 +1,169 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c Copyright (C) 2013 - Michael Baudin
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intdgesv4(fname)
+
+c a/b
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision ANORM, EPS, RCOND
+ double precision RCONDthresh
+ double precision dlamch, dlange
+ integer vfinite
+ external dlamch, dlange, vfinite
+ intrinsic sqrt
+c
+ minrhs=2
+ maxrhs=2
+ minlhs=1
+ maxlhs=1
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', MB, NB, lB)) return
+ if(.not.getrhsvar(2,'d', MA, NA, lA)) return
+ if(MB .eq. 0) then
+ lhsvar(1) = 1
+ return
+ endif
+ if(NA .ne. NB) then
+ call error(266)
+ return
+ endif
+ M = MA
+ N = NA
+ K = MB
+ if(M.eq.0 .or. N.eq.0) then
+ if(.not.createvar(3,'d', 0, 0, lX)) return
+ lhsvar(1) = 3
+ return
+ endif
+c Check if A and B matrices contains Inf or NaN's
+ if (vfinite(M*N, stk(lA)).eq.0) then
+ call error(229)
+ return
+ endif
+ if (vfinite(MB*NB, stk(lB)).eq.0) then
+ call error(229)
+ return
+ endif
+
+ if(.not.createvar(3,'d', N, M, lAF)) return
+ if(.not.createvar(4,'d', K, M, lX)) return
+ if(.not.createvar(5,'d', N, M, lAT)) return
+ if(.not.createvar(6,'d', max(M,N), K, lBT)) return
+ if(.not.createvar(7,'i', 1, 1, lRANK)) return
+ if(.not.createvar(8,'i', 1, N, lIPIV)) return
+ if(.not.createvar(9,'i', 1, M, lJPVT)) return
+ if(.not.createvar(10,'i', 1, N, lIWORK)) return
+ LWORKMIN = max( 4*N, min(M,N)+3*M+1, 2*min(M,N)+K )
+ LWORK=maxvol(11,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(11,'d',1,LWORK,lDWORK)) return
+ EPS = dlamch('eps')
+ RCOND_thresh=EPS*10
+ ANORM = dlange( '1', M, N, stk(lA), M, stk(lDWORK) )
+c
+c Transpose A and B
+c
+ do 20 j = 1, M
+ do 10 i = 1, N
+ ij = i+(j-1)*N
+ ji = j+(i-1)*M
+ stk(lAT+ij-1) = stk(lA+ji-1)
+ 10 continue
+ 20 continue
+ do 40 j = 1, K
+ do 30 i = 1, N
+ ij = i+(j-1)*max(M,N)
+ ji = j+(i-1)*K
+ stk(lBT+ij-1) = stk(lB+ji-1)
+ 30 continue
+ 40 continue
+c
+ if(M.eq.N) then
+c
+c M = N
+c
+ call DLACPY( 'F', N, N, stk(lAT), N, stk(lAF), N )
+c SUBROUTINE DLACPY( UPLO, M, N, A, LDA, B, LDB )
+ call DGETRF( N, N, stk(lAF), N, istk(lIPIV), INFO )
+c SUBROUTINE DGETRF( N, N, A, LDA, IPIV, INFO )
+ RCOND = 0.0d0
+ if(INFO.eq.0) then
+ call DGECON( '1', N, stk(lAF), N, ANORM, RCOND, stk(lDWORK),
+ $ istk(lIWORK), INFO )
+c SUBROUTINE DGECON( NORM, N, A, LDA, ANORM, RCOND, WORK,
+c $ IWORK, INFO )
+ if(RCOND.gt.RCOND_thresh) then
+ call DGETRS( 'N', N, K, stk(lAF), N, istk(lIPIV),
+ $ stk(lBT), N, INFO )
+c SUBROUTINE DGETRS( TRANS, N, NRHS, A, LDA, IPIV,
+c B, LDB, INFO )
+c
+c Back transpose X
+c
+ do 60 j = 1, N
+ do 50 i = 1, K
+ ij = i+(j-1)*K
+ ji = j+(i-1)*N
+ stk(lX+ij-1) = stk(lBT+ji-1)
+ 50 continue
+ 60 continue
+ lhsvar(1) = 4
+ return
+ endif
+ endif
+ call writebufdgesv4(buf,RCOND)
+ call msgs(5,1)
+ endif
+c
+c M.ne.N or A singular
+c
+ RCOND = RCOND_thresh
+ do 70 i = 1, M
+ istk(lJPVT+i-1) = 0
+ 70 continue
+ info = 1
+ call DGELSY1( N, M, K, stk(lAT), N, stk(lBT), max(M,N),
+ $ istk(lJPVT), RCOND, istk(lRANK), stk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE DGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND,
+c $ RANK, WORK, LWORK, INFO )
+ if(info.ne.0) then
+ return
+ endif
+ if( M.ne.N .and. istk(lRANK).lt.min(M,N) )then
+ call msgs(9,istk(lRANK))
+ endif
+c
+c Back transpose X
+c
+ do 90 j = 1, M
+ do 80 i = 1, K
+ ij = i+(j-1)*K
+ ji = j+(i-1)*max(M,N)
+ stk(lX+ij-1) = stk(lBT+ji-1)
+ 80 continue
+ 90 continue
+
+ lhsvar(1)=4
+ return
+c
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intdgesv4.lo b/modules/linear_algebra/src/fortran/intdgesv4.lo
new file mode 100755
index 000000000..9d16c9412
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgesv4.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdgesv4.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdgesv4.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdgesvd1.f b/modules/linear_algebra/src/fortran/intdgesvd1.f
new file mode 100755
index 000000000..91782a898
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgesvd1.f
@@ -0,0 +1,130 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intdgesvd1(fname)
+
+c [U,S,V]=svd(A)
+c s = svd(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ integer vfinite
+
+ character fname*(*)
+ character JOBU, JOBVT
+ double precision ZERO
+ parameter ( ZERO=0.0D0 )
+
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=3
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(M.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ return
+ else if(lhs.eq.2) then
+ if(.not.createvar(2,'d', M, N, lS)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ return
+ else if(lhs.eq.3) then
+ if(.not.createvar(2,'d', M, N, lS)) return
+ if(.not.createvar(3,'d', N, N, lV)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ lhsvar(3) = 3
+ return
+ endif
+ elseif(M.eq.-1 .or.N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(vfinite(M*N,stk(lA)).eq.0) then
+ err=1
+ call error(264)
+ return
+ endif
+ if(.not.createvar(2,'d', min(M,N), 1, lSV)) return
+ k = 3
+ if(lhs.gt.1) then
+ if(.not.createvar(3,'d', M, M, lU)) return
+ if(.not.createvar(4,'d', M, N, lS)) return
+ if(.not.createvar(5,'d', N, N, lV)) return
+ if(.not.createvar(6,'d', N, N, lVT)) return
+ k = 7
+ endif
+ LWORKMIN = max(3*min(M,N)+max(M,N),5*min(M,N)-4)
+ LWORK=maxvol(k,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=LWORK-LWORKMIN
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k,'d',1,LWORK,lDWORK)) return
+
+ JOBU = 'N'
+ JOBVT = 'N'
+ if(lhs.gt.1) then
+ JOBU = 'A'
+ JOBVT = 'A'
+ endif
+ if(lhs.eq.1) then
+ call DGESVD( JOBU, JOBVT, M, N, stk(lA), M, stk(lSV), stk(lA),
+ $ M, stk(lA), N, stk(lDWORK), LWORK, INFO )
+c SUBROUTINE DGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT,
+C $ LDVT, WORK, LWORK, INFO )
+c next lines to patch an error of DGESVD
+ do 01 ii = 0,min(M,N)-1
+ stk(lSV+ii)=abs(stk(lSV+ii))
+ 01 continue
+ call DLASRT('D', min(M,N), stk(lSV), INFO )
+ else
+ call DGESVD( JOBU, JOBVT, M, N, stk(lA), M, stk(lSV), stk(lU),
+ $ M, stk(lVT), N, stk(lDWORK), LWORK, INFO )
+c SUBROUTINE DGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT,
+C $ LDVT, WORK, LWORK, INFO )
+ endif
+ if(info.ne.0) then
+ if(info.gt.0) call error(24)
+ return
+ endif
+
+ if(lhs.gt.1) then
+ call DLASET( 'F', M, N, ZERO, ZERO, stk(lS), M )
+c SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+
+ do 10 i = 1, min(M,N)
+ ii = i+(i-1)*M
+ stk(lS+ii-1) = stk(lSV+i-1)
+ 10 continue
+ do 30 j = 1, N
+ do 20 i = j, N
+ ij = i+(j-1)*N
+ ji = j+(i-1)*N
+ stk(lV+ij-1) = stk(lVT+ji-1)
+ stk(lV+ji-1) = stk(lVT+ij-1)
+ 20 continue
+ 30 continue
+ lhsvar(1)=3
+ lhsvar(2)=4
+ lhsvar(3)=5
+ else
+ lhsvar(1) = 2
+ endif
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intdgesvd1.lo b/modules/linear_algebra/src/fortran/intdgesvd1.lo
new file mode 100755
index 000000000..1507119df
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgesvd1.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdgesvd1.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdgesvd1.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdgesvd2.f b/modules/linear_algebra/src/fortran/intdgesvd2.f
new file mode 100755
index 000000000..9d1e52be2
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgesvd2.f
@@ -0,0 +1,134 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intdgesvd2(fname)
+
+c [U,S,V]=svd(A)
+c s = svd(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ integer vfinite
+
+ character fname*(*)
+ character JOBU, JOBVT
+ double precision ZERO
+ parameter ( ZERO=0.0D0 )
+
+ minrhs=2
+ maxrhs=2
+ minlhs=1
+ maxlhs=3
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(M.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ return
+ else if(lhs.eq.2) then
+ if(.not.createvar(2,'d', N, N, lS)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ return
+ else if(lhs.eq.3) then
+ if(.not.createvar(2,'d', M, N, lS)) return
+ if(.not.createvar(3,'d', N, N, lV)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ lhsvar(3) = 3
+ return
+ endif
+ elseif(M.eq.-1 .or.N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(vfinite(M*N,stk(lA)).eq.0) then
+ err=1
+ call error(264)
+ return
+ endif
+ if(.not.createvar(2,'d', min(M,N), 1, lSV)) return
+ k = 3
+ if(lhs.gt.1) then
+ if(.not.createvar(3,'d', M, min(M,N), lU)) return
+ if(.not.createvar(4,'d', min(M,N), min(M,N), lS)) return
+ if(.not.createvar(5,'d', N, min(M,N), lV)) return
+ if(.not.createvar(6,'d', min(M,N), N, lVT)) return
+ k = 7
+ endif
+ LWORKMIN = max(3*min(M,N)+max(M,N),5*min(M,N)-4)
+ LWORK=maxvol(k,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=LWORK-LWORKMIN
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k,'d',1,LWORK,lDWORK)) return
+
+ JOBU = 'N'
+ JOBVT = 'N'
+ if(lhs.gt.1) then
+ JOBU = 'S'
+ JOBVT = 'S'
+ endif
+ if(lhs.eq.1) then
+ call DGESVD( JOBU, JOBVT, M, N, stk(lA), M, stk(lSV), stk(lA),
+ $ M, stk(lA), N, stk(lDWORK), LWORK, INFO )
+c SUBROUTINE DGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT,
+C $ LDVT, WORK, LWORK, INFO )
+c next lines to patch an error of DGESVD
+ do 01 ii = 0,min(M,N)-1
+ stk(lSV+ii)=abs(stk(lSV+ii))
+ 01 continue
+ call DLASRT('D', min(M,N), stk(lSV), INFO )
+ else
+ call DGESVD( JOBU, JOBVT, M, N, stk(lA), M, stk(lSV), stk(lU),
+ $ M, stk(lVT), min(M,N), stk(lDWORK), LWORK, INFO )
+c SUBROUTINE DGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT,
+C $ LDVT, WORK, LWORK, INFO )
+ endif
+ if(info.ne.0) then
+ if(info.gt.0) call error(24)
+ return
+ endif
+
+ if(lhs.gt.1) then
+ call DLASET( 'F', min(M,N), min(M,N), ZERO, ZERO, stk(lS),
+ $ min(M,N) )
+c SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+
+ do 10 i = 1, min(M,N)
+ ii = i+(i-1)*min(M,N)
+ stk(lS+ii-1) = stk(lSV+i-1)
+ 10 continue
+ do 30 j = 1, min(M,N)
+ do 20 i = 1, N
+ ij = i+(j-1)*N
+ ji = j+(i-1)*min(M,N)
+ stk(lV+ij-1) = stk(lVT+ji-1)
+ 20 continue
+ 30 continue
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1) = 2
+ else
+ lhsvar(1)=3
+ lhsvar(2)=4
+ lhsvar(3)=5
+ endif
+c
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intdgesvd2.lo b/modules/linear_algebra/src/fortran/intdgesvd2.lo
new file mode 100755
index 000000000..2ca3b71b7
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgesvd2.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdgesvd2.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdgesvd2.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdgetrf.f b/modules/linear_algebra/src/fortran/intdgetrf.f
new file mode 100755
index 000000000..df62d436f
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgetrf.f
@@ -0,0 +1,126 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intdgetrf(fname)
+
+c [L,U,E] = lu(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision ZERO, ONE
+ parameter ( ZERO = 0.0D0, ONE = 1.0D0 )
+c
+ minrhs=1
+ maxrhs=1
+ minlhs=2
+ maxlhs=3
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(M.eq.0 .or.N.eq.0) then
+ lhsvar(1) = 1
+ if(.not.createvar(2,'d',0,0,lL)) return
+ lhsvar(2) = 2
+ if(lhs.eq.3) then
+ if(.not.createvar(3,'d',0,0,lE)) return
+ lhsvar(3) = 3
+ endif
+ return
+ elseif (M.eq.-1 .or.N.eq.-1) then
+ lhsvar(1) = 1
+ if(.not.createvar(2,'d',-1,-1,lL)) return
+ stk(lL)=stk(lA)
+ stk(lA)=1.0d0
+ lhsvar(2) = 2
+ if(lhs.eq.3) then
+ if(.not.createvar(3,'d',-1,-1,lE)) return
+ stk(lE)=1.0d0
+ lhsvar(3) = 3
+ endif
+ return
+ endif
+ if(.not.createvar(2,'d',M,min(M,N),lL)) return
+ if(.not.createvar(3,'d',min(M,N),N,lU)) return
+ if(.not.createvar(4,'i',1,min(M,N),lIPIV)) return
+ if(.not.createvar(5,'d',M,M,lE)) return
+ if(lhs.eq.2) then
+ if(.not.createvar(6,'i',1,M,lIW)) return
+ if(.not.createvar(7,'d',M,min(M,N),lW)) return
+ endif
+
+
+ call DGETRF( M, N, stk(lA), M, istk(lIPIV), INFO )
+c SUBROUTINE DGETRF( M, N, A, LDA, IPIV, INFO )
+ if(info.lt.0) then
+ return
+ endif
+
+ do 20 j=1,min(M,N)
+ do 10 i=1,M
+ ij = i+(j-1)*M
+ if(i.eq.j) then
+ stk(lL+ij-1)=ONE
+ else if(i.gt.j) then
+ stk(lL+ij-1)=stk(lA+ij-1)
+ else if(i.lt.j) then
+ stk(lL+ij-1)=ZERO
+ endif
+ 10 continue
+ 20 continue
+ do 40 j=1,N
+ do 30 i=1,min(M,N)
+ ij1 = i+(j-1)*min(M,N)
+ ij2 = i+(j-1)*M
+ if(i.gt.j) then
+ stk(lU+ij1-1)=ZERO
+ else if(i.le.j) then
+ stk(lU+ij1-1)=stk(lA+ij2-1)
+ endif
+ 30 continue
+ 40 continue
+ if(lhs.eq.2) then
+c form E'*L
+ do 41 i = 1, M
+ istk(lIW-1+i)=i
+ 41 continue
+ do 42 i = 1, min(M,N)
+ ip = istk(lIPIV-1+i)
+ if( ip.ne.i ) then
+ iw=istk(lIw-1+i)
+ istk(lIW-1+i)=istk(lIW-1+ip)
+ istk(lIW-1+ip)=iw
+ endif
+ 42 continue
+ do 43 i= 1, M
+ ip =istk(lIW-1+i)
+ call dcopy(N,stk(lL-1+i),M,stk(lW-1+ip),M)
+ 43 continue
+ lhsvar(1)=7
+ lhsvar(2)=3
+ else
+ call DLASET( 'F', M, M, ZERO, ONE, stk(lE), M )
+c SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+ call DLASWP( M, stk(lE), M, 1, min(M,N), istk(lIPIV), 1 )
+c SUBROUTINE DLASWP( N, A, LDA, K1, K2, IPIV, INCX )
+ lhsvar(1)=2
+ lhsvar(2)=3
+ lhsvar(3)=5
+ endif
+
+
+
+c
+ return
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intdgetrf.lo b/modules/linear_algebra/src/fortran/intdgetrf.lo
new file mode 100755
index 000000000..8531071ff
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgetrf.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdgetrf.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdgetrf.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdgetri.f b/modules/linear_algebra/src/fortran/intdgetri.f
new file mode 100755
index 000000000..e2cccec6e
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgetri.f
@@ -0,0 +1,83 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intdgetri(fname)
+
+c B = inv(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision anorm,rcond
+ double precision dlange,dlamch
+ external dlange,dlamch
+
+c
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=1
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(m.ne.n) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(n.eq.0) then
+ lhsvar(1) = 1
+ return
+ elseif(n.eq.-1) then
+ stk(lA)=1.0d0/stk(lA)
+ lhsvar(1) = 1
+ return
+ endif
+ if(.not.createvar(2,'i',1,N,lIPIV)) return
+ if(.not.createvar(3,'i',1,N,lIWORK)) return
+ LWORKMIN = MAX(1,N)
+ LWORK=maxvol(4,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(4,'d',1,LWORK,lDWORK)) return
+
+ ANORM = dlange( '1', M, N, stk(lA), M, stk(lDWORK) )
+
+ call DGETRF( N, N, stk(lA), N, istk(lIPIV), INFO )
+c SUBROUTINE DGETRF( M, N, A, LDA, IPIV, INFO )
+ if(info.gt.0) then
+ call error(19)
+ return
+ elseif (info.lt.0) then
+ return
+ endif
+ RCOND = 0.0d0
+ call DGECON( '1', N, stk(lA), N, ANORM, RCOND, stk(lDWORK),
+ $ istk(lIWORK), INFO )
+ if(RCOND.le.sqrt(dlamch('eps'))) then
+ call writebufdgetri(buf,RCOND)
+c . ill conditionned problem
+ call msgs(5,0)
+ endif
+
+
+ call DGETRI( N, stk(lA), N, istk(lIPIV), stk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE DGETRI( N, A, LDA, IPIV, WORK, LWORK, INFO )
+
+ lhsvar(1)=1
+
+c
+ end
diff --git a/modules/linear_algebra/src/fortran/intdgetri.lo b/modules/linear_algebra/src/fortran/intdgetri.lo
new file mode 100755
index 000000000..74c1055ac
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgetri.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdgetri.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdgetri.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdggbal.f b/modules/linear_algebra/src/fortran/intdggbal.f
new file mode 100755
index 000000000..e61dc5ef0
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdggbal.f
@@ -0,0 +1,91 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intdggbal(fname)
+c [Ab,Bb,X,Y]=balanc(A,B)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ character JOB
+ double precision ZERO, ONE
+ parameter ( ZERO=0.0D0, ONE=1.0D0 )
+
+ minrhs=2
+ maxrhs=2
+ minlhs=4
+ maxlhs=4
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', MA, NA, lA)) return
+ if(MA.ne.NA) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(.not.getrhsvar(2,'d', MB, NB, lB)) return
+ if(MB.ne.NB) then
+ err=2
+ call error(20)
+ return
+ endif
+ if(MA.ne.MB) then
+ call error(267)
+ return
+ endif
+ N = MA
+ if(N.eq.0) then
+ if(.not.createvar(3,'d', N, N, lX)) return
+ if(.not.createvar(4,'d', N, N, lY)) return
+ lhsvar(1)=1
+ lhsvar(2)=2
+ lhsvar(3)=3
+ lhsvar(4)=4
+ return
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+
+ if(.not.createvar(3,'d', N, N, lX)) return
+ if(.not.createvar(4,'d', N, N, lY)) return
+ if(.not.createvar(5,'d', 1, N, lLSCALE)) return
+ if(.not.createvar(6,'d', 1, N, lRSCALE)) return
+ if(.not.createvar(7,'d', 1, N*6, lWORK)) return
+
+
+c SUBROUTINE DGGBAL( JOB, N, A, LDA, B, LDB, ILO, IHI, LSCALE,
+c $ RSCALE, WORK, INFO )
+
+ JOB='B'
+ call DGGBAL(JOB, N, stk(lA), N, stk(lB), N, ILO, IHI,stk(lLSCALE),
+ $ stk(lRSCALE), stk(lWORK), INFO )
+
+c
+ call DLASET( 'F', N, N, ZERO, ONE, stk(lX), N )
+ call DLASET( 'F', N, N, ZERO, ONE, stk(lY), N )
+
+ call DGGBAK(JOB, 'L', N, ILO, IHI, stk(lLSCALE), stk(lRSCALE), N,
+ $ stk(lX), N, INFO )
+ call DGGBAK(JOB, 'R', N, ILO, IHI, stk(lLSCALE), stk(lRSCALE), N,
+ $ stk(lY), N, INFO )
+
+
+ lhsvar(1)=1
+ lhsvar(2)=2
+ lhsvar(3)=3
+ lhsvar(4)=4
+ end
+
+
diff --git a/modules/linear_algebra/src/fortran/intdggbal.lo b/modules/linear_algebra/src/fortran/intdggbal.lo
new file mode 100755
index 000000000..b0003ac8d
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdggbal.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdggbal.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdggbal.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdgges.f b/modules/linear_algebra/src/fortran/intdgges.f
new file mode 100755
index 000000000..268e0cf6e
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgges.f
@@ -0,0 +1,126 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intdgges(fname)
+
+c [AS,BS,VSL,VSR]=gschur(A,B)
+c [AS,BS] = gschur(A,B)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ character JOBVSL, JOBVSR, SORT
+ logical voiddummy
+ external voiddummy
+
+ minrhs=2
+ maxrhs=2
+ minlhs=2
+ maxlhs=4
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', MA, NA, lA)) return
+ if(MA.ne.NA) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(.not.getrhsvar(2,'d', MB, NB, lB)) return
+ if(MB.ne.NB) then
+ err=2
+ call error(20)
+ return
+ endif
+ if(MA.ne.MB) then
+ call error(267)
+ return
+ endif
+ N = MA
+ if(N.eq.0) then
+ lhsvar(1)=1
+ lhsvar(2)=2
+ if(lhs.eq.4) then
+ if(.not.createvar(3,'d', N, N, lVSL)) return
+ if(.not.createvar(4,'d', N, N, lVSR)) return
+ lhsvar(3)=3
+ lhsvar(4)=4
+ endif
+ return
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.createvar(3,'i', 1, 1, lSDIM)) return
+ if(.not.createvar(4,'d', N, 1, lALPHAR)) return
+ if(.not.createvar(5,'d', N, 1, lALPHAI)) return
+ if(.not.createvar(6,'d', N, 1, lBETA)) return
+ k = 7
+ if(lhs.eq.4) then
+ if(.not.createvar(7,'d', N, N, lVSL)) return
+ if(.not.createvar(8,'d', N, N, lVSR)) return
+ k = 9
+ endif
+ if(.not.createvar(k,'i', 2*N, 1, lBWORK)) return
+
+ LWORKMIN = 8*N+16
+ LWORK=maxvol(k+1,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+1,'d',1,LWORK,lDWORK)) return
+
+ if(lhs.eq.2) then
+ JOBVSL = 'N'
+ JOBVSR = 'N'
+ lVSL = lDWORK
+ lVSR = lDWORK
+ else
+ JOBVSL = 'V'
+ JOBVSR = 'V'
+ endif
+ SORT = 'N'
+ call DGGES( JOBVSL, JOBVSR, SORT, voiddummy, N, stk(lA), N,
+ $ stk(lB),
+ $ N, istk(lSDIM), stk(lALPHAR), stk(lALPHAI), stk(lBETA),
+ $ stk(lVSL), N, stk(lVSR), N, stk(lDWORK), LWORK, istk(lBWORK),
+ $ INFO )
+c SUBROUTINE DGGES( JOBVSL, JOBVSR, SORT, DELCTG, N, A, LDA, B, LDB,
+c $ SDIM, ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, WORK,
+c $ LWORK, BWORK, INFO )
+ if(info.gt.0) then
+ if(info.le.N) then
+ call msgs(1,info)
+ elseif(info.eq.N+1) then
+ call error(24)
+ return
+ endif
+ endif
+
+
+ if(lhs.eq.2) then
+ lhsvar(1)=1
+ lhsvar(2)=2
+ else
+ lhsvar(1)=1
+ lhsvar(2)=2
+ lhsvar(3)=7
+ lhsvar(4)=8
+ endif
+c
+ end
+
+
diff --git a/modules/linear_algebra/src/fortran/intdgges.lo b/modules/linear_algebra/src/fortran/intdgges.lo
new file mode 100755
index 000000000..e7b579a72
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdgges.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdgges.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdgges.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdoldsvd.f b/modules/linear_algebra/src/fortran/intdoldsvd.f
new file mode 100755
index 000000000..66fd7d158
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdoldsvd.f
@@ -0,0 +1,148 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intdoldsvd(tol,fname)
+
+c [U,S,V,rk]=svd(A,tol)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ character JOBU, JOBVT
+ double precision ZERO
+ double precision tol,eps,dlamch
+ parameter ( ZERO=0.0D0 )
+
+ minrhs=1
+ maxrhs=2
+ minlhs=1
+ maxlhs=4
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(M.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ return
+ else if(lhs.eq.2) then
+ if(.not.createvar(2,'d', N, N, lS)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ return
+ else if(lhs.eq.3) then
+ if(.not.createvar(2,'d', M, N, lS)) return
+ if(.not.createvar(3,'d', N, N, lV)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ lhsvar(3) = 3
+ return
+ else if(lhs.eq.4) then
+ if(.not.createvar(2,'d', M, N, lS)) return
+ if(.not.createvar(3,'d', N, N, lV)) return
+ if(.not.createvar(4,'d', 1, 1, lrk)) return
+ stk(lrk)=0
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ lhsvar(3) = 3
+ lhsvar(4) = 4
+ return
+ endif
+ elseif(N.eq.-1.or.M.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.createvar(2,'d', min(M,N), 1, lSV)) return
+ k = 3
+ if(lhs.gt.1) then
+ if(.not.createvar(3,'d', M, M, lU)) return
+ if(.not.createvar(4,'d', M, N, lS)) return
+ if(.not.createvar(5,'d', N, N, lV)) return
+ if(.not.createvar(6,'d', N, N, lVT)) return
+ if(.not.createvar(7,'d', 1, 1, lrk)) return
+ k = 8
+ endif
+ LWORKMIN = max(3*min(M,N)+max(M,N),5*min(M,N)-4)
+ LWORK=maxvol(k,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k,'d',1,LWORK,lDWORK)) return
+
+ JOBU = 'N'
+ JOBVT = 'N'
+ if(lhs.gt.1) then
+ JOBU = 'A'
+ JOBVT = 'A'
+ endif
+ if(lhs.eq.1) then
+ call DGESVD( JOBU, JOBVT, M, N, stk(lA), M, stk(lSV), stk(lA),
+ $ M, stk(lA), N, stk(lDWORK), LWORK, INFO )
+c SUBROUTINE DGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT,
+C $ LDVT, WORK, LWORK, INFO )
+c next lines to patch an error of DGESVD
+ do 01 ii = 0,min(M,N)-1
+ stk(lSV+ii)=abs(stk(lSV+ii))
+ 01 continue
+ call DLASRT('D', min(M,N), stk(lSV), INFO )
+ else
+ call DGESVD( JOBU, JOBVT, M, N, stk(lA), M, stk(lSV), stk(lU),
+ $ M, stk(lVT), N, stk(lDWORK), LWORK, INFO )
+c SUBROUTINE DGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT,
+C $ LDVT, WORK, LWORK, INFO )
+ endif
+ if(info.ne.0) then
+ if(info.gt.0) call error(24)
+ return
+ endif
+
+c calculating rk = # of sv's > tol
+
+ eps=dlamch('eps')
+ if(tol.eq.0.0d0) tol=dble(max(M,N))*eps*stk(lSV)
+ irang=0
+ do 51 i = 1, min(M,N)
+ if(stk(lSV+i-1).gt.tol) irang=i
+ 51 continue
+ stk(lrk)=dble(irang)
+ if(lhs.gt.1) then
+ call DLASET( 'F', M, N, ZERO, ZERO, stk(lS), M )
+c SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+
+ do 10 i = 1, min(M,N)
+ ii = i+(i-1)*M
+ stk(lS+ii-1) = stk(lSV+i-1)
+ 10 continue
+ do 30 j = 1, N
+ do 20 i = j, N
+ ij = i+(j-1)*N
+ ji = j+(i-1)*N
+ stk(lV+ij-1) = stk(lVT+ji-1)
+ stk(lV+ji-1) = stk(lVT+ij-1)
+ 20 continue
+ 30 continue
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1) = 2
+ else
+ lhsvar(1)=3
+ lhsvar(2)=4
+ lhsvar(3)=5
+ lhsvar(4)=7
+ endif
+c
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intdoldsvd.lo b/modules/linear_algebra/src/fortran/intdoldsvd.lo
new file mode 100755
index 000000000..77fee358e
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdoldsvd.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdoldsvd.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdoldsvd.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intdpotrf.f b/modules/linear_algebra/src/fortran/intdpotrf.f
new file mode 100755
index 000000000..7971942b3
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdpotrf.f
@@ -0,0 +1,66 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intdpotrf(fname)
+
+c U = chol(A)
+
+ include 'stack.h'
+ logical getrhsvar
+ logical checklhs,checkrhs
+ character fname*(*)
+c
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=1
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(m.ne.n) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(N.eq.0) then
+ lhsvar(1) = 1
+ return
+ elseif(N.eq.-1) then
+ if(stk(lA).le.0.0d0) then
+ call error(29)
+ return
+ endif
+ lhsvar(1) = 1
+ stk(lA)=sqrt(stk(lA))
+ return
+ endif
+
+ call DPOTRF( 'U', N, stk(lA), N, INFO )
+c SUBROUTINE DPOTRF( 'U', N, A, LDA, INFO )
+ if(info.ne.0) then
+ if(info.gt.0) call error(29)
+ return
+ endif
+
+ if( N.gt.1 ) then
+ do 20 j=1,N
+ do 10 i=j+1,N
+ ij = i+(j-1)*N
+ stk(lA+ij-1)=0.0d0
+ 10 continue
+ 20 continue
+ endif
+
+ lhsvar(1)=1
+
+c
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intdpotrf.lo b/modules/linear_algebra/src/fortran/intdpotrf.lo
new file mode 100755
index 000000000..1467dec6e
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intdpotrf.lo
@@ -0,0 +1,12 @@
+# src/fortran/intdpotrf.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intdpotrf.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intfschur.f b/modules/linear_algebra/src/fortran/intfschur.f
new file mode 100755
index 000000000..94f02e417
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intfschur.f
@@ -0,0 +1,124 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intfschur(fname)
+
+c [VS,dim,T]=fschur(A,"function")
+c [VS,dim]=fschur(A,"function")
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ character*4 JOBVS, SORT
+ integer schsel
+ external schsel
+
+ minrhs=2
+ maxrhs=2
+ minlhs=1
+ maxlhs=3
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(M.ne.N) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(N.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ return
+ else if(lhs.eq.2) then
+ if(.not.createvar(2,'d', 1, 1, lSDIM)) return
+ stk(lSDIM)=0.0d0
+ lhsvar(1)=1
+ lhsvar(2)=2
+ return
+ else if(lhs.eq.3) then
+ if(.not.createvar(2,'d', 1, 1, lSDIM)) return
+ stk(lSDIM)=0.0d0
+ if(.not.createvar(3,'d', N, N, lVS)) return
+ lhsvar(1)=1
+ lhsvar(2)=2
+ lhsvar(3)=3
+ return
+ endif
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.getrhsvar(2,'c', mr, mc, lc)) return
+ call setschsel(mr*mc, cstk(lc:lc+mr*mc),irep)
+ if ( irep.eq.1) then
+ buf = cstk(lc:lc+mr*mc)
+ call error(50)
+ return
+ endif
+
+ if(.not.createvar(3,'d', N, 1, lWR)) return
+ if(.not.createvar(4,'d', N, 1, lWI)) return
+ k = 5
+ if(lhs.gt.1) then
+ if(.not.createvar(5,'d', N, N, lVS)) return
+ k = 6
+ endif
+ if(.not.createvar(k,'i', 1, 1, lSDIM)) return
+ if(.not.createvar(k+1,'i', N, 1, lBWORK)) return
+ LWORKMIN = 3*N
+ LWORK=maxvol(k+2,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+2,'d',1,LWORKMIN,lDWORK)) return
+
+ if(lhs.eq.1) then
+ JOBVS = 'N'
+ lVS = lDWORK
+ else
+ JOBVS = 'V'
+ endif
+ SORT = 'S'
+
+ call DGEES( JOBVS, SORT, schsel, N, stk(lA), N, istk(lSDIM),
+ $ stk(lWR), stk(lWI), stk(lVS), N, stk(lDWORK), LWORK,
+ $ istk(lBWORK), INFO )
+ if(info.gt.0) then
+ if(info.le.N) then
+ call msgs(2,info)
+ elseif(info.eq.N+1) then
+ buf='eigenvalues could not be reordered (the problem '//
+ $ 'is very ill-conditioned'
+ call error(1002)
+ elseif(info.eq.N+2) then
+ call msgs(103,0)
+ endif
+ endif
+
+
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ else if(lhs.eq.2) then
+ lhsvar(1)=5
+ lhsvar(2)=6
+ else if(lhs.eq.3) then
+ lhsvar(1)=5
+ lhsvar(2)=6
+ lhsvar(3)=1
+ endif
+c
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intfschur.lo b/modules/linear_algebra/src/fortran/intfschur.lo
new file mode 100755
index 000000000..fdfbbc2df
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intfschur.lo
@@ -0,0 +1,12 @@
+# src/fortran/intfschur.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intfschur.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intgschur.f b/modules/linear_algebra/src/fortran/intgschur.f
new file mode 100755
index 000000000..04915c5bd
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intgschur.f
@@ -0,0 +1,143 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intgschur(fname)
+
+c [As,Bs,VSR,dim]=gschur(A,B,"function")
+c [VSR,dim]=gschur(A,B,"function")
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ character JOBVSL, JOBVSR, SORT
+ integer gshsel
+ external gshsel
+
+ minrhs=3
+ maxrhs=3
+ minlhs=1
+ maxlhs=4
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', MA, NA, lA)) return
+ if(MA.ne.NA) then
+ err=1
+ call error(20)
+ return
+ endif
+
+ if(.not.getrhsvar(2,'d', MB, NB, lB)) return
+ if(MB.ne.NB) then
+ err=2
+ call error(20)
+ return
+ endif
+ if(MA.ne.MB) then
+ call error(267)
+ return
+ endif
+ N = MA
+ if(N.eq.0) then
+ lhsvar(1)=1
+ if(lhs.eq.2) then
+ if(.not.createvar(2,'d', 1, 1, lSDIM)) return
+ stk(lSDIM)=0.0d0
+ lhsvar(2)=2
+ elseif(lhs.eq.3) then
+ if(.not.createvar(3,'d', 1, 1, lSDIM)) return
+ stk(lSDIM)=0.0d0
+ lhsvar(2)=2
+ lhsvar(3)=3
+ else
+ if(.not.createvar(3,'d', N, N, lVSR)) return
+ if(.not.createvar(4,'d', 1, 1, lSDIM)) return
+ stk(lSDIM)=0.0d0
+ lhsvar(2)=2
+ lhsvar(3)=3
+ lhsvar(4)=4
+ endif
+ return
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.getrhsvar(3,'c', mr, mc, lc)) return
+ call setgshsel(mr*mc, cstk(lc:lc+mr*mc),irep)
+ if ( irep.eq.1) then
+ buf = cstk(lc:lc+mr*mc)
+ call error(50)
+ return
+ endif
+
+ if(.not.createvar(4,'i', 1, 1, lSDIM)) return
+ if(.not.createvar(5,'d', N, 1, lALPHAR)) return
+ if(.not.createvar(6,'d', N, 1, lALPHAI)) return
+ if(.not.createvar(7,'d', N, 1, lBETA)) return
+ if(.not.createvar(8,'d', N, N, lVSL)) return
+ if(.not.createvar(9,'d', N, N, lVSR)) return
+ if(.not.createvar(10,'i', 2*N, 1, lBWORK)) return
+
+ LWORKMIN = 8*N+16
+ LWORK=maxvol(11,'d')
+ if(LWORK.le.LWORKMIN) then
+ err=(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(11,'d',1,LWORK,lDWORK)) return
+
+ JOBVSL = 'V'
+ JOBVSR = 'V'
+ SORT = 'S'
+c
+ call DGGES( JOBVSL, JOBVSR, SORT, gshsel, N, stk(lA), N, stk(lB),
+ $ N, istk(lSDIM), stk(lALPHAR), stk(lALPHAI), stk(lBETA),
+ $ stk(lVSL), N, stk(lVSR), N, stk(lDWORK), LWORK, istk(lBWORK),
+ $ INFO )
+c SUBROUTINE DGGES( JOBVSL, JOBVSR, SORT, DELCTG, N, A, LDA, B, LDB,
+c $ SDIM, ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, WORK,
+c $ LWORK, BWORK, INFO )
+ if(info.gt.0) then
+ if(info.le.N) then
+ call msgs(1,info)
+ elseif(info.eq.N+1) then
+ call error(24)
+ return
+ elseif(info.eq.N+2) then
+ call msgs(103,0)
+ elseif(info.eq.N+3) then
+ buf='reordering failed'
+ call error(1002)
+ return
+ endif
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1)=4
+ elseif(lhs.eq.2) then
+ lhsvar(1)=9
+ lhsvar(2)=4
+ elseif(lhs.eq.3) then
+ lhsvar(1)=8
+ lhsvar(2)=9
+ lhsvar(3)=4
+ else if(lhs.eq.4) then
+ lhsvar(1)=1
+ lhsvar(2)=2
+ lhsvar(3)=9
+ lhsvar(4)=4
+ endif
+
+ end
diff --git a/modules/linear_algebra/src/fortran/intgschur.lo b/modules/linear_algebra/src/fortran/intgschur.lo
new file mode 100755
index 000000000..1ce1b9ab0
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intgschur.lo
@@ -0,0 +1,12 @@
+# src/fortran/intgschur.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intgschur.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intogschur.f b/modules/linear_algebra/src/fortran/intogschur.f
new file mode 100755
index 000000000..0bcd1e4d9
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intogschur.f
@@ -0,0 +1,162 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intogschur(fname)
+c [dim]=gschur(A,B,function)
+c [VSR,dim]=gschur(A,B,function)
+c [VSL,VSR,dim]=gschur(A,B,function)
+c [As,Bs,VSR,dim]=gschur(A,B,function)
+c [VSR,dim]=gschur(A,B,function)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ character JOBVSL, JOBVSR, SORT
+ logical SCIGSHUR,scigchk
+ external SCIGSHUR,scigchk
+ common /scigsch/ lf, nfree, nf
+
+ minrhs=3
+ maxrhs=3
+ minlhs=1
+ maxlhs=5
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', MA, NA, lA)) return
+ if(MA.ne.NA) then
+ err=1
+ call error(20)
+ return
+ endif
+
+ if(.not.getrhsvar(2,'d', MB, NB, lB)) return
+ if(MB.ne.NB) then
+ err=2
+ call error(20)
+ return
+ endif
+ if(MA.ne.MB) then
+ call error(267)
+ return
+ endif
+ N = MA
+ if(N.eq.0) then
+ lhsvar(1)=1
+ if(lhs.eq.2) then
+ if(.not.createvar(2,'d', 1, 1, lSDIM)) return
+ stk(lSDIM)=0.0d0
+ lhsvar(2)=2
+ elseif(lhs.eq.3) then
+ if(.not.createvar(3,'d', 1, 1, lSDIM)) return
+ stk(lSDIM)=0.0d0
+ lhsvar(2)=2
+ lhsvar(3)=3
+ elseif(lhs.eq.4) then
+ if(.not.createvar(3,'d', N, N, lVSR)) return
+ if(.not.createvar(4,'d', 1, 1, lSDIM)) return
+ stk(lSDIM)=0.0d0
+ lhsvar(2)=2
+ lhsvar(3)=3
+ lhsvar(4)=4
+ else
+ if(.not.createvar(3,'d', N, N, lVSR)) return
+ if(.not.createvar(4,'d', N, N, lVSL)) return
+ if(.not.createvar(5,'d', 1, 1, lSDIM)) return
+ stk(lSDIM)=0.0d0
+ lhsvar(2)=2
+ lhsvar(3)=3
+ lhsvar(4)=4
+ lhsvar(5)=5
+ endif
+ return
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ nf=3
+ if(.not.getrhsvar(nf,'f', mlhs, mrhs, lf)) return
+ if(mlhs.ne.1 .or. mrhs.ne.2) then
+ err=nf
+ call error(80)
+ return
+ endif
+
+ if(.not.createvar(4,'i', 1, 1, lSDIM)) return
+ if(.not.createvar(5,'d', N, 1, lALPHAR)) return
+ if(.not.createvar(6,'d', N, 1, lALPHAI)) return
+ if(.not.createvar(7,'d', N, 1, lBETA)) return
+ if(.not.createvar(8,'d', N, N, lVSL)) return
+ if(.not.createvar(9,'d', N, N, lVSR)) return
+ if(.not.createvar(10,'i', 2*N, 1, lBWORK)) return
+
+c To adapt to Lapack 3.1.1
+c Old version : LWORKMIN = 7*(N+1)+16
+ LWORKMIN = MAX( 8*N, 6*N + 16 )
+ LWORK=LWORKMIN
+ if(.not.createvar(11,'d',1,LWORK,lDWORK)) return
+ nfree = 12
+
+ JOBVSL = 'V'
+ JOBVSR = 'V'
+ SORT = 'S'
+c
+ if(.not.scigchk()) return
+ call DGGES( JOBVSL, JOBVSR, SORT, SCIGSHUR, N, stk(lA), N,
+ $ stk(lB), N, istk(lSDIM), stk(lALPHAR), stk(lALPHAI),
+ $ stk(lBETA), stk(lVSL), N, stk(lVSR), N, stk(lDWORK), LWORK,
+ $ istk(lBWORK),INFO )
+
+
+c SUBROUTINE DGGES( JOBVSL, JOBVSR, SORT, DELCTG, N, A, LDA, B, LDB,
+c $ SDIM, ALPHAR, ALPHAI, BETA, VSL, LDVSL, VSR, LDVSR, WORK,
+c $ LWORK, BWORK, INFO )
+ if(info.gt.0) then
+ if(info.le.N) then
+ call msgs(1,info)
+ elseif(info.eq.N+1) then
+ call error(24)
+ return
+ elseif(info.eq.N+2) then
+ call msgs(103,0)
+ elseif(info.eq.N+3) then
+ buf='reordering failed'
+ call error(1002)
+ return
+ endif
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1)=4
+ elseif(lhs.eq.2) then
+ lhsvar(1)=9
+ lhsvar(2)=4
+ elseif(lhs.eq.3) then
+ lhsvar(1)=8
+ lhsvar(2)=9
+ lhsvar(3)=4
+ else if(lhs.eq.4) then
+ lhsvar(1)=1
+ lhsvar(2)=2
+ lhsvar(3)=9
+ lhsvar(4)=4
+ else if(lhs.eq.5) then
+ lhsvar(1)=1
+ lhsvar(2)=2
+ lhsvar(3)=8
+ lhsvar(4)=9
+ lhsvar(5)=4
+ endif
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intogschur.lo b/modules/linear_algebra/src/fortran/intogschur.lo
new file mode 100755
index 000000000..864c2b1a6
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intogschur.lo
@@ -0,0 +1,12 @@
+# src/fortran/intogschur.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intogschur.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intoschur.f b/modules/linear_algebra/src/fortran/intoschur.f
new file mode 100755
index 000000000..e1d48b929
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intoschur.f
@@ -0,0 +1,120 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intoschur(fname)
+
+c [VS,dim]=schur(A,function)
+c [VS,dim,T]=oschur(A,function)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ character*4 JOBVS, SORT
+ logical SCISCHUR,scichk
+ external SCISCHUR,scichk
+ common /scisch/ lf, nx, nf
+
+ minrhs=2
+ maxrhs=2
+ minlhs=1
+ maxlhs=3
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'d', M, N, lA)) return
+ if(M.ne.N) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(N.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ return
+ else if(lhs.eq.2) then
+ if(.not.createvar(2,'d',1,1, lSDIM)) return
+ stk(lSDIM)=0.0d0
+ lhsvar(1)=1
+ lhsvar(2)=2
+ return
+ else if(lhs.eq.3) then
+ if(.not.createvar(2,'d', 1, 1, lSDIM)) return
+ stk(lSDIM)=0.0d0
+ if(.not.createvar(3,'d', N, N, lVS)) return
+ lhsvar(1)=1
+ lhsvar(2)=2
+ lhsvar(3)=3
+ return
+ endif
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.getrhsvar(2,'f', mlhs, mrhs, lf)) return
+ if(mlhs.ne.1 .or. mrhs.ne.1) then
+ err=2
+ call error(80)
+ return
+ endif
+ if(.not.createvar(3,'d', N, 1, lWR)) return
+ if(.not.createvar(4,'d', N, 1, lWI)) return
+ k = 5
+ if(lhs.gt.1) then
+ if(.not.createvar(5,'d', N, N, lVS)) return
+ k = 6
+ endif
+ if(.not.createvar(k,'i', 1, 1, lSDIM)) return
+ if(.not.createvar(k+1,'i', N, 1, lBWORK)) return
+ LWORKMIN = 3*N
+ LWORK = LWORKMIN
+ if(.not.createvar(k+2,'d',1,LWORKMIN,lDWORK)) return
+ nx=k+3
+
+ if(lhs.eq.1) then
+ JOBVS = 'N'
+ lVS = lDWORK
+ else
+ JOBVS = 'V'
+ endif
+ SORT = 'S'
+ if(.not.scichk()) return
+ call DGEES( JOBVS, SORT, SCISCHUR, N, stk(lA), N, istk(lSDIM),
+ $ stk(lWR), stk(lWI), stk(lVS), N, stk(lDWORK), LWORK,
+ $ istk(lBWORK), INFO )
+ if(info.gt.0) then
+ if(info.le.N) then
+ call msgs(2,info)
+ elseif(info.eq.N+1) then
+ buf='eigenvalues could not be reordered (the problem '//
+ $ 'is very ill-conditioned'
+ call error(1002)
+ elseif(info.eq.N+2) then
+ call msgs(103,0)
+ endif
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ else if(lhs.eq.2) then
+ lhsvar(1)=5
+ lhsvar(2)=6
+ else if(lhs.eq.3) then
+ lhsvar(1)=5
+ lhsvar(2)=6
+ lhsvar(3)=1
+ endif
+c
+ end
+
+
diff --git a/modules/linear_algebra/src/fortran/intoschur.lo b/modules/linear_algebra/src/fortran/intoschur.lo
new file mode 100755
index 000000000..2d18cda73
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intoschur.lo
@@ -0,0 +1,12 @@
+# src/fortran/intoschur.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intoschur.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intozgschur.f b/modules/linear_algebra/src/fortran/intozgschur.f
new file mode 100755
index 000000000..491756a21
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intozgschur.f
@@ -0,0 +1,197 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intozgschur(fname)
+
+c [As,Bs,VSR,dim]=gshur(A,B,function)
+c [VS,dim]=gshur(A,B,function)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ character JOBVSL, JOBVSR, SORT
+ logical SCIZGSHR,scizgchk
+ external SCIZGSHR,scizgchk
+ common /scizgsch/ lf, nfree, nf
+
+ minrhs=3
+ maxrhs=3
+ minlhs=1
+ maxlhs=4
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', MA, NA, lA)) return
+ if(MA.ne.NA) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(.not.getrhsvar(2,'z', MB, NB, lB)) return
+ if(MB.ne.NB) then
+ err=2
+ call error(20)
+ return
+ endif
+ N = MA
+ if(N.eq.0) then
+ lhsvar(1)=1
+ lhsvar(2)=2
+ if(lhs.eq.4) then
+ if(.not.createvar(3,'z', N, N, lVSR)) return
+ if(.not.createvar(4,'d', N, N, lSDIM)) return
+ lhsvar(3)=3
+ lhsvar(4)=4
+ endif
+ return
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ nf=3
+ if(.not.getrhsvar(nf,'f', mlhs, mrhs, lf)) return
+ if(mlhs.ne.1 .or. mrhs.ne.2) then
+ err=nf
+ call error(80)
+ return
+ endif
+
+ if(.not.createvar(4,'i', 1, 1, lSDIM)) return
+ if(.not.createvar(5,'z', N, 1, lALPHA)) return
+ if(.not.createvar(6,'z', N, 1, lBETA)) return
+ if(.not.createvar(7,'z', N, N, lVSL)) return
+ if(.not.createvar(8,'z', N, N, lVSR)) return
+ if(.not.createvar(9,'d', 8*N, 1, lRWORK)) return
+ if(.not.createvar(10,'i', 2*N, 1, lBWORK)) return
+ LWORKMIN = 2*N
+ LWORK=LWORKMIN
+ if(.not.createvar(11,'z',1,LWORK,lDWORK)) return
+ nfree = 12
+
+ JOBVSL = 'V'
+ JOBVSR = 'V'
+ SORT = 'S'
+
+
+ if(.not.scizgchk()) return
+ call ZGGES( JOBVSL, JOBVSR, SORT, SCIZGSHR, N, zstk(lA), N,
+ $ zstk(lB), N, istk(lSDIM), zstk(lALPHA), zstk(lBETA),
+ $ zstk(lVSL), N, zstk(lVSR), N, zstk(lDWORK), LWORK,
+ $ stk(lRWORK), istk(lBWORK), INFO )
+c SUBROUTINE ZGGES( JOBVSL, JOBVSR, SORT, DELCTG, N, A, LDA, B, LDB,
+c $ SDIM, ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, WORK, LWORK, RWORK
+c ,
+c $ BWORK, INFO )
+ if(info.gt.0) then
+ if(info.le.N) then
+ call msgs(1,info)
+ elseif(info.eq.N+1) then
+ call error(24)
+ return
+ elseif(info.eq.N+2) then
+ call msgs(103,0)
+ elseif(info.eq.N+3) then
+ buf='reordering failed'
+ call error(1002)
+ return
+ endif
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1)=4
+ elseif(lhs.eq.2) then
+ lhsvar(1)=8
+ lhsvar(2)=4
+ elseif(lhs.eq.3) then
+ lhsvar(1)=7
+ lhsvar(2)=8
+ lhsvar(3)=4
+ else if(lhs.eq.4) then
+ lhsvar(1)=1
+ lhsvar(2)=2
+ lhsvar(3)=8
+ lhsvar(4)=4
+ endif
+c
+ end
+
+
+ logical function scizgshr(alpha,beta)
+ INCLUDE 'stack.h'
+ logical scifunction, createcvar
+ common /scizgsch/ lf, nx, nf
+ integer iadr
+ complex*16 alpha, beta
+ intrinsic dreal, dimag
+
+ iadr(l) = l+l-1
+c
+ scizgshr=.false.
+ if(.not.createcvar(nx,'d',1,1,1,lar,lai)) return
+ if(.not.createcvar(nx+1,'d',1,1,1,lbr,lbi)) return
+ lx=lar
+ stk(lar)=dreal(alpha)
+ stk(lai)=dimag(alpha)
+ stk(lbr)=dreal(beta)
+ stk(lbi)=dimag(beta)
+
+ if(.not.scifunction(nx,lf,1,2)) return
+c stk(lx)=fct([alpha,beta]) evaluated by scilab fct pointed to by
+c lf
+ ilx=iadr(lx-2)
+ if(istk(ilx).eq.1) then
+ scizgshr=(stk(lx).ne.0.0d0)
+ elseif (istk(ilx).eq.4) then
+ scizgshr=(istk(ilx+3).ne.0)
+ endif
+ return
+ end
+
+ logical function scizgchk()
+c checks fct passed to zgshur
+ INCLUDE 'stack.h'
+ logical scifunction, createcvar
+
+ integer iadr
+ common/ierinv/iero
+ common /scizgsch/ lf, nx, nf
+ iadr(l) = l+l-1
+
+ scizgchk=.false.
+ if(.not.createcvar(nx,'d',1,1,1,lar,lai)) return
+ if(.not.createcvar(nx+1,'d',1,1,1,lbr,lbi)) return
+ lx=lar
+ stk(lar)=1.0D0
+ stk(lai)=0.0d0
+ stk(lbr)=1.0D0
+ stk(lbi)=0.0d0
+ if(.not.scifunction(nx,lf,1,1)) then
+c error into fct passed to schur (zgschur(A,B,tst))
+ return
+ endif
+c check return value of fct
+ ilx=iadr(lx-2)
+ if(istk(ilx).ne.1 .and. istk(ilx).ne.4) then
+ err=nf
+ call error(268)
+ return
+ endif
+ if(istk(ilx+1)*istk(ilx+2).ne.1) then
+ err=nf
+ call error(268)
+ return
+ endif
+ scizgchk=.true.
+ return
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intozgschur.lo b/modules/linear_algebra/src/fortran/intozgschur.lo
new file mode 100755
index 000000000..85fc3abae
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intozgschur.lo
@@ -0,0 +1,12 @@
+# src/fortran/intozgschur.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intozgschur.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzdet.f b/modules/linear_algebra/src/fortran/intzdet.f
new file mode 100755
index 000000000..d51dca34e
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzdet.f
@@ -0,0 +1,96 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intzdet(fname)
+
+c det(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision ZERO, ONE, TEN, E
+ complex*16 D
+ parameter ( ZERO = 0.0D0, ONE = 1.0D0, TEN = 10.0D0 )
+c
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=2
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(M.ne.N) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(N.eq.0) then
+ lhsvar(1) = 1
+ if (lhs.eq.2) then
+ if(.not.createvar(2,'d',0,0,lL)) return
+ lhsvar(2) = 2
+ endif
+ return
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+
+ if(.not.createvar(2,'i',1,M,lIPIV)) return
+
+
+ call ZGETRF( M, N, zstk(lA), M, istk(lIPIV), INFO )
+c SUBROUTINE ZGETRF( M, N, A, LDA, IPIV, INFO )
+ if(info.lt.0) then
+ return
+ endif
+ if (lhs.eq.1) then
+ D=one
+ do 10 i=0,N-1
+ if(istk(lIPIV+i).ne.i+1 ) D=-D
+ D=D*zstk(lA+i*(M+1))
+ 10 continue
+ if(.not.createvar(1,'z',1,1,lD)) return
+ zstk(lD)=D
+ lhsvar(1)=1
+ else
+c . [e,m]=det(A)
+ D = ONE
+ E = ZERO
+ do 40 i=0,N-1
+ if(istk(lIPIV+i).ne.i+1 ) D=-D
+ D = zstk(lA+i*(M+1))*D
+ if (abs(D) .eq. ZERO) go to 50
+ 15 if (abs(D) .ge. ONE) go to 20
+ D = ten*D
+ E = E - ONE
+ go to 15
+ 20 continue
+ 25 if (abs(D) .lt. ten) go to 30
+ D = D/ten
+ E = E + ONE
+ go to 25
+ 30 continue
+ 40 continue
+ 50 continue
+ if(.not.createvar(1,'d',1,1,le)) return
+ stk(le) = E
+ if(.not.createvar(2,'z',1,1,lm)) return
+ zstk(lm) = D
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ endif
+c
+ return
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intzdet.lo b/modules/linear_algebra/src/fortran/intzdet.lo
new file mode 100755
index 000000000..30680b41b
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzdet.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzdet.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzdet.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzfschur.f b/modules/linear_algebra/src/fortran/intzfschur.f
new file mode 100755
index 000000000..cdb999262
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzfschur.f
@@ -0,0 +1,127 @@
+
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intzfschur(fname)
+c T=zfschur(A,'function')
+c [VS,dim]=zfschur(A,'function')
+c [VS,dim,T]=zfschur(A,'function')
+
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ character*4 JOBVS, SORT
+ integer zchsel
+ external zchsel
+
+ minrhs=2
+ maxrhs=2
+ minlhs=1
+ maxlhs=3
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(M.ne.N) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(N.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ return
+ else if(lhs.eq.2) then
+ if(.not.createvar(2,'z', 0, 0, lSDIM)) return
+ lhsvar(1)=1
+ lhsvar(2)=2
+ return
+ else if(lhs.eq.3) then
+ if(.not.createvar(2,'z', N, N, lVS)) return
+ if(.not.createvar(3,'i', 0, 0, lSDIM)) return
+ lhsvar(1)=2
+ lhsvar(2)=3
+ lhsvar(3)=1
+ return
+ endif
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+
+ if(.not.getrhsvar(2,'c', mr, mc, lc)) return
+ call setzchsel(mr*mc,cstk(lc:lc+mr*mc),irep)
+ if ( irep.eq.1) then
+ buf = cstk(lc:lc+mr*mc)
+ call error(50)
+ return
+ endif
+
+ if(.not.createvar(3,'z', N, 1, lW)) return
+ k = 4
+ if(lhs.gt.1) then
+ if(.not.createvar(4,'z', N, N, lVS)) return
+ k = 5
+ endif
+ if(.not.createvar(k,'i', 1, 1, lSDIM)) return
+ if(.not.createvar(k+1,'d', N, 1, lRWORK)) return
+ if(.not.createvar(k+2,'i', 2*N, 1, lBWORK)) return
+ LWORKMIN = 2*N
+ LWORK=maxvol(k+3,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+3,'z',1,LWORK,lDWORK)) return
+
+ if(lhs.eq.1) then
+ JOBVS = 'N'
+ lVS = lDWORK
+ else
+ JOBVS = 'V'
+ endif
+ SORT = 'S'
+
+ call ZGEES( JOBVS, SORT, ZCHSEL, N, zstk(lA), N, istk(lSDIM),
+ $ zstk(lW), zstk(lVS), N, zstk(lDWORK), LWORK, stk(lRWORK),
+ $ istk(lBWORK), INFO )
+c SUBROUTINE ZGEES( JOBVS, SORT, SELECT, N, A, LDA, SDIM, W,
+c $ VS, LDVS, WORK, LWORK, RWORK, BWORK, INFO )
+ if(info.gt.0) then
+ if(info.le.N) then
+ call msgs(2,info)
+ elseif(info.eq.N+1) then
+ buf='eigenvalues could not be reordered (the problem '//
+ $ 'is very ill-conditioned'
+ call error(1002)
+ elseif(info.eq.N+2) then
+ call msgs(103,0)
+ endif
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ else if(lhs.eq.2) then
+ lhsvar(1)=4
+ lhsvar(2)=5
+ else if(lhs.eq.3) then
+ lhsvar(1)=4
+ lhsvar(2)=5
+ lhsvar(3)=1
+ endif
+c
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intzfschur.lo b/modules/linear_algebra/src/fortran/intzfschur.lo
new file mode 100755
index 000000000..10e418f1c
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzfschur.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzfschur.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzfschur.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgebal.f b/modules/linear_algebra/src/fortran/intzgebal.f
new file mode 100755
index 000000000..dfbc56356
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgebal.f
@@ -0,0 +1,64 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intzgebal(fname)
+
+c [V,D]=balanc(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character JOB
+ character fname*(*)
+ double precision ZERO, ONE
+ parameter ( ZERO=0.0D0, ONE=1.0D0 )
+c
+ minrhs=1
+ maxrhs=1
+ minlhs=2
+ maxlhs=2
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(M.ne.N) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(N.eq.0) then
+ if(.not.createvar(2,'d', 0, 0, lZ)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ return
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+
+ if(.not.createvar(2,'d', N, N, lZ)) return
+ if(.not.createvar(3,'d', 1, N, lSCALE)) return
+ JOB='B'
+ call ZGEBAL( JOB, N, zstk(lA), N, ILO, IHI,stk(lSCALE),INF0)
+
+
+ call DLASET( 'F', N, N, ZERO, ONE, stk(lZ), N )
+c SUBROUTINE DGEBAK( JOB, SIDE, N, ILO, IHI, SCALE, M, V, LDV, INFO )
+ call DGEBAK( JOB, 'R', N, ILO, IHI, stk(lSCALE), N,
+ $ stk(lZ), N, INFO )
+
+ lhsvar(1)=1
+ lhsvar(2)=2
+c
+ end
+
+
diff --git a/modules/linear_algebra/src/fortran/intzgebal.lo b/modules/linear_algebra/src/fortran/intzgebal.lo
new file mode 100755
index 000000000..b83939916
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgebal.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgebal.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgebal.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgecon.f b/modules/linear_algebra/src/fortran/intzgecon.f
new file mode 100755
index 000000000..1ea3ea152
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgecon.f
@@ -0,0 +1,75 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intzgecon(fname)
+
+c rcond
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision ANORM
+ double precision zlange
+ external zlange
+c
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=1
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', MA, NA, lA)) return
+ if(MA .ne. NA) then
+ err=1
+ call error(20)
+ return
+ endif
+ N = MA
+
+ if(N.eq.0) then
+ if(.not.createvar(2,'d', 0, 0, lRCOND)) return
+ lhsvar(1) = 2
+ return
+ elseif(n.eq.-1) then
+ if(.not.createvar(2,'d', 1, 1, lRCOND)) return
+ stk(lRCOND)=1.0d0
+ lhsvar(1) = 2
+ return
+ endif
+
+ if(.not.createvar(2,'d', 1, 1, lRCOND)) return
+ if(.not.createvar(3,'i', 1, N, lIPIV)) return
+ if(.not.createvar(4,'d', 1, 2*N, lRWORK)) return
+ LWORKMIN = 2*N
+ LWORK=maxvol(5,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(5,'z',1,LWORK,lDWORK)) return
+ ANORM = zlange( '1', N, N, zstk(lA), N, zstk(lDWORK) )
+c DOUBLE PRECISION FUNCTION ZLANGE( NORM, M, N, A, LDA, WORK )
+ call ZGETRF( N, N, zstk(lA), N, istk(lIPIV), INFO )
+c SUBROUTINE ZGETRF( N, N, A, LDA, IPIV, INFO )
+ stk(lRCOND) = 0.0d0
+ if(INFO.eq.0) then
+ call ZGECON( '1', N, zstk(lA), N, ANORM, stk(lRCOND),
+ $ zstk(lDWORK), stk(lRWORK), INFO )
+c SUBROUTINE ZGECON( NORM, N, A, LDA, ANORM, RCOND, WORK,
+c $ RWORK, INFO )
+ endif
+
+ lhsvar(1) = 2
+ return
+c
+ end
diff --git a/modules/linear_algebra/src/fortran/intzgecon.lo b/modules/linear_algebra/src/fortran/intzgecon.lo
new file mode 100755
index 000000000..64c0b83e3
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgecon.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgecon.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgecon.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgees0.f b/modules/linear_algebra/src/fortran/intzgees0.f
new file mode 100755
index 000000000..84f3a8394
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgees0.f
@@ -0,0 +1,93 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intzgees0(fname)
+
+c [VS,T]=schur(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ character JOBVS, SORT
+ integer SDIM
+ logical voiddummy
+ external voiddummy
+
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=2
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(M.ne.N) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(N.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ return
+ else if(lhs.eq.2) then
+ if(.not.createvar(2, 'z', N, N, lVS)) return
+ lhsvar(1) = 2
+ lhsvar(2) = 1
+ return
+ endif
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.createvar(2,'z', N, 1, lW)) return
+ k = 3
+ if(lhs.gt.1) then
+ if(.not.createvar(3,'z', N, N, lVS)) return
+ k = 4
+ endif
+ if(.not.createvar(k,'d', N, 1, lRWORK)) return
+ if(.not.createvar(k+1,'i', N, 1, lBWORK)) return
+ LWORKMIN = 2*N
+ LWORK=maxvol(k+2,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+2,'z',1,LWORK,lDWORK)) return
+ if(lhs.eq.1) then
+ JOBVS = 'N'
+ else
+ JOBVS = 'V'
+ endif
+ SORT = 'N'
+
+ call ZGEES( JOBVS, SORT, voiddummy, N, zstk(lA), N, SDIM,
+ $ zstk(lW), zstk(lVS), N, zstk(lDWORK), LWORK, stk(lRWORK),
+ $ istk(lBWORK), INFO )
+c SUBROUTINE ZGEES( JOBVS, SORT, SELECT, N, A, LDA, SDIM, W,
+c $ VS, LDVS, WORK, LWORK, RWORK, BWORK, INFO )
+ if(info.gt.0) then
+ call msgs(2,info)
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ else
+ lhsvar(1)=3
+ lhsvar(2)=1
+ endif
+c
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intzgees0.lo b/modules/linear_algebra/src/fortran/intzgees0.lo
new file mode 100755
index 000000000..7b53c8f3b
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgees0.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgees0.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgees0.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgees1.f b/modules/linear_algebra/src/fortran/intzgees1.f
new file mode 100755
index 000000000..b7d60d94c
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgees1.f
@@ -0,0 +1,105 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intzgees1(fname)
+
+c [VS,T]=schur(A,'type')
+c type is complex
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ character TYPE, JOBVS, SORT
+ integer SDIM
+ logical voiddummy, WANTZ
+ external voiddummy
+
+ minrhs=2
+ maxrhs=2
+ minlhs=1
+ maxlhs=2
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(M.ne.N) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(N.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ return
+ else if(lhs.eq.2) then
+ if(.not.createvar(2, 'z', N, N, lVS)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ return
+ endif
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+
+ if(.not.getrhsvar(2,'c', M1, N1, lTYPE)) return
+ TYPE = cstk(lTYPE:lTYPE)
+ WANTZ = (TYPE.eq.'c' .or. TYPE.eq.'C')
+ if(.not.WANTZ) then
+ buf='schur'//': type must be complex'
+ call error(998)
+ return
+ endif
+
+ if(.not.createvar(3,'z', N, 1, lW)) return
+ k = 4
+ if(lhs.gt.1) then
+ if(.not.createvar(4,'z', N, N, lVS)) return
+ k = 5
+ endif
+ if(.not.createvar(k,'d', N, 1, lRWORK)) return
+ if(.not.createvar(k+1,'i', N, 1, lBWORK)) return
+ LWORKMIN = 2*N
+ LWORK=maxvol(k+2,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+2,'z',1,LWORK,lDWORK)) return
+ if(lhs.eq.1) then
+ JOBVS = 'N'
+ else
+ JOBVS = 'V'
+ endif
+ SORT = 'N'
+
+ call ZGEES( JOBVS, SORT, voiddummy, N, zstk(lA), N, SDIM,
+ $ zstk(lW), zstk(lVS), N, zstk(lDWORK), LWORK, stk(lRWORK),
+ $ istk(lBWORK), INFO )
+c SUBROUTINE ZGEES( JOBVS, SORT, SELECT, N, A, LDA, SDIM, W,
+c $ VS, LDVS, WORK, LWORK, RWORK, BWORK, INFO )
+ if(info.gt.0) then
+ call msgs(2,info)
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ else
+ lhsvar(1)=4
+ lhsvar(2)=1
+ endif
+c
+ end
+
+
diff --git a/modules/linear_algebra/src/fortran/intzgees1.lo b/modules/linear_algebra/src/fortran/intzgees1.lo
new file mode 100755
index 000000000..57e484f9c
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgees1.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgees1.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgees1.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgehrd.f b/modules/linear_algebra/src/fortran/intzgehrd.f
new file mode 100755
index 000000000..a46d30384
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgehrd.f
@@ -0,0 +1,101 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intzgehrd(fname)
+
+c [Q,H]=hess(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ complex*16 ZERO,ONE
+ parameter ( ZERO=(0.0D0,0.0D0), ONE=(1.0D0,0.0D0) )
+
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=2
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(M.ne.N) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(N.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ return
+ else if(lhs.eq.2) then
+ if(.not.createvar(2, 'z', N, N, lQ)) return
+ lhsvar(1)=1
+ lhsvar(2)=2
+ return
+ endif
+ elseif(N.eq.-1) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ else if(lhs.eq.2) then
+ if(.not.createvar(2,'z', N, N, lQ)) return
+ zstk(lQ)=zstk(lA)
+ zstk(lA)=ONE
+ lhsvar(1)=1
+ lhsvar(2)=2
+ endif
+ endif
+ if(.not.createvar(2,'z', N-1, 1, lTAU)) return
+ k = 3
+ if(lhs.gt.1) then
+ if(.not.createvar(3,'z', N, N, lQ)) return
+ k = 4
+ endif
+ LWORKMIN = N
+ LWORK=maxvol(k,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k,'z',1,LWORK,lDWORK)) return
+ call ZGEHRD( N, 1, N, zstk(lA), N, zstk(lTAU), zstk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE ZGEHRD( N, 1, N, A, LDA, TAU, WORK, INFO )
+
+ if(lhs.gt.1) call ZLACPY( 'F', N, N, zstk(lA), N, zstk(lQ), N )
+c SUBROUTINE ZLACPY( UPLO, N, N, A, LDA, B, LDB )
+ if(N.gt.2) then
+ do 20 j = 1, N-2
+ do 10 i = j+2, N
+ ij = i+(j-1)*N
+ zstk(lA+ij-1) = ZERO
+ 10 continue
+ 20 continue
+ endif
+
+ if(lhs.gt.1) then
+ call ZUNGHR( N, 1, N, zstk(lQ), N, zstk(lTAU), zstk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE ZUNGHR( N, 1, N, A, LDA, TAU, WORK, INFO )
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ else
+ lhsvar(1)=3
+ lhsvar(2)=1
+ endif
+c
+ end
+
+
diff --git a/modules/linear_algebra/src/fortran/intzgehrd.lo b/modules/linear_algebra/src/fortran/intzgehrd.lo
new file mode 100755
index 000000000..a0a3ce739
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgehrd.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgehrd.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgehrd.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgelsy.f b/modules/linear_algebra/src/fortran/intzgelsy.f
new file mode 100755
index 000000000..47e5a7872
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgelsy.f
@@ -0,0 +1,100 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+
+ subroutine intzgelsy(fname)
+
+c [X,rank]=lsq(A,B,rcond)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision EPS, RCOND
+ double precision dlamch
+ external dlamch
+ intrinsic sqrt
+
+ minrhs=2
+ maxrhs=3
+ minlhs=1
+ maxlhs=2
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', MA, N, lA)) return
+ if(.not.getrhsvar(2,'z', MB, NRHS, lB)) return
+
+ if(MA .ne. MB) then
+ call error(265)
+ return
+ endif
+ M = MA
+ if(M.eq.0 .or. N.eq.0) then
+ if(.not.createvar(3,'z', 0, 0, lX)) return
+ if(.not.createvar(4,'i', 0, 0, lRANK)) return
+ lhsvar(1) = 3
+ lhsvar(2) = 4
+ return
+ elseif(M.eq.-1 .or.N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(rhs.eq.2) then
+ eps = dlamch('eps')
+ rcond = sqrt(eps)
+ MR = 1
+ NR = 1
+ if(.not.createvar(3,'d', MR, NR, lRCOND)) return
+ stk(lRCOND) = RCOND
+ else
+ if(.not.getrhsvar(3,'d', MR, NR, lRCOND)) return
+ endif
+ if(MR.ne.1 .or. NR.ne.1 ) then
+ err=3
+ call error(204)
+ return
+ endif
+ if(.not.createvar(4,'z', N, NRHS, lX)) return
+ if(.not.createvar(5,'z', max(M,N), NRHS, lXB)) return
+ if(.not.createvar(6,'i', 1, 1, lRANK)) return
+ if(.not.createvar(7,'i', 1, N, lJPVT)) return
+ if(.not.createvar(8,'d', 1, 2*N, lRWORK)) return
+ LWORKMIN = min(M,N) + max( 2*min(M,N), N+1, min(M,N)+NRHS )
+ LWORK=maxvol(9,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(9,'z',1,LWORK,lDWORK)) return
+
+ call ZLACPY( 'F', M, NRHS, zstk(lB), M, zstk(lXB), max(M,N) )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, LDA, B, LDB )
+ do 10 i = 1, N
+ istk(lJPVT+i-1) = 0
+ 10 continue
+ call ZGELSY( M, N, NRHS, zstk(lA), M, zstk(lXB), max(M,N),
+ $ istk(lJPVT), stk(lRCOND), istk(lRANK), zstk(lDWORK),
+ $ LWORK, stk(lRWORK), INFO )
+c SUBROUTINE ZGELSY( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND,
+c $ RANK, WORK, LWORK, RWORK, INFO )
+ if(info.ne.0) then
+ return
+ endif
+ call ZLACPY( 'F', N, NRHS, zstk(lXB), max(M,N), zstk(lX), N )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, LDA, B, LDB )
+
+ lhsvar(1)=4
+ lhsvar(2)=6
+c
+ end
diff --git a/modules/linear_algebra/src/fortran/intzgelsy.lo b/modules/linear_algebra/src/fortran/intzgelsy.lo
new file mode 100755
index 000000000..0a2cd99e9
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgelsy.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgelsy.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgelsy.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgeqpf3.f b/modules/linear_algebra/src/fortran/intzgeqpf3.f
new file mode 100755
index 000000000..2ce522c68
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgeqpf3.f
@@ -0,0 +1,144 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intzgeqpf3(fname)
+
+c [Q,R]=qr(A)
+c [Q,R,E]=qr(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ double precision ONE, DZERO
+ parameter ( ONE=1.0D0, DZERO=0.0D0)
+ complex*16 ZERO
+ parameter ( ZERO=(0.0D0,0.0D0) )
+
+
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=3
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(M.eq.0 .or.N.eq.0) then
+ if(.not.createvar(2,'z', 0, 0, lQ)) return
+ if(.not.createvar(3,'z', 0, 0, lR)) return
+ if(lhs.gt.2) then
+ if(.not.createvar(4,'d', 0, 0, lE)) return
+ endif
+ lhsvar(1) = 2
+ lhsvar(2) = 3
+ if(lhs.gt.2) then
+ lhsvar(3) = 4
+ endif
+ return
+ elseif(M.eq.-1 .or.N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.createvar(2,'z', M, M, lQ)) return
+ if(.not.createvar(3,'z', M, N, lR)) return
+ k=4
+ if(lhs.gt.2) then
+ if(.not.createvar(4,'d', N, N, lE)) return
+ if(.not.createvar(5,'i', 1, N, lJPVT)) return
+ k=6
+ endif
+ if(.not.createvar(k,'z', 1, min(M,N), lTAU)) return
+ if(.not.createvar(k+1,'d', 1, 2*N, lRWORK)) return
+ LWORKMIN = N
+ LWORK=maxvol(k+2,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+2,'z', 1, LWORK, lDWORK)) return
+
+ if(lhs.le.2) then
+ call ZGEQRF( M, N, zstk(lA), M, zstk(lTAU), zstk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE ZGEQRF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+ else
+ do 5 i = 1, N
+ istk(lJPVT+i-1) = 0
+ 5 continue
+ call ZGEQPF( M, N, zstk(lA), M, istk(lJPVT), zstk(lTAU),
+ $ zstk(lDWORK), stk(lRWORK), INFO )
+c SUBROUTINE ZGEQPF( M, N, A, LDA, JPVT, TAU, WORK, RWORK, INFO )
+ endif
+ if(info.ne.0) then
+ return
+ endif
+
+ call ZLACPY( 'U', M, N, zstk(lA), M, zstk(lR), M )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, B, LDB )
+c if(N.ge.2) then
+ if(M.gt.N) then
+ do 20 j = 1, N
+ do 10 i = j+1, M
+ ij = i+(j-1)*M
+ zstk(lR+ij-1) = ZERO
+ 10 continue
+ 20 continue
+ else
+ do 40 j = 1, M-1
+ do 30 i = j+1, M
+ ij = i+(j-1)*M
+ zstk(lR+ij-1) = ZERO
+ 30 continue
+ 40 continue
+ endif
+c endif
+
+ if(M.gt.N) then
+ call ZLACPY( 'F', M, N, zstk(lA), M, zstk(lQ), M )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, LDA, B, LDB )
+ do 60 j = N+1, M
+ do 50 i = 1, M
+ ij = i+(j-1)*M
+ zstk(lQ+ij-1) = ZERO
+ 50 continue
+ 60 continue
+ else
+ call ZLACPY( 'F', M, M, zstk(lA), M, zstk(lQ), M )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, B, LDB )
+ endif
+ call ZUNGQR( M, M, min(M,N), zstk(lQ), M, zstk(lTAU),
+ $ zstk(lDWORK), LWORK, INFO )
+c SUBROUTINE ZUNGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
+
+ if(lhs.gt.2) then
+ call DLASET( 'F', N, N, DZERO, DZERO, stk(lE), N )
+c SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+ do 70 j = 1, N
+ i = istk(lJPVT+j-1)
+ ij = i + (j-1)*N
+ stk(lE+ij-1) = ONE
+ 70 continue
+ endif
+
+ if(lhs.le.2) then
+ lhsvar(1)=2
+ lhsvar(2)=3
+ else
+ lhsvar(1)=2
+ lhsvar(2)=3
+ lhsvar(3)=4
+ endif
+c
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intzgeqpf3.lo b/modules/linear_algebra/src/fortran/intzgeqpf3.lo
new file mode 100755
index 000000000..11871e068
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgeqpf3.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgeqpf3.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgeqpf3.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgeqpf4.f b/modules/linear_algebra/src/fortran/intzgeqpf4.f
new file mode 100755
index 000000000..960eaefbb
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgeqpf4.f
@@ -0,0 +1,129 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intzgeqpf4(fname)
+
+c [Q,R]=qr(A,'e')
+c [Q,R,E]=qr(A,'e')
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ double precision ONE, DZERO
+ parameter ( ONE=1.0D0, DZERO=0.0D0)
+ complex*16 ZERO
+ parameter ( ZERO=(0.0D0,0.0D0) )
+
+
+ minrhs=2
+ maxrhs=2
+ minlhs=1
+ maxlhs=3
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(M.eq.0 .or. N.eq.0) then
+ if(.not.createvar(2,'z', 0, 0, lQ)) return
+ if(.not.createvar(3,'z', 0, 0, lR)) return
+ if(lhs.gt.2) then
+ if(.not.createvar(4,'d', 0, 0, lE)) return
+ endif
+ lhsvar(1)=2
+ lhsvar(2)=3
+ if(lhs.gt.2) then
+ lhsvar(3)=4
+ endif
+ return
+ elseif(M.eq.-1 .or.N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.createvar(2,'z', M, min(M,N), lQ)) return
+ if(.not.createvar(3,'z', min(M,N), N, lR)) return
+ k=4
+ if(lhs.gt.2) then
+ if(.not.createvar(4,'d', N, N, lE)) return
+ if(.not.createvar(5,'i', 1, N, lJPVT)) return
+ k=6
+ endif
+ if(.not.createvar(k,'z', 1, min(M,N), lTAU)) return
+ if(.not.createvar(k+1,'d', 1, 2*N, lRWORK)) return
+ LWORKMIN = N
+ LWORK=maxvol(k+2,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+2,'z', 1, LWORK, lDWORK)) return
+
+
+ if(lhs.le.2) then
+ call ZGEQRF( M, N, zstk(lA), M, zstk(lTAU), zstk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE ZGEQRF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+ else
+ do 5 i = 1, N
+ istk(lJPVT+i-1) = 0
+ 5 continue
+ call ZGEQPF( M, N, zstk(lA), M, istk(lJPVT), zstk(lTAU),
+ $ zstk(lDWORK), stk(lRWORK), INFO )
+c SUBROUTINE ZGEQPF( M, N, A, LDA, JPVT, TAU, WORK, RWORK, INFO )
+ endif
+ if(info.ne.0) then
+ return
+ endif
+
+ call ZLACPY( 'U', min(M,N), N, zstk(lA), M, zstk(lR), min(M,N)
+ $ )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, B, LDB )
+ if(N.ge.2) then
+ do 20 j = 1, N-1
+ if(j+1.le.min(M,N)) then
+ do 10 i = j+1, min(M,N)
+ ij = i+(j-1)*min(M,N)
+ zstk(lR+ij-1) = ZERO
+ 10 continue
+ endif
+ 20 continue
+ endif
+
+ call ZLACPY( 'F', M, min(M,N), zstk(lA), M, zstk(lQ), M )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, B, LDB )
+ call ZUNGQR( M, min(M,N), min(M,N), zstk(lQ), M, zstk(lTAU),
+ $ zstk(lDWORK), LWORK, INFO )
+c SUBROUTINE ZUNGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
+
+ if(lhs.gt.2) then
+ call DLASET( 'F', N, N, DZERO, DZERO, stk(lE), N )
+c SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+ do 30 j = 1, N
+ i = istk(lJPVT+j-1)
+ ij = i + (j-1)*N
+ stk(lE+ij-1) = ONE
+ 30 continue
+ endif
+
+ if(lhs.le.2) then
+ lhsvar(1)=2
+ lhsvar(2)=3
+ else
+ lhsvar(1)=2
+ lhsvar(2)=3
+ lhsvar(3)=4
+ endif
+c
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intzgeqpf4.lo b/modules/linear_algebra/src/fortran/intzgeqpf4.lo
new file mode 100755
index 000000000..f59258779
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgeqpf4.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgeqpf4.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgeqpf4.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgesv3.f b/modules/linear_algebra/src/fortran/intzgesv3.f
new file mode 100755
index 000000000..9a397f7af
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgesv3.f
@@ -0,0 +1,142 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intzgesv3(fname)
+
+c a\b
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision ANORM, EPS, RCOND
+ double precision dlamch, zlange
+ double precision RCOND_thresh
+ integer vfinite
+ external dlamch, zlange, vfinite
+ intrinsic sqrt
+c
+ minrhs=2
+ maxrhs=2
+ minlhs=1
+ maxlhs=1
+
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', MA, NA, lA)) return
+ if(.not.getrhsvar(2,'z', MB, NRHS, lB)) return
+ if(MB.eq.0) then
+ lhsvar(1) = 2
+ return
+ endif
+ if(MA .ne. MB) then
+ call error(265)
+ return
+ endif
+ M = MA
+ N = NA
+ if(M.eq.0 .or. N.eq.0) then
+ if(.not.createvar(3,'z', 0, 0, lX)) return
+ lhsvar(1) = 3
+ return
+ endif
+c Check if A and B matrices contains Inf or NaN's
+ if (vfinite(M*N*2, zstk(lA)).eq.0) then
+ call error(229)
+ return
+ endif
+ if (vfinite(MB*NRHS*2, zstk(lB)).eq.0) then
+ call error(229)
+ return
+ endif
+
+ if(.not.createvar(3,'z', M, N, lAF)) return
+ if(.not.createvar(4,'z', N, NRHS, lX)) return
+ if(.not.createvar(5,'z', max(M,N), NRHS, lXB)) return
+ if(.not.createvar(6,'i', 1, 1, lRANK)) return
+ if(.not.createvar(7,'i', 1, N, lIPIV)) return
+ if(.not.createvar(8,'i', 1, N, lJPVT)) return
+ if(.not.createvar(9,'d',1,2*N,lRWORK)) return
+ LWORKMIN = max( 2*N, min(M,N)+max( 2*min(M,N), N+1,
+ $ min(M,N)+NRHS ) )
+ LWORK=maxvol(10,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(10,'z',1,LWORK,lDWORK)) return
+
+ EPS = dlamch('eps')
+ RCOND_thresh=EPS*10
+ ANORM = zlange( '1', M, N, zstk(lA), M, zstk(lDWORK) )
+c
+ if(M.eq.N) then
+c
+c M = N
+c
+ call ZLACPY( 'F', N, N, zstk(lA), N, zstk(lAF), N )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, LDA, B, LDB )
+ call ZLACPY( 'F', N, NRHS, zstk(lB), N, zstk(lXB), N )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, LDA, B, LDB )
+ call ZGETRF( N, N, zstk(lAF), N, istk(lIPIV), INFO )
+c SUBROUTINE ZGETRF( N, N, A, LDA, IPIV, INFO )
+ if(INFO.eq.0) then
+ call ZGECON( '1', N, zstk(lAF), N, ANORM, RCOND,
+ $ zstk(lDWORK), stk(lRWORK), INFO )
+c SUBROUTINE ZGECON( NORM, N, A, LDA, ANORM, RCOND, WORK,
+c $ RWORK, INFO )
+ if(RCOND.gt.RCOND_thresh) then
+ call ZGETRS( 'N', N, NRHS, zstk(lAF), N, istk(lIPIV),
+ $ zstk(lXB), N, INFO )
+c SUBROUTINE ZGETRS( TRANS, N, NRHS, A, LDA, IPIV,
+c B, LDB, INFO )
+ call ZLACPY( 'F', N, NRHS, zstk(lXB), N, zstk(lX), N )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, LDA, B, LDB )
+ lhsvar(1) = 4
+ return
+ else
+c . ill conditioned problem
+ call writebufzgesv3(buf,RCOND)
+ call msgs(5,1)
+ endif
+ endif
+ endif
+c
+c M.ne.N or A singular
+c
+ RCOND = RCOND_thresh
+ call ZLACPY( 'F', M, NRHS, zstk(lB), M, zstk(lXB), max(M,N) )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, LDA, B, LDB )
+ do 10 i = 1, N
+ istk(lJPVT+i-1) = 0
+ 10 continue
+ info = 1
+ call ZGELSY1( M, N, NRHS, zstk(lA), M, zstk(lXB), max(M,N),
+ $ istk(lJPVT), RCOND, istk(lRANK), zstk(lDWORK),
+ $ LWORK, stk(lRWORK), INFO )
+c SUBROUTINE ZGELSY1( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND,
+c $ RANK, WORK, LWORK, RWORK, INFO )
+ if(info.ne.0) then
+ return
+ endif
+ if( M.ne.N .and. istk(lRANK).lt.min(M,N) )then
+ call msgs(9,istk(lRANK))
+ endif
+ call ZLACPY( 'F', N, NRHS, zstk(lXB), max(M,N), zstk(lX), N )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, LDA, B, LDB )
+
+ lhsvar(1)=4
+ return
+c
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intzgesv3.lo b/modules/linear_algebra/src/fortran/intzgesv3.lo
new file mode 100755
index 000000000..bf68832cf
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgesv3.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgesv3.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgesv3.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgesv4.f b/modules/linear_algebra/src/fortran/intzgesv4.f
new file mode 100755
index 000000000..10923893e
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgesv4.f
@@ -0,0 +1,173 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c Copyright (C) 2013 - Michael Baudin
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intzgesv4(fname)
+
+c a/b
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision ANORM, EPS, RCOND
+ double precision RCONDthresh
+ double precision dlamch, zlange
+ integer vfinite
+ external dlamch, zlange, vfinite
+ intrinsic conjg, sqrt
+c
+ minrhs=2
+ maxrhs=2
+ minlhs=1
+ maxlhs=1
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+
+ if(.not.getrhsvar(1,'z', MB, NB, lB)) return
+ if(.not.getrhsvar(2,'z', MA, NA, lA)) return
+ if(MB .eq. 0) then
+c . for backwar compatibility
+ lhsvar(1) = 1
+ return
+ endif
+ if(NA .ne. NB) then
+ call error(266)
+ return
+ endif
+ M = MA
+ N = NA
+ K = MB
+ if(M.eq.0 .or. N.eq.0) then
+ if(.not.createvar(3,'z', 0, 0, lX)) return
+ lhsvar(1) = 3
+ return
+ endif
+c Check if A and B matrices contains Inf or NaN's
+ if (vfinite(M*N*2, zstk(lA)).eq.0) then
+ call error(229)
+ return
+ endif
+ if (vfinite(MB*NB*2, zstk(lB)).eq.0) then
+ call error(229)
+ return
+ endif
+ if(.not.createvar(3,'z', N, M, lAF)) return
+ if(.not.createvar(4,'z', K, M, lX)) return
+ if(.not.createvar(5,'z', N, M, lAT)) return
+ if(.not.createvar(6,'z', max(M,N), K, lBT)) return
+ if(.not.createvar(7,'i', 1, 1, lRANK)) return
+ if(.not.createvar(8,'i', 1, N, lIPIV)) return
+ if(.not.createvar(9,'i', 1, M, lJPVT)) return
+ if(.not.createvar(10,'d',1,2*M,lRWORK)) return
+ LWORKMIN = max( 2*N, min(M,N)+max( 2*min(M,N), M+1,
+ $ min(M,N)+K ))
+ LWORK=maxvol(11,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(11,'z',1,LWORK,lDWORK)) return
+ EPS = dlamch('eps')
+ RCOND_thresh=EPS*10
+ ANORM = zlange( '1', M, N, zstk(lA), M, zstk(lDWORK) )
+c
+c Transpose A and B
+c
+ do 20 j = 1, M
+ do 10 i = 1, N
+ ij = i+(j-1)*N
+ ji = j+(i-1)*M
+ zstk(lAT+ij-1) = conjg( zstk(lA+ji-1) )
+ 10 continue
+ 20 continue
+ do 40 j = 1, K
+ do 30 i = 1, N
+ ij = i+(j-1)*max(M,N)
+ ji = j+(i-1)*K
+ zstk(lBT+ij-1) = conjg( zstk(lB+ji-1) )
+ 30 continue
+ 40 continue
+c
+ if(M.eq.N) then
+c
+c M = N
+c
+ call ZLACPY( 'F', N, N, zstk(lAT), N, zstk(lAF), N )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, LDA, B, LDB )
+ call ZGETRF( N, N, zstk(lAF), N, istk(lIPIV), INFO )
+c SUBROUTINE ZGETRF( N, N, A, LDA, IPIV, INFO )
+ RCOND = 0.0d0
+ if(INFO.eq.0) then
+ call ZGECON( '1', N, zstk(lAF), N, ANORM, RCOND,
+ $ zstk(lDWORK), stk(lRWORK), INFO )
+c SUBROUTINE ZGECON( NORM, N, A, LDA, ANORM, RCOND, WORK,
+c $ RWORK, INFO )
+ if(RCOND.gt.RCOND_thresh) then
+ call ZGETRS( 'N', N, K, zstk(lAF), N, istk(lIPIV),
+ $ zstk(lBT), N, INFO )
+c SUBROUTINE ZGETRS( TRANS, N, NRHS, A, LDA, IPIV,
+c B, LDB, INFO )
+c
+c Back transpose X
+c
+ do 60 j = 1, N
+ do 50 i = 1, K
+ ij = i+(j-1)*K
+ ji = j+(i-1)*N
+ zstk(lX+ij-1) = conjg( zstk(lBT+ji-1) )
+ 50 continue
+ 60 continue
+ lhsvar(1) = 4
+ return
+ endif
+ endif
+ call writebufzgesv4(buf,RCOND)
+c . ill conditionned problem
+ call msgs(5,1)
+ endif
+c
+c M.ne.N or A singular
+c
+ RCOND = RCOND_thresh
+ do 70 i = 1, M
+ istk(lJPVT+i-1) = 0
+ 70 continue
+ info = 1
+ call ZGELSY1( N, M, K, zstk(lAT), N, zstk(lBT), max(M,N),
+ $ istk(lJPVT), RCOND, istk(lRANK), zstk(lDWORK),
+ $ LWORK, stk(lRWORK), INFO )
+c SUBROUTINE ZGELSY1( M, N, NRHS, A, LDA, B, LDB, JPVT, RCOND,
+c $ RANK, WORK, LWORK, RWORK, INFO )
+ if(info.ne.0) then
+ return
+ endif
+ if( M.ne.N .and. istk(lRANK).lt.min(M,N) )then
+ call msgs(9,istk(lRANK))
+ endif
+c
+c Back transpose X
+c
+ do 90 j = 1, M
+ do 80 i = 1, K
+ ij = i+(j-1)*K
+ ji = j+(i-1)*max(M,N)
+ zstk(lX+ij-1) = conjg( zstk(lBT+ji-1) )
+ 80 continue
+ 90 continue
+
+ lhsvar(1)=4
+ return
+c
+ end
+
+
diff --git a/modules/linear_algebra/src/fortran/intzgesv4.lo b/modules/linear_algebra/src/fortran/intzgesv4.lo
new file mode 100755
index 000000000..b665c5536
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgesv4.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgesv4.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgesv4.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgesvd1.f b/modules/linear_algebra/src/fortran/intzgesvd1.f
new file mode 100755
index 000000000..34736b5f3
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgesvd1.f
@@ -0,0 +1,138 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intzgesvd1(fname)
+
+c [U,S,V]=svd(A)
+c s = svd(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ integer vfinite
+
+ character fname*(*)
+ character JOBU, JOBVT
+ double precision ZERO
+ complex*16 void
+
+ parameter ( ZERO=0.0D0 )
+ intrinsic conjg
+
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=3
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(M.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ return
+ else if(lhs.eq.2) then
+ if(.not.createvar(2,'d', N, N, lS)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ return
+ else if(lhs.eq.3) then
+ if(.not.createvar(2,'d', M, N, lS)) return
+ if(.not.createvar(3,'d', N, N, lV)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ lhsvar(3) = 3
+ return
+ endif
+ elseif(M.eq.-1 .or.N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(vfinite(M*N*2,zstk(lA)).eq.0) then
+ err=1
+ call error(264)
+ return
+ endif
+ if(.not.createvar(2,'d', min(M,N), 1, lSV)) return
+ k = 3
+ if(lhs.gt.1) then
+ if(.not.createvar(3,'z', M, M, lU)) return
+ if(.not.createvar(4,'d', M, N, lS)) return
+ if(.not.createvar(5,'z', N, N, lV)) return
+ if(.not.createvar(6,'z', N, N, lVT)) return
+ k = 7
+ endif
+ LRWRK = max(3*min(M,N),5*min(M,N)-4)
+ if(.not.createvar(k,'d',1,LRWRK,lRWORK)) return
+ LWORKMIN = 2*min(M,N)+max(M,N)
+ LWORK=maxvol(k+1,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+1,'z',1,LWORK,lDWORK)) return
+
+ JOBU = 'N'
+ JOBVT = 'N'
+ if(lhs.gt.1) then
+ JOBU = 'A'
+ JOBVT = 'A'
+ endif
+ if(lhs.eq.1) then
+ call ZGESVD( JOBU, JOBVT, M, N, zstk(lA), M, stk(lSV), void
+ $ ,M, void, N, zstk(lDWORK), LWORK, stk(lRWORK), INFO )
+c SUBROUTINE ZGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT,
+C $ LDVT, WORK, LWORK, RWORK, INFO )
+C Next lines introduced to patch an error of ZGESVD
+ do 01 ii = 0,min(M,N)-1
+ stk(lSV+ii)=abs(stk(lSV+ii))
+ 01 continue
+ call DLASRT('D', min(M,N), stk(lSV), INFO )
+ else
+ call ZGESVD( JOBU, JOBVT, M, N, zstk(lA), M, stk(lSV), zstk(lU)
+ $ ,M, zstk(lVT), N, zstk(lDWORK), LWORK, stk(lRWORK), INFO )
+c SUBROUTINE ZGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT,
+C $ LDVT, WORK, LWORK, RWORK, INFO )
+ endif
+ if(info.ne.0) then
+ if(info.gt.0) call error(24)
+ return
+ endif
+
+ if(lhs.gt.1) then
+ call DLASET( 'F', M, N, ZERO, ZERO, stk(lS), M )
+c SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+
+ do 10 i = 1, min(M,N)
+ ii = i+(i-1)*M
+ stk(lS+ii-1) = stk(lSV+i-1)
+ 10 continue
+ do 30 j = 1, N
+ do 20 i = j, N
+ ij = i+(j-1)*N
+ ji = j+(i-1)*N
+ zstk(lV+ij-1) = conjg(zstk(lVT+ji-1))
+ zstk(lV+ji-1) = conjg(zstk(lVT+ij-1))
+ 20 continue
+ 30 continue
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1) = 2
+ else
+ lhsvar(1)=3
+ lhsvar(2)=4
+ lhsvar(3)=5
+ endif
+c
+ end
diff --git a/modules/linear_algebra/src/fortran/intzgesvd1.lo b/modules/linear_algebra/src/fortran/intzgesvd1.lo
new file mode 100755
index 000000000..5c2adbdf3
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgesvd1.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgesvd1.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgesvd1.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgesvd2.f b/modules/linear_algebra/src/fortran/intzgesvd2.f
new file mode 100755
index 000000000..1c8d16b52
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgesvd2.f
@@ -0,0 +1,137 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intzgesvd2(fname)
+
+c [U,S,V]=svd(A)
+c s = svd(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ integer vfinite
+
+ character fname*(*)
+ character JOBU, JOBVT
+ double precision ZERO
+ parameter ( ZERO=0.0D0 )
+ intrinsic conjg
+
+ minrhs=2
+ maxrhs=2
+ minlhs=1
+ maxlhs=3
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(M.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ return
+ else if(lhs.eq.2) then
+ if(.not.createvar(2,'d', N, N, lS)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ return
+ else if(lhs.eq.3) then
+ if(.not.createvar(2,'d', M, N, lS)) return
+ if(.not.createvar(3,'d', N, N, lV)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ lhsvar(3) = 3
+ return
+ endif
+ elseif(M.eq.-1 .or.N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(vfinite(M*N*2,zstk(lA)).eq.0) then
+ err=1
+ call error(264)
+ return
+ endif
+ if(.not.createvar(2,'d', min(M,N), 1, lSV)) return
+ k = 3
+ if(lhs.gt.1) then
+ if(.not.createvar(3,'z', M, min(M,N), lU)) return
+ if(.not.createvar(4,'d', min(M,N), min(M,N), lS)) return
+ if(.not.createvar(5,'z', N, min(M,N), lV)) return
+ if(.not.createvar(6,'z', min(M,N), N, lVT)) return
+ k = 7
+ endif
+ LRWRK = 5*min(M,N)
+ if(.not.createvar(k,'d',1,LRWRK,lRWORK)) return
+ LWORKMIN = 2*min(M,N)+max(M,N)
+ LWORK=maxvol(k+1,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+1,'z',1,LWORK,lDWORK)) return
+
+ JOBU = 'N'
+ JOBVT = 'N'
+ if(lhs.gt.1) then
+ JOBU = 'S'
+ JOBVT = 'S'
+ endif
+ if(lhs.eq.1) then
+ call ZGESVD( JOBU, JOBVT, M, N, zstk(lA), M, stk(lSV), zstk(lA)
+ $ ,M, zstk(lA), N, zstk(lDWORK), LWORK, stk(lRWORK), INFO )
+c SUBROUTINE ZGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT,
+C $ LDVT, WORK, LWORK, RWORK, INFO )
+C Next lines introduced to patch an error of ZGESVD
+ do 01 ii = 0,min(M,N)-1
+ stk(lSV+ii)=abs(stk(lSV+ii))
+ 01 continue
+ call DLASRT('D', min(M,N), stk(lSV), INFO )
+ else
+ call ZGESVD( JOBU, JOBVT, M, N, zstk(lA), M, stk(lSV), zstk(lU)
+ $ ,M, zstk(lVT), min(M,N), zstk(lDWORK), LWORK, stk(lRWORK)
+ $ ,INFO )
+c SUBROUTINE ZGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT,
+C $ LDVT, WORK, LWORK, RWORK, INFO )
+ endif
+ if(info.ne.0) then
+ if(info.gt.0) call error(24)
+ return
+ endif
+
+ if(lhs.gt.1) then
+ call DLASET( 'F', min(M,N), min(M,N), ZERO, ZERO, stk(lS),
+ $ min(M,N) )
+c SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+
+ do 10 i = 1, min(M,N)
+ ii = i+(i-1)*min(M,N)
+ stk(lS+ii-1) = stk(lSV+i-1)
+ 10 continue
+ do 30 j = 1, min(M,N)
+ do 20 i = 1, N
+ ij = i+(j-1)*N
+ ji = j+(i-1)*min(M,N)
+ zstk(lV+ij-1) = conjg(zstk(lVT+ji-1))
+ 20 continue
+ 30 continue
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1) = 2
+ else
+ lhsvar(1)=3
+ lhsvar(2)=4
+ lhsvar(3)=5
+ endif
+c
+ end
diff --git a/modules/linear_algebra/src/fortran/intzgesvd2.lo b/modules/linear_algebra/src/fortran/intzgesvd2.lo
new file mode 100755
index 000000000..37501bf5f
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgesvd2.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgesvd2.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgesvd2.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgetrf.f b/modules/linear_algebra/src/fortran/intzgetrf.f
new file mode 100755
index 000000000..d5cacce20
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgetrf.f
@@ -0,0 +1,126 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intzgetrf(fname)
+
+c [L,U,E] = lu(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ character fname*(*)
+ double precision ZERO, ONE
+ parameter ( ZERO = 0.0D0, ONE = 1.0D0 )
+ complex*16 CZERO, CONE
+ parameter ( CZERO = (0.0D0,0.0D0), CONE = (1.0D0,0.0D0) )
+c
+ minrhs=1
+ maxrhs=1
+ minlhs=2
+ maxlhs=3
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(M.eq.0 .or.N.eq.0) then
+ lhsvar(1) = 1
+ if(.not.createvar(2,'d',0,0,lL)) return
+ lhsvar(2) = 2
+ if(lhs.eq.3) then
+ if(.not.createvar(3,'d',0,0,lE)) return
+ lhsvar(3) = 3
+ endif
+ return
+ elseif (M.eq.-1 .or.N.eq.-1) then
+ lhsvar(1) = 1
+ if(.not.createvar(2,'z',-1,-1,lL)) return
+ zstk(lL)=zstk(lA)
+ zstk(lA)=CONE
+ lhsvar(2) = 2
+ if(lhs.eq.3) then
+ if(.not.createvar(3,'z',-1,-1,lE)) return
+ zstk(lE)=CONE
+ lhsvar(3) = 3
+ endif
+ return
+ endif
+ if(.not.createvar(2,'z',M,min(M,N),lL)) return
+ if(.not.createvar(3,'z',min(M,N),N,lU)) return
+ if(.not.createvar(4,'i',1,min(M,N),lIPIV)) return
+ if(.not.createvar(5,'d',M,M,lE)) return
+ if(lhs.eq.2) then
+ if(.not.createvar(6,'i',1,M,lIW)) return
+ if(.not.createvar(7,'z',M,min(M,N),lW)) return
+ endif
+
+ call ZGETRF( M, N, zstk(lA), M, istk(lIPIV), INFO )
+c SUBROUTINE ZGETRF( M, N, A, LDA, IPIV, INFO )
+ if(info.lt.0) then
+ return
+ endif
+
+ do 20 j=1,min(M,N)
+ do 10 i=1,M
+ ij = i+(j-1)*M
+ if(i.eq.j) then
+ zstk(lL+ij-1) = CONE
+ else if(i.gt.j) then
+ zstk(lL+ij-1) = zstk(lA+ij-1)
+ else if(i.lt.j) then
+ zstk(lL+ij-1) = CZERO
+ endif
+ 10 continue
+ 20 continue
+ do 40 j=1,N
+ do 30 i=1,min(M,N)
+ ij1 = i+(j-1)*min(M,N)
+ ij2 = i+(j-1)*M
+ if(i.gt.j) then
+ zstk(lU+ij1-1) = CZERO
+ else if(i.le.j) then
+ zstk(lU+ij1-1) = zstk(lA+ij2-1)
+ endif
+ 30 continue
+ 40 continue
+
+ if(lhs.eq.2) then
+c form E'*L
+ do 41 i = 1, M
+ istk(lIW-1+i)=i
+ 41 continue
+ do 42 i = 1, min(M,N)
+ ip = istk(lIPIV-1+i)
+ if( ip.ne.i ) then
+ iw=istk(lIw-1+i)
+ istk(lIW-1+i)=istk(lIW-1+ip)
+ istk(lIW-1+ip)=iw
+ endif
+ 42 continue
+ do 43 i= 1, M
+ ip =istk(lIW-1+i)
+ call zcopy(N,zstk(lL-1+i),M,zstk(lW-1+ip),M)
+ 43 continue
+ lhsvar(1)=7
+ lhsvar(2)=3
+ else
+ call DLASET( 'F', M, M, ZERO, ONE, stk(lE), M )
+c SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+ call DLASWP( M, stk(lE), M, 1, min(M,N), istk(lIPIV), 1 )
+c SUBROUTINE DLASWP( N, A, LDA, K1, K2, IPIV, INCX )
+ lhsvar(1)=2
+ lhsvar(2)=3
+ lhsvar(3)=5
+ endif
+
+
+
+c
+ return
+ end
diff --git a/modules/linear_algebra/src/fortran/intzgetrf.lo b/modules/linear_algebra/src/fortran/intzgetrf.lo
new file mode 100755
index 000000000..55290777a
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgetrf.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgetrf.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgetrf.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgetri.f b/modules/linear_algebra/src/fortran/intzgetri.f
new file mode 100755
index 000000000..99ab1f209
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgetri.f
@@ -0,0 +1,84 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intzgetri(fname)
+
+c B = inv(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+ double precision zlange,dlamch,rcond,anorm
+ external zlange,dlamch
+
+ character fname*(*)
+c
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=1
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(m.ne.n) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(n.eq.0) then
+ lhsvar(1) = 1
+ return
+
+ elseif(n.eq.-1) then
+ stk(lA)=1.0d0/stk(lA)
+ lhsvar(1) = 1
+ return
+ endif
+ if(.not.createvar(2,'i',1,N,lIPIV)) return
+ if(.not.createvar(3,'d',1,2*N,lRWORK)) return
+ LWORKMIN = MAX(1,2*N)
+ LWORK=maxvol(4,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(4,'z',1,LWORK,lDWORK)) return
+
+ ANORM = zlange( '1', M, N, zstk(lA), M, zstk(lDWORK) )
+
+ call ZGETRF( N, N, zstk(lA), N, istk(lIPIV), INFO )
+c SUBROUTINE ZGETRF( M, N, A, LDA, IPIV, INFO )
+ if(info.gt.0) then
+ call error(19)
+ return
+ elseif (info.lt.0) then
+ return
+ endif
+ RCOND = 0.0d0
+
+ call ZGECON( '1', N, zstk(lA), N, ANORM, RCOND, zstk(lDWORK),
+ $ stk(lRWORK), INFO )
+ if(RCOND.le.sqrt(dlamch('eps'))) then
+ call writebufzgetri(buf,RCOND)
+c . ill conditionned problem
+ call msgs(5,0)
+ endif
+
+ call ZGETRI( N, zstk(lA), N, istk(lIPIV), zstk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE ZGETRI( N, A, LDA, IPIV, WORK, LWORK, INFO )
+
+ lhsvar(1)=1
+
+c
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intzgetri.lo b/modules/linear_algebra/src/fortran/intzgetri.lo
new file mode 100755
index 000000000..040b929ca
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgetri.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgetri.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgetri.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzggbal.f b/modules/linear_algebra/src/fortran/intzggbal.f
new file mode 100755
index 000000000..9560fe5c8
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzggbal.f
@@ -0,0 +1,89 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intzggbal(fname)
+c [Ab,Bb,X,Y]=balanc(A,B)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+c integer vfinite
+ character JOB
+
+ character fname*(*)
+ double precision ZERO, ONE
+ parameter ( ZERO=0.0D0, ONE=1.0D0 )
+
+ minrhs=2
+ maxrhs=2
+ minlhs=4
+ maxlhs=4
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', MA, NA, lA)) return
+ if(MA.ne.NA) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(.not.getrhsvar(2,'z', MB, NB, lB)) return
+ if(MB.ne.NB) then
+ err=2
+ call error(20)
+ return
+ endif
+ if(MA.ne.NB) then
+ call error(267)
+ return
+ endif
+ N = MA
+ if(N.eq.0) then
+ if(.not.createvar(3,'d', N, N, lX)) return
+ if(.not.createvar(4,'d', N, N, lY)) return
+ lhsvar(1)=1
+ lhsvar(2)=2
+ lhsvar(3)=3
+ lhsvar(4)=4
+ return
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.createvar(3,'d', N, N, lX)) return
+ if(.not.createvar(4,'d', N, N, lY)) return
+ if(.not.createvar(5,'d', 1, N, lLSCALE)) return
+ if(.not.createvar(6,'d', 1, N, lRSCALE)) return
+ if(.not.createvar(7,'d', 1, N*6, lWORK)) return
+
+
+c SUBROUTINE ZGGBAL( JOB, N, A, LDA, B, LDB, ILO, IHI, LSCALE,
+c $ RSCALE, WORK, INFO )
+ JOB='B'
+ call ZGGBAL(JOB, N, zstk(lA), N, zstk(lB), N, ILO, IHI,
+ $ stk(lLSCALE), stk(lRSCALE), stk(lWORK), INFO )
+
+c
+ call DLASET( 'F', N, N, ZERO, ONE, stk(lX), N )
+ call DLASET( 'F', N, N, ZERO, ONE, stk(lY), N )
+
+ call DGGBAK(JOB, 'L', N, ILO, IHI, stk(lLSCALE), stk(lRSCALE), N,
+ $ stk(lX), N, INFO )
+ call DGGBAK(JOB, 'R', N, ILO, IHI, stk(lLSCALE), stk(lRSCALE), N,
+ $ stk(lY), N, INFO )
+
+
+ lhsvar(1)=1
+ lhsvar(2)=2
+ lhsvar(3)=3
+ lhsvar(4)=4
+c
+ end
diff --git a/modules/linear_algebra/src/fortran/intzggbal.lo b/modules/linear_algebra/src/fortran/intzggbal.lo
new file mode 100755
index 000000000..416fb3f90
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzggbal.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzggbal.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzggbal.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgges.f b/modules/linear_algebra/src/fortran/intzgges.f
new file mode 100755
index 000000000..b78382c6e
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgges.f
@@ -0,0 +1,127 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intzgges(fname)
+
+c [AS,BS,VSL,VSR]=gschur(A,B)
+c [AS,BS]=gschur(A,B)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+
+ character fname*(*)
+ character JOBVSL, JOBVSR, SORT
+ logical voiddummy
+ external voiddummy
+
+ minrhs=2
+ maxrhs=2
+ minlhs=2
+ maxlhs=4
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', MA, NA, lA)) return
+ if(MA.ne.NA) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(.not.getrhsvar(2,'z', MB, NB, lB)) return
+ if(MB.ne.NB) then
+ err=2
+ call error(20)
+ return
+ endif
+ if(MA.ne.NB) then
+ call error(267)
+ return
+ endif
+ N = MA
+ if(N.eq.0) then
+ lhsvar(1)=1
+ lhsvar(2)=2
+ if(lhs.eq.4) then
+ if(.not.createvar(3,'d', N, N, lVSL)) return
+ if(.not.createvar(4,'d', N, N, lVSR)) return
+ lhsvar(3)=3
+ lhsvar(4)=4
+ endif
+ return
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.createvar(3,'i', 1, 1, lSDIM)) return
+ if(.not.createvar(4,'z', N, 1, lALPHA)) return
+ if(.not.createvar(5,'z', N, 1, lBETA)) return
+ K = 6
+ if(lhs.eq.4) then
+ if(.not.createvar(6,'z', N, N, lVSL)) return
+ if(.not.createvar(7,'z', N, N, lVSR)) return
+ k = 8
+ endif
+ if(.not.createvar(k,'d', 8*N, 1, lRWORK)) return
+ k=k+1
+ if(.not.createvar(k,'i', 2*N, 1, lBWORK)) return
+ LWORKMIN = 2*N
+ LWORK=maxvol(k+1,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+1,'z',1,LWORK,lDWORK)) return
+
+
+ if(lhs.eq.2) then
+ JOBVSL = 'N'
+ JOBVSR = 'N'
+ lVSL = lDWORK
+ lVSR = lDWORK
+ else
+ JOBVSL = 'V'
+ JOBVSR = 'V'
+ endif
+ SORT = 'N'
+ call ZGGES( JOBVSL, JOBVSR, SORT, voiddummy, N,
+ $ zstk(lA), N,
+ $ zstk(lB), N, istk(lSDIM), zstk(lALPHA), zstk(lBETA),
+ $ zstk(lVSL), N, zstk(lVSR), N, zstk(lDWORK), LWORK,
+ $ stk(lRWORK), istk(lBWORK), INFO )
+c SUBROUTINE ZGGES( JOBVSL, JOBVSR, SORT, DELCTG, N, A, LDA, B, LDB,
+c $ SDIM, ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, WORK, LWORK, RWORK
+c ,
+c $ BWORK, INFO )
+ if(info.gt.0) then
+ if(info.le.N) then
+ call msgs(1,info)
+ elseif(info.eq.N+1) then
+ call error(24)
+ return
+ endif
+ endif
+
+ if(lhs.eq.2) then
+ lhsvar(1)=1
+ lhsvar(2)=2
+ else
+ lhsvar(1)=1
+ lhsvar(2)=2
+ lhsvar(3)=6
+ lhsvar(4)=7
+ endif
+c
+ end
+
+
diff --git a/modules/linear_algebra/src/fortran/intzgges.lo b/modules/linear_algebra/src/fortran/intzgges.lo
new file mode 100755
index 000000000..14c22de25
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgges.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgges.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgges.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzgschur.f b/modules/linear_algebra/src/fortran/intzgschur.f
new file mode 100755
index 000000000..61536f663
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgschur.f
@@ -0,0 +1,211 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intzgschur(fname)
+
+
+c [As,Bs,VSR,dim]=gschur(A,B,'function')
+c [VSR,dim]=gschur(A,B,'function')
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+
+ character fname*(*)
+ character JOBVSL, JOBVSR, SORT
+ integer gzhsel
+ external gzhsel
+
+ minrhs=3
+ maxrhs=3
+ minlhs=1
+ maxlhs=4
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+
+ if(.not.getrhsvar(1,'z', MA, NA, lA)) return
+ if(MA.ne.NA) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(.not.getrhsvar(2,'z', MB, NB, lB)) return
+ if(MB.ne.NB) then
+ err=2
+ call error(20)
+ return
+ endif
+ if(MA.ne.NB) then
+ call error(267)
+ return
+ endif
+ N = MA
+ if(N.eq.0) then
+ lhsvar(1)=1
+ if(lhs.eq.2) then
+ if(.not.createvar(2,'d', 1, 1, lSDIM)) return
+ stk(lSDIM)=0.0d0
+ lhsvar(2)=2
+ elseif(lhs.eq.3) then
+ if(.not.createvar(3,'d', 1, 1, lSDIM)) return
+ stk(lSDIM)=0.0d0
+ lhsvar(2)=2
+ lhsvar(3)=3
+ else
+ if(.not.createvar(3,'d', N, N, lVSR)) return
+ if(.not.createvar(4,'d', 1, 1, lSDIM)) return
+ stk(lSDIM)=0.0d0
+ lhsvar(2)=2
+ lhsvar(3)=3
+ lhsvar(4)=4
+ endif
+ return
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.getrhsvar(3,'c', mr, mc, lc)) return
+ call setgzhsel(mr*mc, cstk(lc:lc+mr*mc),irep)
+ if ( irep.eq.1) then
+ buf = cstk(lc:lc+mr*mc)
+ call error(50)
+ return
+ endif
+ if(.not.createvar(4,'i', 1, 1, lSDIM)) return
+ if(.not.createvar(5,'z', N, 1, lALPHA)) return
+ if(.not.createvar(6,'z', N, 1, lBETA)) return
+ if(.not.createvar(7,'z', N, N, lVSL)) return
+ if(.not.createvar(8,'z', N, N, lVSR)) return
+ if(.not.createvar(9,'d', 8*N, 1, lRWORK)) return
+ if(.not.createvar(10,'i', 2*N, 1, lBWORK)) return
+ LWORKMIN = 2*N
+ LWORK=maxvol(11,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(11,'z',1,LWORK,lDWORK)) return
+
+ JOBVSL = 'V'
+ JOBVSR = 'V'
+ SORT = 'S'
+
+ call ZGGES( JOBVSL, JOBVSR, SORT, gzhsel, N, zstk(lA), N,
+ $ zstk(lB), N, istk(lSDIM), zstk(lALPHA), zstk(lBETA),
+ $ zstk(lVSL), N, zstk(lVSR), N, zstk(lDWORK), LWORK,
+ $ stk(lRWORK), istk(lBWORK), INFO )
+c SUBROUTINE ZGGES( JOBVSL, JOBVSR, SORT, DELCTG, N, A, LDA, B, LDB,
+c $ SDIM, ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, WORK, LWORK, RWORK
+c ,
+c $ BWORK, INFO )
+ if(info.gt.0) then
+ if(info.le.N) then
+ call msgs(1,info)
+ elseif(info.eq.N+1) then
+ call error(24)
+ return
+ elseif(info.eq.N+2) then
+ call msgs(103,0)
+ elseif(info.eq.N+3) then
+ buf='reordering failed'
+ call error(1002)
+ return
+ endif
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1)=4
+ elseif(lhs.eq.2) then
+ lhsvar(1)=8
+ lhsvar(2)=4
+ elseif(lhs.eq.3) then
+ lhsvar(1)=7
+ lhsvar(2)=8
+ lhsvar(3)=4
+ else if(lhs.eq.4) then
+ lhsvar(1)=1
+ lhsvar(2)=2
+ lhsvar(3)=8
+ lhsvar(4)=4
+ endif
+
+ end
+
+
+
+
+ logical function scigshur(alphar,alphai,beta)
+ INCLUDE 'stack.h'
+ logical scifunction, createvar, createcvar
+ common /scigsch/ lf, nx, nf
+ integer iadr
+ double precision alphar, alphai, beta
+c
+ iadr(l) = l+l-1
+c
+ scigshur=.false.
+ if(.not.createcvar(nx,'d',1,1,1,lx,lc)) return
+ stk(lx)=alphar
+ stk(lx+1)=alphai
+ if(.not.createvar(nx+1,'d',1,1,lb)) return
+ stk(lb)=beta
+ if(.not.scifunction(nx,lf,1,2)) return
+c stk(lx)=fct([alphar,alphai,beta]) evaluated by scilab fct pointed
+c to by lf
+ ilx=iadr(lx-2)
+ if(istk(ilx).eq.1) then
+ scigshur=(stk(lx).ne.0.0d0)
+ elseif (istk(ilx).eq.4) then
+ scigshur=(istk(ilx+3).ne.0)
+ endif
+ return
+ end
+
+ logical function scigchk()
+c checks fct passed to gschur
+ INCLUDE 'stack.h'
+ logical scifunction, createvar, createcvar
+c
+ integer iadr
+ common/ierinv/iero
+ common /scigsch/ lf, nx, nf
+ iadr(l) = l+l-1
+
+ scigchk=.false.
+ if(.not.createcvar(nx,'d',1,1,1,lx,lc)) return
+ stk(lx)=1.0d0
+ stk(lx+1)=1.0d0
+ if(.not.createvar(nx+1,'d',1,1,lb)) return
+ stk(lb)=1.0d0
+ if(.not.scifunction(nx,lf,1,2)) then
+c error into fct passed to gschur (gschur(A,B,tst))
+ return
+ endif
+c check return value of fct
+ ilx=iadr(lx-2)
+ if(istk(ilx).ne.1 .and. istk(ilx).ne.4) then
+ err=nf
+ call error(268)
+ return
+ endif
+ if(istk(ilx+1)*istk(ilx+2).ne.1) then
+ err=nf
+ call error(268)
+ return
+ endif
+ scigchk=.true.
+ return
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intzgschur.lo b/modules/linear_algebra/src/fortran/intzgschur.lo
new file mode 100755
index 000000000..2e476ea31
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzgschur.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzgschur.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzgschur.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzoldsvd.f b/modules/linear_algebra/src/fortran/intzoldsvd.f
new file mode 100755
index 000000000..61ac2df6f
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzoldsvd.f
@@ -0,0 +1,152 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intzoldsvd(tol,fname)
+
+c [U,S,V,rk]=svd(A,tol)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ character JOBU, JOBVT
+ double precision ZERO
+ double precision tol,eps,dlamch
+ parameter ( ZERO=0.0D0 )
+ intrinsic conjg
+
+ minrhs=1
+ maxrhs=2
+ minlhs=1
+ maxlhs=4
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(M.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ return
+ else if(lhs.eq.2) then
+ if(.not.createvar(2,'d', N, N, lS)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ return
+ else if(lhs.eq.3) then
+ if(.not.createvar(2,'d', M, N, lS)) return
+ if(.not.createvar(3,'d', N, N, lV)) return
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ lhsvar(3) = 3
+ return
+ else if(lhs.eq.4) then
+ if(.not.createvar(2,'d', M, N, lS)) return
+ if(.not.createvar(3,'d', N, N, lV)) return
+ if(.not.createvar(4,'d', 1, 1, lrk)) return
+ stk(lrk)=0
+ lhsvar(1) = 1
+ lhsvar(2) = 2
+ lhsvar(3) = 3
+ lhsvar(4) = 4
+ return
+ endif
+ elseif(N.eq.-1.or.M.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.createvar(2,'d', min(M,N), 1, lSV)) return
+ k = 3
+ if(lhs.gt.1) then
+ if(.not.createvar(3,'z', M, M, lU)) return
+ if(.not.createvar(4,'d', M, N, lS)) return
+ if(.not.createvar(5,'z', N, N, lV)) return
+ if(.not.createvar(6,'z', N, N, lVT)) return
+ if(.not.createvar(7,'d', 1, 1, lrk)) return
+ k = 8
+ endif
+ LRWRK = max(3*min(M,N),5*min(M,N)-4)
+ if(.not.createvar(k,'d',1,LRWRK,lRWORK)) return
+ LWORKMIN = 2*min(M,N)+max(M,N)
+ LWORK=maxvol(k+1,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+1,'z',1,LWORK,lDWORK)) return
+
+ JOBU = 'N'
+ JOBVT = 'N'
+ if(lhs.gt.1) then
+ JOBU = 'A'
+ JOBVT = 'A'
+ endif
+ if(lhs.eq.1) then
+ call ZGESVD( JOBU, JOBVT, M, N, zstk(lA), M, stk(lSV),
+ $ zstk(lA), M, zstk(lA), N, zstk(lDWORK), LWORK,
+ $ stk(lRWORK), INFO )
+c SUBROUTINE ZGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT,
+C $ LDVT, WORK, LWORK, RWORK, INFO )
+ do 01 ii = 0,min(M,N)-1
+ stk(lSV+ii)=abs(stk(lSV+ii))
+ 01 continue
+ call DLASRT('D', min(M,N), stk(lSV), INFO )
+ else
+ call ZGESVD( JOBU, JOBVT, M, N, zstk(lA), M, stk(lSV),
+ $ zstk(lU), M, zstk(lVT), N, zstk(lDWORK), LWORK,
+ $ stk(lRWORK), INFO )
+c SUBROUTINE ZGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT,
+C $ LDVT, WORK, LWORK, RWORK, INFO )
+ endif
+ if(info.ne.0) then
+ if(info.gt.0) call error(24)
+ return
+ endif
+
+c calculating rk = # of sv's > tol
+
+ eps=dlamch('eps')
+ if(tol.eq.0.0d0) tol=dble(max(M,N))*eps*stk(lSV)
+ irang=0
+ do 51 i = 1, min(M,N)
+ if(stk(lSV+i-1).gt.tol) irang=i
+ 51 continue
+ stk(lrk)=dble(irang)
+
+ if(lhs.gt.1) then
+ call DLASET( 'F', M, N, ZERO, ZERO, stk(lS), M )
+c SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+
+ do 10 i = 1, min(M,N)
+ ii = i+(i-1)*M
+ stk(lS+ii-1) = stk(lSV+i-1)
+ 10 continue
+ do 30 j = 1, N
+ do 20 i = j, N
+ ij = i+(j-1)*N
+ ji = j+(i-1)*N
+ zstk(lV+ij-1) = conjg(zstk(lVT+ji-1))
+ zstk(lV+ji-1) = conjg(zstk(lVT+ij-1))
+ 20 continue
+ 30 continue
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1) = 2
+ else
+ lhsvar(1)=3
+ lhsvar(2)=4
+ lhsvar(3)=5
+ lhsvar(4)=7
+ endif
+c
+ end
diff --git a/modules/linear_algebra/src/fortran/intzoldsvd.lo b/modules/linear_algebra/src/fortran/intzoldsvd.lo
new file mode 100755
index 000000000..69fb4c558
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzoldsvd.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzoldsvd.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzoldsvd.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzpotrf.f b/modules/linear_algebra/src/fortran/intzpotrf.f
new file mode 100755
index 000000000..2d3d4304a
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzpotrf.f
@@ -0,0 +1,68 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+
+ subroutine intzpotrf(fname)
+
+c U = chol(A)
+
+ include 'stack.h'
+ logical getrhsvar
+ logical checklhs,checkrhs
+ complex*16 ZERO
+ parameter ( ZERO = (0.0d0,0.0d0) )
+ character fname*(*)
+
+ minrhs=1
+ maxrhs=1
+ minlhs=1
+ maxlhs=1
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(m.ne.n) then
+ err=1
+ call error(20)
+ return
+ endif
+ if (N.eq.0) then
+ lhsvar(1)=1
+ return
+ elseif(N.eq.-1) then
+ if(stk(lA).le.0.0d0) then
+ call error(29)
+ return
+ endif
+ lhsvar(1)=1
+ stk(lA)=sqrt(stk(lA))
+ return
+ endif
+
+ call ZPOTRF( 'U', N, zstk(lA), N, INFO )
+c SUBROUTINE ZPOTRF( 'U', N, A, LDA, INFO )
+ if(info.ne.0) then
+ if(info.gt.0) call error(29)
+ return
+ endif
+
+ if( N.gt.1 ) then
+ do 20 j=1,N
+ do 10 i=j+1,N
+ ij = i+(j-1)*N
+ zstk(lA+ij-1)=ZERO
+ 10 continue
+ 20 continue
+ endif
+
+ lhsvar(1)=1
+
+c
+ end
diff --git a/modules/linear_algebra/src/fortran/intzpotrf.lo b/modules/linear_algebra/src/fortran/intzpotrf.lo
new file mode 100755
index 000000000..d11f9e5ba
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzpotrf.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzpotrf.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzpotrf.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/intzschur.f b/modules/linear_algebra/src/fortran/intzschur.f
new file mode 100755
index 000000000..1f78faaa7
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzschur.f
@@ -0,0 +1,183 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine intzschur(fname)
+
+c [VS,dim]=zschur(A,function)
+c [VS,dim,T]=zschur(A,function)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ character*4 JOBVS, SORT
+ logical SCIZSCHUR,scizchk
+ external SCIZSCHUR,scizchk
+ common /scisch/ lf, nx, nf
+
+ minrhs=2
+ maxrhs=2
+ minlhs=1
+ maxlhs=3
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(M.ne.N) then
+ err=1
+ call error(20)
+ return
+ endif
+ if(N.eq.0) then
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ return
+ else if(lhs.eq.2) then
+ if(.not.createvar(2,'z', 0, 0, lSDIM)) return
+ lhsvar(1)=1
+ lhsvar(2)=2
+ return
+ else if(lhs.eq.3) then
+ if(.not.createvar(2,'d', 0, 0, lSDIM)) return
+ stk(lSDIM)=0.0d0
+ if(.not.createvar(3,'z', N, N, lVS)) return
+ lhsvar(1)=1
+ lhsvar(2)=2
+ lhsvar(3)=3
+ return
+ endif
+ elseif(N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+
+ if(.not.getrhsvar(2,'f', mlhs, mrhs, lf)) return
+ if(mlhs.ne.1 .or. mrhs.ne.1) then
+ err=2
+ call error(80)
+ return
+ endif
+ if(.not.createvar(3,'z', N, 1, lW)) return
+ k = 4
+ if(lhs.gt.1) then
+ if(.not.createvar(4,'z', N, N, lVS)) return
+ k = 5
+ endif
+ if(.not.createvar(k,'i', 1, 1, lSDIM)) return
+ if(.not.createvar(k+1,'i',N, 1, lBWORK)) return
+ if(.not.createvar(k+2,'d', N, 1, lRWORK)) return
+ LWORKMIN = 3*N
+ LWORK = LWORKMIN
+ if(.not.createvar(k+3,'z',1,LWORKMIN,lDWORK)) return
+ nx=k+4
+
+ if(lhs.eq.1) then
+ JOBVS = 'N'
+ lVS = lDWORK
+ else
+ JOBVS = 'V'
+ endif
+ SORT = 'S'
+
+ if(.not.scizchk()) return
+ call ZGEES( JOBVS, SORT, SCIZSCHUR, N, zstk(lA), N, istk(lSDIM),
+ $ zstk(lW), zstk(lVS), N, zstk(lDWORK), LWORK, stk(lRWORK),
+ $ istk(lBWORK), INFO )
+ if(info.gt.0) then
+ if(info.le.N) then
+ call msgs(2,info)
+ elseif(info.eq.N+1) then
+ buf='eigenvalues could not be reordered (the problem '//
+ $ 'is very ill-conditioned'
+ call error(1002)
+ elseif(info.eq.N+2) then
+ call msgs(103,0)
+ endif
+ endif
+
+ if(lhs.eq.1) then
+ lhsvar(1) = 1
+ else if(lhs.eq.2) then
+ lhsvar(1)=4
+ lhsvar(2)=5
+ else if(lhs.eq.3) then
+ lhsvar(1)=4
+ lhsvar(2)=5
+ lhsvar(3)=1
+ endif
+c
+ end
+
+ logical function scizschur(w)
+ INCLUDE 'stack.h'
+ logical scifunction, createcvar
+ common /scisch/ lf, nx, nf
+ integer iadr
+ complex*16 w
+ intrinsic dreal, dimag
+c
+ iadr(l) = l+l-1
+c
+ scizschur=.false.
+ if(.not.createcvar(nx,'d',1,1,1,lx,lc)) return
+ stk(lx)=dreal(w)
+ stk(lx+1)=dimag(w)
+ if(.not.scifunction(nx,lf,1,1)) return
+c stk(lx)=fct([re,im]) evaluated by scilab fct pointed to by lf
+ ilx=iadr(lx-2)
+ if(istk(ilx).eq.1) then
+ scizschur=(stk(lx).ne.0.0d0)
+ elseif (istk(ilx).eq.4) then
+ scizschur=(istk(ilx+3).ne.0)
+ endif
+ return
+ end
+
+ logical function scizchk()
+c checks fct passed to schur
+ INCLUDE 'stack.h'
+ logical scifunction, createcvar
+c
+ integer iadr
+ common/ierinv/iero
+ common /scisch/ lf, nx, nf
+ iadr(l) = l+l-1
+ scizchk=.false.
+ if(.not.createcvar(nx,'d',1,1,1,lx,lc)) return
+ stk(lx)=1.0d0
+ stk(lx+1)=1.0d0
+ if(.not.scifunction(nx,lf,1,1)) then
+c error into fct passed to schur (schur(A,tst))
+ return
+ endif
+c check return value of fct
+ ilx=iadr(lx-2)
+ if(istk(ilx).ne.1 .and. istk(ilx).ne.4) then
+ err=nf
+ call error(268)
+ return
+ endif
+ if(istk(ilx+1)*istk(ilx+2).ne.1) then
+ err=nf
+ call error(268)
+ return
+ endif
+ scizchk=.true.
+ return
+ end
+
+ logical function voiddummy(ar,ai)
+
+ voiddummy = .false.
+ return
+ end
+
diff --git a/modules/linear_algebra/src/fortran/intzschur.lo b/modules/linear_algebra/src/fortran/intzschur.lo
new file mode 100755
index 000000000..e126e062d
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/intzschur.lo
@@ -0,0 +1,12 @@
+# src/fortran/intzschur.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/intzschur.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/issymmetric.f b/modules/linear_algebra/src/fortran/issymmetric.f
new file mode 100755
index 000000000..ad74ec9d0
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/issymmetric.f
@@ -0,0 +1,62 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ integer function issymmetric(in)
+c return 1 if matrix at position in is symmetric
+ include 'stack.h'
+ double precision sr
+c
+ integer iadr,sadr
+c
+ iadr(l)=l+l-1
+ sadr(l)=(l/2)+1
+c
+ issymmetric=0
+ nnn=top-rhs+in
+ l=lstk(nnn)
+ il=iadr(l)
+ m=istk(il+1)
+ n=istk(il+2)
+ l=sadr(il+4)
+ nn=m*n
+ if (m.ne.n) return
+ issymmetric =0
+ if (istk(il+3).eq.0) then
+ do 20 j = 1,n
+ do 19 i = 1,j
+ ls = l + (i-1) + (j-1)*n
+ ll = l + (i-1)*n + (j-1)
+ sr = abs(stk(ll)-stk(ls))
+ if (stk(ll)+sr .gt. stk(ll)) goto 21
+ 19 continue
+ 20 continue
+ issymmetric = 1
+ 21 continue
+ return
+ else
+ if (n .eq. 1) goto 210
+ do 200 j = 2,n
+ j1 = j - 1
+ do 200 i = 1,j1
+ ls = l + (i-1) + j1*n
+ ll = l + (i-1)*n + j1
+ sr = abs(stk(ll)-stk(ls))
+ si = abs(stk(ll+nn)+stk(ls+nn))
+ if (stk(ll)+sr.gt.stk(ll) .or. stk(ll+nn)+si.gt.stk(ll+nn))
+ & goto 230
+ 200 continue
+ 210 do 220 j = 1,n
+ ll = l + (j-1) + (j-1)*n
+ if (stk(ll)+abs(stk(ll+nn)) .gt. stk(ll)) goto 230
+ 220 continue
+ issymmetric = 1
+ 230 continue
+ return
+ endif
+ end
diff --git a/modules/linear_algebra/src/fortran/linear_algebra_Import.def b/modules/linear_algebra/src/fortran/linear_algebra_Import.def
new file mode 100755
index 000000000..74081432f
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/linear_algebra_Import.def
@@ -0,0 +1,33 @@
+LIBRARY linear_algebra.dll
+
+
+EXPORTS
+ gw_linear_algebra_
+ gw_linear_algebra2_
+ schsel_
+ setschsel_
+ zchsel_
+ setzchsel_
+ gshsel_
+ setgshsel_
+ gzhsel_
+ setgzhsel_
+ fschur_
+ setfschur_
+ intbackslash_
+ intbalanc_
+ intbdiagr_
+ intchol_
+ intdet_
+ intspec_
+ inthess_
+ intinv_
+ intlsq_
+ intlu_
+ intqr_
+ intrcond_
+ intschur_
+ schtst
+ intslash_
+ intsvd_
+ issymmetric_
diff --git a/modules/linear_algebra/src/fortran/linear_algebra_f.rc b/modules/linear_algebra/src/fortran/linear_algebra_f.rc
new file mode 100755
index 000000000..a65dd5c29
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/linear_algebra_f.rc
@@ -0,0 +1,96 @@
+// Microsoft Visual C++ generated resource script.
+//
+
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+//#include "afxres.h"
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "windows.h"
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// French (France) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
+#ifdef _WIN32
+LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 5,5,2,0
+ PRODUCTVERSION 5,5,2,0
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040c04b0"
+ BEGIN
+ VALUE "FileDescription", "linear_algebra_f module"
+ VALUE "FileVersion", "5, 5, 2, 0"
+ VALUE "InternalName", "linear_algebra_f module"
+ VALUE "LegalCopyright", "Copyright (C) 2017"
+ VALUE "OriginalFilename", "linear_algebra_f.dll"
+ VALUE "ProductName", "linear_algebra_f module"
+ VALUE "ProductVersion", "5, 5, 2, 0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x40c, 1200
+ END
+END
+
+#endif // French (France) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/modules/linear_algebra/src/fortran/linear_algebra_f.vfproj b/modules/linear_algebra/src/fortran/linear_algebra_f.vfproj
new file mode 100755
index 000000000..23d14c56b
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/linear_algebra_f.vfproj
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<VisualStudioProject ProjectType="typeDynamicLibrary" ProjectCreator="Intel Fortran" Keyword="Dll" Version="11.0" ProjectIdGuid="{3735EFF9-925B-45B1-82CF-762658E69E70}">
+ <Platforms>
+ <Platform Name="Win32"/>
+ <Platform Name="x64"/></Platforms>
+ <Configurations>
+ <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(ConfigurationName)" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" DebugInformationFormat="debugEnabled" Optimization="optimizeDisabled" AdditionalIncludeDirectories="../../../core/includes" PreprocessorDefinitions="WIN32;FORDLL" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" FPS4Libs="false" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreadedDebugDLL"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin\$(ProjectName).dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" ModuleDefinitionFile="linear_algebra_f.def" GenerateDebugInformation="true" SubSystem="subSystemWindows" ImportLibrary="$(SolutionDir)bin\$(ProjectName).lib" LinkDLL="true" AdditionalDependencies="../../../../bin/blasplus.lib ../../../../bin/lapack.lib core.lib linear_algebra.lib output_stream.lib elementary_functions.lib elementary_functions_f.lib core_f.lib"/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool" CommandLine="setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+&quot;$(SolutionDir)bin\dumpexts&quot; -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd .." Description="Build $(ProjectName).def"/>
+ <Tool Name="VFPreBuildEventTool" CommandLine="lib /DEF:&quot;$(InputDir)core_import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)core.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)linear_algebra_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)linear_algebra.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)output_stream_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)output_stream.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)elementary_functions.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)elementary_functions_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)core_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)core_f.lib&quot; 1&gt;NUL 2&gt;NUL" Description="Build Dependencies"/>
+ <Tool Name="VFPostBuildEventTool"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration>
+ <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(ConfigurationName)" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" AdditionalIncludeDirectories="../../../core/includes" PreprocessorDefinitions="WIN32;FORDLL" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" FPS4Libs="false" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreadedDLL"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin\$(ProjectName).dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" ModuleDefinitionFile="linear_algebra_f.def" SubSystem="subSystemWindows" ImportLibrary="$(SolutionDir)bin\$(ProjectName).lib" LinkDLL="true" AdditionalDependencies="../../../../bin/blasplus.lib ../../../../bin/lapack.lib core.lib linear_algebra.lib output_stream.lib elementary_functions.lib elementary_functions_f.lib core_f.lib"/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool" CommandLine="setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+&quot;$(SolutionDir)bin\dumpexts&quot; -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd .." Description="Build $(ProjectName).def"/>
+ <Tool Name="VFPreBuildEventTool" CommandLine="lib /DEF:&quot;$(InputDir)core_import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)core.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)linear_algebra_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)linear_algebra.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)output_stream_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)output_stream.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)elementary_functions.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)elementary_functions_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)core_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:&quot;$(InputDir)core_f.lib&quot; 1&gt;NUL 2&gt;NUL" Description="Build Dependencies"/>
+ <Tool Name="VFPostBuildEventTool"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration>
+ <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(ConfigurationName)" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" DebugInformationFormat="debugEnabled" Optimization="optimizeDisabled" AdditionalIncludeDirectories="../../../core/includes" PreprocessorDefinitions="WIN32;FORDLL" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" FPS4Libs="false" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreadedDebugDLL"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin\$(ProjectName).dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" ModuleDefinitionFile="linear_algebra_f.def" GenerateDebugInformation="true" SubSystem="subSystemWindows" ImportLibrary="$(SolutionDir)bin\$(ProjectName).lib" LinkDLL="true" AdditionalDependencies="../../../../bin/blasplus.lib ../../../../bin/lapack.lib core.lib linear_algebra.lib output_stream.lib elementary_functions.lib elementary_functions_f.lib core_f.lib"/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool" CommandLine="setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+&quot;$(SolutionDir)bin\dumpexts&quot; -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd .." Description="Build $(ProjectName).def"/>
+ <Tool Name="VFPreBuildEventTool" CommandLine="lib /DEF:&quot;$(InputDir)core_import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)core.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)linear_algebra_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)linear_algebra.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)output_stream_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)output_stream.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)elementary_functions.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)elementary_functions_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)core_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)core_f.lib&quot; 1&gt;NUL 2&gt;NUL" Description="Build Dependencies"/>
+ <Tool Name="VFPostBuildEventTool"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration>
+ <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)bin\" IntermediateDirectory="$(ProjectDir)$(ConfigurationName)" DeleteExtensionsOnClean="*.obj;*.mod;*.pdb;*.asm;*.map;*.dyn;*.dpi;*.tmp;*.log;*.ilk;*.dll;$(TargetPath)" ConfigurationType="typeDynamicLibrary">
+ <Tool Name="VFFortranCompilerTool" SuppressStartupBanner="true" AdditionalIncludeDirectories="../../../core/includes" PreprocessorDefinitions="WIN32;FORDLL" AlternateParameterSyntax="false" F77RuntimeCompatibility="true" FPS4Libs="false" CallingConvention="callConventionCRef" ExternalNameUnderscore="true" ModulePath="$(INTDIR)/" ObjectFile="$(INTDIR)/" RuntimeLibrary="rtMultiThreadedDLL"/>
+ <Tool Name="VFLinkerTool" OutputFile="$(SolutionDir)bin\$(ProjectName).dll" LinkIncremental="linkIncrementalNo" SuppressStartupBanner="true" ModuleDefinitionFile="linear_algebra_f.def" SubSystem="subSystemWindows" ImportLibrary="$(SolutionDir)bin\$(ProjectName).lib" LinkDLL="true" AdditionalDependencies="../../../../bin/blasplus.lib ../../../../bin/lapack.lib core.lib linear_algebra.lib output_stream.lib elementary_functions.lib elementary_functions_f.lib core_f.lib"/>
+ <Tool Name="VFResourceCompilerTool"/>
+ <Tool Name="VFMidlTool" SuppressStartupBanner="true" HeaderFileName="$(InputName).h" TypeLibraryName="$(IntDir)/$(InputName).tlb"/>
+ <Tool Name="VFCustomBuildTool"/>
+ <Tool Name="VFPreLinkEventTool" CommandLine="setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+&quot;$(SolutionDir)bin\dumpexts&quot; -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd .." Description="Build $(ProjectName).def"/>
+ <Tool Name="VFPreBuildEventTool" CommandLine="lib /DEF:&quot;$(InputDir)core_import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)core.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)linear_algebra_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)linear_algebra.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)output_stream_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)output_stream.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)elementary_functions.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)elementary_functions_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)elementary_functions_f.lib&quot; 1&gt;NUL 2&gt;NUL
+lib /DEF:&quot;$(InputDir)core_f_Import.def&quot; /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:&quot;$(InputDir)core_f.lib&quot; 1&gt;NUL 2&gt;NUL" Description="Build Dependencies"/>
+ <Tool Name="VFPostBuildEventTool"/>
+ <Tool Name="VFManifestTool" SuppressStartupBanner="true"/></Configuration></Configurations>
+ <Files>
+ <Filter Name="Header Files" Filter="fi;fd"/>
+ <Filter Name="Library Dependencies">
+ <File RelativePath=".\Core_f_Import.def"/>
+ <File RelativePath=".\core_import.def"/>
+ <File RelativePath=".\elementary_functions_f_Import.def"/>
+ <File RelativePath=".\elementary_functions_Import.def"/>
+ <File RelativePath=".\linear_algebra_Import.def"/>
+ <File RelativePath=".\output_stream_Import.def"/></Filter>
+ <Filter Name="Resource Files" Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+ <File RelativePath=".\linear_algebra_f.rc"/></Filter>
+ <Filter Name="Source Files" Filter="f90;for;f;fpp;ftn;def;odl;idl">
+ <File RelativePath=".\complexify.f"/>
+ <File RelativePath=".\DGELSY1.f"/>
+ <File RelativePath=".\ZGELSY1.f"/>
+ <File RelativePath=".\doldqr.f"/>
+ <File RelativePath=".\intddet.f"/>
+ <File RelativePath=".\intdgebal.f"/>
+ <File RelativePath=".\intdgecon.f"/>
+ <File RelativePath=".\intdgees0.f"/>
+ <File RelativePath=".\intdgees1.f"/>
+ <File RelativePath=".\intdgehrd.f"/>
+ <File RelativePath=".\intdgelsy.f"/>
+ <File RelativePath=".\intdgeqpf3.f"/>
+ <File RelativePath=".\intdgeqpf4.f"/>
+ <File RelativePath=".\intdgesv3.f"/>
+ <File RelativePath=".\intdgesv4.f"/>
+ <File RelativePath=".\intdgesvd1.f"/>
+ <File RelativePath=".\intdgesvd2.f"/>
+ <File RelativePath=".\intdgetrf.f"/>
+ <File RelativePath=".\intdgetri.f"/>
+ <File RelativePath=".\intdggbal.f"/>
+ <File RelativePath=".\intdgges.f"/>
+ <File RelativePath=".\intdoldsvd.f"/>
+ <File RelativePath=".\intdpotrf.f"/>
+ <File RelativePath=".\intfschur.f"/>
+ <File RelativePath=".\intgschur.f"/>
+ <File RelativePath=".\intogschur.f"/>
+ <File RelativePath=".\intoschur.f"/>
+ <File RelativePath=".\intozgschur.f"/>
+ <File RelativePath=".\intzdet.f"/>
+ <File RelativePath=".\intzfschur.f"/>
+ <File RelativePath=".\intzgebal.f"/>
+ <File RelativePath=".\intzgecon.f"/>
+ <File RelativePath=".\intzgees0.f"/>
+ <File RelativePath=".\intzgees1.f"/>
+ <File RelativePath=".\intzgehrd.f"/>
+ <File RelativePath=".\intzgelsy.f"/>
+ <File RelativePath=".\intzgeqpf3.f"/>
+ <File RelativePath=".\intzgeqpf4.f"/>
+ <File RelativePath=".\intzgesv3.f"/>
+ <File RelativePath=".\intzgesv4.f"/>
+ <File RelativePath=".\intzgesvd1.f"/>
+ <File RelativePath=".\intzgesvd2.f"/>
+ <File RelativePath=".\intzgetrf.f"/>
+ <File RelativePath=".\intzgetri.f"/>
+ <File RelativePath=".\intzggbal.f"/>
+ <File RelativePath=".\intzgges.f"/>
+ <File RelativePath=".\intzgschur.f"/>
+ <File RelativePath=".\intzoldsvd.f"/>
+ <File RelativePath=".\intzpotrf.f"/>
+ <File RelativePath=".\intzschur.f"/>
+ <File RelativePath=".\scischur.f"/>
+ <File RelativePath=".\writebuf.f"/>
+ <File RelativePath=".\zoldqr.f"/></Filter>
+ <File RelativePath="..\..\sci_gateway\linear_algebra_gateway.xml"/>
+ <File RelativePath="..\..\Makefile.am"/></Files>
+ <Globals/></VisualStudioProject>
diff --git a/modules/linear_algebra/src/fortran/linear_algebra_f2c.vcxproj b/modules/linear_algebra/src/fortran/linear_algebra_f2c.vcxproj
new file mode 100755
index 000000000..b50e3ef41
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/linear_algebra_f2c.vcxproj
@@ -0,0 +1,399 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectName>linear_algebra_f</ProjectName>
+ <ProjectGuid>{3735EFF9-925B-45B1-82CF-762658E69E70}</ProjectGuid>
+ <RootNamespace>linear_algebra_f2c</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>Unicode</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ <Import Project="..\..\..\..\Visual-Studio-settings\f2c.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <PreBuildEvent>
+ <Message>Build Dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linear_algebra_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linear_algebra.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)output_stream_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)output_stream.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)core_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core_f.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../../libs/f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LINEAR_ALGEBRA_F2C_EXPORTS;FORDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Build $(ProjectName).def</Message>
+ <Command>setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+"$(SolutionDir)bin\dumpexts" -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd ..
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalOptions>/ignore:4049 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>core.lib;linear_algebra.lib;output_stream.lib;elementary_functions.lib;elementary_functions_f.lib;core_f.lib;../../../../bin/blasplus.lib;../../../../bin/lapack.lib;../../../../bin/libf2c.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <ModuleDefinitionFile>linear_algebra_f.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <PreBuildEvent>
+ <Message>Build Dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linear_algebra_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linear_algebra.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)output_stream_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)output_stream.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)core_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core_f.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../../libs/f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;LINEAR_ALGEBRA_F2C_EXPORTS;FORDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Build $(ProjectName).def</Message>
+ <Command>setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+"$(SolutionDir)bin\dumpexts" -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd ..
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalOptions>/ignore:4049 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>core.lib;linear_algebra.lib;output_stream.lib;elementary_functions.lib;elementary_functions_f.lib;core_f.lib;../../../../bin/blasplus.lib;../../../../bin/lapack.lib;../../../../bin/libf2c.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <ModuleDefinitionFile>linear_algebra_f.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Message>Build Dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linear_algebra_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linear_algebra.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)output_stream_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)output_stream.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)core_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core_f.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>../../../../libs/f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LINEAR_ALGEBRA_F2C_EXPORTS;FORDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Build $(ProjectName).def</Message>
+ <Command>setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+"$(SolutionDir)bin\dumpexts" -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd ..
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalOptions>/ignore:4049 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>core.lib;linear_algebra.lib;output_stream.lib;elementary_functions.lib;elementary_functions_f.lib;core_f.lib;../../../../bin/blasplus.lib;../../../../bin/lapack.lib;../../../../bin/libf2c.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <ModuleDefinitionFile>linear_algebra_f.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <PreBuildEvent>
+ <Message>Build Dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)linear_algebra_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)linear_algebra.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)output_stream_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)output_stream.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)core_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core_f.lib" 1&gt;NUL 2&gt;NUL</Command>
+ </PreBuildEvent>
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>../../../../libs/f2c;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;LINEAR_ALGEBRA_F2C_EXPORTS;FORDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Build $(ProjectName).def</Message>
+ <Command>setlocal EnableDelayedExpansion
+cd $(ConfigurationName)
+set LIST_OBJ=
+for %%f in (*.obj) do set LIST_OBJ=!LIST_OBJ! %%f
+"$(SolutionDir)bin\dumpexts" -o $(ProjectName).def $(ProjectName).dll %LIST_OBJ%
+copy $(ProjectName).def ..\$(ProjectName).def &gt;nul
+del *.def &gt;nul
+cd ..
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalOptions>/ignore:4049 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>core.lib;linear_algebra.lib;output_stream.lib;elementary_functions.lib;elementary_functions_f.lib;core_f.lib;../../../../bin/blasplus.lib;../../../../bin/lapack.lib;../../../../bin/libf2c.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <ModuleDefinitionFile>linear_algebra_f.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="common_f2c.c" />
+ <ClCompile Include="complexify.c" />
+ <ClCompile Include="DGELSY1.c" />
+ <ClCompile Include="ZGELSY1.c" />
+ <ClCompile Include="doldqr.c" />
+ <ClCompile Include="intddet.c" />
+ <ClCompile Include="intdgebal.c" />
+ <ClCompile Include="intdgecon.c" />
+ <ClCompile Include="intdgees0.c" />
+ <ClCompile Include="intdgees1.c" />
+ <ClCompile Include="intdgehrd.c" />
+ <ClCompile Include="intdgelsy.c" />
+ <ClCompile Include="intdgeqpf3.c" />
+ <ClCompile Include="intdgeqpf4.c" />
+ <ClCompile Include="intdgesv3.c" />
+ <ClCompile Include="intdgesv4.c" />
+ <ClCompile Include="intdgesvd1.c" />
+ <ClCompile Include="intdgesvd2.c" />
+ <ClCompile Include="intdgetrf.c" />
+ <ClCompile Include="intdgetri.c" />
+ <ClCompile Include="intdggbal.c" />
+ <ClCompile Include="intdgges.c" />
+ <ClCompile Include="intdoldsvd.c" />
+ <ClCompile Include="intdpotrf.c" />
+ <ClCompile Include="intfschur.c" />
+ <ClCompile Include="intgschur.c" />
+ <ClCompile Include="intogschur.c" />
+ <ClCompile Include="intoschur.c" />
+ <ClCompile Include="intozgschur.c" />
+ <ClCompile Include="intzdet.c" />
+ <ClCompile Include="intzfschur.c" />
+ <ClCompile Include="intzgebal.c" />
+ <ClCompile Include="intzgecon.c" />
+ <ClCompile Include="intzgees0.c" />
+ <ClCompile Include="intzgees1.c" />
+ <ClCompile Include="intzgehrd.c" />
+ <ClCompile Include="intzgelsy.c" />
+ <ClCompile Include="intzgeqpf3.c" />
+ <ClCompile Include="intzgeqpf4.c" />
+ <ClCompile Include="intzgesv3.c" />
+ <ClCompile Include="intzgesv4.c" />
+ <ClCompile Include="intzgesvd1.c" />
+ <ClCompile Include="intzgesvd2.c" />
+ <ClCompile Include="intzgetrf.c" />
+ <ClCompile Include="intzgetri.c" />
+ <ClCompile Include="intzggbal.c" />
+ <ClCompile Include="intzgges.c" />
+ <ClCompile Include="intzgschur.c" />
+ <ClCompile Include="intzoldsvd.c" />
+ <ClCompile Include="intzpotrf.c" />
+ <ClCompile Include="intzschur.c" />
+ <ClCompile Include="issymmetric.c" />
+ <ClCompile Include="scischur.c" />
+ <ClCompile Include="writebuf.c" />
+ <ClCompile Include="zoldqr.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <f2c_rule Include="complexify.f" />
+ <f2c_rule Include="DGELSY1.f" />
+ <f2c_rule Include="ZGELSY1.f" />
+ <f2c_rule Include="doldqr.f" />
+ <f2c_rule Include="intddet.f" />
+ <f2c_rule Include="intdgebal.f" />
+ <f2c_rule Include="intdgecon.f" />
+ <f2c_rule Include="intdgees0.f" />
+ <f2c_rule Include="intdgees1.f" />
+ <f2c_rule Include="intdgehrd.f" />
+ <f2c_rule Include="intdgelsy.f" />
+ <f2c_rule Include="intdgeqpf3.f" />
+ <f2c_rule Include="intdgeqpf4.f" />
+ <f2c_rule Include="intdgesv3.f" />
+ <f2c_rule Include="intdgesv4.f" />
+ <f2c_rule Include="intdgesvd1.f" />
+ <f2c_rule Include="intdgesvd2.f" />
+ <f2c_rule Include="intdgetrf.f" />
+ <f2c_rule Include="intdgetri.f" />
+ <f2c_rule Include="intdggbal.f" />
+ <f2c_rule Include="intdgges.f" />
+ <f2c_rule Include="intdoldsvd.f" />
+ <f2c_rule Include="intdpotrf.f" />
+ <f2c_rule Include="intfschur.f" />
+ <f2c_rule Include="intgschur.f" />
+ <f2c_rule Include="intogschur.f" />
+ <f2c_rule Include="intoschur.f" />
+ <f2c_rule Include="intozgschur.f" />
+ <f2c_rule Include="intzdet.f" />
+ <f2c_rule Include="intzfschur.f" />
+ <f2c_rule Include="intzgebal.f" />
+ <f2c_rule Include="intzgecon.f" />
+ <f2c_rule Include="intzgees0.f" />
+ <f2c_rule Include="intzgees1.f" />
+ <f2c_rule Include="intzgehrd.f" />
+ <f2c_rule Include="intzgelsy.f" />
+ <f2c_rule Include="intzgeqpf3.f" />
+ <f2c_rule Include="intzgeqpf4.f" />
+ <f2c_rule Include="intzgesv3.f" />
+ <f2c_rule Include="intzgesv4.f" />
+ <f2c_rule Include="intzgesvd1.f" />
+ <f2c_rule Include="intzgesvd2.f" />
+ <f2c_rule Include="intzgetrf.f" />
+ <f2c_rule Include="intzgetri.f" />
+ <f2c_rule Include="intzggbal.f" />
+ <f2c_rule Include="intzgges.f" />
+ <f2c_rule Include="intzgschur.f" />
+ <f2c_rule Include="intzoldsvd.f" />
+ <f2c_rule Include="intzpotrf.f" />
+ <f2c_rule Include="intzschur.f" />
+ <f2c_rule Include="issymmetric.f" />
+ <f2c_rule Include="scischur.f" />
+ <f2c_rule Include="writebuf.f" />
+ <f2c_rule Include="zoldqr.f" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="..\..\sci_gateway\linear_algebra_gateway.xml" />
+ <None Include="..\..\Makefile.am" />
+ <None Include="Core_f_Import.def" />
+ <None Include="elementary_functions_f_Import.def" />
+ <None Include="elementary_functions_Import.def" />
+ <None Include="core_import.def" />
+ <None Include="linear_algebra_Import.def" />
+ <None Include="output_stream_Import.def" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\..\tools\Dumpexts\Dumpexts.vcxproj">
+ <Project>{3170e4c2-1173-4264-a222-7ee8ccb3ddf7}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ <Import Project="..\..\..\..\Visual-Studio-settings\f2c.targets" />
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/modules/linear_algebra/src/fortran/linear_algebra_f2c.vcxproj.filters b/modules/linear_algebra/src/fortran/linear_algebra_f2c.vcxproj.filters
new file mode 100755
index 000000000..96288a60e
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/linear_algebra_f2c.vcxproj.filters
@@ -0,0 +1,376 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ <Filter Include="Fortran files">
+ <UniqueIdentifier>{fe7cb7e0-48f4-44a8-b5bb-981d9a943e54}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Libraries Dependencies">
+ <UniqueIdentifier>{e4bda186-00b4-42b0-b641-d932c8897f1e}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="common_f2c.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="complexify.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="DGELSY1.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="ZGELSY1.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="doldqr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intddet.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdgebal.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdgecon.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdgees0.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdgees1.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdgehrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdgelsy.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdgeqpf3.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdgeqpf4.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdgesv3.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdgesv4.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdgesvd1.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdgesvd2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdgetrf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdgetri.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdggbal.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdgges.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdoldsvd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intdpotrf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intfschur.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intgschur.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intogschur.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intoschur.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intozgschur.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzdet.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzfschur.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgebal.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgecon.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgees0.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgees1.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgehrd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgelsy.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgeqpf3.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgeqpf4.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgesv3.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgesv4.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgesvd1.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgesvd2.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgetrf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgetri.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzggbal.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgges.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzgschur.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzoldsvd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzpotrf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intzschur.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="issymmetric.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="scischur.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="writebuf.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="zoldqr.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <f2c_rule Include="complexify.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="DGELSY1.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="ZGELSY1.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="doldqr.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intddet.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdgebal.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdgecon.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdgees0.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdgees1.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdgehrd.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdgelsy.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdgeqpf3.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdgeqpf4.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdgesv3.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdgesv4.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdgesvd1.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdgesvd2.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdgetrf.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdgetri.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdggbal.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdgges.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdoldsvd.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intdpotrf.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intfschur.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intgschur.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intogschur.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intoschur.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intozgschur.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzdet.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzfschur.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgebal.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgecon.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgees0.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgees1.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgehrd.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgelsy.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgeqpf3.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgeqpf4.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgesv3.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgesv4.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgesvd1.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgesvd2.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgetrf.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgetri.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzggbal.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgges.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzgschur.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzoldsvd.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzpotrf.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="intzschur.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="issymmetric.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="scischur.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="writebuf.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ <f2c_rule Include="zoldqr.f">
+ <Filter>Fortran files</Filter>
+ </f2c_rule>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="..\..\sci_gateway\linear_algebra_gateway.xml" />
+ <None Include="..\..\Makefile.am" />
+ <None Include="elementary_functions_Import.def">
+ <Filter>Libraries Dependencies</Filter>
+ </None>
+ <None Include="core_import.def">
+ <Filter>Libraries Dependencies</Filter>
+ </None>
+ <None Include="linear_algebra_Import.def">
+ <Filter>Libraries Dependencies</Filter>
+ </None>
+ <None Include="output_stream_Import.def">
+ <Filter>Libraries Dependencies</Filter>
+ </None>
+ <None Include="elementary_functions_f_Import.def">
+ <Filter>Libraries Dependencies</Filter>
+ </None>
+ <None Include="Core_f_Import.def">
+ <Filter>Libraries Dependencies</Filter>
+ </None>
+ </ItemGroup>
+</Project>
diff --git a/modules/linear_algebra/src/fortran/output_stream_Import.def b/modules/linear_algebra/src/fortran/output_stream_Import.def
new file mode 100755
index 000000000..821ba5757
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/output_stream_Import.def
@@ -0,0 +1,7 @@
+LIBRARY output_stream.dll
+
+
+EXPORTS
+
+msgs_
+error_ \ No newline at end of file
diff --git a/modules/linear_algebra/src/fortran/scischur.f b/modules/linear_algebra/src/fortran/scischur.f
new file mode 100755
index 000000000..f819d2a38
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/scischur.f
@@ -0,0 +1,67 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ logical function scischur(re,im)
+ INCLUDE 'stack.h'
+ logical scifunction, createcvar
+ common /scisch/ lf, nx, nf
+ integer iadr
+ double precision re, im
+c
+ iadr(l) = l+l-1
+c
+ scischur=.false.
+ if(.not.createcvar(nx,'d',1,1,1,lx,lc)) return
+ stk(lx)=re
+ stk(lx+1)=im
+ if(.not.scifunction(nx,lf,1,1)) return
+c stk(lx)=fct([re,im]) evaluated by scilab fct pointed to by lf
+ ilx=iadr(lx-2)
+ if(istk(ilx).eq.1) then
+ scischur=(stk(lx).ne.0.0d0)
+ elseif (istk(ilx).eq.4) then
+ scischur=(istk(ilx+3).ne.0)
+ endif
+ return
+ end
+
+ logical function scichk()
+c checks fct passed to schur
+ INCLUDE 'stack.h'
+ logical scifunction, createcvar
+c
+ integer iadr
+ common/ierinv/iero
+ common /scisch/ lf, nx, nf
+ iadr(l) = l+l-1
+ scichk=.false.
+ if(.not.createcvar(nx,'d',1,1,1,lx,lc)) return
+ stk(lx)=1.0d0
+ stk(lx+1)=1.0d0
+ if(.not.scifunction(nx,lf,1,1)) then
+c error into fct passed to schur (schur(A,tst))
+ return
+ endif
+c check return value of fct
+ ilx=iadr(lx-2)
+ if(istk(ilx).ne.1 .and. istk(ilx).ne.4) then
+ err=nf
+ call error(268)
+ return
+ endif
+ if(istk(ilx+1)*istk(ilx+2).ne.1) then
+ err=nf
+ call error(268)
+ return
+ endif
+ scichk=.true.
+ return
+ end
+
+
diff --git a/modules/linear_algebra/src/fortran/scischur.lo b/modules/linear_algebra/src/fortran/scischur.lo
new file mode 100755
index 000000000..61a1165b7
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/scischur.lo
@@ -0,0 +1,12 @@
+# src/fortran/scischur.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/scischur.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/writebuf.f b/modules/linear_algebra/src/fortran/writebuf.f
new file mode 100755
index 000000000..d390feeba
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/writebuf.f
@@ -0,0 +1,70 @@
+
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) 2007-2008 - INRIA - Allan CORNET <allan.cornet@inria.fr>
+c
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+c ====================================
+c requires by f2c :(
+c ====================================
+ subroutine writebufdgesv3(buffer,r)
+
+ character*(*) buffer
+ double precision r
+
+ write(buffer(1:13),'(1pd13.4)') r
+
+ end
+c ====================================
+ subroutine writebufdgesv4(buffer,r)
+
+ character*(*) buffer
+ double precision r
+
+ write(buffer(1:13),'(1pd13.4)') r
+
+ end
+c ====================================
+ subroutine writebufdgetri(buffer,r)
+
+ character*(*) buffer
+ double precision r
+
+ write(buffer(1:13),'(1pd13.4)') r
+
+ end
+c ====================================
+ subroutine writebufzgesv3(buffer,r)
+
+ character*(*) buffer
+ double precision r
+
+ write(buffer(1:13),'(1pd13.4)') r
+
+ end
+c ====================================
+ subroutine writebufzgesv4(buffer,r)
+
+ character*(*) buffer
+ double precision r
+
+ write(buffer(1:13),'(1pd13.4)') r
+
+ end
+c ====================================
+ subroutine writebufzgetri(buffer,r)
+
+ character*(*) buffer
+ double precision r
+
+ write(buffer(1:13),'(1pd13.4)') r
+
+ end
+c ====================================
+
+
+
diff --git a/modules/linear_algebra/src/fortran/writebuf.lo b/modules/linear_algebra/src/fortran/writebuf.lo
new file mode 100755
index 000000000..cc24d4394
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/writebuf.lo
@@ -0,0 +1,12 @@
+# src/fortran/writebuf.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/writebuf.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/src/fortran/zoldqr.f b/modules/linear_algebra/src/fortran/zoldqr.f
new file mode 100755
index 000000000..e8c3b9c37
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/zoldqr.f
@@ -0,0 +1,153 @@
+c Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+c Copyright (C) INRIA
+c$
+c This file must be used under the terms of the CeCILL.
+c This source file is licensed as described in the file COPYING, which
+c you should have received as part of this distribution. The terms
+c are also available at
+c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+c$
+ subroutine zoldqr(tol,fname)
+
+c [Q,R,rk,E]=qr(A,tol)
+c [Q,R,rk,E]=qr(A)
+
+ include 'stack.h'
+ logical getrhsvar,createvar
+ logical checklhs,checkrhs
+
+ character fname*(*)
+ double precision ONE, DZERO,eps,tt,tol
+ parameter ( ONE=1.0D0, DZERO=0.0D0)
+ complex*16 ZERO
+ parameter ( ZERO=(0.0D0,0.0D0) )
+
+
+ minrhs=1
+ maxrhs=2
+ minlhs=1
+ maxlhs=4
+ eps=stk(leps)
+c
+ if(.not.checkrhs(fname,minrhs,maxrhs)) return
+ if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+ if(.not.getrhsvar(1,'z', M, N, lA)) return
+ if(M.eq.0 .or.N.eq.0) then
+ if(.not.createvar(2,'z', 0, 0, lQ)) return
+ if(.not.createvar(3,'z', 0, 0, lR)) return
+ if(.not.createvar(4,'d', 1, 1, lrk)) return
+ stk(lrk)=0.0d0
+ if(.not.createvar(5,'d', 0, 0, lE)) return
+ lhsvar(1) = 2
+ lhsvar(2) = 3
+ lhsvar(3) = 4
+ lhsvar(4) = 5
+ return
+ elseif(M.eq.-1 .or.N.eq.-1) then
+ err=1
+ call error(271)
+ return
+ endif
+ if(.not.createvar(2,'z', M, M, lQ)) return
+ if(.not.createvar(3,'z', M, N, lR)) return
+ if(.not.createvar(4,'d', N, N, lE)) return
+ if(.not.createvar(5,'i', 1, N, lJPVT)) return
+ if(.not.createvar(6,'d', 1, 1, lrk)) return
+ k=7
+ if(.not.createvar(k,'z', 1, min(M,N), lTAU)) return
+ if(.not.createvar(k+1,'d', 1, 2*N, lRWORK)) return
+ LWORKMIN = N
+ LWORK=maxvol(k+2,'z')
+ if(LWORK.le.LWORKMIN) then
+ err=2*(LWORK-LWORKMIN)
+ call error(17)
+ return
+ endif
+ if(.not.createvar(k+2,'z', 1, LWORK, lDWORK)) return
+
+ if(lhs.le.2) then
+ call ZGEQRF(M,N,zstk(lA),M,zstk(lTAU),zstk(lDWORK),
+ $ LWORK, INFO )
+c SUBROUTINE ZGEQRF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
+ else
+ do 5 i = 1, N
+ istk(lJPVT+i-1) = 0
+ 5 continue
+ call ZGEQPF(M,N,zstk(lA), M,istk(lJPVT),zstk(lTAU),
+ $ zstk(lDWORK), stk(lRWORK), INFO )
+c SUBROUTINE ZGEQPF( M, N, A, LDA, JPVT, TAU, WORK, RWORK, INFO )
+ endif
+ if(info.ne.0) then
+ return
+ endif
+
+ call ZLACPY( 'U', M, N, zstk(lA), M, zstk(lR), M )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, B, LDB )
+C if(N.ge.2) then
+ if(M.gt.N) then
+ do 20 j = 1, N
+ do 10 i = j+1, M
+ ij = i+(j-1)*M
+ zstk(lR+ij-1) = ZERO
+ 10 continue
+ 20 continue
+ else
+ do 40 j = 1, M-1
+ do 30 i = j+1, M
+ ij = i+(j-1)*M
+ zstk(lR+ij-1) = ZERO
+ 30 continue
+ 40 continue
+ endif
+C endif
+
+ if(M.gt.N) then
+ call ZLACPY( 'F', M, N, zstk(lA), M, zstk(lQ), M )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, LDA, B, LDB )
+ do 60 j = N+1, M
+ do 50 i = 1, M
+ ij = i+(j-1)*M
+ zstk(lQ+ij-1) = ZERO
+ 50 continue
+ 60 continue
+ else
+ call ZLACPY( 'F', M, M, zstk(lA), M, zstk(lQ), M )
+c SUBROUTINE ZLACPY( UPLO, M, N, A, B, LDB )
+ endif
+ call ZUNGQR( M, M, min(M,N), zstk(lQ), M, zstk(lTAU),
+ $ zstk(lDWORK), LWORK, INFO )
+c SUBROUTINE ZUNGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
+
+ if(lhs.gt.2) then
+ call DLASET( 'F', N, N, DZERO, DZERO, stk(lE), N )
+c SUBROUTINE DLASET( UPLO, M, N, ALPHA, BETA, A, LDA )
+ do 70 j = 1, N
+ i = istk(lJPVT+j-1)
+ ij = i + (j-1)*N
+ stk(lE+ij-1) = ONE
+ 70 continue
+ endif
+c evaluating the rank
+ tt = abs(zstk(lR))
+ if(tol.eq.-1.0d0) tol = dble(max(m,n)) * eps * tt
+ k = 0
+ ls = lr
+ m1 = min(m,n)
+ do 450 j = 1,m1
+ tt = abs(zstk(ls))
+ if (tt .le. tol) goto 460
+ k = j
+ ls = ls + m + 1
+ 450 continue
+ 460 continue
+
+c
+ stk(lrk)=dble(k)
+ lhsvar(1)=2
+ lhsvar(2)=3
+ lhsvar(3)=6
+ lhsvar(4)=4
+c
+ end
+
diff --git a/modules/linear_algebra/src/fortran/zoldqr.lo b/modules/linear_algebra/src/fortran/zoldqr.lo
new file mode 100755
index 000000000..23072c905
--- /dev/null
+++ b/modules/linear_algebra/src/fortran/zoldqr.lo
@@ -0,0 +1,12 @@
+# src/fortran/zoldqr.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/zoldqr.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/linear_algebra/tests/benchmarks/bench_chol.tst b/modules/linear_algebra/tests/benchmarks/bench_chol.tst
new file mode 100755
index 000000000..d03eea05d
--- /dev/null
+++ b/modules/linear_algebra/tests/benchmarks/bench_chol.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for chol function
+//==============================================================================
+
+// <-- BENCH NB RUN : 10 -->
+
+stacksize(30000000);
+
+a = 0;
+b = 0;
+a = rand(900, 900, 'n');
+a = a'*a;
+
+// <-- BENCH START -->
+b = chol(a);
+// <-- BENCH END -->
diff --git a/modules/linear_algebra/tests/benchmarks/bench_det.tst b/modules/linear_algebra/tests/benchmarks/bench_det.tst
new file mode 100755
index 000000000..042d2bd63
--- /dev/null
+++ b/modules/linear_algebra/tests/benchmarks/bench_det.tst
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for det function
+//==============================================================================
+
+// <-- BENCH NB RUN : 10 -->
+
+stacksize(30000000);
+a = 0;
+b = 0;
+a = rand(650, 650,'n');
+
+// <-- BENCH START -->
+b = det(a);
+// <-- BENCH END -->
diff --git a/modules/linear_algebra/tests/benchmarks/bench_escoufier.tst b/modules/linear_algebra/tests/benchmarks/bench_escoufier.tst
new file mode 100755
index 000000000..06e76355b
--- /dev/null
+++ b/modules/linear_algebra/tests/benchmarks/bench_escoufier.tst
@@ -0,0 +1,72 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for escoufier macro
+//==============================================================================
+
+// <-- BENCH NB RUN : 10 -->
+
+stacksize(30000000);
+
+p = 0;
+q = 0;
+vt = 0;
+vr = 0;
+vrt = 0;
+rvt = 0;
+RV = 0;
+j = 0;
+k = 0;
+
+x2 = 0;
+R = 0;
+Rxx = 0;
+Ryy = 0;
+Rxy = 0;
+Ryx = 0;
+Rvmax = 0;
+
+f = 0;
+c = 0;
+d = 0;
+x = abs(rand(37,37,'n'));
+
+// <-- BENCH START -->
+// Calculation of Escoufier's equivalent vectors
+p = size(x, 2);
+vt = [1:p]; // Variables to test
+vr = []; // Result: ordered variables
+RV = [1:p]; // Result: correlations
+
+for j = 1:p // loop on the variable number
+ Rvmax = 0;
+ for k = 1:(p-j+1) // loop on the variables
+ x2 = [x, x(:, vr), x(:, vt(k))]; // New table to test
+ // R = corrcoef(x2); // Correlations table
+ // Not in scilab, so the 5 following lines do it
+ q = size(x2, 1);
+ x2 = x2 - ones (q, 1) * sum (x2, 'r') / q;
+ c = conj(x2' * x2 / (q - 1));
+ d = diag(c);
+ R = c ./ sqrt(d * d');
+ Ryy = R(1:p, 1:p);
+ Rxx = R(p+1:p+j, p+1:p+j);
+ Rxy = R(p+1:p+j, 1:p);
+ Ryx = Rxy';
+ rvt = trace(Ryx*Rxy)/((trace(Ryy^2)*trace(Rxx^2))^0.5); // RV calculation
+ if rvt > Rvmax
+ Rvmax = rvt; // test of RV
+ vrt(j) = vt(k); // temporary held variable
+ end
+ end
+ vr(j) = vrt(j); // Result: variable
+ RV(j) = Rvmax; // Result: correlation
+ f = find(vt~=vr(j)); // identify the held variable
+ vt = vt(f); // reidentify variables to test
+end
+// <-- BENCH END -->
diff --git a/modules/linear_algebra/tests/benchmarks/bench_inv.tst b/modules/linear_algebra/tests/benchmarks/bench_inv.tst
new file mode 100755
index 000000000..28b577ca4
--- /dev/null
+++ b/modules/linear_algebra/tests/benchmarks/bench_inv.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for inv function
+//==============================================================================
+
+// <-- BENCH NB RUN : 100 -->
+
+stacksize(30000000);
+
+a = 0;
+b = 0;
+
+a = rand(400, 400,'n');
+
+// <-- BENCH START -->
+b = inv(a);
+// <-- BENCH END -->
diff --git a/modules/linear_algebra/tests/benchmarks/bench_matrix_1.tst b/modules/linear_algebra/tests/benchmarks/bench_matrix_1.tst
new file mode 100755
index 000000000..9b3c96e0d
--- /dev/null
+++ b/modules/linear_algebra/tests/benchmarks/bench_matrix_1.tst
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for matrix function
+//==============================================================================
+
+// <-- BENCH NB RUN : 10 -->
+
+stacksize(30000000);
+
+a = 0;
+b = 0;
+
+a = abs(rand(1500,1500,'n')/10);
+
+// <-- BENCH START -->
+b = a';
+a = matrix(b,750,3000);
+b = a';
+// <-- BENCH END -->
diff --git a/modules/linear_algebra/tests/benchmarks/bench_matrix_2.tst b/modules/linear_algebra/tests/benchmarks/bench_matrix_2.tst
new file mode 100755
index 000000000..e9835bbe2
--- /dev/null
+++ b/modules/linear_algebra/tests/benchmarks/bench_matrix_2.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for matrix function
+//==============================================================================
+
+// <-- BENCH NB RUN : 10 -->
+
+stacksize(30000000);
+
+a = 0;
+b = 0;
+a = abs(rand(800, 800, 'n')/2);
+
+// <-- BENCH START -->
+b = a.^1000;
+// <-- BENCH END -->
+
diff --git a/modules/linear_algebra/tests/benchmarks/bench_matrix_3.tst b/modules/linear_algebra/tests/benchmarks/bench_matrix_3.tst
new file mode 100755
index 000000000..ba995330c
--- /dev/null
+++ b/modules/linear_algebra/tests/benchmarks/bench_matrix_3.tst
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for matrix ops
+//==============================================================================
+
+// <-- BENCH NB RUN : 10 -->
+
+stacksize(30000000);
+
+a = 0;
+b = 0;
+a = rand(700,700,'n');
+
+// <-- BENCH START -->
+b = a'*a;
+// <-- BENCH END -->
diff --git a/modules/linear_algebra/tests/benchmarks/bench_matrix_4.tst b/modules/linear_algebra/tests/benchmarks/bench_matrix_4.tst
new file mode 100755
index 000000000..588e82713
--- /dev/null
+++ b/modules/linear_algebra/tests/benchmarks/bench_matrix_4.tst
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for matrix ops
+//==============================================================================
+
+// <-- BENCH NB RUN : 10 -->
+
+stacksize(30000000);
+
+a = 0;
+b = 0;
+
+a = rand(600,600,'n');
+b = 1:600;
+b = b';
+
+// <-- BENCH START -->
+c = a\b;
+// <-- BENCH END -->
diff --git a/modules/linear_algebra/tests/benchmarks/bench_spec.tst b/modules/linear_algebra/tests/benchmarks/bench_spec.tst
new file mode 100755
index 000000000..d6bf9d9b0
--- /dev/null
+++ b/modules/linear_algebra/tests/benchmarks/bench_spec.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for spec function
+//==============================================================================
+
+// <-- BENCH NB RUN : 10 -->
+
+stacksize(30000000);
+
+a = 0;
+b = 0;
+
+a = rand(320,320,'n');
+
+// <-- BENCH START -->
+b = spec(a);
+// <-- BENCH END -->
diff --git a/modules/linear_algebra/tests/benchmarks/bench_sqroot.tst b/modules/linear_algebra/tests/benchmarks/bench_sqroot.tst
new file mode 100755
index 000000000..ba0fd93db
--- /dev/null
+++ b/modules/linear_algebra/tests/benchmarks/bench_sqroot.tst
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for sqroot function
+//==============================================================================
+
+// <-- BENCH NB RUN : 10000 -->
+
+X = rand(5,2)*rand(2,5);
+X = X*X';
+
+// <-- BENCH START -->
+W = sqroot(X);
+// <-- BENCH END -->
diff --git a/modules/linear_algebra/tests/benchmarks/bench_sva.tst b/modules/linear_algebra/tests/benchmarks/bench_sva.tst
new file mode 100755
index 000000000..ea64e4338
--- /dev/null
+++ b/modules/linear_algebra/tests/benchmarks/bench_sva.tst
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for sva function
+//==============================================================================
+
+// <-- BENCH NB RUN : 1000 -->
+
+A = rand(50,40)*rand(40,50);
+
+// <-- BENCH START -->
+[U,s,V] = sva(A,2);
+// <-- BENCH END -->
diff --git a/modules/linear_algebra/tests/benchmarks/bench_svd_1.tst b/modules/linear_algebra/tests/benchmarks/bench_svd_1.tst
new file mode 100755
index 000000000..97f6e4335
--- /dev/null
+++ b/modules/linear_algebra/tests/benchmarks/bench_svd_1.tst
@@ -0,0 +1,27 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for svd 1
+//==============================================================================
+
+// <-- BENCH NB RUN : 10 -->
+
+stacksize(30000000);
+
+a = 0;
+b = 0;
+
+a=rand(300,300);
+
+b = a*a';
+[c,d] = lu(b);
+inv(a);
+
+// <-- BENCH START -->
+v = svd(a);
+// <-- BENCH END -->
diff --git a/modules/linear_algebra/tests/benchmarks/bench_svd_2.tst b/modules/linear_algebra/tests/benchmarks/bench_svd_2.tst
new file mode 100755
index 000000000..c54fa281f
--- /dev/null
+++ b/modules/linear_algebra/tests/benchmarks/bench_svd_2.tst
@@ -0,0 +1,27 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for svd 2
+//==============================================================================
+
+// <-- BENCH NB RUN : 10 -->
+
+stacksize(30000000);
+
+a = 0;
+b = 0;
+
+a=rand(300,300);
+
+b = a*a';
+[c,d] = lu(b);
+inv(a);
+
+// <-- BENCH START -->
+[u,s,v]=svd(a);
+// <-- BENCH END -->
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_10178.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_10178.dia.ref
new file mode 100755
index 000000000..91b46084a
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_10178.dia.ref
@@ -0,0 +1,40 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 10178 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10178
+//
+// <-- Short Description -->
+// norm function falied for some sparse matrices.
+// =============================================================================
+A = [1 0 0 1 0;0 -1 -1 0 -1];
+AS = sparse(A);
+assert_checkalmostequal(norm(A), norm(AS));
+assert_checkalmostequal(norm(A'), norm(AS'));
+assert_checkequal(norm(A, 1), norm(AS, 1));
+assert_checkequal(norm(A, %inf), norm(AS, %inf));
+assert_checkequal(norm(A, 'fro'), norm(AS, 'fro'));
+A = [1 1 1 1 1;-1 -1 -1 -1 -1];
+AS = sparse(A);
+assert_checkalmostequal(norm(A), norm(AS));
+assert_checkalmostequal(norm(A)', norm(AS)');
+assert_checkequal(norm(A, 1), norm(AS, 1));
+assert_checkequal(norm(A, %inf), norm(AS, %inf));
+assert_checkequal(norm(A, 'fro'), norm(AS, 'fro'));
+A = [
+ 0. 0. 0. 0. 0.
+ 0. 0. 0. 0. 0.
+ 0. 0. -1. 0. 1.
+ 0. 0. 0. 0. 0.
+ 0. 0. 1. 0. -1. ];
+AS = sparse(A);
+assert_checkequal(norm(A), norm(AS));
+assert_checkequal(norm(A, 1), norm(AS, 1));
+assert_checkequal(norm(A, %inf), norm(AS, %inf));
+assert_checkequal(norm(A, 'fro'), norm(AS, 'fro'));
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_10178.tst b/modules/linear_algebra/tests/nonreg_tests/bug_10178.tst
new file mode 100755
index 000000000..9e4800334
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_10178.tst
@@ -0,0 +1,50 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 10178 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10178
+//
+// <-- Short Description -->
+// norm function falied for some sparse matrices.
+// =============================================================================
+
+A = [1 0 0 1 0;0 -1 -1 0 -1];
+AS = sparse(A);
+
+assert_checkalmostequal(norm(A), norm(AS));
+assert_checkalmostequal(norm(A'), norm(AS'));
+assert_checkequal(norm(A, 1), norm(AS, 1));
+assert_checkequal(norm(A, %inf), norm(AS, %inf));
+assert_checkequal(norm(A, 'fro'), norm(AS, 'fro'));
+
+A = [1 1 1 1 1;-1 -1 -1 -1 -1];
+AS = sparse(A);
+
+assert_checkalmostequal(norm(A), norm(AS));
+assert_checkalmostequal(norm(A)', norm(AS)');
+assert_checkequal(norm(A, 1), norm(AS, 1));
+assert_checkequal(norm(A, %inf), norm(AS, %inf));
+assert_checkequal(norm(A, 'fro'), norm(AS, 'fro'));
+
+
+A = [
+ 0. 0. 0. 0. 0.
+ 0. 0. 0. 0. 0.
+ 0. 0. -1. 0. 1.
+ 0. 0. 0. 0. 0.
+ 0. 0. 1. 0. -1. ];
+
+AS = sparse(A);
+
+assert_checkequal(norm(A), norm(AS));
+assert_checkequal(norm(A, 1), norm(AS, 1));
+assert_checkequal(norm(A, %inf), norm(AS, %inf));
+assert_checkequal(norm(A, 'fro'), norm(AS, 'fro'));
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_10281.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_10281.dia.ref
new file mode 100755
index 000000000..90e6c5ae7
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_10281.dia.ref
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 10281 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10281
+//
+// <-- Short Description -->
+// lyap segfaults in some cases
+s=poly(0,'s');
+A=[-1 10;0 1];B=[-2;0];C=[-2 3];D=[-2];
+sis57=syslin('c',A,B,C,D);
+ss2tf(sis57);
+gs=C*inv((s*eye(2,2)-A))*B+D;
+C=[1 1];
+A=[0 1;-0.5 -1];
+X=lyap(A,C,'c');
+assert_checkalmostequal(X,[-1.5,-1]);
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_10281.tst b/modules/linear_algebra/tests/nonreg_tests/bug_10281.tst
new file mode 100755
index 000000000..fefe52866
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_10281.tst
@@ -0,0 +1,28 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 10281 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10281
+//
+// <-- Short Description -->
+// lyap segfaults in some cases
+
+s=poly(0,'s');
+A=[-1 10;0 1];B=[-2;0];C=[-2 3];D=[-2];
+sis57=syslin('c',A,B,C,D);
+ss2tf(sis57);
+
+gs=C*inv((s*eye(2,2)-A))*B+D;
+
+C=[1 1];
+A=[0 1;-0.5 -1];
+X=lyap(A,C,'c');
+assert_checkalmostequal(X,[-1.5,-1]);
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_10519.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_10519.dia.ref
new file mode 100755
index 000000000..6b73bfebc
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_10519.dia.ref
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - DIGITEO - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 10519 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10519
+//
+// <-- Short Description -->
+// Wrong error message in spec function when input arguments were not square.
+// First input argument is not square
+exectedMsg = msprintf(_("Wrong type for first argument: Square matrix expected.\n"));
+assert_checkerror("spec(rand(1,2),rand(2,4))", exectedMsg);
+// Second input argument is not square
+exectedMsg = msprintf(_("Wrong type for argument #%d: Square matrix expected.\n"), 2);
+assert_checkerror("spec(rand(2,2),rand(2,4))", exectedMsg);
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_10519.tst b/modules/linear_algebra/tests/nonreg_tests/bug_10519.tst
new file mode 100755
index 000000000..951c495f2
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_10519.tst
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - DIGITEO - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 10519 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10519
+//
+// <-- Short Description -->
+// Wrong error message in spec function when input arguments were not square.
+
+// First input argument is not square
+exectedMsg = msprintf(_("Wrong type for first argument: Square matrix expected.\n"));
+assert_checkerror("spec(rand(1,2),rand(2,4))", exectedMsg);
+
+// Second input argument is not square
+exectedMsg = msprintf(_("Wrong type for argument #%d: Square matrix expected.\n"), 2);
+assert_checkerror("spec(rand(2,2),rand(2,4))", exectedMsg); \ No newline at end of file
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_10921.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_10921.dia.ref
new file mode 100755
index 000000000..1786eafa4
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_10921.dia.ref
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- ENGLISH IMPOSED -->
+// <-- Non-regression test for bug 10921 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10921
+//
+// <-- Short Description -->
+// For ill-conditioned matrix, inv() prints a wrong value of rcond
+M = [1 0; 0 10^(-8)];
+inv(M);
+Warning :
+matrix is close to singular or badly scaled. rcond = 1.0000D-08
+
+A=diag([1:10]);
+A(1,1) = 10^-8;
+inv(A);
+Warning :
+matrix is close to singular or badly scaled. rcond = 1.0000D-09
+
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_10921.tst b/modules/linear_algebra/tests/nonreg_tests/bug_10921.tst
new file mode 100755
index 000000000..fa93a6b67
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_10921.tst
@@ -0,0 +1,28 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- ENGLISH IMPOSED -->
+
+// <-- Non-regression test for bug 10921 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10921
+//
+// <-- Short Description -->
+// For ill-conditioned matrix, inv() prints a wrong value of rcond
+
+M = [1 0; 0 10^(-8)];
+inv(M);
+
+A=diag([1:10]);
+A(1,1) = 10^-8;
+inv(A);
+
+
+
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_12121.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_12121.dia.ref
new file mode 100755
index 000000000..3b6088ff4
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_12121.dia.ref
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 12121 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12121
+//
+// <-- Short Description -->
+// inv() did not work for complex sparse matrices.
+// =============================================================================
+A = %i*speye(3,3);
+assert_checkequal(inv(A), -A);
+A = rand(5,5)*%i;
+assert_checkalmostequal(full(inv(sparse(A))), inv(A));
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_12121.tst b/modules/linear_algebra/tests/nonreg_tests/bug_12121.tst
new file mode 100755
index 000000000..9ae434198
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_12121.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 12121 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12121
+//
+// <-- Short Description -->
+// inv() did not work for complex sparse matrices.
+// =============================================================================
+
+A = %i*speye(3,3);
+assert_checkequal(inv(A), -A);
+
+A = rand(5,5)*%i;
+assert_checkalmostequal(full(inv(sparse(A))), inv(A));
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_12686.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_12686.dia.ref
new file mode 100755
index 000000000..baf618a1d
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_12686.dia.ref
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Pierre MARECHAL <pierre.marechal@scilab.org>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- ENGLISH IMPOSED -->
+// <-- Non-regression test for bug 12686 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12686
+//
+// <-- Short Description -->
+// diff() with zero input arguments yielded the wrong error
+// Run with test_run('linear_algebra', 'bug_12686', ['no_check_error_output'])
+refMsg = msprintf(_("%s: Wrong number of input arguments: %d to %d expected.\n"), "diff", 1, 3);
+assert_checkerror("diff()", refMsg);
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_12686.tst b/modules/linear_algebra/tests/nonreg_tests/bug_12686.tst
new file mode 100755
index 000000000..e2f300ba2
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_12686.tst
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Pierre MARECHAL <pierre.marechal@scilab.org>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+// <-- ENGLISH IMPOSED -->
+
+// <-- Non-regression test for bug 12686 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12686
+//
+// <-- Short Description -->
+// diff() with zero input arguments yielded the wrong error
+
+// Run with test_run('linear_algebra', 'bug_12686', ['no_check_error_output'])
+
+refMsg = msprintf(_("%s: Wrong number of input arguments: %d to %d expected.\n"), "diff", 1, 3);
+assert_checkerror("diff()", refMsg);
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_2523.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_2523.dia.ref
new file mode 100755
index 000000000..7472c06fd
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_2523.dia.ref
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2005-2008 - INRIA Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 2523 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2523
+//
+// <-- Short Description -->
+// slash and backslash matrix divisions involving vectors with %inf or %nan entries
+// hang scilab
+if execstr('[1 %inf]\1 ','errcatch')<>229 then bugmes();quit;end
+if execstr('[1 2]\%inf ','errcatch')<>229 then bugmes();quit;end
+if execstr('[1+%i %inf]\1 ','errcatch')<>229 then bugmes();quit;end
+if execstr('[1+%i %inf]\%i ','errcatch')<>229 then bugmes();quit;end
+if execstr('[1 %i]\%inf ','errcatch')<>229 then bugmes();quit;end
+if execstr('1/[1 %inf] ','errcatch')<>229 then bugmes();quit;end
+if execstr('%inf/[1 2] ','errcatch')<>229 then bugmes();quit;end
+if execstr('1/[1+%i %inf] ','errcatch')<>229 then bugmes();quit;end
+if execstr('%i/[1+%i %inf] ','errcatch')<>229 then bugmes();quit;end
+if execstr('%inf/[1 %i] ','errcatch')<>229 then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_2523.tst b/modules/linear_algebra/tests/nonreg_tests/bug_2523.tst
new file mode 100755
index 000000000..1423437dc
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_2523.tst
@@ -0,0 +1,33 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2005-2008 - INRIA Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 2523 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2523
+//
+// <-- Short Description -->
+// slash and backslash matrix divisions involving vectors with %inf or %nan entries
+// hang scilab
+
+
+if execstr('[1 %inf]\1 ','errcatch')<>229 then pause,end
+if execstr('[1 2]\%inf ','errcatch')<>229 then pause,end
+
+if execstr('[1+%i %inf]\1 ','errcatch')<>229 then pause,end
+if execstr('[1+%i %inf]\%i ','errcatch')<>229 then pause,end
+
+if execstr('[1 %i]\%inf ','errcatch')<>229 then pause,end
+
+if execstr('1/[1 %inf] ','errcatch')<>229 then pause,end
+if execstr('%inf/[1 2] ','errcatch')<>229 then pause,end
+
+if execstr('1/[1+%i %inf] ','errcatch')<>229 then pause,end
+if execstr('%i/[1+%i %inf] ','errcatch')<>229 then pause,end
+
+if execstr('%inf/[1 %i] ','errcatch')<>229 then pause,end
+
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_2775.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_2775.dia.ref
new file mode 100755
index 000000000..4e9133ff1
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_2775.dia.ref
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+// Copyright (C) 2009 - INRIA - Michael Baudin, Antoine Elias
+// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 2775 -->
+//
+// <-- CLI SHELL MODE -->
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2775
+//
+// Bibliography :
+// "IEEE Standard for Floating-Point Arithmetic"
+// IEEE Std 754-2008
+// 29 August 2008
+// (Revision of IEEE Std 754-1985)
+res_1 = 0.0 * %nan;
+res_2 = %nan * 0.0;
+assert_checkequal ( res_1 , %nan );
+assert_checkequal ( res_2 , %nan );
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_2775.tst b/modules/linear_algebra/tests/nonreg_tests/bug_2775.tst
new file mode 100755
index 000000000..86e7a5819
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_2775.tst
@@ -0,0 +1,30 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+// Copyright (C) 2009 - INRIA - Michael Baudin, Antoine Elias
+// Copyright (C) 2010-2011 - DIGITEO - Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 2775 -->
+//
+// <-- CLI SHELL MODE -->
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2775
+//
+
+
+
+// Bibliography :
+// "IEEE Standard for Floating-Point Arithmetic"
+// IEEE Std 754-2008
+// 29 August 2008
+// (Revision of IEEE Std 754-1985)
+
+res_1 = 0.0 * %nan;
+res_2 = %nan * 0.0;
+
+assert_checkequal ( res_1 , %nan );
+assert_checkequal ( res_2 , %nan );
+
+
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_3312.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_3312.dia.ref
new file mode 100755
index 000000000..f08fbc754
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_3312.dia.ref
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 3312 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3312
+//
+// <-- Short Description -->
+// Wrong companion matrix when the polynomial is complex.
+p=1+%i+2*%s;
+computed=companion(p);
+expected=[-(1+%i)/2];
+if abs(expected-computed)>%eps then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_3312.tst b/modules/linear_algebra/tests/nonreg_tests/bug_3312.tst
new file mode 100755
index 000000000..fbb974694
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_3312.tst
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 3312 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3312
+//
+// <-- Short Description -->
+// Wrong companion matrix when the polynomial is complex.
+
+p=1+%i+2*%s;
+computed=companion(p);
+expected=[-(1+%i)/2];
+if abs(expected-computed)>%eps then pause,end
+
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_3624.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_3624.dia.ref
new file mode 100755
index 000000000..d3af3c95a
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_3624.dia.ref
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 3624 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3624
+//
+// <-- Short Description -->
+// Nan returned when multiplying large zero vector by its transpose.
+A=zeros(1000,1);
+res = A*A';
+if or(isnan(res)<>%f) then bugmes();quit;end;
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_3624.tst b/modules/linear_algebra/tests/nonreg_tests/bug_3624.tst
new file mode 100755
index 000000000..ffba5c266
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_3624.tst
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 3624 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3624
+//
+// <-- Short Description -->
+// Nan returned when multiplying large zero vector by its transpose.
+
+
+A=zeros(1000,1);
+res = A*A';
+if or(isnan(res)<>%f) then pause,end;
+
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_3652.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_3652.dia.ref
new file mode 100755
index 000000000..47ac10574
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_3652.dia.ref
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 3652 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3652
+//
+// <-- Short Description -->
+// Instable behaviour of Lapack's zggev
+Areal=[1 0 0;...
+0 1 0;...
+0 0 1];
+A = complex(Areal,0);
+Ereal=[1 1e-14 0;...
+1e-14 1 0;...
+0 0 1];
+E = complex(Ereal,0);
+Scomputed = spec(A,E);
+Sexpected = [1-1e-14;1+1e-14;1];
+if norm(Scomputed - Sexpected) > 1000 * %eps then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_3652.tst b/modules/linear_algebra/tests/nonreg_tests/bug_3652.tst
new file mode 100755
index 000000000..7218d75d5
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_3652.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 3652 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3652
+//
+// <-- Short Description -->
+// Instable behaviour of Lapack's zggev
+
+
+Areal=[1 0 0;...
+0 1 0;...
+0 0 1];
+A = complex(Areal,0);
+Ereal=[1 1e-14 0;...
+1e-14 1 0;...
+0 0 1];
+E = complex(Ereal,0);
+Scomputed = spec(A,E);
+Sexpected = [1-1e-14;1+1e-14;1];
+if norm(Scomputed - Sexpected) > 1000 * %eps then pause,end
+
+
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_3827.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_3827.dia.ref
new file mode 100755
index 000000000..a909c8648
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_3827.dia.ref
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 3827 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3827
+//
+// <-- Short Description -->
+// Atlas library crashs scilab with this example
+a=[1 2 3;2 3 4;3 4 5];
+ev=spec(a);
+if or(size(ev)<> [3 1]) then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_3827.tst b/modules/linear_algebra/tests/nonreg_tests/bug_3827.tst
new file mode 100755
index 000000000..373c8352e
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_3827.tst
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 3827 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3827
+//
+// <-- Short Description -->
+// Atlas library crashs scilab with this example
+
+a=[1 2 3;2 3 4;3 4 5];
+ev=spec(a);
+if or(size(ev)<> [3 1]) then pause,end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_4042.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_4042.dia.ref
new file mode 100755
index 000000000..9796383f9
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_4042.dia.ref
@@ -0,0 +1,28 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4042 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4042
+//
+// <-- Short Description -->
+// squeeze(A(1,1,:)) returned an hypermatrix instead a matrix
+// =============================================================================
+A=ones(3,3);
+A(:,:,2)=3*ones(3,3);
+A(:,:,3)=-1*ones(3,3);
+B=squeeze(A(1,1,:));
+assert_checkequal(type(B), 1);
+// In Scilab 6, the hypermatrix type won't exist
+v = getversion('scilab');
+if v(1) > 5 then
+ C(:,:,1) = zeros(32,32);
+ C(:,:,2) = zeros(32,32);
+ assert_checkequal(typeof(C(:,:,1)), "constant");
+ assert_checkequal(typeof(C(1,:,:)), "constant");
+end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_4042.tst b/modules/linear_algebra/tests/nonreg_tests/bug_4042.tst
new file mode 100755
index 000000000..ea5e8b139
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_4042.tst
@@ -0,0 +1,33 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 4042 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4042
+//
+// <-- Short Description -->
+// squeeze(A(1,1,:)) returned an hypermatrix instead a matrix
+// =============================================================================
+
+A=ones(3,3);
+A(:,:,2)=3*ones(3,3);
+A(:,:,3)=-1*ones(3,3);
+B=squeeze(A(1,1,:));
+
+assert_checkequal(type(B), 1);
+
+// In Scilab 6, the hypermatrix type won't exist
+v = getversion('scilab');
+if v(1) > 5 then
+ C(:,:,1) = zeros(32,32);
+ C(:,:,2) = zeros(32,32);
+ assert_checkequal(typeof(C(:,:,1)), "constant");
+ assert_checkequal(typeof(C(1,:,:)), "constant");
+end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_4311.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_4311.dia.ref
new file mode 100755
index 000000000..670c84377
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_4311.dia.ref
@@ -0,0 +1,15 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Pierre MARECHAL <pierre.marechal@scilab.org>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4311 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4311
+//
+// <-- Short Description -->
+// rcond(eye()) returns eye() instead of 1.
+if rcond(eye()) <> 1 then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_4311.tst b/modules/linear_algebra/tests/nonreg_tests/bug_4311.tst
new file mode 100755
index 000000000..c4d5fe168
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_4311.tst
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - DIGITEO - Pierre MARECHAL <pierre.marechal@scilab.org>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 4311 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4311
+//
+// <-- Short Description -->
+// rcond(eye()) returns eye() instead of 1.
+
+if rcond(eye()) <> 1 then pause,end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_4405.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_4405.dia.ref
new file mode 100755
index 000000000..ed870c128
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_4405.dia.ref
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 4405 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4405
+//
+// <-- Short Description -->
+// Calling sequence [Q,R,rk,E]=qr(A,"e") should return an error
+A=[1 2; 3 4; 5 6];
+expectedMsg = msprintf(_("%s: Wrong type for input argument #%d: Real scalar expected.\n"), "qr", 2);
+assert_checkerror("[Q,R,rk,E]=qr(A,""e"")",expectedMsg);
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_4405.tst b/modules/linear_algebra/tests/nonreg_tests/bug_4405.tst
new file mode 100755
index 000000000..c0bea2498
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_4405.tst
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 4405 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4405
+//
+// <-- Short Description -->
+// Calling sequence [Q,R,rk,E]=qr(A,"e") should return an error
+
+A=[1 2; 3 4; 5 6];
+expectedMsg = msprintf(_("%s: Wrong type for input argument #%d: Real scalar expected.\n"), "qr", 2);
+assert_checkerror("[Q,R,rk,E]=qr(A,""e"")",expectedMsg);
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_4425.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_4425.dia.ref
new file mode 100755
index 000000000..c260b308f
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_4425.dia.ref
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4425 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4425
+//
+// <-- Short Description -->
+// After [U,S] = schur(A), U * S * U' is not equal to A
+// =============================================================================
+function r=Err(x)
+ r=norm(x,1)
+endfunction
+function A = testmat1(a, n)
+ //eigen values are given by a dilation of nth roots of 1
+ A = diag(a * ones(1, n - 1), 1) + diag((1 / a) * ones(1, n - 1), -1)
+ A(1,n) = 1 / a; A(n,1) = a
+endfunction
+A = testmat1(3,5);
+Ac = testmat1(3 + %i,5);
+[U, S] = schur(A);
+assert_checkalmostequal(Err(U*S*U'-A), 0, [], 200 * %eps);
+[U, S] = schur(Ac);
+assert_checkalmostequal(Err(U*S*U'-Ac), 0, [], 200 * %eps);
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_4425.tst b/modules/linear_algebra/tests/nonreg_tests/bug_4425.tst
new file mode 100755
index 000000000..068de036d
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_4425.tst
@@ -0,0 +1,39 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 4425 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4425
+//
+// <-- Short Description -->
+// After [U,S] = schur(A), U * S * U' is not equal to A
+// =============================================================================
+
+function r=Err(x)
+ r=norm(x,1)
+endfunction
+
+function A = testmat1(a, n)
+ //eigen values are given by a dilation of nth roots of 1
+ A = diag(a * ones(1, n - 1), 1) + diag((1 / a) * ones(1, n - 1), -1)
+ A(1,n) = 1 / a; A(n,1) = a
+endfunction
+
+A = testmat1(3,5);
+Ac = testmat1(3 + %i,5);
+
+[U, S] = schur(A);
+assert_checkalmostequal(Err(U*S*U'-A), 0, [], 200 * %eps);
+
+[U, S] = schur(Ac);
+assert_checkalmostequal(Err(U*S*U'-Ac), 0, [], 200 * %eps);
+
+
+
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_4759.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_4759.dia.ref
new file mode 100755
index 000000000..55c61e6a8
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_4759.dia.ref
@@ -0,0 +1,16 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 4759 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4759
+//
+// <-- Short Description -->
+// We should provide a better error message in nlev when called with no input argument
+execstr("nlev","errcatch");
+if lasterror()<>msprintf(gettext("%s: Wrong number of input arguments: %d or %d expected.\n"),"nlev",2,3) then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_4759.tst b/modules/linear_algebra/tests/nonreg_tests/bug_4759.tst
new file mode 100755
index 000000000..6a556b85d
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_4759.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 4759 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=4759
+//
+// <-- Short Description -->
+// We should provide a better error message in nlev when called with no input argument
+
+execstr("nlev","errcatch");
+
+if lasterror()<>msprintf(gettext("%s: Wrong number of input arguments: %d or %d expected.\n"),"nlev",2,3) then pause;end
+
+
+
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_5017.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_5017.dia.ref
new file mode 100755
index 000000000..f39147927
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_5017.dia.ref
@@ -0,0 +1,173 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Paul Bignier
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 5017 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5017
+//
+// <-- Short Description -->
+// norm() now calls Lapack.
+// Checking sparse compatibility
+rand("seed", 0);
+A = rand(10, 10);
+n = norm(sparse(A));
+assert_checkalmostequal(n, 5.0884897363846);
+//---------------------------------------------------
+// Now, we make sure that the new implementation
+// of norm() yiels the same results as the old one,
+// with respect to the machine precision.
+// Square root of 5, with a 10^-307 padding.
+x1 = 1.e-307*[1 1 1 1 1];
+y1 = norm(x1);
+// Square root of 3, with a 10^-307 padding.
+x2 = 1.e-307*[1 1 1];
+z1 = norm(x2);
+// Now compute the same values with the old norm function:
+warning("off");
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+// Copyright (C) 2009 - INRIA Michael Baudin
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+//
+// norm --
+// Returns the norm of the given vector/matrix A.
+// Uses scaling to improve accuracy for Pythagorean sums.
+// References
+// Moler C, Morrison D.
+// Replacing square roots by pythagorean sums.
+// IBM Journal of Research and Development 1983; 27(6):577-581.
+//
+function y=norm(A,flag)
+ //compute various matrix norms
+ if argn(2)==1 then flag=2,end
+ if type(A)==1 then
+ if A==[] then y=0,return,end
+ if or(size(A)==1) then // vector norm
+ if type(flag)==10 then //'inf' or 'fro'
+ select convstr(part(flag,1))
+ case "i" then //'inf'
+ y=max(abs(A))
+ case "f" then //'fro'
+ A=A(:)
+ //
+ // Scaling for better floating point accuracy.
+ //
+ //
+ s = max(abs(A));
+ if s==0.0 then
+ y=sqrt(A'*A);
+ else
+ sA = A/s;
+ // return real result
+ y = s * sqrt(abs(sA'*sA));
+ end
+ else
+ error("invalid value for flag")
+ end
+ elseif type(flag)==1 then //p_norm
+ p=flag;
+ if ~isreal(p) then
+ error("flag must be real")
+ end
+ if p==%inf then
+ y=max(abs(A))
+ elseif p==1 then
+ y=sum(abs(A))
+ elseif p==-%inf then
+ y=min(abs(A))
+ elseif isnan(p) then
+ y=%nan
+ elseif p==0 then
+ y=%inf
+ else
+ //
+ // Scaling for better floating point accuracy.
+ //
+ s = max(abs(A));
+ if s==0.0 then
+ y=sum(abs(A).^p)^(1/p);
+ else
+ sA = A/s;
+ y = s * sum(abs(sA).^p)^(1/p);
+ end
+ end
+ else
+ error("invalid value for flag")
+ end
+ else //matrix norm
+ if type(flag)==10 then //'inf' or 'fro'
+ select convstr(part(flag,1))
+ case "i" then //'inf'
+ y=max(sum(abs(A),2))
+ case "f" then //'fro'
+ //
+ // Scaling for better floating point accuracy.
+ //
+ s = max(abs(A));
+ if s==0.0 then
+ if size(A,1)>size(A,2) then
+ y=sqrt(sum(diag(A'*A)))
+ else
+ y=sqrt(sum(diag(A*A')))
+ end
+ else
+ sA = A/s;
+ if size(A,1)>size(A,2) then
+ // return real result
+ y = s * sqrt(sum(abs(diag(sA'*sA))))
+ else
+ y = s * sqrt(sum(abs(diag(sA*sA'))))
+ end
+ end
+ else
+ error("invalid value for flag")
+ end
+ elseif type(flag)==1 then //p_norm
+ p=flag;
+ select p
+ case 1 then
+ y=max(sum(abs(A),1))
+ case 2 then
+ y=max(svd(A))
+ case %inf then
+ y=max(sum(abs(A),2))
+ else
+ error("flag must be 1 2 or inf")
+ end
+ else
+ error("invalid value for flag")
+ end
+ end
+ else
+ if type(A)==16|type(A)==17 then
+ n=getfield(1,A);n=n(1)
+ else
+ [t,n]=typename()
+ n=stripblanks(n(find(t==type(A))))
+ end
+ fun="%"+n+"_norm"
+ if exists(fun)==1 then
+ execstr("y="+fun+"(A,flag)")
+ else
+ error("norm not defined for type """+n+""" ."+..
+ "Check argument or define function "+fun)
+ end
+ end
+endfunction
+y2 = norm(x1);
+z2 = norm(x2);
+assert_checktrue((y1-y2)/y1<=%eps);
+assert_checktrue((z2-z2)/z1<=%eps);
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_5017.tst b/modules/linear_algebra/tests/nonreg_tests/bug_5017.tst
new file mode 100755
index 000000000..7e52298f6
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_5017.tst
@@ -0,0 +1,184 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Paul Bignier
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 5017 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5017
+//
+// <-- Short Description -->
+// norm() now calls Lapack.
+
+// Checking sparse compatibility
+rand("seed", 0);
+A = rand(10, 10);
+n = norm(sparse(A));
+assert_checkalmostequal(n, 5.0884897363846);
+
+//---------------------------------------------------
+// Now, we make sure that the new implementation
+// of norm() yiels the same results as the old one,
+// with respect to the machine precision.
+
+// Square root of 5, with a 10^-307 padding.
+x1 = 1.e-307*[1 1 1 1 1];
+y1 = norm(x1);
+
+// Square root of 3, with a 10^-307 padding.
+x2 = 1.e-307*[1 1 1];
+z1 = norm(x2);
+
+// Now compute the same values with the old norm function:
+
+warning("off");
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+// Copyright (C) 2009 - INRIA Michael Baudin
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+//
+// norm --
+// Returns the norm of the given vector/matrix A.
+// Uses scaling to improve accuracy for Pythagorean sums.
+// References
+// Moler C, Morrison D.
+// Replacing square roots by pythagorean sums.
+// IBM Journal of Research and Development 1983; 27(6):577-581.
+//
+function y=norm(A,flag)
+ //compute various matrix norms
+ if argn(2)==1 then flag=2,end
+
+ if type(A)==1 then
+ if A==[] then y=0,return,end
+ if or(size(A)==1) then // vector norm
+ if type(flag)==10 then //'inf' or 'fro'
+ select convstr(part(flag,1))
+ case "i" then //'inf'
+ y=max(abs(A))
+ case "f" then //'fro'
+ A=A(:)
+ //
+ // Scaling for better floating point accuracy.
+ //
+ //
+ s = max(abs(A));
+ if s==0.0 then
+ y=sqrt(A'*A);
+ else
+ sA = A/s;
+ // return real result
+ y = s * sqrt(abs(sA'*sA));
+ end
+ else
+ error("invalid value for flag")
+ end
+ elseif type(flag)==1 then //p_norm
+ p=flag;
+ if ~isreal(p) then
+ error("flag must be real")
+ end
+ if p==%inf then
+ y=max(abs(A))
+ elseif p==1 then
+ y=sum(abs(A))
+ elseif p==-%inf then
+ y=min(abs(A))
+ elseif isnan(p) then
+ y=%nan
+ elseif p==0 then
+ y=%inf
+ else
+ //
+ // Scaling for better floating point accuracy.
+ //
+ s = max(abs(A));
+ if s==0.0 then
+ y=sum(abs(A).^p)^(1/p);
+ else
+ sA = A/s;
+ y = s * sum(abs(sA).^p)^(1/p);
+ end
+ end
+ else
+ error("invalid value for flag")
+ end
+ else //matrix norm
+ if type(flag)==10 then //'inf' or 'fro'
+ select convstr(part(flag,1))
+ case "i" then //'inf'
+ y=max(sum(abs(A),2))
+ case "f" then //'fro'
+ //
+ // Scaling for better floating point accuracy.
+ //
+ s = max(abs(A));
+ if s==0.0 then
+ if size(A,1)>size(A,2) then
+ y=sqrt(sum(diag(A'*A)))
+ else
+ y=sqrt(sum(diag(A*A')))
+ end
+ else
+ sA = A/s;
+ if size(A,1)>size(A,2) then
+ // return real result
+ y = s * sqrt(sum(abs(diag(sA'*sA))))
+ else
+ y = s * sqrt(sum(abs(diag(sA*sA'))))
+ end
+ end
+ else
+ error("invalid value for flag")
+ end
+ elseif type(flag)==1 then //p_norm
+ p=flag;
+ select p
+ case 1 then
+ y=max(sum(abs(A),1))
+ case 2 then
+ y=max(svd(A))
+ case %inf then
+ y=max(sum(abs(A),2))
+ else
+ error("flag must be 1 2 or inf")
+ end
+ else
+ error("invalid value for flag")
+ end
+ end
+ else
+ if type(A)==16|type(A)==17 then
+ n=getfield(1,A);n=n(1)
+ else
+ [t,n]=typename()
+ n=stripblanks(n(find(t==type(A))))
+ end
+ fun="%"+n+"_norm"
+ if exists(fun)==1 then
+ execstr("y="+fun+"(A,flag)")
+ else
+ error("norm not defined for type """+n+""" ."+..
+ "Check argument or define function "+fun)
+ end
+ end
+endfunction
+
+y2 = norm(x1);
+z2 = norm(x2);
+
+assert_checktrue((y1-y2)/y1<=%eps);
+assert_checktrue((z2-z2)/z1<=%eps);
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_545.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_545.dia.ref
new file mode 100755
index 000000000..ecbc78201
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_545.dia.ref
@@ -0,0 +1,37 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2005-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+// <-- Non-regression test for bug 545 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=545
+//
+// <-- Short Description -->
+// Bug Report Id: 031202003109134720
+// This is obviously a conflict between a local variable ndims and the new function ndims().
+// I expect the same problem also in:
+//
+// macros/percent/%b_i_hm.sci
+// macros/percent/%hm_i_hm.sc
+// macros/percent/%p_i_hm.sci
+//
+// Wasn't this an already solved issue??
+// On Scilab CVS with " %i_i_hm " function
+// The Error Messages are:
+// Warning :redefining function: ndims
+// inside function: %i_i_hm
+//
+// Commands:
+// a=int8(hypermat([3 2 2]));b=hypermat([1 2 2]);
+// a(1,:,:)=b
+// Enrico SEGRE on Linux version RH9 distribution with as window manager
+// Israel
+// November 9, 2003 at 13:47:20
+a = int8(hypermat([3 2 2]));
+b = hypermat([1 2 2]);
+a(1,:,:) = b;
+// Just check if there is no "Warning :redefining function: ndims" displayed in .dia.ref
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_545.tst b/modules/linear_algebra/tests/nonreg_tests/bug_545.tst
new file mode 100755
index 000000000..76323e5ba
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_545.tst
@@ -0,0 +1,41 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2005-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+// <-- Non-regression test for bug 545 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=545
+//
+// <-- Short Description -->
+// Bug Report Id: 031202003109134720
+// This is obviously a conflict between a local variable ndims and the new function ndims().
+// I expect the same problem also in:
+//
+// macros/percent/%b_i_hm.sci
+// macros/percent/%hm_i_hm.sc
+// macros/percent/%p_i_hm.sci
+//
+// Wasn't this an already solved issue??
+// On Scilab CVS with " %i_i_hm " function
+// The Error Messages are:
+// Warning :redefining function: ndims
+// inside function: %i_i_hm
+//
+// Commands:
+// a=int8(hypermat([3 2 2]));b=hypermat([1 2 2]);
+// a(1,:,:)=b
+// Enrico SEGRE on Linux version RH9 distribution with as window manager
+// Israel
+// November 9, 2003 at 13:47:20
+
+a = int8(hypermat([3 2 2]));
+b = hypermat([1 2 2]);
+a(1,:,:) = b;
+
+// Just check if there is no "Warning :redefining function: ndims" displayed in .dia.ref
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_6477.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_6477.dia.ref
new file mode 100755
index 000000000..9ca377de7
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_6477.dia.ref
@@ -0,0 +1,38 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 6477 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=6477
+//
+// <-- Short Description -->
+// in some case, schur returned wrong values on Windows.
+function [f] = z_choose(s,t)
+ f = abs(s) > abs(t)
+endfunction
+a=[1 4 5 6; 3 2 5 7; 8 3 4 5; 9 3 5 2];
+b=[3 8 5 7; 1 4 9 3; 9 1 0 7; 9 2 4 8];
+[as, bs, z, dim] = schur(a, b, z_choose);
+if dim <> 2 then bugmes();quit;end
+ref_as = [ - 5.8165015, 4.9422182, - 1.6845626, 1.8997122 ;..
+ 0., 9.4018462, - 14.867682, - 2.1905808 ;..
+ 0., 0., 3.4464284, 2.2480735 ;..
+ 0., 0., - 1.0118069, 1.0484945];
+ref_bs = [0.5173089, 6.2627142, - 2.9573865, 7.2946208 ;..
+ 0., 8.7992813, - 16.353371, - 2.5799548 ;..
+ 0., 0., 8.0516398, 0. ;..
+ 0., 0., 0., 5.6752093 ];
+ref_z = [0.4973431, - 0.6831312, 0.2943626, - 0.4464664; ..
+ 0.4702536, 0.5375540, 0.6832618, 0.1518237; ..
+ 0.0048984, - 0.4789154, 0.1826199, 0.8586419; ..
+ - 0.7290318, - 0.1225046, 0.6427705, - 0.2008765];
+if or(abs(as - ref_as) > 1e10 * %eps) then bugmes();quit;end
+if or(abs(bs - ref_bs) > 1e10 * %eps) then bugmes();quit;end
+if or(abs(z - ref_z) > 1e9 * %eps) then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_6477.tst b/modules/linear_algebra/tests/nonreg_tests/bug_6477.tst
new file mode 100755
index 000000000..a987c3151
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_6477.tst
@@ -0,0 +1,45 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 6477 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=6477
+//
+// <-- Short Description -->
+// in some case, schur returned wrong values on Windows.
+
+function [f] = z_choose(s,t)
+ f = abs(s) > abs(t)
+endfunction
+
+a=[1 4 5 6; 3 2 5 7; 8 3 4 5; 9 3 5 2];
+b=[3 8 5 7; 1 4 9 3; 9 1 0 7; 9 2 4 8];
+[as, bs, z, dim] = schur(a, b, z_choose);
+
+if dim <> 2 then pause, end
+
+ref_as = [ - 5.8165015, 4.9422182, - 1.6845626, 1.8997122 ;..
+ 0., 9.4018462, - 14.867682, - 2.1905808 ;..
+ 0., 0., 3.4464284, 2.2480735 ;..
+ 0., 0., - 1.0118069, 1.0484945];
+
+ref_bs = [0.5173089, 6.2627142, - 2.9573865, 7.2946208 ;..
+ 0., 8.7992813, - 16.353371, - 2.5799548 ;..
+ 0., 0., 8.0516398, 0. ;..
+ 0., 0., 0., 5.6752093 ];
+
+ref_z = [0.4973431, - 0.6831312, 0.2943626, - 0.4464664; ..
+ 0.4702536, 0.5375540, 0.6832618, 0.1518237; ..
+ 0.0048984, - 0.4789154, 0.1826199, 0.8586419; ..
+ - 0.7290318, - 0.1225046, 0.6427705, - 0.2008765];
+
+if or(abs(as - ref_as) > 1e10 * %eps) then pause, end
+if or(abs(bs - ref_bs) > 1e10 * %eps) then pause, end
+if or(abs(z - ref_z) > 1e9 * %eps) then pause, end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_6783.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_6783.dia.ref
new file mode 100755
index 000000000..139da95ab
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_6783.dia.ref
@@ -0,0 +1,175 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 6783 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=6783
+//
+// <-- Short Description -->
+// Solving a system of linear equation by backslash ("\") will cause a crash to Scilab 5.2.1, when using complex numbers.
+// Replication Code
+S=[
+1.3 24 4.1 29 0.9 33
+0.6 258 0.7 265 0.2 39
+0.5 2 1.4 351 0.5 323
+0.7 63 1.2 19 0.4 318
+17.0 152 29.0 196 6.0 232
+23.0 18 40.0 62 14.0 104
+8.0 213 20.0 177 8.0 147
+12.0 106 26.0 45 11.0 21
+8.1 25 6.4 182 6.9 203
+2.0 282 2.5 20 1.5 114
+5.9 215 5.6 34 4.6 25
+3.7 185 3.6 5 2.8 9
+27.0 134 30.0 290 18.0 321
+23.0 17 26.0 151 9.0 220
+34.0 330 26.0 164 24.0 140
+33.0 187 20.0 18 24.0 350
+2.4 50 3.8 157 3.6 289
+2.2 281 3.7 57 3.0 187
+4.5 322 5.9 149 1.1 48
+1.6 249 3.1 62 1.3 239
+13.0 152 18.0 286 24.0 52
+21.0 77 16.0 166 47.0 298
+41.0 48 34.0 239 4.0 140
+80.0 301 67.0 120 10.0 81
+3.7 43 2.6 215 5.4 290
+3.3 284 3.6 66 3.4 196
+5.6 340 3.7 172 2.1 342
+2.6 272 2.3 72 2.3 274
+34.0 154 23.0 332 32.0 47
+29.0 56 13.0 209 59.0 299
+43.0 62 39.0 241 13.0 89
+91.0 309 75.0 131 15.0 321
+];
+S0=[2.3 278
+0.4 266
+1.1 270
+0 0
+29 141
+21 32
+16 97
+16 4
+5.9 132
+0.3 0
+5.4 327
+3.8 313
+40 244
+12 75
+47 101
+38 343
+1.6 337
+1.5 281
+5.9 34
+2.5 310
+8 37
+8 320
+32 134
+67 29
+2.3 5
+2 307
+7.4 43
+3.2 320
+4 0
+10 357
+34 128
+81 26
+];
+S02=[0.85 258
+0.26 0
+0.33 226
+0.04 0
+14.43 71
+11.48 294
+14.19 65
+16.00 311
+1.74 345
+0.70 178
+2.35 191
+1.74 170
+9.18 105
+4.27 289
+10.32 356
+4.75 0
+2.97 215
+2.87 126
+5.14 242
+4.75 149
+14.98 327
+11.71 193
+10.32 323
+14.82 190
+2.60 100
+2.10 43
+3.40 152
+3.00 65
+23.00 287
+21.00 111
+22.00 229
+52.00 99
+];
+fac=[10
+10
+10
+10
+1
+1
+1
+1
+10
+10
+10
+10
+1
+1
+1
+1
+30
+30
+30
+30
+2
+2
+2
+2
+80
+80
+80
+80
+4
+4
+4
+4];
+if isdef('without')==%T;
+S(without:8:$,:)=[];
+S0(without:8:$,:)=[];
+fac(without:8:$,:)=[];
+else
+end
+S0_a=fac.*S0(:,1);
+S0_w=S0(:,2).*%pi/180;
+S0c=S0_a.*exp(%i*S0_w);
+S0_c2=S0(:,1).*exp(%i*S0_w); // ohne Faktor!!!!
+S02_a=fac.*S02(:,1);
+S02_w=S02(:,2).*%pi/180;
+S02c=S02_a.*exp(%i*S02_w);
+S02_c2=S02(:,1).*exp(%i*S02_w); // ohne Faktor
+S_a=S(:,1:2:$).*[fac fac fac];
+S_wdeg=S(:,2:2:$);
+S_w=S_wdeg*%pi/180;
+M_test=[1000 0 0 0 0 0 760 258
+ 0 0 1000 0 0 0 0 0
+ 0 0 0 0 1000 0 760 210];
+M_a=M_test(:,1:2:$);
+M_wdeg=M_test(:,2:2:$);
+M_w=M_wdeg*%pi/180;
+Sc=[S_a.*exp(%i*S_w) S02c-S0c];
+Mc=M_a.*exp(%i*M_w);
+ierr = execstr("C=Mc''\Sc''","errcatch");
+if ierr <> 0 then bugmes();quit;end
+if size(C) <> [3 32] then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_6783.tst b/modules/linear_algebra/tests/nonreg_tests/bug_6783.tst
new file mode 100755
index 000000000..32611ea39
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_6783.tst
@@ -0,0 +1,192 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 6783 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=6783
+//
+// <-- Short Description -->
+// Solving a system of linear equation by backslash ("\") will cause a crash to Scilab 5.2.1, when using complex numbers.
+
+// Replication Code
+S=[
+1.3 24 4.1 29 0.9 33
+0.6 258 0.7 265 0.2 39
+0.5 2 1.4 351 0.5 323
+0.7 63 1.2 19 0.4 318
+17.0 152 29.0 196 6.0 232
+23.0 18 40.0 62 14.0 104
+8.0 213 20.0 177 8.0 147
+12.0 106 26.0 45 11.0 21
+8.1 25 6.4 182 6.9 203
+2.0 282 2.5 20 1.5 114
+5.9 215 5.6 34 4.6 25
+3.7 185 3.6 5 2.8 9
+27.0 134 30.0 290 18.0 321
+23.0 17 26.0 151 9.0 220
+34.0 330 26.0 164 24.0 140
+33.0 187 20.0 18 24.0 350
+2.4 50 3.8 157 3.6 289
+2.2 281 3.7 57 3.0 187
+4.5 322 5.9 149 1.1 48
+1.6 249 3.1 62 1.3 239
+13.0 152 18.0 286 24.0 52
+21.0 77 16.0 166 47.0 298
+41.0 48 34.0 239 4.0 140
+80.0 301 67.0 120 10.0 81
+3.7 43 2.6 215 5.4 290
+3.3 284 3.6 66 3.4 196
+5.6 340 3.7 172 2.1 342
+2.6 272 2.3 72 2.3 274
+34.0 154 23.0 332 32.0 47
+29.0 56 13.0 209 59.0 299
+43.0 62 39.0 241 13.0 89
+91.0 309 75.0 131 15.0 321
+];
+
+
+S0=[2.3 278
+0.4 266
+1.1 270
+0 0
+29 141
+21 32
+16 97
+16 4
+5.9 132
+0.3 0
+5.4 327
+3.8 313
+40 244
+12 75
+47 101
+38 343
+1.6 337
+1.5 281
+5.9 34
+2.5 310
+8 37
+8 320
+32 134
+67 29
+2.3 5
+2 307
+7.4 43
+3.2 320
+4 0
+10 357
+34 128
+81 26
+];
+
+S02=[0.85 258
+0.26 0
+0.33 226
+0.04 0
+14.43 71
+11.48 294
+14.19 65
+16.00 311
+1.74 345
+0.70 178
+2.35 191
+1.74 170
+9.18 105
+4.27 289
+10.32 356
+4.75 0
+2.97 215
+2.87 126
+5.14 242
+4.75 149
+14.98 327
+11.71 193
+10.32 323
+14.82 190
+2.60 100
+2.10 43
+3.40 152
+3.00 65
+23.00 287
+21.00 111
+22.00 229
+52.00 99
+];
+
+
+fac=[10
+10
+10
+10
+1
+1
+1
+1
+10
+10
+10
+10
+1
+1
+1
+1
+30
+30
+30
+30
+2
+2
+2
+2
+80
+80
+80
+80
+4
+4
+4
+4];
+
+if isdef('without')==%T;
+S(without:8:$,:)=[];
+S0(without:8:$,:)=[];
+fac(without:8:$,:)=[];
+else
+end
+
+S0_a=fac.*S0(:,1);
+S0_w=S0(:,2).*%pi/180;
+S0c=S0_a.*exp(%i*S0_w);
+S0_c2=S0(:,1).*exp(%i*S0_w); // ohne Faktor!!!!
+
+S02_a=fac.*S02(:,1);
+S02_w=S02(:,2).*%pi/180;
+S02c=S02_a.*exp(%i*S02_w);
+S02_c2=S02(:,1).*exp(%i*S02_w); // ohne Faktor
+
+
+S_a=S(:,1:2:$).*[fac fac fac];
+S_wdeg=S(:,2:2:$);
+S_w=S_wdeg*%pi/180;
+
+M_test=[1000 0 0 0 0 0 760 258
+ 0 0 1000 0 0 0 0 0
+ 0 0 0 0 1000 0 760 210];
+
+M_a=M_test(:,1:2:$);
+M_wdeg=M_test(:,2:2:$);
+M_w=M_wdeg*%pi/180;
+
+Sc=[S_a.*exp(%i*S_w) S02c-S0c];
+Mc=M_a.*exp(%i*M_w);
+
+ierr = execstr("C=Mc''\Sc''","errcatch");
+if ierr <> 0 then pause,end
+if size(C) <> [3 32] then pause,end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_7109.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_7109.dia.ref
new file mode 100755
index 000000000..d5a3a691e
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_7109.dia.ref
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 7109 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7109
+//
+// <-- Short Description -->
+// 'lu' function with some complex matrices crashed on Windows.
+x = [0.1523 + 0.7685 * %i, -0.8957 + 0.0342 * %i, 2.4353 + 2.7736 * %i; ..
+ -1.1953 + 1.2187 * %i, 1.2118 + 0.2571 * %i, -0.0446 - 1.7768 * %i; ..
+ 0.8038 + 1.3668 * %i, 1.2950 - 1.6929 * %i, 1.6267 + 0.2844 * %i];
+ierr = execstr('[l, u] = lu(x);','errcatch');
+if ierr <> 0 then bugmes();quit;end
+if or(size(l) <> [3 3]) then bugmes();quit;end
+if or(size(u) <> [3 3]) then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_7109.tst b/modules/linear_algebra/tests/nonreg_tests/bug_7109.tst
new file mode 100755
index 000000000..16f2c32a1
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_7109.tst
@@ -0,0 +1,27 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 7109 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7109
+//
+// <-- Short Description -->
+// 'lu' function with some complex matrices crashed on Windows.
+
+x = [0.1523 + 0.7685 * %i, -0.8957 + 0.0342 * %i, 2.4353 + 2.7736 * %i; ..
+ -1.1953 + 1.2187 * %i, 1.2118 + 0.2571 * %i, -0.0446 - 1.7768 * %i; ..
+ 0.8038 + 1.3668 * %i, 1.2950 - 1.6929 * %i, 1.6267 + 0.2844 * %i];
+
+ierr = execstr('[l, u] = lu(x);','errcatch');
+if ierr <> 0 then pause, end
+
+if or(size(l) <> [3 3]) then pause, end
+if or(size(u) <> [3 3]) then pause, end
+
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_7485.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_7485.dia.ref
new file mode 100755
index 000000000..16a883f98
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_7485.dia.ref
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 7485 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7485
+//
+// <-- Short Description -->
+// Division of matrices of complex numbers crashed on Windows.
+L1 = [-22.168 + 14.267*%i -10.428 + 17.817*%i -2.8879 + 14.947*%i 0.4547 + 11.203*%i];
+T = [8.9186 - 3.0399*%i 6.8345 - 4.7536*%i 4.8415 - 5.2106*%i 3.3626 - 5.0337*%i; ..
+79.459 - 58.111*%i 30.562 - 70.097*%i 0.8502 - 55.647*%i -10.784 - 38.795*%i];
+if execstr("a = -real(L1/T);", "errcatch") <> 0 then bugmes();quit;end
+A = [1 , 1, %i];
+B = [1 , 1, 1];
+if execstr("r = A / B;", "errcatch") <> 0 then bugmes();quit;end
+r = [1 , 1, %i]/[1 , 1, 1];
+ref = 0.6666667 + 0.3333333 * %i;
+if abs(r - ref) > %eps * 1e9 then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_7485.tst b/modules/linear_algebra/tests/nonreg_tests/bug_7485.tst
new file mode 100755
index 000000000..0442081f9
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_7485.tst
@@ -0,0 +1,32 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 7485 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7485
+//
+// <-- Short Description -->
+// Division of matrices of complex numbers crashed on Windows.
+
+L1 = [-22.168 + 14.267*%i -10.428 + 17.817*%i -2.8879 + 14.947*%i 0.4547 + 11.203*%i];
+T = [8.9186 - 3.0399*%i 6.8345 - 4.7536*%i 4.8415 - 5.2106*%i 3.3626 - 5.0337*%i; ..
+79.459 - 58.111*%i 30.562 - 70.097*%i 0.8502 - 55.647*%i -10.784 - 38.795*%i];
+if execstr("a = -real(L1/T);", "errcatch") <> 0 then pause, end
+
+A = [1 , 1, %i];
+B = [1 , 1, 1];
+if execstr("r = A / B;", "errcatch") <> 0 then pause, end
+
+r = [1 , 1, %i]/[1 , 1, 1];
+ref = 0.6666667 + 0.3333333 * %i;
+
+if abs(r - ref) > %eps * 1e9 then pause, end
+
+
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_7950.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_7950.dia.ref
new file mode 100755
index 000000000..f5a080f68
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_7950.dia.ref
@@ -0,0 +1,43 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 7950 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7950
+//
+// <-- Short Description -->
+// spec function crashed on Windows
+n = [0,10,0,0,10;
+10,0,10,0,0;
+0,10,0,10,0;
+0,0,10,0,10;
+10,0,0,10,0];
+d = [1,3,1,1,3;
+3,1,3,1,1;
+1,3,1,3,1;
+1,1,3,1,3;
+3,1,1,3,1];
+A = n./d;
+r = spec(A);
+ref = [ -5.3934466; ..
+ -5.3934466; ..
+ 2.0601133; ..
+ 2.0601133; ..
+ 6.6666667];
+if norm(r - ref) > 1e9 *%eps then bugmes();quit;end
+ s11 = [ 0.0633728 0.0313074 -0.0021908 -0.0014231 -0.0025785 0.0968961; ..
+ 0.0313074 0.0177124 -0.0010565 -0.0007932 -0.0012911 0.0410817; ..
+ -0.0021908 -0.0010565 0.0001016 0.0000454 0.0000847 -0.0034275; ..
+ -0.0014231 -0.0007932 0.0000454 0.0000428 0.0000659 -0.0019033; ..
+ -0.0025785 -0.0012911 0.0000847 0.0000659 0.0001176 -0.0038904; ..
+ 0.0968961 0.0410817 -0.0034275 -0.0019033 -0.0038904 0.1686615];
+[eigenv, rho] = spec(s11);
+if or(size(eigenv) <> [6 6]) then bugmes();quit;end
+if or(size(rho) <> [6 6]) then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_7950.tst b/modules/linear_algebra/tests/nonreg_tests/bug_7950.tst
new file mode 100755
index 000000000..51811b25a
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_7950.tst
@@ -0,0 +1,48 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 7950 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=7950
+//
+// <-- Short Description -->
+// spec function crashed on Windows
+
+
+n = [0,10,0,0,10;
+10,0,10,0,0;
+0,10,0,10,0;
+0,0,10,0,10;
+10,0,0,10,0];
+d = [1,3,1,1,3;
+3,1,3,1,1;
+1,3,1,3,1;
+1,1,3,1,3;
+3,1,1,3,1];
+A = n./d;
+r = spec(A);
+ref = [ -5.3934466; ..
+ -5.3934466; ..
+ 2.0601133; ..
+ 2.0601133; ..
+ 6.6666667];
+if norm(r - ref) > 1e9 *%eps then pause, end
+
+
+ s11 = [ 0.0633728 0.0313074 -0.0021908 -0.0014231 -0.0025785 0.0968961; ..
+ 0.0313074 0.0177124 -0.0010565 -0.0007932 -0.0012911 0.0410817; ..
+ -0.0021908 -0.0010565 0.0001016 0.0000454 0.0000847 -0.0034275; ..
+ -0.0014231 -0.0007932 0.0000454 0.0000428 0.0000659 -0.0019033; ..
+ -0.0025785 -0.0012911 0.0000847 0.0000659 0.0001176 -0.0038904; ..
+ 0.0968961 0.0410817 -0.0034275 -0.0019033 -0.0038904 0.1686615];
+
+[eigenv, rho] = spec(s11);
+if or(size(eigenv) <> [6 6]) then pause, end
+if or(size(rho) <> [6 6]) then pause, end \ No newline at end of file
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_8820.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_8820.dia.ref
new file mode 100755
index 000000000..7fbf43368
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_8820.dia.ref
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - INRIA - Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8820 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8820
+//
+// <-- Short Description -->
+// squeeze function may return hypermatrix when expected results must be a regular 2D array
+t = rand(2,3,4);
+s = squeeze(t(:,1,:));
+if type(s)<>1 then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_8820.tst b/modules/linear_algebra/tests/nonreg_tests/bug_8820.tst
new file mode 100755
index 000000000..7db455c57
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_8820.tst
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - INRIA - Serge Steer
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8820 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8820
+//
+// <-- Short Description -->
+// squeeze function may return hypermatrix when expected results must be a regular 2D array
+t = rand(2,3,4);
+s = squeeze(t(:,1,:));
+if type(s)<>1 then pause,end
+
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_9196.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_9196.dia.ref
new file mode 100755
index 000000000..735a8de8e
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_9196.dia.ref
@@ -0,0 +1,86 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Sylvestre Ledru
+// Copyright (C) 2013 - Michaël Baudin
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 9196 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9196
+//
+// <-- Short Description -->
+// The threshold level for conditioning in backslash is too small.
+// =============================================================================
+n=9;
+A = testmatrix("hilb",n);
+b=ones(n,1);
+xexpected=[7129/2520
+ 4861/2520
+ 42131/27720
+ 35201/27720
+ 395243/360360
+ 348911/360360
+ 62575/72072
+ 113567/144144
+ 1768477/2450448];
+x=A\b;
+assert_checkalmostequal(x, xexpected, [], 1e-6);
+Ac=complex(A,zeros(A));
+bc=complex(b,zeros(b));
+xc = Ac\bc;
+xcexpected=complex(xexpected,zeros(xexpected));
+assert_checkalmostequal(xc, xcexpected, [], 1e-5);
+b=(1:n)';
+xexpected=[9;
+ 17819/2520;
+ 82609/13860;
+ 47959/9240;
+ 415567/90090;
+ 299737/72072;
+ 45533/12012;
+ 71761/20592;
+ 988277/306306];
+x=A\b;
+assert_checkalmostequal(x, xexpected, [], 1e-5);
+Ac=complex(A,zeros(A));
+bc=complex(b,zeros(b));
+xc = Ac\bc;
+xcexpected=complex(xexpected,zeros(xexpected));
+assert_checkalmostequal(xc, xcexpected, [], 1e-5);
+b=[1;-1;1;-1;1;-1;1;-1;1];
+xexpected=[1879/2520;
+ 893/2520;
+ 6557/27720;
+ 4993/27720;
+ 52901/360360;
+ 44911/360360;
+ 39173/360360;
+ 69659/720720;
+ 1068047/12252240];
+x=A\b;
+assert_checkalmostequal(x, xexpected, [], 1e-7);
+Ac=complex(A,zeros(A));
+bc=complex(b,zeros(b));
+xc = Ac\bc;
+xcexpected=complex(xexpected,zeros(xexpected));
+assert_checkalmostequal(xc, xcexpected, [], 1e-6);
+n=9;
+A = testmatrix("hilb",n);
+b = ones(n,1);
+x = (b'/A')';
+xexpected=[
+2.82896825396825370e+000
+1.92896825396825400e+000
+1.51987734487734480e+000
+1.26987734487734480e+000
+1.09680042180042170e+000
+9.68228993228993360e-001
+8.68228993228993270e-001
+7.87871850371850480e-001
+7.21695379783615090e-001
+];
+assert_checkalmostequal(x, xexpected, [], 1e-6);
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_9196.tst b/modules/linear_algebra/tests/nonreg_tests/bug_9196.tst
new file mode 100755
index 000000000..ec5021569
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_9196.tst
@@ -0,0 +1,94 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Sylvestre Ledru
+// Copyright (C) 2013 - Michaël Baudin
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 9196 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9196
+//
+// <-- Short Description -->
+// The threshold level for conditioning in backslash is too small.
+// =============================================================================
+
+n=9;
+A = testmatrix("hilb",n);
+b=ones(n,1);
+xexpected=[7129/2520
+ 4861/2520
+ 42131/27720
+ 35201/27720
+ 395243/360360
+ 348911/360360
+ 62575/72072
+ 113567/144144
+ 1768477/2450448];
+x=A\b;
+assert_checkalmostequal(x, xexpected, [], 1e-6);
+
+
+Ac=complex(A,zeros(A));
+bc=complex(b,zeros(b));
+xc = Ac\bc;
+xcexpected=complex(xexpected,zeros(xexpected));
+assert_checkalmostequal(xc, xcexpected, [], 1e-5);
+
+b=(1:n)';
+xexpected=[9;
+ 17819/2520;
+ 82609/13860;
+ 47959/9240;
+ 415567/90090;
+ 299737/72072;
+ 45533/12012;
+ 71761/20592;
+ 988277/306306];
+x=A\b;
+assert_checkalmostequal(x, xexpected, [], 1e-5);
+Ac=complex(A,zeros(A));
+bc=complex(b,zeros(b));
+xc = Ac\bc;
+xcexpected=complex(xexpected,zeros(xexpected));
+assert_checkalmostequal(xc, xcexpected, [], 1e-5);
+
+b=[1;-1;1;-1;1;-1;1;-1;1];
+xexpected=[1879/2520;
+ 893/2520;
+ 6557/27720;
+ 4993/27720;
+ 52901/360360;
+ 44911/360360;
+ 39173/360360;
+ 69659/720720;
+ 1068047/12252240];
+x=A\b;
+assert_checkalmostequal(x, xexpected, [], 1e-7);
+Ac=complex(A,zeros(A));
+bc=complex(b,zeros(b));
+xc = Ac\bc;
+xcexpected=complex(xexpected,zeros(xexpected));
+assert_checkalmostequal(xc, xcexpected, [], 1e-6);
+
+n=9;
+A = testmatrix("hilb",n);
+b = ones(n,1);
+x = (b'/A')';
+xexpected=[
+2.82896825396825370e+000
+1.92896825396825400e+000
+1.51987734487734480e+000
+1.26987734487734480e+000
+1.09680042180042170e+000
+9.68228993228993360e-001
+8.68228993228993270e-001
+7.87871850371850480e-001
+7.21695379783615090e-001
+];
+assert_checkalmostequal(x, xexpected, [], 1e-6);
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_9204.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_9204.dia.ref
new file mode 100755
index 000000000..e308dd4a6
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_9204.dia.ref
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 9204 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9204
+//
+// <-- Short Description -->
+// The Frobenius norm of a complex vector was numerically complex.
+x = [1 2 3 -4];
+x = x + %i * x;
+assert_checkalmostequal(norm(x, 'fro'), 7.7459667);
+x = [1 2;3 4];
+x = x + %i * x;
+assert_checkalmostequal(norm(x, 'fro'), 7.7459667);
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_9204.tst b/modules/linear_algebra/tests/nonreg_tests/bug_9204.tst
new file mode 100755
index 000000000..674d3ecaa
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_9204.tst
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 9204 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9204
+//
+// <-- Short Description -->
+// The Frobenius norm of a complex vector was numerically complex.
+
+
+x = [1 2 3 -4];
+x = x + %i * x;
+assert_checkalmostequal(norm(x, 'fro'), 7.7459667);
+
+x = [1 2;3 4];
+x = x + %i * x;
+assert_checkalmostequal(norm(x, 'fro'), 7.7459667);
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_F.dia.ref b/modules/linear_algebra/tests/nonreg_tests/bug_F.dia.ref
new file mode 100755
index 000000000..e01e33a36
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_F.dia.ref
@@ -0,0 +1,5 @@
+// <-- Non-regression test for bug F -->
+//
+// <-- OLD BUG -->
+[q,r]=qr((1:3)');
+if (r(2)<>0) | (r(3)<>0) then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/nonreg_tests/bug_F.tst b/modules/linear_algebra/tests/nonreg_tests/bug_F.tst
new file mode 100755
index 000000000..b7ad0d3dc
--- /dev/null
+++ b/modules/linear_algebra/tests/nonreg_tests/bug_F.tst
@@ -0,0 +1,13 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug F -->
+//
+// <-- OLD BUG -->
+
+[q,r]=qr((1:3)');
+if (r(2)<>0) | (r(3)<>0) then pause,end
diff --git a/modules/linear_algebra/tests/unit_tests/balanc.dia.ref b/modules/linear_algebra/tests/unit_tests/balanc.dia.ref
new file mode 100755
index 000000000..17a85780c
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/balanc.dia.ref
@@ -0,0 +1,72 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+//==========================================================================
+//============================== balanc ==============================
+//==========================================================================
+function A=testmat3(a,n)
+//eigen values are given by a dilation of nth roots of 1
+A=diag(a*ones(1,n-1),1)+diag((1/a)*ones(1,n-1),-1)
+A(1,n)=1/a;
+endfunction
+A=[];[Ab,X]=balanc(A);
+if Ab<>[]|X<>[] then bugmes();quit;end
+// MATRIX
+//Small dimension
+//---------------
+warning('off')
+//Real Case
+A=testmat3(10000,5);
+[Ab,X]=balanc(A);
+if Err(diag(diag(X))-X)>200*%eps then bugmes();quit;end
+if Err(Ab-inv(X)*A*X)>200*%eps then bugmes();quit;end
+
+//Complex Case
+A=testmat3(10000+0.01*%i,5);
+[Ab,X]=balanc(A);
+if Err(diag(diag(X))-X)>200*%eps then bugmes();quit;end
+if Err(Ab-inv(X)*A*X)>200*%eps then bugmes();quit;end
+
+//LArge dimension
+A=testmat3(10000,30);
+[Ab,X]=balanc(A);
+if Err(diag(diag(X))-X)>200*%eps then bugmes();quit;end
+if Err(Ab-inv(X)*A*X)>1000*%eps then bugmes();quit;end
+
+//Complex Case
+A=testmat3(10000+0.01*%i,30);
+[Ab,X]=balanc(A);
+if Err(diag(diag(X))-X)>200*%eps then bugmes();quit;end
+if Err(Ab-inv(X)*A*X)>1000*%eps then bugmes();quit;end
+
+// PENCILS
+//Small dimension
+//---------------
+//Real Case
+A=testmat3(10000,5);B=testmat3(1000,5);
+[Ab,Bb,X,Y]=balanc(A,B);
+if Err(Bb-inv(X)*B*Y)>200*%eps then bugmes();quit;end
+if Err(Ab-inv(X)*A*Y)>200*%eps then bugmes();quit;end
+//complex case
+A=testmat3(10000+0.001*%i,5);B=testmat3(1000+100*%i,5);
+[Ab,Bb,X,Y]=balanc(A,B);
+if Err(Bb-inv(X)*B*Y)>200*%eps then bugmes();quit;end
+if Err(Ab-inv(X)*A*Y)>200*%eps then bugmes();quit;end
+//Large dimension
+//---------------
+//Real Case
+A=testmat3(10000,20);B=testmat3(1000,20);
+[Ab,Bb,X,Y]=balanc(A,B);
+if Err(Bb-inv(X)*B*Y)>1000*%eps then bugmes();quit;end
+if Err(Ab-inv(X)*A*Y)>1000*%eps then bugmes();quit;end
+//complex case
+A=testmat3(10000+0.001*%i,20);B=testmat3(1000+100*%i,20);
+[Ab,Bb,X,Y]=balanc(A,B);
+if Err(Bb-inv(X)*B*Y)>1000*%eps then bugmes();quit;end
+if Err(Ab-inv(X)*A*Y)>1000*%eps then bugmes();quit;end
+warning('on')
diff --git a/modules/linear_algebra/tests/unit_tests/balanc.tst b/modules/linear_algebra/tests/unit_tests/balanc.tst
new file mode 100755
index 000000000..e49eab8b4
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/balanc.tst
@@ -0,0 +1,78 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+
+//==========================================================================
+//============================== balanc ==============================
+//==========================================================================
+function A=testmat3(a,n)
+//eigen values are given by a dilation of nth roots of 1
+A=diag(a*ones(1,n-1),1)+diag((1/a)*ones(1,n-1),-1)
+A(1,n)=1/a;
+endfunction
+A=[];[Ab,X]=balanc(A);
+if Ab<>[]|X<>[] then pause,end
+// MATRIX
+//Small dimension
+//---------------
+warning('off')
+//Real Case
+A=testmat3(10000,5);
+[Ab,X]=balanc(A);
+if Err(diag(diag(X))-X)>200*%eps then pause,end
+if Err(Ab-inv(X)*A*X)>200*%eps then pause,end
+
+//Complex Case
+A=testmat3(10000+0.01*%i,5);
+[Ab,X]=balanc(A);
+if Err(diag(diag(X))-X)>200*%eps then pause,end
+if Err(Ab-inv(X)*A*X)>200*%eps then pause,end
+
+//LArge dimension
+A=testmat3(10000,30);
+[Ab,X]=balanc(A);
+if Err(diag(diag(X))-X)>200*%eps then pause,end
+if Err(Ab-inv(X)*A*X)>1000*%eps then pause,end
+
+//Complex Case
+A=testmat3(10000+0.01*%i,30);
+[Ab,X]=balanc(A);
+if Err(diag(diag(X))-X)>200*%eps then pause,end
+if Err(Ab-inv(X)*A*X)>1000*%eps then pause,end
+
+// PENCILS
+//Small dimension
+//---------------
+//Real Case
+A=testmat3(10000,5);B=testmat3(1000,5);
+[Ab,Bb,X,Y]=balanc(A,B);
+if Err(Bb-inv(X)*B*Y)>200*%eps then pause,end
+if Err(Ab-inv(X)*A*Y)>200*%eps then pause,end
+
+//complex case
+A=testmat3(10000+0.001*%i,5);B=testmat3(1000+100*%i,5);
+[Ab,Bb,X,Y]=balanc(A,B);
+if Err(Bb-inv(X)*B*Y)>200*%eps then pause,end
+if Err(Ab-inv(X)*A*Y)>200*%eps then pause,end
+
+
+//Large dimension
+//---------------
+//Real Case
+A=testmat3(10000,20);B=testmat3(1000,20);
+[Ab,Bb,X,Y]=balanc(A,B);
+if Err(Bb-inv(X)*B*Y)>1000*%eps then pause,end
+if Err(Ab-inv(X)*A*Y)>1000*%eps then pause,end
+
+//complex case
+A=testmat3(10000+0.001*%i,20);B=testmat3(1000+100*%i,20);
+[Ab,Bb,X,Y]=balanc(A,B);
+if Err(Bb-inv(X)*B*Y)>1000*%eps then pause,end
+if Err(Ab-inv(X)*A*Y)>1000*%eps then pause,end
+warning('on')
+
diff --git a/modules/linear_algebra/tests/unit_tests/bdiag.dia.ref b/modules/linear_algebra/tests/unit_tests/bdiag.dia.ref
new file mode 100755
index 000000000..6db5d7f8e
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/bdiag.dia.ref
@@ -0,0 +1,103 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+//==========================================================================
+//============================== bdiag ==============================
+//==========================================================================
+assert_checkequal(bdiag([]),[]);
+[ab,x]=bdiag([]);
+assert_checkequal(ab,[]);
+assert_checkequal(x,[]);
+[ab,x,bs]=bdiag([]);
+assert_checkequal(ab,[]);
+assert_checkequal(x,[]);
+assert_checkequal(bs,[]);
+assert_checktrue(execstr('bdiag([1 2;3 4;5 6])','errcatch')<>0);
+//Small dimension
+//---------------
+//Real case
+e=1.d-1;
+A=[1 1 2 3 4 5
+ 0 1 6 7 8 9
+ 0 0 1 e 3 1
+ 0 0 -e 1 5 9
+ 0 0 0 0 2 e
+ 0 0 0 0 0 3];
+X1=[0.5,0.3,0,0.3,0.3,0.2;
+ 1,0.6,0.5,0.1,0.7,0.4;
+ 0.7,0.1,0.4,0.6,0.1,1;
+ 0,0.6,0.2,0.3,0.4,0.5;
+ 0.6,0.7,0.5,0.7,0.7,0.5;
+ 0.3,0.3,0.4,0.5,0.9,0.6];
+A=inv(X1)*A*X1;
+Ab1=bdiag(A);
+assert_checkequal(triu(Ab1,-1),Ab1);
+[Ab2,X]=bdiag(A);
+assert_checkequal(Ab2,Ab1);
+assert_checkalmostequal(inv(X)*A*X,Ab2,sqrt(%eps),0,"matrix");
+[Ab2,X,bs]=bdiag(A);
+assert_checkequal(Ab2,Ab1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+assert_checkequal(sum(bs),size(A,1));
+assert_checktrue(and(bs>0));
+[Ab2,X,bs]=bdiag(A,1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+assert_checkequal(bs,size(A,1));
+//Complex case
+e=1.d-1;
+A=[1 1 2 3 4 5
+ 0 1 6 7 8 9
+ 0 0 1 e 3 1
+ 0 0 -e 1 5 9
+ 0 0 0 0 2 e
+ 0 0 0 0 0 3];
+X1=[0.5,0.3,0,0.3,0.3,0.2;
+ 1,0.6,0.5,0.1,0.7,0.4;
+ 0.7,0.1,0.4,0.6,0.1,1;
+ 0,0.6,0.2,0.3,0.4,0.5;
+ 0.6,0.7,0.5,0.7,0.7,0.5;
+ 0.3,0.3,0.4,0.5,0.9,0.6]+%i*eye(A);
+A=inv(X1)*A*X1;
+Ab1=bdiag(A);
+assert_checkequal(triu(Ab1,-1),Ab1);
+[Ab2,X]=bdiag(A);
+assert_checkequal(Ab2,Ab1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+[Ab2,X,bs]=bdiag(A);
+assert_checkequal(Ab2,Ab1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+assert_checkequal(sum(bs),size(A,1));
+assert_checktrue(and(bs>0));
+//Large dimension
+//---------------
+//Real case
+A=rand(25,25);
+Ab1=bdiag(A);
+assert_checkequal(triu(Ab1,-1),Ab1);
+[Ab2,X]=bdiag(A);
+assert_checkequal(Ab2,Ab1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+[Ab2,X,bs]=bdiag(A);
+assert_checkequal(Ab2,Ab1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+assert_checkequal(size(bs,2),1);
+assert_checkequal(sum(bs),size(A,1));
+assert_checktrue(and(bs>0));
+//Complex case
+A=rand(25,25)+%i*rand(25,25);
+Ab1=bdiag(A);
+assert_checkequal(triu(Ab1,-1),Ab1);
+[Ab2,X]=bdiag(A);
+assert_checkalmostequal(Ab2,Ab1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+[Ab2,X,bs]=bdiag(A);
+assert_checkequal(Ab2,Ab1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+assert_checkequal(size(bs,2),1);
+assert_checkequal(sum(bs),size(A,1));
+assert_checktrue(and(bs>0));
diff --git a/modules/linear_algebra/tests/unit_tests/bdiag.tst b/modules/linear_algebra/tests/unit_tests/bdiag.tst
new file mode 100755
index 000000000..efbef8289
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/bdiag.tst
@@ -0,0 +1,121 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+
+
+//==========================================================================
+//============================== bdiag ==============================
+//==========================================================================
+assert_checkequal(bdiag([]),[]);
+[ab,x]=bdiag([]);
+assert_checkequal(ab,[]);
+assert_checkequal(x,[]);
+
+
+[ab,x,bs]=bdiag([]);
+assert_checkequal(ab,[]);
+assert_checkequal(x,[]);
+assert_checkequal(bs,[]);
+
+assert_checktrue(execstr('bdiag([1 2;3 4;5 6])','errcatch')<>0);
+
+//Small dimension
+//---------------
+//Real case
+e=1.d-1;
+A=[1 1 2 3 4 5
+ 0 1 6 7 8 9
+ 0 0 1 e 3 1
+ 0 0 -e 1 5 9
+ 0 0 0 0 2 e
+ 0 0 0 0 0 3];
+X1=[0.5,0.3,0,0.3,0.3,0.2;
+ 1,0.6,0.5,0.1,0.7,0.4;
+ 0.7,0.1,0.4,0.6,0.1,1;
+ 0,0.6,0.2,0.3,0.4,0.5;
+ 0.6,0.7,0.5,0.7,0.7,0.5;
+ 0.3,0.3,0.4,0.5,0.9,0.6];
+A=inv(X1)*A*X1;
+
+Ab1=bdiag(A);
+assert_checkequal(triu(Ab1,-1),Ab1);
+
+[Ab2,X]=bdiag(A);
+assert_checkequal(Ab2,Ab1);
+assert_checkalmostequal(inv(X)*A*X,Ab2,sqrt(%eps),0,"matrix");
+
+[Ab2,X,bs]=bdiag(A);
+assert_checkequal(Ab2,Ab1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+assert_checkequal(sum(bs),size(A,1));
+assert_checktrue(and(bs>0));
+
+[Ab2,X,bs]=bdiag(A,1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+assert_checkequal(bs,size(A,1));
+
+
+//Complex case
+e=1.d-1;
+A=[1 1 2 3 4 5
+ 0 1 6 7 8 9
+ 0 0 1 e 3 1
+ 0 0 -e 1 5 9
+ 0 0 0 0 2 e
+ 0 0 0 0 0 3];
+X1=[0.5,0.3,0,0.3,0.3,0.2;
+ 1,0.6,0.5,0.1,0.7,0.4;
+ 0.7,0.1,0.4,0.6,0.1,1;
+ 0,0.6,0.2,0.3,0.4,0.5;
+ 0.6,0.7,0.5,0.7,0.7,0.5;
+ 0.3,0.3,0.4,0.5,0.9,0.6]+%i*eye(A);
+A=inv(X1)*A*X1;
+
+Ab1=bdiag(A);
+assert_checkequal(triu(Ab1,-1),Ab1);
+[Ab2,X]=bdiag(A);
+assert_checkequal(Ab2,Ab1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+
+[Ab2,X,bs]=bdiag(A);
+assert_checkequal(Ab2,Ab1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+assert_checkequal(sum(bs),size(A,1));
+assert_checktrue(and(bs>0));
+//Large dimension
+//---------------
+//Real case
+A=rand(25,25);
+Ab1=bdiag(A);
+assert_checkequal(triu(Ab1,-1),Ab1);
+[Ab2,X]=bdiag(A);
+assert_checkequal(Ab2,Ab1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+
+[Ab2,X,bs]=bdiag(A);
+assert_checkequal(Ab2,Ab1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+assert_checkequal(size(bs,2),1);
+assert_checkequal(sum(bs),size(A,1));
+assert_checktrue(and(bs>0));
+
+//Complex case
+A=rand(25,25)+%i*rand(25,25);
+Ab1=bdiag(A);
+assert_checkequal(triu(Ab1,-1),Ab1);
+[Ab2,X]=bdiag(A);
+assert_checkalmostequal(Ab2,Ab1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+
+[Ab2,X,bs]=bdiag(A);
+assert_checkequal(Ab2,Ab1);
+assert_checkalmostequal(Ab2,inv(X)*A*X,sqrt(%eps),0,"matrix");
+assert_checkequal(size(bs,2),1);
+assert_checkequal(sum(bs),size(A,1));
+assert_checktrue(and(bs>0));
+
diff --git a/modules/linear_algebra/tests/unit_tests/chol.dia.ref b/modules/linear_algebra/tests/unit_tests/chol.dia.ref
new file mode 100755
index 000000000..b86cf8397
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/chol.dia.ref
@@ -0,0 +1,37 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+//==========================================================================
+//============================== chol ==============================
+//==========================================================================
+//Empty matrix
+if chol([])<>[] then bugmes();quit;end
+if execstr('chol([1 2;3 4])','errcatch')==0 then bugmes();quit;end
+if execstr('chol([1 2;3 4]+%i)','errcatch')==0 then bugmes();quit;end
+//Small dimension
+//REAL
+A=rand(5,5);A=A*A';
+U=chol(A);
+if Err(triu(U)-U)>200*%eps then bugmes();quit;end
+if Err(U'*U-A)>200*%eps then bugmes();quit;end
+//Complex
+A=rand(5,5)+%i*rand(5,5);A=A*A';
+U=chol(A);
+if Err(triu(U)-U)>200*%eps then bugmes();quit;end
+if Err(U'*U-A)>200*%eps then bugmes();quit;end
+//Large dimension
+//REAL
+A=rand(50,50);A=A*A';
+U=chol(A);
+if Err(triu(U)-U)>10*%eps then bugmes();quit;end
+if Err(U'*U-A)>1000*%eps then bugmes();quit;end
+//Complex
+A=rand(5,5)+%i*rand(5,5);A=A*A';
+U=chol(A);
+if Err(triu(U)-U)>10*%eps then bugmes();quit;end
+if Err(U'*U-A)>1000*%eps then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/unit_tests/chol.tst b/modules/linear_algebra/tests/unit_tests/chol.tst
new file mode 100755
index 000000000..2c18be4bf
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/chol.tst
@@ -0,0 +1,45 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+
+//==========================================================================
+//============================== chol ==============================
+//==========================================================================
+
+//Empty matrix
+if chol([])<>[] then pause,end
+
+if execstr('chol([1 2;3 4])','errcatch')==0 then pause,end
+if execstr('chol([1 2;3 4]+%i)','errcatch')==0 then pause,end
+
+//Small dimension
+//REAL
+A=rand(5,5);A=A*A';
+U=chol(A);
+if Err(triu(U)-U)>200*%eps then pause,end
+if Err(U'*U-A)>200*%eps then pause,end
+
+//Complex
+A=rand(5,5)+%i*rand(5,5);A=A*A';
+U=chol(A);
+if Err(triu(U)-U)>200*%eps then pause,end
+if Err(U'*U-A)>200*%eps then pause,end
+
+//Large dimension
+//REAL
+A=rand(50,50);A=A*A';
+U=chol(A);
+if Err(triu(U)-U)>10*%eps then pause,end
+if Err(U'*U-A)>1000*%eps then pause,end
+
+//Complex
+A=rand(5,5)+%i*rand(5,5);A=A*A';
+U=chol(A);
+if Err(triu(U)-U)>10*%eps then pause,end
+if Err(U'*U-A)>1000*%eps then pause,end
+
diff --git a/modules/linear_algebra/tests/unit_tests/companion.dia.ref b/modules/linear_algebra/tests/unit_tests/companion.dia.ref
new file mode 100755
index 000000000..3f57ad5d3
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/companion.dia.ref
@@ -0,0 +1,55 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// companion.tst --
+// Test "companion" for real and complex polynomials
+// with linear, quadratic and cubic polynomials.
+//
+// Linear real polynomial
+p=1+2*%s;
+computed=companion(p);
+expected=[-1/2];
+if abs(expected-computed)>%eps then bugmes();quit;end
+// Quadratic real polynomial
+p=1+2*%s+3*%s^2;
+computed=companion(p);
+expected=[-2/3 , -1/3;1 , 0];
+if abs(expected-computed)>%eps then bugmes();quit;end
+// Cubic real polynomial
+p=1+2*%s+3*%s^2+4*%s^3;
+computed=companion(p);
+expected=[-3/4 , -2/4 , -1/4; 1 , 0 , 0 ; 0 , 1, 0];
+if abs(expected-computed)>%eps then bugmes();quit;end
+// Linear complex polynomial
+p=1+%i+2*%s;
+computed=companion(p);
+expected=[-(1+%i)/2];
+if abs(expected-computed)>%eps then bugmes();quit;end
+// Quadratic complex polynomial
+p=1+%i+2*%s+3*%s^2;
+computed=companion(p);
+expected=[-2/3 , -(1+%i)/3;1 , 0];
+if abs(expected-computed)>%eps then bugmes();quit;end
+// Cubic complex polynomial
+p=1+%i+2*%s+3*%s^2+4*%s^3;
+computed=companion(p);
+expected=[-3/4 , -2/4 , -(1+%i)/4; 1 , 0 , 0 ; 0 , 1, 0];
+if abs(expected-computed)>%eps then bugmes();quit;end
+// Vector of linear polynomials
+p1=1+2*%s;
+p2=1+%i+2*%s;
+vector = [p1 p2];
+computed=companion(vector);
+expected=[-1/2 0;0 -(1+%i)/2];
+if abs(expected-computed)>%eps then bugmes();quit;end
+// Vector of quadratic/cubic real/complex polynomials
+p1=1+2*%s+3*%s^2;
+p2=1+%i+2*%s+3*%s^2+4*%s^3;
+vector = [p1 p2];
+computed=companion(vector);
+expected=[-2/3 -1/3 0 0 0;1 0 0 0 0; 0 0 -3/4 -2/4 -(1+%i)/4;0 0 1 0 0;0 0 0 1 0];
+if abs(expected-computed)>%eps then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/unit_tests/companion.tst b/modules/linear_algebra/tests/unit_tests/companion.tst
new file mode 100755
index 000000000..68d58cc4b
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/companion.tst
@@ -0,0 +1,57 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// companion.tst --
+// Test "companion" for real and complex polynomials
+// with linear, quadratic and cubic polynomials.
+//
+
+// Linear real polynomial
+p=1+2*%s;
+computed=companion(p);
+expected=[-1/2];
+if abs(expected-computed)>%eps then pause,end
+// Quadratic real polynomial
+p=1+2*%s+3*%s^2;
+computed=companion(p);
+expected=[-2/3 , -1/3;1 , 0];
+if abs(expected-computed)>%eps then pause,end
+// Cubic real polynomial
+p=1+2*%s+3*%s^2+4*%s^3;
+computed=companion(p);
+expected=[-3/4 , -2/4 , -1/4; 1 , 0 , 0 ; 0 , 1, 0];
+if abs(expected-computed)>%eps then pause,end
+// Linear complex polynomial
+p=1+%i+2*%s;
+computed=companion(p);
+expected=[-(1+%i)/2];
+if abs(expected-computed)>%eps then pause,end
+// Quadratic complex polynomial
+p=1+%i+2*%s+3*%s^2;
+computed=companion(p);
+expected=[-2/3 , -(1+%i)/3;1 , 0];
+if abs(expected-computed)>%eps then pause,end
+// Cubic complex polynomial
+p=1+%i+2*%s+3*%s^2+4*%s^3;
+computed=companion(p);
+expected=[-3/4 , -2/4 , -(1+%i)/4; 1 , 0 , 0 ; 0 , 1, 0];
+if abs(expected-computed)>%eps then pause,end
+// Vector of linear polynomials
+p1=1+2*%s;
+p2=1+%i+2*%s;
+vector = [p1 p2];
+computed=companion(vector);
+expected=[-1/2 0;0 -(1+%i)/2];
+if abs(expected-computed)>%eps then pause,end
+// Vector of quadratic/cubic real/complex polynomials
+p1=1+2*%s+3*%s^2;
+p2=1+%i+2*%s+3*%s^2+4*%s^3;
+vector = [p1 p2];
+computed=companion(vector);
+expected=[-2/3 -1/3 0 0 0;1 0 0 0 0; 0 0 -3/4 -2/4 -(1+%i)/4;0 0 1 0 0;0 0 0 1 0];
+if abs(expected-computed)>%eps then pause,end
+
diff --git a/modules/linear_algebra/tests/unit_tests/cond.dia.ref b/modules/linear_algebra/tests/unit_tests/cond.dia.ref
new file mode 100755
index 000000000..81794adee
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/cond.dia.ref
@@ -0,0 +1,61 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// unit tests for cond function
+// =============================================================================
+// Interface
+// ===========
+assert_checkfalse(execstr("cond()", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of input argument(s): %d to %d expected.\n"), "cond", 1, 2);
+assert_checkerror("cond()", refMsg);
+assert_checkfalse(execstr("cond(1,2,3)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of input argument(s): %d to %d expected.\n"), "cond", 1, 2);
+assert_checkerror("cond(1,2,3)", refMsg);
+assert_checkfalse(execstr("cond(%nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: must not contain %s or %s.\n"), "cond", 1, "%nan", "%inf");
+assert_checkerror("cond(%nan)", refMsg);
+assert_checkfalse(execstr("cond(%inf)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: must not contain %s or %s.\n"), "cond", 1, "%nan", "%inf");
+assert_checkerror("cond(%inf)", refMsg);
+assert_checkfalse(execstr("cond(%f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A matrix expected.\n"), "cond", 1);
+assert_checkerror("cond(%f)", refMsg);
+assert_checkfalse(execstr("cond(""ah"")", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A matrix expected.\n"), "cond", 1);
+assert_checkerror("cond(""ah"")", refMsg);
+assert_checkfalse(execstr("cond(""ah"")", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A matrix expected.\n"), "cond", 1);
+assert_checkerror("cond(""ah"")", refMsg);
+assert_checkfalse(execstr("cond(""ah"", 1)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "cond", 1);
+assert_checkerror("cond(""ah"", 1)", refMsg);
+assert_checkfalse(execstr("cond(1, %f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar or a string expected.\n"),"cond", 2);
+assert_checkerror("cond(1, %f)", refMsg);
+assert_checkfalse(execstr("cond(1, 3)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: must be %d, %d, %s, ''%s'' or ''%s''.\n"), "cond", 2, 1, 2, "%inf", "inf", "fro");
+assert_checkerror("cond(1, 3)", refMsg);
+assert_checkfalse(execstr("cond([8 5 2;4 5 6], 1)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"),"cond", 1);
+assert_checkerror("cond([8 5 2;4 5 6], 1)", refMsg);
+// cond(A)
+A = [8 5 2;4 5 6];
+assert_checkalmostequal(cond(A), 3.1529469);
+A = A * %i;
+assert_checkalmostequal(cond(A), 3.1529469);
+A = [9 0 3;2 5 0;7 4 1];
+assert_checkalmostequal(cond(A), 23.411565);
+assert_checkalmostequal(cond(A,1), 33);
+assert_checkalmostequal(cond(A, %inf), 36);
+assert_checkalmostequal(cond(A, 'inf'), 36);
+assert_checkalmostequal(cond(A, 'fro'), 25.702776, 1e-7);
+A = A * %i;
+assert_checkalmostequal(cond(A), 23.411565);
+assert_checkalmostequal(cond(A,1), 33);
+assert_checkalmostequal(cond(A, %inf), 36);
+assert_checkalmostequal(cond(A, 'inf'), 36);
+assert_checkalmostequal(cond(A, 'fro'), 25.702776, 1e-7);
diff --git a/modules/linear_algebra/tests/unit_tests/cond.tst b/modules/linear_algebra/tests/unit_tests/cond.tst
new file mode 100755
index 000000000..f87fc8247
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/cond.tst
@@ -0,0 +1,87 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// unit tests for cond function
+// =============================================================================
+
+// Interface
+// ===========
+
+assert_checkfalse(execstr("cond()", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of input argument(s): %d to %d expected.\n"), "cond", 1, 2);
+assert_checkerror("cond()", refMsg);
+
+assert_checkfalse(execstr("cond(1,2,3)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong number of input argument(s): %d to %d expected.\n"), "cond", 1, 2);
+assert_checkerror("cond(1,2,3)", refMsg);
+
+assert_checkfalse(execstr("cond(%nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: must not contain %s or %s.\n"), "cond", 1, "%nan", "%inf");
+assert_checkerror("cond(%nan)", refMsg);
+
+assert_checkfalse(execstr("cond(%inf)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: must not contain %s or %s.\n"), "cond", 1, "%nan", "%inf");
+assert_checkerror("cond(%inf)", refMsg);
+
+assert_checkfalse(execstr("cond(%f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A matrix expected.\n"), "cond", 1);
+assert_checkerror("cond(%f)", refMsg);
+
+assert_checkfalse(execstr("cond(""ah"")", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A matrix expected.\n"), "cond", 1);
+assert_checkerror("cond(""ah"")", refMsg);
+
+assert_checkfalse(execstr("cond(""ah"")", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A matrix expected.\n"), "cond", 1);
+assert_checkerror("cond(""ah"")", refMsg);
+
+assert_checkfalse(execstr("cond(""ah"", 1)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "cond", 1);
+assert_checkerror("cond(""ah"", 1)", refMsg);
+
+assert_checkfalse(execstr("cond(1, %f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar or a string expected.\n"),"cond", 2);
+assert_checkerror("cond(1, %f)", refMsg);
+
+assert_checkfalse(execstr("cond(1, 3)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: must be %d, %d, %s, ''%s'' or ''%s''.\n"), "cond", 2, 1, 2, "%inf", "inf", "fro");
+assert_checkerror("cond(1, 3)", refMsg);
+
+assert_checkfalse(execstr("cond([8 5 2;4 5 6], 1)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"),"cond", 1);
+assert_checkerror("cond([8 5 2;4 5 6], 1)", refMsg);
+
+// cond(A)
+A = [8 5 2;4 5 6];
+assert_checkalmostequal(cond(A), 3.1529469);
+
+A = A * %i;
+assert_checkalmostequal(cond(A), 3.1529469);
+
+A = [9 0 3;2 5 0;7 4 1];
+assert_checkalmostequal(cond(A), 23.411565);
+
+assert_checkalmostequal(cond(A,1), 33);
+
+assert_checkalmostequal(cond(A, %inf), 36);
+
+assert_checkalmostequal(cond(A, 'inf'), 36);
+
+assert_checkalmostequal(cond(A, 'fro'), 25.702776, 1e-7);
+
+A = A * %i;
+assert_checkalmostequal(cond(A), 23.411565);
+
+assert_checkalmostequal(cond(A,1), 33);
+
+assert_checkalmostequal(cond(A, %inf), 36);
+
+assert_checkalmostequal(cond(A, 'inf'), 36);
+
+assert_checkalmostequal(cond(A, 'fro'), 25.702776, 1e-7);
diff --git a/modules/linear_algebra/tests/unit_tests/det.dia.ref b/modules/linear_algebra/tests/unit_tests/det.dia.ref
new file mode 100755
index 000000000..3a218b75b
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/det.dia.ref
@@ -0,0 +1,122 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//==========================================================================
+//============================== det ==============================
+//==========================================================================
+//Small dimension
+//Real
+A=[1 1; 1 2];
+assert_checkalmostequal(det(A), 1);
+[e,m]=det(A);
+assert_checkalmostequal(e, 0);
+assert_checkalmostequal(m, 1);
+//Complex
+A=A+%i;
+assert_checkalmostequal(real(det(A)), 1);
+assert_checkalmostequal(imag(det(A)), 1);
+[e,m]=det(A);
+assert_checkalmostequal(e, 0);
+assert_checkalmostequal(real(m), 1);
+assert_checkalmostequal(imag(m), 1);
+//Sparse
+A=[1 1; 1 2];
+A=sparse(A);
+assert_checkalmostequal(det(A), 1);
+[e,m]=det(A)
+ m =
+
+ 1.
+ e =
+
+ 0.
+assert_checkalmostequal(e, 0);
+assert_checkalmostequal(m, 1);
+//Polynomials
+A=[1+%s 1; 1 2+%s];
+assert_checkequal(det(A), 1+3*%s+%s*%s);
+//Rationals
+A=[1+%s 1/%s; 1 2+%s];
+assert_checkequal(numer(det(A)), -1+2*%s+3*%s^2+%s^3);
+assert_checkequal(denom(det(A)), %s);
+//Sparse complex
+A=[1 1; 1 2];
+A=A+%i;
+A=sparse(A);
+assert_checkalmostequal(real(det(A)), 1);
+assert_checkalmostequal(imag(det(A)), 1);
+[e,m]=det(A);
+assert_checkalmostequal(e, 0);
+assert_checkalmostequal(real(m), 1);
+assert_checkalmostequal(imag(m), 1);
+//Large dimension
+//Real
+v=rand(1,21);
+A=rand(21,21); A=(triu(A,1)+diag(v))*(tril(A,-1)+diag(ones(1,21)));
+assert_checktrue(abs(det(A) - prod(v)) < 1D-7);
+[e,m]=det(A);
+assert_checktrue(abs(m*(10^e) - prod(v)) < 1D-7);
+//Complex
+v=(v+rand(v)*%i)/2;
+A=rand(21,21); A=(triu(A,1)+diag(v))*(tril(A,-1)+diag(ones(1,21)));
+assert_checktrue(abs(det(A) - prod(v)) < 1D-7);
+[e,m]=det(A);
+assert_checktrue(abs(m*(10^e) - prod(v)) < 1D-7);
+//Sparse
+v=rand(1,21);
+v=sparse(v);
+A=rand(21,21); A=(triu(A,1)+diag(v))*(tril(A,-1)+diag(ones(1,21)));
+assert_checktrue(abs(det(A) - prod(v)) < 1D-7);
+[e,m]=det(A);
+assert_checktrue(abs(m*(10^e) - prod(v)) < 1d-7);
+//Polynomials
+v=rand(1,21)
+ v =
+
+
+ column 1 to 5
+
+ 0.5866105 0.0477090 0.9416931 0.9613204 0.5583350
+
+ column 6 to 10
+
+ 0.5700629 0.3169258 0.9932628 0.8074780 0.8554797
+
+ column 11 to 15
+
+ 0.5031461 0.0963323 0.7058098 0.8630577 0.0076185
+
+ column 16 to 20
+
+ 0.8048951 0.5963762 0.1176836 0.8010095 0.5132340
+
+ column 21
+
+ 0.201091
+v=v+%s;
+A=rand(21,21); A=(triu(A,1)+diag(v))*(tril(A,-1)+diag(ones(1,21)));
+assert_checktrue(abs(coeff(det(A)-prod(v))) < 1D-7);
+//Rationals
+v=rand(1,21);
+v=v/%s;
+A=rand(21,21); A=(triu(A,1)+diag(v))*(tril(A,-1)+diag(ones(1,21)));
+assert_checktrue(abs(coeff(numer(det(A))-numer(prod(v)))) < 1D-7);
+//Sparse complex
+v=rand(1,21);
+v=(v+rand(v)*%i)/2;
+v=sparse(v);
+A=rand(21,21);
+A=(triu(A,1)+diag(v))*(tril(A,-1)+diag(ones(1,21)));
+A=sparse(A);
+assert_checktrue(abs(det(A) - prod(v)) < 1D-7);
+[e,m]=det(A);
+assert_checktrue(abs(m*(10^e) - prod(v)) < 1d-7);
+//Error messages
+A=[1 1; 1 2];
+errmsg1 = msprintf(_("Wrong type for first argument: Square matrix expected.\n"));
+assert_checkerror("det([1,2;3,4;5,6])", errmsg1, 20);
+errmsg2 = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "det", 1);
+assert_checkerror("det(A,1)", errmsg2, 77);
diff --git a/modules/linear_algebra/tests/unit_tests/det.tst b/modules/linear_algebra/tests/unit_tests/det.tst
new file mode 100755
index 000000000..4b0240755
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/det.tst
@@ -0,0 +1,98 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==========================================================================
+//============================== det ==============================
+//==========================================================================
+
+//Small dimension
+//Real
+A=[1 1; 1 2];
+assert_checkalmostequal(det(A), 1);
+[e,m]=det(A);
+assert_checkalmostequal(e, 0);
+assert_checkalmostequal(m, 1);
+//Complex
+A=A+%i;
+assert_checkalmostequal(real(det(A)), 1);
+assert_checkalmostequal(imag(det(A)), 1);
+[e,m]=det(A);
+assert_checkalmostequal(e, 0);
+assert_checkalmostequal(real(m), 1);
+assert_checkalmostequal(imag(m), 1);
+//Sparse
+A=[1 1; 1 2];
+A=sparse(A);
+assert_checkalmostequal(det(A), 1);
+[e,m]=det(A)
+assert_checkalmostequal(e, 0);
+assert_checkalmostequal(m, 1);
+//Polynomials
+A=[1+%s 1; 1 2+%s];
+assert_checkequal(det(A), 1+3*%s+%s*%s);
+//Rationals
+A=[1+%s 1/%s; 1 2+%s];
+assert_checkequal(numer(det(A)), -1+2*%s+3*%s^2+%s^3);
+assert_checkequal(denom(det(A)), %s);
+//Sparse complex
+A=[1 1; 1 2];
+A=A+%i;
+A=sparse(A);
+assert_checkalmostequal(real(det(A)), 1);
+assert_checkalmostequal(imag(det(A)), 1);
+[e,m]=det(A);
+assert_checkalmostequal(e, 0);
+assert_checkalmostequal(real(m), 1);
+assert_checkalmostequal(imag(m), 1);
+
+//Large dimension
+//Real
+v=rand(1,21);
+A=rand(21,21); A=(triu(A,1)+diag(v))*(tril(A,-1)+diag(ones(1,21)));
+assert_checktrue(abs(det(A) - prod(v)) < 1D-7);
+[e,m]=det(A);
+assert_checktrue(abs(m*(10^e) - prod(v)) < 1D-7);
+//Complex
+v=(v+rand(v)*%i)/2;
+A=rand(21,21); A=(triu(A,1)+diag(v))*(tril(A,-1)+diag(ones(1,21)));
+assert_checktrue(abs(det(A) - prod(v)) < 1D-7);
+[e,m]=det(A);
+assert_checktrue(abs(m*(10^e) - prod(v)) < 1D-7);
+//Sparse
+v=rand(1,21);
+v=sparse(v);
+A=rand(21,21); A=(triu(A,1)+diag(v))*(tril(A,-1)+diag(ones(1,21)));
+assert_checktrue(abs(det(A) - prod(v)) < 1D-7);
+[e,m]=det(A);
+assert_checktrue(abs(m*(10^e) - prod(v)) < 1d-7);
+//Polynomials
+v=rand(1,21)
+v=v+%s;
+A=rand(21,21); A=(triu(A,1)+diag(v))*(tril(A,-1)+diag(ones(1,21)));
+assert_checktrue(abs(coeff(det(A)-prod(v))) < 1D-7);
+//Rationals
+v=rand(1,21);
+v=v/%s;
+A=rand(21,21); A=(triu(A,1)+diag(v))*(tril(A,-1)+diag(ones(1,21)));
+assert_checktrue(abs(coeff(numer(det(A))-numer(prod(v)))) < 1D-7);
+//Sparse complex
+v=rand(1,21);
+v=(v+rand(v)*%i)/2;
+v=sparse(v);
+A=rand(21,21);
+A=(triu(A,1)+diag(v))*(tril(A,-1)+diag(ones(1,21)));
+A=sparse(A);
+assert_checktrue(abs(det(A) - prod(v)) < 1D-7);
+[e,m]=det(A);
+assert_checktrue(abs(m*(10^e) - prod(v)) < 1d-7);
+
+//Error messages
+A=[1 1; 1 2];
+errmsg1 = msprintf(_("Wrong type for first argument: Square matrix expected.\n"));
+assert_checkerror("det([1,2;3,4;5,6])", errmsg1, 20);
+errmsg2 = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "det", 1);
+assert_checkerror("det(A,1)", errmsg2, 77);
diff --git a/modules/linear_algebra/tests/unit_tests/gspec.dia.ref b/modules/linear_algebra/tests/unit_tests/gspec.dia.ref
new file mode 100755
index 000000000..c78066eb1
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/gspec.dia.ref
@@ -0,0 +1,122 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+rand('normal')
+//define tools
+function A=testmat1(a,n)
+ //eigen values are given by a dilation of nth roots of 1
+ A=diag(a*ones(1,n-1),1)+diag((1/a)*ones(1,n-1),-1)
+ A(1,n)=1/a;A(n,1)=a
+endfunction
+function r=Err(x)
+ r=norm(x,1)
+endfunction
+//
+// gc_spec.tst --
+// Test spec with 2 RHS (i.e. generalized eigenvalues)
+// and one or several LHS.
+//
+//Empty matrix
+// 1 LHS
+S=spec([],[]);
+if S<>[] then bugmes();quit;end
+// 2 LHS
+[al,be]=spec([],[]);
+if al<>[]|be<>[] then bugmes();quit;end
+// 3 LHS
+[al,be,R]=spec([],[]);
+if al<>[]|be<>[]|R<>[] then bugmes();quit;end
+// 4 LHS
+[al,be,L,R]=spec([],[]);
+if al<>[]|be<>[]|L<>[]|R<>[] then bugmes();quit;end
+//Matrix with Inf or Nan (test de la detection d'erreur
+// 1 A Real, B, Real
+if execstr('spec([%inf 1;2 3],[%inf 1;2 3])','errcatch')==0 then bugmes();quit;end
+if execstr('spec([%inf 1;2 3],[1 2;3 4])','errcatch')==0 then bugmes();quit;end
+if execstr('spec([1 2;3 4],[1 %nan;2 3])','errcatch')==0 then bugmes();quit;end
+// 2 A Complex, B Complex
+if execstr('spec([%inf %i;2 3],[%inf %i;2 3])','errcatch')==0 then bugmes();quit;end
+// 3 A Real, B Complex
+if execstr('spec([%inf 1;2 3],[%inf %i;2 3])','errcatch')==0 then bugmes();quit;end
+// 4 A Complex, B Real
+if execstr('spec([%inf %i;2 3],[%inf 1;2 3])','errcatch')==0 then bugmes();quit;end
+errorlevel = 1000*%eps;
+//Small dimension
+//---------------
+//Real Case
+A=testmat1(3,5);
+E=testmat1(-2,5);
+// 1 LHS
+S=spec(A,E);
+// 2 LHS
+[Sa,Se]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then bugmes();quit;end
+// 3 LHS
+[Sa,Se,R]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then bugmes();quit;end
+if Err(A*R-E*R*diag(S))>errorlevel then bugmes();quit;end
+// 4 LHS
+[Sa,Se,L,R]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then bugmes();quit;end
+if Err(A*R-E*R*diag(S))>errorlevel then bugmes();quit;end
+if Err(L'*A-diag(S)*L'*E)>errorlevel then bugmes();quit;end
+// Complex Case : A complex, E complex
+A=testmat1(3-%i,5);
+E=testmat1(-2+0.1*%i,5);
+// 1 LHS
+S=spec(A,E);
+// 2 LHS
+[Sa,Se]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then bugmes();quit;end
+// 3 LHS
+[Sa,Se,R]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then bugmes();quit;end
+if Err(A*R-E*R*diag(S))>errorlevel then bugmes();quit;end
+// 4 LHS
+[Sa,Se,L,R]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then bugmes();quit;end
+if Err(A*R-E*R*diag(S))>errorlevel then bugmes();quit;end
+if Err(L'*A-diag(S)*L'*E)>errorlevel then bugmes();quit;end
+// Mixed case : A real, E complex
+A = eye(3,3);
+E = eye(3,3) * %i;
+[Sa,Se,R]=spec(A,E);
+S=Sa./Se;
+if Err(A*R-E*R*diag(S))>errorlevel then bugmes();quit;end
+// Mixed case : A complex, E real
+A = eye(3,3) * %i;
+E = eye(3,3);
+[Sa,Se,R]=spec(A,E);
+S=Sa./Se;
+if Err(A*R-E*R*diag(S))>errorlevel then bugmes();quit;end
+//Large dimension
+//---------------
+//Real Case
+A=testmat1(3,30);
+E=testmat1(-2,30);
+S=spec(A,E);
+[Sa,Se]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then bugmes();quit;end
+[Sa,Se,R]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then bugmes();quit;end
+if Err(A*R-E*R*diag(S))>errorlevel then bugmes();quit;end
+[Sa,Se,L,R]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then bugmes();quit;end
+if Err(A*R-E*R*diag(S))>errorlevel then bugmes();quit;end
+if Err(L'*A-diag(S)*L'*E)>errorlevel then bugmes();quit;end
+//Complex Case
+A=testmat1(3-%i,30);
+E=testmat1(-2+0.1*%i,30);
+S=spec(A,E);
+[Sa,Se]=spec(A,E);
+if Err(S-Sa./Se)>20*%eps then bugmes();quit;end
+[Sa,Se,R]=spec(A,E);
+if Err(S-Sa./Se)>20*%eps then bugmes();quit;end
+if Err(A*R-E*R*diag(S))>errorlevel then bugmes();quit;end
+[Sa,Se,L,R]=spec(A,E);
+if Err(S-Sa./Se)>20*%eps then bugmes();quit;end
+if Err(A*R-E*R*diag(S))>errorlevel then bugmes();quit;end
+if Err(L'*A-diag(S)*L'*E)>errorlevel then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/unit_tests/gspec.tst b/modules/linear_algebra/tests/unit_tests/gspec.tst
new file mode 100755
index 000000000..f7b5ca616
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/gspec.tst
@@ -0,0 +1,139 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+rand('normal')
+
+//define tools
+function A=testmat1(a,n)
+ //eigen values are given by a dilation of nth roots of 1
+ A=diag(a*ones(1,n-1),1)+diag((1/a)*ones(1,n-1),-1)
+ A(1,n)=1/a;A(n,1)=a
+endfunction
+function r=Err(x)
+ r=norm(x,1)
+endfunction
+
+
+//
+// gc_spec.tst --
+// Test spec with 2 RHS (i.e. generalized eigenvalues)
+// and one or several LHS.
+//
+
+//Empty matrix
+// 1 LHS
+S=spec([],[]);
+if S<>[] then pause,end
+// 2 LHS
+[al,be]=spec([],[]);
+if al<>[]|be<>[] then pause,end
+// 3 LHS
+[al,be,R]=spec([],[]);
+if al<>[]|be<>[]|R<>[] then pause,end
+// 4 LHS
+[al,be,L,R]=spec([],[]);
+if al<>[]|be<>[]|L<>[]|R<>[] then pause,end
+
+
+//Matrix with Inf or Nan (test de la detection d'erreur
+
+// 1 A Real, B, Real
+if execstr('spec([%inf 1;2 3],[%inf 1;2 3])','errcatch')==0 then pause,end
+if execstr('spec([%inf 1;2 3],[1 2;3 4])','errcatch')==0 then pause,end
+if execstr('spec([1 2;3 4],[1 %nan;2 3])','errcatch')==0 then pause,end
+// 2 A Complex, B Complex
+if execstr('spec([%inf %i;2 3],[%inf %i;2 3])','errcatch')==0 then pause,end
+// 3 A Real, B Complex
+if execstr('spec([%inf 1;2 3],[%inf %i;2 3])','errcatch')==0 then pause,end
+// 4 A Complex, B Real
+if execstr('spec([%inf %i;2 3],[%inf 1;2 3])','errcatch')==0 then pause,end
+
+errorlevel = 1000*%eps;
+
+//Small dimension
+//---------------
+//Real Case
+A=testmat1(3,5);
+E=testmat1(-2,5);
+// 1 LHS
+S=spec(A,E);
+// 2 LHS
+[Sa,Se]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then pause,end
+// 3 LHS
+[Sa,Se,R]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then pause,end
+if Err(A*R-E*R*diag(S))>errorlevel then pause,end
+// 4 LHS
+[Sa,Se,L,R]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then pause,end
+if Err(A*R-E*R*diag(S))>errorlevel then pause,end
+if Err(L'*A-diag(S)*L'*E)>errorlevel then pause,end
+
+// Complex Case : A complex, E complex
+A=testmat1(3-%i,5);
+E=testmat1(-2+0.1*%i,5);
+// 1 LHS
+S=spec(A,E);
+// 2 LHS
+[Sa,Se]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then pause,end
+// 3 LHS
+[Sa,Se,R]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then pause,end
+if Err(A*R-E*R*diag(S))>errorlevel then pause,end
+// 4 LHS
+[Sa,Se,L,R]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then pause,end
+if Err(A*R-E*R*diag(S))>errorlevel then pause,end
+if Err(L'*A-diag(S)*L'*E)>errorlevel then pause,end
+
+// Mixed case : A real, E complex
+A = eye(3,3);
+E = eye(3,3) * %i;
+[Sa,Se,R]=spec(A,E);
+S=Sa./Se;
+if Err(A*R-E*R*diag(S))>errorlevel then pause,end
+
+// Mixed case : A complex, E real
+A = eye(3,3) * %i;
+E = eye(3,3);
+[Sa,Se,R]=spec(A,E);
+S=Sa./Se;
+if Err(A*R-E*R*diag(S))>errorlevel then pause,end
+
+//Large dimension
+//---------------
+
+//Real Case
+A=testmat1(3,30);
+E=testmat1(-2,30);
+S=spec(A,E);
+[Sa,Se]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then pause,end
+[Sa,Se,R]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then pause,end
+if Err(A*R-E*R*diag(S))>errorlevel then pause,end
+[Sa,Se,L,R]=spec(A,E);
+if Err(S-Sa./Se)>errorlevel then pause,end
+if Err(A*R-E*R*diag(S))>errorlevel then pause,end
+if Err(L'*A-diag(S)*L'*E)>errorlevel then pause,end
+
+//Complex Case
+
+A=testmat1(3-%i,30);
+E=testmat1(-2+0.1*%i,30);
+S=spec(A,E);
+[Sa,Se]=spec(A,E);
+if Err(S-Sa./Se)>20*%eps then pause,end
+[Sa,Se,R]=spec(A,E);
+if Err(S-Sa./Se)>20*%eps then pause,end
+if Err(A*R-E*R*diag(S))>errorlevel then pause,end
+[Sa,Se,L,R]=spec(A,E);
+if Err(S-Sa./Se)>20*%eps then pause,end
+if Err(A*R-E*R*diag(S))>errorlevel then pause,end
+if Err(L'*A-diag(S)*L'*E)>errorlevel then pause,end
+
diff --git a/modules/linear_algebra/tests/unit_tests/hess.dia.ref b/modules/linear_algebra/tests/unit_tests/hess.dia.ref
new file mode 100755
index 000000000..ceff6d278
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/hess.dia.ref
@@ -0,0 +1,48 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+//==========================================================================
+//============================== hess ==============================
+//==========================================================================
+//Empty matrix
+if hess([])<>[] then bugmes();quit;end
+[U,H]=hess([]);
+if U<>[]|H<>[] then bugmes();quit;end
+if execstr('hess(rand(2,5))','errcatch')==0 then bugmes();quit;end
+if execstr('[U,H]=hess(rand(2,5))','errcatch')==0 then bugmes();quit;end
+if execstr('hess(rand(2,5)+%i)','errcatch')==0 then bugmes();quit;end
+if execstr('[U,H]=hess(rand(2,5)+%i)','errcatch')==0 then bugmes();quit;end
+//Small dimension
+//Real case
+A=rand(5,5);
+H=hess(A);
+[U,H1]=hess(A);
+if Err(H-H1)>200*%eps then bugmes();quit;end
+if Err(U'*U-eye()) >200*%eps then bugmes();quit;end
+if Err(U'*A*U-H1) >200*%eps then bugmes();quit;end
+//complex case
+A=rand(5,5)+%i*rand(5,5);
+H=hess(A);
+[U,H1]=hess(A);
+if Err(H-H1)>200*%eps then bugmes();quit;end
+if Err(U'*U-eye()) >200*%eps then bugmes();quit;end
+if Err(U'*A*U-H1) >200*%eps then bugmes();quit;end
+//Large dimension
+A=rand(20,20);
+H=hess(A);
+[U,H1]=hess(A);
+if Err(H-H1)>200*%eps then bugmes();quit;end
+if Err(U'*U-eye()) >1000*%eps then bugmes();quit;end
+if Err(U'*A*U-H1) >1000*%eps then bugmes();quit;end
+//complex case
+A=rand(20,20)+%i*rand(20,20);
+H=hess(A);
+[U,H1]=hess(A);
+if Err(H-H1)>1000*%eps then bugmes();quit;end
+if Err(U'*U-eye()) >1000*%eps then bugmes();quit;end
+if Err(U'*A*U-H1) >1000*%eps then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/unit_tests/hess.tst b/modules/linear_algebra/tests/unit_tests/hess.tst
new file mode 100755
index 000000000..8fce2bc5d
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/hess.tst
@@ -0,0 +1,53 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+
+//==========================================================================
+//============================== hess ==============================
+//==========================================================================
+
+//Empty matrix
+if hess([])<>[] then pause,end
+[U,H]=hess([]);
+if U<>[]|H<>[] then pause,end
+
+if execstr('hess(rand(2,5))','errcatch')==0 then pause,end
+if execstr('[U,H]=hess(rand(2,5))','errcatch')==0 then pause,end
+if execstr('hess(rand(2,5)+%i)','errcatch')==0 then pause,end
+if execstr('[U,H]=hess(rand(2,5)+%i)','errcatch')==0 then pause,end
+
+//Small dimension
+//Real case
+A=rand(5,5);
+H=hess(A);
+[U,H1]=hess(A);
+if Err(H-H1)>200*%eps then pause,end
+if Err(U'*U-eye()) >200*%eps then pause,end
+if Err(U'*A*U-H1) >200*%eps then pause,end
+//complex case
+A=rand(5,5)+%i*rand(5,5);
+H=hess(A);
+[U,H1]=hess(A);
+if Err(H-H1)>200*%eps then pause,end
+if Err(U'*U-eye()) >200*%eps then pause,end
+if Err(U'*A*U-H1) >200*%eps then pause,end
+//Large dimension
+A=rand(20,20);
+H=hess(A);
+[U,H1]=hess(A);
+if Err(H-H1)>200*%eps then pause,end
+if Err(U'*U-eye()) >1000*%eps then pause,end
+if Err(U'*A*U-H1) >1000*%eps then pause,end
+//complex case
+A=rand(20,20)+%i*rand(20,20);
+H=hess(A);
+[U,H1]=hess(A);
+if Err(H-H1)>1000*%eps then pause,end
+if Err(U'*U-eye()) >1000*%eps then pause,end
+if Err(U'*A*U-H1) >1000*%eps then pause,end
+
diff --git a/modules/linear_algebra/tests/unit_tests/inv.dia.ref b/modules/linear_algebra/tests/unit_tests/inv.dia.ref
new file mode 100755
index 000000000..aaad5e325
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/inv.dia.ref
@@ -0,0 +1,56 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//define tools
+function A=testmat1(a,n)
+ //eigen values are given by a dilation of nth roots of 1
+ A=diag(a*ones(1,n-1),1)+diag((1/a)*ones(1,n-1),-1)
+ A(1,n)=1/a;A(n,1)=a
+endfunction
+function r=Err(x)
+ r=norm(x,1)
+endfunction
+rand('normal')
+//==========================================================================
+//============================== inv ==============================
+//==========================================================================
+//Empty matrix
+A=[];
+if inv(A)<>[] then bugmes();quit;end
+//Singular matrix
+if execstr('inv([0 0;2 3])','errcatch')==0 then bugmes();quit;end
+if execstr('inv([0 0;%i 3])','errcatch')==0 then bugmes();quit;end
+//Rectangular matrix
+if execstr('inv(rand(2,3))','errcatch')==0 then bugmes();quit;end
+if execstr('inv(rand(2,3)+%i*eye())','errcatch')==0 then bugmes();quit;end
+//Small dimension
+//---------------
+//Unsymetric
+A=testmat1(3,5);Ac=testmat1(3+%i,5);
+//Real Case
+if Err(A*inv(A)-eye(A)) >200*%eps then bugmes();quit;end
+//Complex Case
+if Err(Ac*inv(Ac)-eye(A)) >200*%eps then bugmes();quit;end
+//Symetric
+A=A*A';Ac=Ac*Ac';
+//Real Case
+if Err(A*inv(A)-eye(A)) >1000*%eps then bugmes();quit;end
+//Complex Case
+if Err(Ac*inv(Ac)-eye(A)) >1000*%eps then bugmes();quit;end
+//Large dimension
+//---------------
+//Unsymetric
+A=testmat1(3,50);Ac=testmat1(3+%i,50);
+//Real Case
+if Err(A*inv(A)-eye(A)) >1000*%eps then bugmes();quit;end
+//Complex Case
+if Err(Ac*inv(Ac)-eye(A)) >2000*%eps then bugmes();quit;end
+//Symetric
+A=A*A';Ac=Ac*Ac';
+//Real Case
+if Err(A*inv(A)-eye(A)) >1.d-10 then bugmes();quit;end
+//Complex Case
+if Err(Ac*inv(Ac)-eye(A)) >4.d-10 then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/unit_tests/inv.tst b/modules/linear_algebra/tests/unit_tests/inv.tst
new file mode 100755
index 000000000..df88e0fdf
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/inv.tst
@@ -0,0 +1,56 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//define tools
+function A=testmat1(a,n)
+ //eigen values are given by a dilation of nth roots of 1
+ A=diag(a*ones(1,n-1),1)+diag((1/a)*ones(1,n-1),-1)
+ A(1,n)=1/a;A(n,1)=a
+endfunction
+function r=Err(x)
+ r=norm(x,1)
+endfunction
+rand('normal')
+//==========================================================================
+//============================== inv ==============================
+//==========================================================================
+//Empty matrix
+A=[];
+if inv(A)<>[] then pause,end
+//Singular matrix
+if execstr('inv([0 0;2 3])','errcatch')==0 then pause,end
+if execstr('inv([0 0;%i 3])','errcatch')==0 then pause,end
+//Rectangular matrix
+if execstr('inv(rand(2,3))','errcatch')==0 then pause,end
+if execstr('inv(rand(2,3)+%i*eye())','errcatch')==0 then pause,end
+//Small dimension
+//---------------
+//Unsymetric
+A=testmat1(3,5);Ac=testmat1(3+%i,5);
+//Real Case
+if Err(A*inv(A)-eye(A)) >200*%eps then pause,end
+//Complex Case
+if Err(Ac*inv(Ac)-eye(A)) >200*%eps then pause,end
+//Symetric
+A=A*A';Ac=Ac*Ac';
+//Real Case
+if Err(A*inv(A)-eye(A)) >1000*%eps then pause,end
+//Complex Case
+if Err(Ac*inv(Ac)-eye(A)) >1000*%eps then pause,end
+//Large dimension
+//---------------
+//Unsymetric
+A=testmat1(3,50);Ac=testmat1(3+%i,50);
+//Real Case
+if Err(A*inv(A)-eye(A)) >1000*%eps then pause,end
+//Complex Case
+if Err(Ac*inv(Ac)-eye(A)) >2000*%eps then pause,end
+//Symetric
+A=A*A';Ac=Ac*Ac';
+//Real Case
+if Err(A*inv(A)-eye(A)) >1.d-10 then pause,end
+//Complex Case
+if Err(Ac*inv(Ac)-eye(A)) >4.d-10 then pause,end
diff --git a/modules/linear_algebra/tests/unit_tests/leftmatrixdiv.dia.ref b/modules/linear_algebra/tests/unit_tests/leftmatrixdiv.dia.ref
new file mode 100755
index 000000000..bca84064a
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/leftmatrixdiv.dia.ref
@@ -0,0 +1,121 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//define tools
+function A=testmat1(a,n)
+ //eigen values are given by a dilation of nth roots of 1
+ A=diag(a*ones(1,n-1),1)+diag((1/a)*ones(1,n-1),-1)
+ A(1,n)=1/a;A(n,1)=a
+endfunction
+function r=Err(x)
+ r=norm(x,1)
+endfunction
+rand('normal')
+//==========================================================================
+//============================== \ ==============================
+//==========================================================================
+function x=leftmatrixdiv(A,B)
+ x=A\B
+endfunction
+//scalar division
+//-----Square matrix-----
+n=5; A=rand(n,n);b=rand(2,n+1);
+if leftmatrixdiv(A,[]) <>[] then bugmes();quit;end
+if execstr('leftmatrixdiv(A,B)','errcatch')==0 then bugmes();quit;end
+//Small dimensions real
+n=5;
+b=rand(n,2);A=rand(n,n);
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>200*%eps then bugmes();quit;end
+//Small dimensions complex
+b=rand(n,2)+%i;A=rand(n,n);
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>500*%eps then bugmes();quit;end
+b=rand(n,2);A=rand(n,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>200*%eps then bugmes();quit;end
+b=rand(n,2)+%i;A=rand(n,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>200*%eps then bugmes();quit;end
+//Large dimensions real
+n=50;
+b=rand(n,2);A=rand(n,n);
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>10^6*%eps then bugmes();quit;end
+//Small dimensions complex
+b=rand(n,2)+%i;A=rand(n,n);
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>50000*%eps then bugmes();quit;end
+b=rand(n,2);A=rand(n,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>50000*%eps then bugmes();quit;end
+b=rand(n,2)+%i;A=rand(n,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>50000*%eps then bugmes();quit;end
+//-----Rectangular matrix-----
+n=5;m=3; A=rand(m,n);b=rand(n+1,2);
+if leftmatrixdiv(A,[]) <>[] then bugmes();quit;end
+if execstr('leftmatrixdiv(A,b)','errcatch')==0 then bugmes();quit;end
+//Small dimensions real
+n=5;m=3;
+b=rand(m,2);A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>200*%eps then bugmes();quit;end
+n=3;m=5;
+b=rand(m,2);A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>1000*%eps then bugmes();quit;end
+//Small dimensions complex
+n=5;m=3;
+b=rand(m,2)+%i;A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>1000*%eps then bugmes();quit;end
+n=5;m=3;
+b=rand(m,2);A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>1000*%eps then bugmes();quit;end
+b=rand(m,2)+%i;A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>1000*%eps then bugmes();quit;end
+n=3;m=5;
+b=rand(m,2)+%i;A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>1000*%eps then bugmes();quit;end
+n=3;m=5;
+b=rand(m,2);A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>1000*%eps then bugmes();quit;end
+n=3;m=5;
+b=rand(m,2)+%i;A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>1000*%eps then bugmes();quit;end
+//LArge dimension real
+n=40;m=20;
+b=rand(m,2);A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then bugmes();quit;end
+b=rand(m,2);A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then bugmes();quit;end
+//Large dimensions complex
+b=rand(m,2)+%i;A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then bugmes();quit;end
+b=rand(m,2);A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then bugmes();quit;end
+b=rand(m,2)+%i;A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then bugmes();quit;end
+b=rand(m,2)+%i;A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then bugmes();quit;end
+b=rand(m,2);A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then bugmes();quit;end
+b=rand(m,2)+%i;A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/unit_tests/leftmatrixdiv.tst b/modules/linear_algebra/tests/unit_tests/leftmatrixdiv.tst
new file mode 100755
index 000000000..ee61b4362
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/leftmatrixdiv.tst
@@ -0,0 +1,149 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//define tools
+function A=testmat1(a,n)
+ //eigen values are given by a dilation of nth roots of 1
+ A=diag(a*ones(1,n-1),1)+diag((1/a)*ones(1,n-1),-1)
+ A(1,n)=1/a;A(n,1)=a
+endfunction
+function r=Err(x)
+ r=norm(x,1)
+endfunction
+rand('normal')
+
+//==========================================================================
+//============================== \ ==============================
+//==========================================================================
+function x=leftmatrixdiv(A,B)
+ x=A\B
+endfunction
+//scalar division
+
+//-----Square matrix-----
+n=5; A=rand(n,n);b=rand(2,n+1);
+if leftmatrixdiv(A,[]) <>[] then pause,end
+if execstr('leftmatrixdiv(A,B)','errcatch')==0 then pause,end
+//Small dimensions real
+n=5;
+b=rand(n,2);A=rand(n,n);
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>200*%eps then pause,end
+//Small dimensions complex
+b=rand(n,2)+%i;A=rand(n,n);
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>500*%eps then pause,end
+
+b=rand(n,2);A=rand(n,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>200*%eps then pause,end
+
+
+b=rand(n,2)+%i;A=rand(n,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>200*%eps then pause,end
+
+
+//Large dimensions real
+n=50;
+b=rand(n,2);A=rand(n,n);
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>10^6*%eps then pause,end
+//Small dimensions complex
+b=rand(n,2)+%i;A=rand(n,n);
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>50000*%eps then pause,end
+
+b=rand(n,2);A=rand(n,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>50000*%eps then pause,end
+
+b=rand(n,2)+%i;A=rand(n,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A*x-b)>50000*%eps then pause,end
+
+//-----Rectangular matrix-----
+n=5;m=3; A=rand(m,n);b=rand(n+1,2);
+if leftmatrixdiv(A,[]) <>[] then pause,end
+if execstr('leftmatrixdiv(A,b)','errcatch')==0 then pause,end
+
+//Small dimensions real
+n=5;m=3;
+b=rand(m,2);A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>200*%eps then pause,end
+
+n=3;m=5;
+b=rand(m,2);A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>1000*%eps then pause,end
+//Small dimensions complex
+n=5;m=3;
+b=rand(m,2)+%i;A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>1000*%eps then pause,end
+n=5;m=3;
+b=rand(m,2);A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>1000*%eps then pause,end
+b=rand(m,2)+%i;A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>1000*%eps then pause,end
+
+n=3;m=5;
+b=rand(m,2)+%i;A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>1000*%eps then pause,end
+
+n=3;m=5;
+b=rand(m,2);A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>1000*%eps then pause,end
+
+n=3;m=5;
+b=rand(m,2)+%i;A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>1000*%eps then pause,end
+
+//LArge dimension real
+
+n=40;m=20;
+b=rand(m,2);A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then pause,end
+
+b=rand(m,2);A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then pause,end
+//Large dimensions complex
+
+b=rand(m,2)+%i;A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then pause,end
+
+
+b=rand(m,2);A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then pause,end
+
+b=rand(m,2)+%i;A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then pause,end
+
+
+b=rand(m,2)+%i;A=rand(m,n);
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then pause,end
+
+b=rand(m,2);A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then pause,end
+
+b=rand(m,2)+%i;A=rand(m,n)+%i;
+x=leftmatrixdiv(A,b);
+if Err(A'*A*x-A'*b)>10000*%eps then pause,end
+
+
diff --git a/modules/linear_algebra/tests/unit_tests/lsq.dia.ref b/modules/linear_algebra/tests/unit_tests/lsq.dia.ref
new file mode 100755
index 000000000..5fefb8a24
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/lsq.dia.ref
@@ -0,0 +1,96 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+//==========================================================================
+//============================== lsq ==============================
+//==========================================================================
+//Empty matrix
+if lsq([],[])<>[] then bugmes();quit;end
+if execstr('lsq([],1)','errcatch')==0 then bugmes();quit;end
+if execstr('lsq(1,[])','errcatch')==0 then bugmes();quit;end
+if execstr('lsq(rand(3,2),rand(2,1))','errcatch')==0 then bugmes();quit;end
+//Small dimensions
+//Real full rank fat
+A=rand(3,5);b=rand(3,2);
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then bugmes();quit;end
+//Real rank deficient fat
+A=[1 2 3;1 2 3];b=[4;5];
+X=lsq(A,b);
+if Err(A'*A*X-A'*b)> 200*%eps then bugmes();quit;end
+//Real tall
+A=[1 2;4 2;0 1];b=[1;1;1];
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:2,:))*b1(1:2);
+if Err(X-X1)>200*%eps then bugmes();quit;end
+//Complex full rank fat
+A=rand(3,5)+%i*rand(3,5);b=rand(3,2);
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then bugmes();quit;end
+A=rand(3,5);b=rand(3,2)+%i*rand(3,2);
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then bugmes();quit;end
+A=rand(3,5)+%i*rand(3,5);b=rand(3,2)+%i*rand(3,2);
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then bugmes();quit;end
+//Complex rank deficient fat
+A=[1 2 3;1 2 3]+%i;b=[4;5];
+X=lsq(A,b);
+A=[1 2 3;1 2 3];b=[4;5]+%i;
+X=lsq(A,b);
+if Err(A'*A*X-A'*b)>200*%eps then bugmes();quit;end
+if Err(A'*A*X-A'*b)>200*%eps then bugmes();quit;end
+A=[1 2 3;1 2 3]+%i;b=[4;5]+%i;
+X=lsq(A,b);
+if Err(A'*A*X-A'*b)>1000*%eps then bugmes();quit;end
+//Complex full rank tall
+A=[1 2;4 2;0 1]+%i;b=[1;1;1];
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:2,:))*b1(1:2);
+if Err(X-X1)>200*%eps then bugmes();quit;end
+A=[1 2;4 2;0 1];b=[1;1;1]+%i;
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:2,:))*b1(1:2);
+if Err(X-X1)>200*%eps then bugmes();quit;end
+A=[1 2;4 2;0 1]+%i;b=[1;1;1]+%i;
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:2,:))*b1(1:2);
+if Err(X-X1)>200*%eps then bugmes();quit;end
+//LArge dimension
+//Real full rank fat
+A=rand(3,50);b=rand(3,2);
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then bugmes();quit;end
+//Real full rank tall
+A=rand(50,3);b=rand(50,2);
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:3,:))*b1(1:3,:);
+if Err(X-X1)>200*%eps then bugmes();quit;end
+//Complex full rank fat
+A=rand(3,50)+%i;b=rand(3,2);
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then bugmes();quit;end
+A=rand(3,50);b=rand(3,2)+%i;
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then bugmes();quit;end
+A=rand(3,50);b=rand(3,2)+%i;
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then bugmes();quit;end
+//Complex full rank tall
+A=rand(50,3)+%i;b=rand(50,2);
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:3,:))*b1(1:3,:);
+if Err(X-X1)>200*%eps then bugmes();quit;end
+A=rand(50,3);b=rand(50,2)+%i;
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:3,:))*b1(1:3,:);
+if Err(X-X1)>200*%eps then bugmes();quit;end
+A=rand(50,3)+%i;b=rand(50,2)+%i;
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:3,:))*b1(1:3,:);
+if Err(X-X1)>200*%eps then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/unit_tests/lsq.tst b/modules/linear_algebra/tests/unit_tests/lsq.tst
new file mode 100755
index 000000000..8123a612c
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/lsq.tst
@@ -0,0 +1,113 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+
+//==========================================================================
+//============================== lsq ==============================
+//==========================================================================
+
+//Empty matrix
+if lsq([],[])<>[] then pause,end
+if execstr('lsq([],1)','errcatch')==0 then pause,end
+if execstr('lsq(1,[])','errcatch')==0 then pause,end
+if execstr('lsq(rand(3,2),rand(2,1))','errcatch')==0 then pause,end
+
+//Small dimensions
+//Real full rank fat
+A=rand(3,5);b=rand(3,2);
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then pause,end
+//Real rank deficient fat
+A=[1 2 3;1 2 3];b=[4;5];
+X=lsq(A,b);
+if Err(A'*A*X-A'*b)> 200*%eps then pause,end
+//Real tall
+A=[1 2;4 2;0 1];b=[1;1;1];
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:2,:))*b1(1:2);
+if Err(X-X1)>200*%eps then pause,end
+//Complex full rank fat
+A=rand(3,5)+%i*rand(3,5);b=rand(3,2);
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then pause,end
+
+A=rand(3,5);b=rand(3,2)+%i*rand(3,2);
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then pause,end
+
+A=rand(3,5)+%i*rand(3,5);b=rand(3,2)+%i*rand(3,2);
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then pause,end
+//Complex rank deficient fat
+A=[1 2 3;1 2 3]+%i;b=[4;5];
+X=lsq(A,b);
+A=[1 2 3;1 2 3];b=[4;5]+%i;
+X=lsq(A,b);
+if Err(A'*A*X-A'*b)>200*%eps then pause,end
+
+if Err(A'*A*X-A'*b)>200*%eps then pause,end
+A=[1 2 3;1 2 3]+%i;b=[4;5]+%i;
+X=lsq(A,b);
+if Err(A'*A*X-A'*b)>1000*%eps then pause,end
+
+//Complex full rank tall
+A=[1 2;4 2;0 1]+%i;b=[1;1;1];
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:2,:))*b1(1:2);
+if Err(X-X1)>200*%eps then pause,end
+
+A=[1 2;4 2;0 1];b=[1;1;1]+%i;
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:2,:))*b1(1:2);
+if Err(X-X1)>200*%eps then pause,end
+
+A=[1 2;4 2;0 1]+%i;b=[1;1;1]+%i;
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:2,:))*b1(1:2);
+if Err(X-X1)>200*%eps then pause,end
+
+
+
+//LArge dimension
+//Real full rank fat
+A=rand(3,50);b=rand(3,2);
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then pause,end
+//Real full rank tall
+A=rand(50,3);b=rand(50,2);
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:3,:))*b1(1:3,:);
+if Err(X-X1)>200*%eps then pause,end
+
+//Complex full rank fat
+A=rand(3,50)+%i;b=rand(3,2);
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then pause,end
+A=rand(3,50);b=rand(3,2)+%i;
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then pause,end
+
+A=rand(3,50);b=rand(3,2)+%i;
+X=lsq(A,b);
+if Err(A*X-b)>200*%eps then pause,end
+//Complex full rank tall
+A=rand(50,3)+%i;b=rand(50,2);
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:3,:))*b1(1:3,:);
+if Err(X-X1)>200*%eps then pause,end
+
+A=rand(50,3);b=rand(50,2)+%i;
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:3,:))*b1(1:3,:);
+if Err(X-X1)>200*%eps then pause,end
+A=rand(50,3)+%i;b=rand(50,2)+%i;
+X=lsq(A,b);
+[Q,R]=qr(A);b1=Q'*b;X1=inv(R(1:3,:))*b1(1:3,:);
+if Err(X-X1)>200*%eps then pause,end
+
+
diff --git a/modules/linear_algebra/tests/unit_tests/lu.dia.ref b/modules/linear_algebra/tests/unit_tests/lu.dia.ref
new file mode 100755
index 000000000..23a614213
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/lu.dia.ref
@@ -0,0 +1,99 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+//==========================================================================
+//============================== lu ==============================
+//==========================================================================
+//Empty matrix
+A=[];
+[L,U]=lu(A);
+if L<>[]|U<>[] then bugmes();quit;end
+[L,U,E]=lu(A);
+if L<>[]|U<>[]|E<>[] then bugmes();quit;end
+//Non full rank
+A=rand(5,2);A=A*A';;Ac=rand(5,2)+%i*rand(5,2);Ac=Ac*Ac';
+[L,U,E]=lu(A);
+if Err(L*U-E*A) >200*%eps then bugmes();quit;end
+[L,U,E]=lu(Ac);
+if Err(L*U-E*Ac) >200*%eps then bugmes();quit;end
+//Small dimension
+//---------------
+//Square
+A=rand(5,5);Ac=A+%i*rand(A);
+//Real case
+[L,U]=lu(A);
+if Err(L*U-A) >200*%eps then bugmes();quit;end
+[L,U,E]=lu(A);
+if Err(L*U-E*A) >200*%eps then bugmes();quit;end
+//Complex case
+[L,U]=lu(Ac);
+if Err(L*U-Ac) >200*%eps then bugmes();quit;end
+[L,U,E]=lu(Ac);
+if Err(L*U-E*Ac) >200*%eps then bugmes();quit;end
+//Fat
+A=rand(3,5);Ac=A+%i*rand(A);
+//Real case
+[L,U]=lu(A);
+if Err(L*U-A) >200*%eps then bugmes();quit;end
+[L,U,E]=lu(A);
+if Err(L*U-E*A) >200*%eps then bugmes();quit;end
+//Complex case
+[L,U]=lu(Ac);
+if Err(L*U-Ac) >200*%eps then bugmes();quit;end
+[L,U,E]=lu(Ac);
+if Err(L*U-E*Ac) >200*%eps then bugmes();quit;end
+//Tall
+A=rand(5,3);Ac=A+%i*rand(A);
+//Real case
+[L,U]=lu(A);
+if Err(L*U-A) >200*%eps then bugmes();quit;end
+[L,U,E]=lu(A);
+if Err(L*U-E*A) >200*%eps then bugmes();quit;end
+//Complex case
+[L,U]=lu(Ac);
+if Err(L*U-Ac) >200*%eps then bugmes();quit;end
+[L,U,E]=lu(Ac);
+if Err(L*U-E*Ac) >200*%eps then bugmes();quit;end
+//large dimension
+//---------------
+//Square
+A=rand(50,50);Ac=A+%i*rand(A);
+//Real case
+[L,U]=lu(A);
+if Err(L*U-A) >1000*%eps then bugmes();quit;end
+[L,U,E]=lu(A);
+if Err(L*U-E*A) >1000*%eps then bugmes();quit;end
+//Complex case
+[L,U]=lu(Ac);
+if Err(L*U-Ac) >1000*%eps then bugmes();quit;end
+[L,U,E]=lu(Ac);
+if Err(L*U-E*Ac) >1000*%eps then bugmes();quit;end
+//Fat
+A=rand(30,50);Ac=A+%i*rand(A);
+//Real case
+[L,U]=lu(A);
+if Err(L*U-A) >1000*%eps then bugmes();quit;end
+[L,U,E]=lu(A);
+if Err(L*U-E*A) >1000*%eps then bugmes();quit;end
+//Complex case
+[L,U]=lu(Ac);
+if Err(L*U-Ac) >1000*%eps then bugmes();quit;end
+[L,U,E]=lu(Ac);
+if Err(L*U-E*Ac) >1000*%eps then bugmes();quit;end
+//Tall
+A=rand(50,30);Ac=A+%i*rand(A);
+//Real case
+[L,U]=lu(A);
+if Err(L*U-A) >1000*%eps then bugmes();quit;end
+[L,U,E]=lu(A);
+if Err(L*U-E*A) >1000*%eps then bugmes();quit;end
+//Complex case
+[L,U]=lu(Ac);
+if Err(L*U-Ac) >1000*%eps then bugmes();quit;end
+[L,U,E]=lu(Ac);
+if Err(L*U-E*Ac) >1000*%eps then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/unit_tests/lu.tst b/modules/linear_algebra/tests/unit_tests/lu.tst
new file mode 100755
index 000000000..2bed8cd8f
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/lu.tst
@@ -0,0 +1,106 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+
+//==========================================================================
+//============================== lu ==============================
+//==========================================================================
+//Empty matrix
+A=[];
+[L,U]=lu(A);
+if L<>[]|U<>[] then pause,end
+[L,U,E]=lu(A);
+if L<>[]|U<>[]|E<>[] then pause,end
+//Non full rank
+A=rand(5,2);A=A*A';;Ac=rand(5,2)+%i*rand(5,2);Ac=Ac*Ac';
+[L,U,E]=lu(A);
+if Err(L*U-E*A) >200*%eps then pause,end
+[L,U,E]=lu(Ac);
+if Err(L*U-E*Ac) >200*%eps then pause,end
+
+//Small dimension
+//---------------
+//Square
+A=rand(5,5);Ac=A+%i*rand(A);
+//Real case
+
+[L,U]=lu(A);
+if Err(L*U-A) >200*%eps then pause,end
+[L,U,E]=lu(A);
+if Err(L*U-E*A) >200*%eps then pause,end
+//Complex case
+[L,U]=lu(Ac);
+if Err(L*U-Ac) >200*%eps then pause,end
+[L,U,E]=lu(Ac);
+if Err(L*U-E*Ac) >200*%eps then pause,end
+//Fat
+A=rand(3,5);Ac=A+%i*rand(A);
+//Real case
+[L,U]=lu(A);
+if Err(L*U-A) >200*%eps then pause,end
+[L,U,E]=lu(A);
+if Err(L*U-E*A) >200*%eps then pause,end
+//Complex case
+[L,U]=lu(Ac);
+if Err(L*U-Ac) >200*%eps then pause,end
+[L,U,E]=lu(Ac);
+if Err(L*U-E*Ac) >200*%eps then pause,end
+//Tall
+A=rand(5,3);Ac=A+%i*rand(A);
+//Real case
+[L,U]=lu(A);
+if Err(L*U-A) >200*%eps then pause,end
+[L,U,E]=lu(A);
+if Err(L*U-E*A) >200*%eps then pause,end
+//Complex case
+[L,U]=lu(Ac);
+if Err(L*U-Ac) >200*%eps then pause,end
+[L,U,E]=lu(Ac);
+if Err(L*U-E*Ac) >200*%eps then pause,end
+
+//large dimension
+//---------------
+//Square
+A=rand(50,50);Ac=A+%i*rand(A);
+//Real case
+[L,U]=lu(A);
+if Err(L*U-A) >1000*%eps then pause,end
+[L,U,E]=lu(A);
+if Err(L*U-E*A) >1000*%eps then pause,end
+//Complex case
+[L,U]=lu(Ac);
+if Err(L*U-Ac) >1000*%eps then pause,end
+[L,U,E]=lu(Ac);
+if Err(L*U-E*Ac) >1000*%eps then pause,end
+//Fat
+A=rand(30,50);Ac=A+%i*rand(A);
+//Real case
+[L,U]=lu(A);
+if Err(L*U-A) >1000*%eps then pause,end
+[L,U,E]=lu(A);
+if Err(L*U-E*A) >1000*%eps then pause,end
+//Complex case
+[L,U]=lu(Ac);
+if Err(L*U-Ac) >1000*%eps then pause,end
+[L,U,E]=lu(Ac);
+if Err(L*U-E*Ac) >1000*%eps then pause,end
+//Tall
+A=rand(50,30);Ac=A+%i*rand(A);
+//Real case
+[L,U]=lu(A);
+if Err(L*U-A) >1000*%eps then pause,end
+[L,U,E]=lu(A);
+if Err(L*U-E*A) >1000*%eps then pause,end
+//Complex case
+[L,U]=lu(Ac);
+if Err(L*U-Ac) >1000*%eps then pause,end
+[L,U,E]=lu(Ac);
+if Err(L*U-E*Ac) >1000*%eps then pause,end
+
+
+
diff --git a/modules/linear_algebra/tests/unit_tests/norm.dia.ref b/modules/linear_algebra/tests/unit_tests/norm.dia.ref
new file mode 100755
index 000000000..b3b71ddf3
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/norm.dia.ref
@@ -0,0 +1,139 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA Michael Baudin
+// Copyright (C) 2011 - DIGITEO - Michael Baudin
+// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier: added performance and IEE compliance tests
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// TODO : use relative error criteria instead of absolute error
+eps = 100*%eps;
+// Inf
+assert_checkequal ( norm([1,2,3,-1,-2,-3],0) , %inf );
+assert_checkequal ( norm([1,2,3,-1,-2,-3],%nan) , %nan );
+assert_checkequal ( norm([]) , 0 );
+// Vector
+x = [1, 2, 3, -4];
+assert_checkalmostequal ( norm(x,1) , sum(abs(x)) , eps );
+assert_checkalmostequal ( norm(x,2) , sqrt(sum(abs(x).*abs(x))) , eps );
+assert_checkalmostequal ( norm(x,2) , norm(x) , eps );
+assert_checkalmostequal ( norm(x,-%inf) , min(abs(x)) , eps );
+p = 0.5;
+assert_checkalmostequal ( norm(x,p) , sum(abs(x).^p).^(1/p) , eps );
+p = 2.5;
+assert_checkalmostequal ( norm(x,p) , sum(abs(x).^p).^(1/p) , eps );
+assert_checkalmostequal ( norm(x,"inf") , max(abs(x)) , eps );
+assert_checkalmostequal ( norm(x,"inf") , norm(x,%inf) , eps );
+assert_checkalmostequal ( norm(x,"fro") , norm(x,2) , eps );
+// Complex
+x = x + %i*x;
+assert_checkalmostequal ( norm(x,1) , sum(abs(x)) , eps );
+assert_checkalmostequal ( norm(x,2) , sqrt(sum(abs(x).*abs(x))) , eps );
+assert_checkalmostequal ( norm(x,2) , norm(x) , eps );
+assert_checkalmostequal ( norm(x,-%inf) , min(abs(x)) , eps );
+p = 0.5;
+// 100*%eps is needed for linux
+assert_checkalmostequal ( norm(x,p) , max(abs(x))*sum((abs(x)/max(abs(x))).^p).^(1/p) , 100*%eps );
+p = 2.5;
+assert_checkalmostequal ( norm(x,p) , max(abs(x))*sum((abs(x)/max(abs(x))).^p).^(1/p) , 100*%eps );
+assert_checkalmostequal ( norm(x,"inf") , max(abs(x)) , 100*%eps);
+assert_checkalmostequal ( norm(x,"inf") , norm(x,%inf) , 100*%eps);
+// The Frobenius norm of this complex input x can be numerically complex,
+// e.g. 7.7459667 - 1.147D-16i
+// See http://bugzilla.scilab.org/show_bug.cgi?id=9204
+// assert_checkalmostequal ( norm(x,'fro') , norm(x,2) , 100*%eps , %eps );
+// Scalar
+x = [1.23];
+assert_checkalmostequal ( norm(x,1) , sum(abs(x)) , 100*%eps );
+assert_checkalmostequal ( norm(x,2) , sqrt(sum(abs(x).*abs(x))) , 100*%eps );
+assert_checkalmostequal ( norm(x,2) , norm(x) , 100*%eps );
+p = 0.5;
+assert_checkalmostequal ( norm(x,p) , sum(abs(x)^p)^(1/p) , 100*%eps );
+p = 2.5;
+assert_checkalmostequal ( norm(x,p) , sum(abs(x)^p)^(1/p) , 100*%eps );
+assert_checkalmostequal ( norm(x,"inf") , max(abs(x)) , 100*%eps);
+assert_checkalmostequal ( norm(x,"inf") , norm(x,%inf) , 100*%eps );
+assert_checkalmostequal ( norm(x,"fro") , norm(x,2) , 100*%eps );
+// Matrices
+a = rand(10, 10, "g");
+assert_checkalmostequal ( norm(a,1) , max(sum(abs(a),"r")) , 100*%eps );
+assert_checkalmostequal ( norm(a,"inf") , max(sum(abs(a),"c")) , 100*%eps );
+assert_checkalmostequal ( norm(a,%inf) , max(sum(abs(a),"c")) , 100*%eps );
+assert_checkalmostequal ( norm(a,2) , max(svd(a)) , 100*%eps );
+assert_checkalmostequal ( norm(a,"fro") , norm(matrix(a,1,size(a,"*")),2), 100*%eps );
+a = a + %i*a;
+assert_checkalmostequal ( norm(a,1) , max(sum(abs(a),"r")) , 100*%eps );
+assert_checkalmostequal ( norm(a,"inf") , max(sum(abs(a),"c")) , 100*%eps );
+assert_checkalmostequal ( norm(a,%inf) , max(sum(abs(a),"c")) , 100*%eps );
+assert_checkalmostequal ( norm(a,2) , max(svd(a)) , 100*%eps );
+// See http://bugzilla.scilab.org/show_bug.cgi?id=9204
+// assert_checkalmostequal ( norm(a,'fro') , norm(matrix(a,1,size(a,'*')),2), 100*%eps );
+//
+// Difficult cases for large/small vectors
+//
+// Norm 2
+x = 1.e307 * [1 1];
+assert_checkequal ( norm(x) , sqrt(2) * 1.e307 );
+x = 1.e-307 * [1 1];
+assert_checkalmostequal ( norm(x) , sqrt(2) * 1.e-307 , 1.e308);
+// Norm f
+x = 1.e307 * [1 1];
+assert_checkequal ( norm(x,"f") , sqrt(2) * 1.e307 );
+x = 1.e-307 * [1 1];
+assert_checkequal ( norm(x,"f") , sqrt(2) * 1.e-307 );
+//
+// Difficult cases for large/small matrices
+//
+// Norm f - case 1 : n < m
+x = 1.e307 * ones(10, 20);
+assert_checkequal ( norm(x,"f") , sqrt(200) * 1.e307 );
+x = 1.e-307 * ones(10, 20);
+assert_checkequal ( norm(x,"f") , sqrt(200) * 1.e-307 );
+// norm f - case 2 : n > m
+x = 1.e307 * ones(20, 10);
+assert_checkequal ( norm(x,"f") , sqrt(200) * 1.e307 );
+x = 1.e-307 * ones(20, 10);
+assert_checkequal ( norm(x,"f") , sqrt(200) * 1.e-307 );
+//
+// Special cases for zero vectors
+//
+// Norm 2 of a zero vector
+x = [0 0 0];
+assert_checkequal ( norm(x,2) , 0.0 );
+// Norm f of a zero vector
+x = zeros(4, 1);
+assert_checkequal ( norm(x,"f") , 0.0 );
+// Norm f of a zero matrix, case 1 n > m
+x = zeros(4, 2);
+assert_checkequal ( norm(x,"f") , 0.0 );
+// Norm f of a zero matrix, case 2 m > n
+x = zeros(2, 4);
+assert_checkequal ( norm(x,"f") , 0.0 );
+//
+// Norm 2 performance check,
+// See https://bugzilla.scilab.org/show_bug.cgi?id=5017
+//
+n = 100000;
+x = ones(n, 1);
+x(n+1) = 1.e9;
+tic();
+for i = 1:1000
+ norm(x);
+end
+t = toc();
+assert_checktrue( t < 4 );
+//
+// IEEE compliance
+//
+refMsg = msprintf(_("%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"), "norm", 1);
+assert_checkerror("norm(%nan)", refMsg);
+assert_checkerror("norm([%i %nan])", refMsg);
+assert_checkerror("norm([%i %inf])", refMsg);
+assert_checkerror("norm([%i; %nan])", refMsg);
+assert_checkerror("norm([%i; %inf])", refMsg);
+assert_checkerror("norm([1 0; %nan 0])", refMsg);
+assert_checkerror("norm([1 0; %inf 0]);", refMsg);
+assert_checkerror("norm([%inf 0; %nan 0]);", refMsg);
diff --git a/modules/linear_algebra/tests/unit_tests/norm.tst b/modules/linear_algebra/tests/unit_tests/norm.tst
new file mode 100755
index 000000000..2685065bf
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/norm.tst
@@ -0,0 +1,148 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA Michael Baudin
+// Copyright (C) 2011 - DIGITEO - Michael Baudin
+// Copyright (C) 2013 - Scilab Enterprises - Paul Bignier: added performance and IEE compliance tests
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+
+// TODO : use relative error criteria instead of absolute error
+eps = 100*%eps;
+
+// Inf
+assert_checkequal ( norm([1,2,3,-1,-2,-3],0) , %inf );
+assert_checkequal ( norm([1,2,3,-1,-2,-3],%nan) , %nan );
+assert_checkequal ( norm([]) , 0 );
+// Vector
+x = [1, 2, 3, -4];
+assert_checkalmostequal ( norm(x,1) , sum(abs(x)) , eps );
+assert_checkalmostequal ( norm(x,2) , sqrt(sum(abs(x).*abs(x))) , eps );
+assert_checkalmostequal ( norm(x,2) , norm(x) , eps );
+assert_checkalmostequal ( norm(x,-%inf) , min(abs(x)) , eps );
+p = 0.5;
+assert_checkalmostequal ( norm(x,p) , sum(abs(x).^p).^(1/p) , eps );
+p = 2.5;
+assert_checkalmostequal ( norm(x,p) , sum(abs(x).^p).^(1/p) , eps );
+assert_checkalmostequal ( norm(x,"inf") , max(abs(x)) , eps );
+assert_checkalmostequal ( norm(x,"inf") , norm(x,%inf) , eps );
+assert_checkalmostequal ( norm(x,"fro") , norm(x,2) , eps );
+// Complex
+x = x + %i*x;
+assert_checkalmostequal ( norm(x,1) , sum(abs(x)) , eps );
+assert_checkalmostequal ( norm(x,2) , sqrt(sum(abs(x).*abs(x))) , eps );
+assert_checkalmostequal ( norm(x,2) , norm(x) , eps );
+assert_checkalmostequal ( norm(x,-%inf) , min(abs(x)) , eps );
+p = 0.5;
+// 100*%eps is needed for linux
+assert_checkalmostequal ( norm(x,p) , max(abs(x))*sum((abs(x)/max(abs(x))).^p).^(1/p) , 100*%eps );
+p = 2.5;
+assert_checkalmostequal ( norm(x,p) , max(abs(x))*sum((abs(x)/max(abs(x))).^p).^(1/p) , 100*%eps );
+assert_checkalmostequal ( norm(x,"inf") , max(abs(x)) , 100*%eps);
+assert_checkalmostequal ( norm(x,"inf") , norm(x,%inf) , 100*%eps);
+// The Frobenius norm of this complex input x can be numerically complex,
+// e.g. 7.7459667 - 1.147D-16i
+// See http://bugzilla.scilab.org/show_bug.cgi?id=9204
+// assert_checkalmostequal ( norm(x,'fro') , norm(x,2) , 100*%eps , %eps );
+
+// Scalar
+
+x = [1.23];
+assert_checkalmostequal ( norm(x,1) , sum(abs(x)) , 100*%eps );
+assert_checkalmostequal ( norm(x,2) , sqrt(sum(abs(x).*abs(x))) , 100*%eps );
+assert_checkalmostequal ( norm(x,2) , norm(x) , 100*%eps );
+p = 0.5;
+assert_checkalmostequal ( norm(x,p) , sum(abs(x)^p)^(1/p) , 100*%eps );
+p = 2.5;
+assert_checkalmostequal ( norm(x,p) , sum(abs(x)^p)^(1/p) , 100*%eps );
+assert_checkalmostequal ( norm(x,"inf") , max(abs(x)) , 100*%eps);
+assert_checkalmostequal ( norm(x,"inf") , norm(x,%inf) , 100*%eps );
+assert_checkalmostequal ( norm(x,"fro") , norm(x,2) , 100*%eps );
+
+// Matrices
+a = rand(10, 10, "g");
+assert_checkalmostequal ( norm(a,1) , max(sum(abs(a),"r")) , 100*%eps );
+assert_checkalmostequal ( norm(a,"inf") , max(sum(abs(a),"c")) , 100*%eps );
+assert_checkalmostequal ( norm(a,%inf) , max(sum(abs(a),"c")) , 100*%eps );
+assert_checkalmostequal ( norm(a,2) , max(svd(a)) , 100*%eps );
+assert_checkalmostequal ( norm(a,"fro") , norm(matrix(a,1,size(a,"*")),2), 100*%eps );
+
+a = a + %i*a;
+assert_checkalmostequal ( norm(a,1) , max(sum(abs(a),"r")) , 100*%eps );
+assert_checkalmostequal ( norm(a,"inf") , max(sum(abs(a),"c")) , 100*%eps );
+assert_checkalmostequal ( norm(a,%inf) , max(sum(abs(a),"c")) , 100*%eps );
+assert_checkalmostequal ( norm(a,2) , max(svd(a)) , 100*%eps );
+// See http://bugzilla.scilab.org/show_bug.cgi?id=9204
+// assert_checkalmostequal ( norm(a,'fro') , norm(matrix(a,1,size(a,'*')),2), 100*%eps );
+
+//
+// Difficult cases for large/small vectors
+//
+// Norm 2
+x = 1.e307 * [1 1];
+assert_checkequal ( norm(x) , sqrt(2) * 1.e307 );
+x = 1.e-307 * [1 1];
+assert_checkalmostequal ( norm(x) , sqrt(2) * 1.e-307 , 1.e308);
+// Norm f
+x = 1.e307 * [1 1];
+assert_checkequal ( norm(x,"f") , sqrt(2) * 1.e307 );
+x = 1.e-307 * [1 1];
+assert_checkequal ( norm(x,"f") , sqrt(2) * 1.e-307 );
+//
+// Difficult cases for large/small matrices
+//
+// Norm f - case 1 : n < m
+x = 1.e307 * ones(10, 20);
+assert_checkequal ( norm(x,"f") , sqrt(200) * 1.e307 );
+x = 1.e-307 * ones(10, 20);
+assert_checkequal ( norm(x,"f") , sqrt(200) * 1.e-307 );
+// norm f - case 2 : n > m
+x = 1.e307 * ones(20, 10);
+assert_checkequal ( norm(x,"f") , sqrt(200) * 1.e307 );
+x = 1.e-307 * ones(20, 10);
+assert_checkequal ( norm(x,"f") , sqrt(200) * 1.e-307 );
+//
+// Special cases for zero vectors
+//
+// Norm 2 of a zero vector
+x = [0 0 0];
+assert_checkequal ( norm(x,2) , 0.0 );
+// Norm f of a zero vector
+x = zeros(4, 1);
+assert_checkequal ( norm(x,"f") , 0.0 );
+// Norm f of a zero matrix, case 1 n > m
+x = zeros(4, 2);
+assert_checkequal ( norm(x,"f") , 0.0 );
+// Norm f of a zero matrix, case 2 m > n
+x = zeros(2, 4);
+assert_checkequal ( norm(x,"f") , 0.0 );
+
+//
+// Norm 2 performance check,
+// See https://bugzilla.scilab.org/show_bug.cgi?id=5017
+//
+n = 100000;
+x = ones(n, 1);
+x(n+1) = 1.e9;
+tic();
+for i = 1:1000
+ norm(x);
+end
+t = toc();
+assert_checktrue( t < 4 );
+
+//
+// IEEE compliance
+//
+refMsg = msprintf(_("%s: Wrong value for argument #%d: Must not contain NaN or Inf.\n"), "norm", 1);
+assert_checkerror("norm(%nan)", refMsg);
+assert_checkerror("norm([%i %nan])", refMsg);
+assert_checkerror("norm([%i %inf])", refMsg);
+assert_checkerror("norm([%i; %nan])", refMsg);
+assert_checkerror("norm([%i; %inf])", refMsg);
+assert_checkerror("norm([1 0; %nan 0])", refMsg);
+assert_checkerror("norm([1 0; %inf 0]);", refMsg);
+assert_checkerror("norm([%inf 0; %nan 0]);", refMsg);
diff --git a/modules/linear_algebra/tests/unit_tests/qr.dia.ref b/modules/linear_algebra/tests/unit_tests/qr.dia.ref
new file mode 100755
index 000000000..925bf476d
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/qr.dia.ref
@@ -0,0 +1,143 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+//==========================================================================
+//============================== qr ==============================
+//==========================================================================
+//Empty matrix
+e=[];
+if qr(e)<>[] then bugmes();quit;end
+if qr(e,"e")<>[] then bugmes();quit;end
+[Q,R]=qr(e);
+if Q<>[]|R<>[] then bugmes();quit;end
+[Q,R]=qr(e,"e");
+if Q<>[]|R<>[] then bugmes();quit;end
+[Q,R,x]=qr(e);
+if Q<>[]|R<>[]|x<>[] then bugmes();quit;end
+[Q,R,x]=qr(e,"e");
+if Q<>[]|R<>[]|x<>[] then bugmes();quit;end
+//Small dimension
+//---------------
+A=rand(3,2);Ac=A+rand(A)*%i;
+//Real Case
+Q=qr(A);
+if Err(Q*Q'-eye())> 200*%eps then bugmes();quit;end
+Q=qr(A,"e");
+if Err(Q'*Q-eye())> 200*%eps then bugmes();quit;end
+[Q,R]=qr(A);
+if Err(Q*R-A)> 200*%eps then bugmes();quit;end
+[Q,R]=qr(A,"e");
+if Err(Q*R-A)> 200*%eps then bugmes();quit;end
+if Err(Q'*Q-eye())> 200*%eps then bugmes();quit;end
+Q=qr(A');
+if Err(Q*Q'-eye())> 200*%eps then bugmes();quit;end
+Q=qr(A',"e");
+if Err(Q*Q'-eye())> 200*%eps then bugmes();quit;end
+[Q,R]=qr(A');
+if Err(Q*R-A')> 200*%eps then bugmes();quit;end
+[Q,R]=qr(A',"e");
+if Err(Q*R-A')> 200*%eps then bugmes();quit;end
+[Q,R,x]=qr(A);
+if Err(Q*R*x'-A)> 200*%eps then bugmes();quit;end
+[Q,R,x]=qr(A,"e");
+if Err(Q*R*x'-A)> 200*%eps then bugmes();quit;end
+//Complex case
+Q=qr(Ac);
+if Err(Q*Q'-eye())> 200*%eps then bugmes();quit;end
+Q=qr(Ac,"e");
+if Err(Q'*Q-eye())> 200*%eps then bugmes();quit;end
+[Q,R]=qr(Ac);
+if Err(Q*R-Ac)> 200*%eps then bugmes();quit;end
+[Q,R]=qr(Ac,"e");
+if Err(Q*R-Ac)> 200*%eps then bugmes();quit;end
+if Err(Q'*Q-eye())> 200*%eps then bugmes();quit;end
+Q=qr(Ac');
+if Err(Q*Q'-eye())> 200*%eps then bugmes();quit;end
+Q=qr(Ac',"e");
+if Err(Q*Q'-eye())> 200*%eps then bugmes();quit;end
+[Q,R]=qr(Ac');
+if Err(Q*R-Ac')> 200*%eps then bugmes();quit;end
+[Q,R]=qr(Ac',"e");
+if Err(Q*R-Ac')> 200*%eps then bugmes();quit;end
+[Q,R,x]=qr(Ac);
+if Err(Q*R-Ac*x)> 200*%eps then bugmes();quit;end
+[Q,R,x]=qr(Ac,"e");
+if Err(Q*R-Ac*x)> 200*%eps then bugmes();quit;end
+[Q,R,x]=qr(Ac');
+if Err(Q*R-Ac'*x)> 200*%eps then bugmes();quit;end
+[Q,R,x]=qr(Ac',"e");
+if Err(Q*R-Ac'*x)> 200*%eps then bugmes();quit;end
+//Rank detection (obsolete)
+[Q,R,rk,x]=qr(A);
+if Err(Q*R*x'-A)> 200*%eps | rk<>2 then bugmes();quit;end
+[Q,R,rk,x]=qr(A,1.d-8);
+if Err(Q*R*x'-A)> 200*%eps | rk<>2 then bugmes();quit;end
+[Q,R,rk,x]=qr(Ac);
+if Err(Q*R*x'-Ac)> 200*%eps | rk<>2 then bugmes();quit;end
+[Q,R,rk,x]=qr(Ac,1.d-8);
+if Err(Q*R*x'-Ac)> 200*%eps | rk<>2 then bugmes();quit;end
+//Large dimension
+//---------------
+A=rand(150,60);Ac=A+rand(A)*%i;
+//Real Case
+Q=qr(A);
+if Err(Q*Q'-eye())> 1000*%eps then bugmes();quit;end
+Q=qr(A,"e");
+if Err(Q'*Q-eye())> 1000*%eps then bugmes();quit;end
+[Q,R]=qr(A);
+if Err(Q*R-A)> 1000*%eps then bugmes();quit;end
+[Q,R]=qr(A,"e");
+if Err(Q*R-A)> 1000*%eps then bugmes();quit;end
+if Err(Q'*Q-eye())> 1000*%eps then bugmes();quit;end
+Q=qr(A');
+if Err(Q*Q'-eye())> 1000*%eps then bugmes();quit;end
+Q=qr(A',"e");
+if Err(Q*Q'-eye())> 1000*%eps then bugmes();quit;end
+[Q,R]=qr(A');
+if Err(Q*R-A')> 1000*%eps then bugmes();quit;end
+[Q,R]=qr(A',"e");
+if Err(Q*R-A')> 1000*%eps then bugmes();quit;end
+[Q,R,x]=qr(A);
+if Err(Q*R*x'-A)> 1000*%eps then bugmes();quit;end
+[Q,R,x]=qr(A,"e");
+if Err(Q*R*x'-A)> 1000*%eps then bugmes();quit;end
+//Complex case
+Q=qr(Ac);
+if Err(Q*Q'-eye())> 2000*%eps then bugmes();quit;end
+Q=qr(Ac,"e");
+if Err(Q'*Q-eye())> 2000*%eps then bugmes();quit;end
+[Q,R]=qr(Ac);
+if Err(Q*R-Ac)> 2000*%eps then bugmes();quit;end
+[Q,R]=qr(Ac,"e");
+if Err(Q*R-Ac)> 2000*%eps then bugmes();quit;end
+if Err(Q'*Q-eye())> 2000*%eps then bugmes();quit;end
+Q=qr(Ac');
+if Err(Q*Q'-eye())> 2000*%eps then bugmes();quit;end
+Q=qr(Ac',"e");
+if Err(Q*Q'-eye())> 2000*%eps then bugmes();quit;end
+[Q,R]=qr(Ac');
+if Err(Q*R-Ac')> 2000*%eps then bugmes();quit;end
+[Q,R]=qr(Ac',"e");
+if Err(Q*R-Ac')> 2000*%eps then bugmes();quit;end
+[Q,R,x]=qr(Ac);
+if Err(Q*R-Ac*x)> 2000*%eps then bugmes();quit;end
+[Q,R,x]=qr(Ac,"e");
+if Err(Q*R-Ac*x)> 2000*%eps then bugmes();quit;end
+[Q,R,x]=qr(Ac');
+if Err(Q*R-Ac'*x)> 2000*%eps then bugmes();quit;end
+[Q,R,x]=qr(Ac',"e");
+if Err(Q*R-Ac'*x)> 2000*%eps then bugmes();quit;end
+//Rank detection (obsolete)
+[Q,R,rk,x]=qr(A);
+if Err(Q*R*x'-A)> 2000*%eps | rk<>60 then bugmes();quit;end
+[Q,R,rk,x]=qr(A,1.d-8);
+if Err(Q*R*x'-A)> 2000*%eps | rk<>60 then bugmes();quit;end
+[Q,R,rk,x]=qr(Ac);
+if Err(Q*R*x'-Ac)> 2000*%eps | rk<>60 then bugmes();quit;end
+[Q,R,rk,x]=qr(Ac,1.d-8);
+if Err(Q*R*x'-Ac)> 2000*%eps | rk<>60 then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/unit_tests/qr.tst b/modules/linear_algebra/tests/unit_tests/qr.tst
new file mode 100755
index 000000000..8bdf1c82b
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/qr.tst
@@ -0,0 +1,184 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+//==========================================================================
+//============================== qr ==============================
+//==========================================================================
+//Empty matrix
+
+e=[];
+if qr(e)<>[] then pause,end
+if qr(e,"e")<>[] then pause,end
+
+[Q,R]=qr(e);
+if Q<>[]|R<>[] then pause,end
+[Q,R]=qr(e,"e");
+if Q<>[]|R<>[] then pause,end
+
+[Q,R,x]=qr(e);
+if Q<>[]|R<>[]|x<>[] then pause,end
+[Q,R,x]=qr(e,"e");
+if Q<>[]|R<>[]|x<>[] then pause,end
+
+//Small dimension
+//---------------
+A=rand(3,2);Ac=A+rand(A)*%i;
+
+//Real Case
+Q=qr(A);
+if Err(Q*Q'-eye())> 200*%eps then pause,end
+Q=qr(A,"e");
+if Err(Q'*Q-eye())> 200*%eps then pause,end
+
+[Q,R]=qr(A);
+if Err(Q*R-A)> 200*%eps then pause,end
+
+[Q,R]=qr(A,"e");
+if Err(Q*R-A)> 200*%eps then pause,end
+if Err(Q'*Q-eye())> 200*%eps then pause,end
+
+Q=qr(A');
+if Err(Q*Q'-eye())> 200*%eps then pause,end
+Q=qr(A',"e");
+if Err(Q*Q'-eye())> 200*%eps then pause,end
+
+[Q,R]=qr(A');
+if Err(Q*R-A')> 200*%eps then pause,end
+
+[Q,R]=qr(A',"e");
+if Err(Q*R-A')> 200*%eps then pause,end
+
+[Q,R,x]=qr(A);
+if Err(Q*R*x'-A)> 200*%eps then pause,end
+
+[Q,R,x]=qr(A,"e");
+if Err(Q*R*x'-A)> 200*%eps then pause,end
+
+//Complex case
+Q=qr(Ac);
+if Err(Q*Q'-eye())> 200*%eps then pause,end
+Q=qr(Ac,"e");
+if Err(Q'*Q-eye())> 200*%eps then pause,end
+
+[Q,R]=qr(Ac);
+if Err(Q*R-Ac)> 200*%eps then pause,end
+[Q,R]=qr(Ac,"e");
+if Err(Q*R-Ac)> 200*%eps then pause,end
+if Err(Q'*Q-eye())> 200*%eps then pause,end
+
+Q=qr(Ac');
+if Err(Q*Q'-eye())> 200*%eps then pause,end
+Q=qr(Ac',"e");
+if Err(Q*Q'-eye())> 200*%eps then pause,end
+
+
+[Q,R]=qr(Ac');
+if Err(Q*R-Ac')> 200*%eps then pause,end
+[Q,R]=qr(Ac',"e");
+if Err(Q*R-Ac')> 200*%eps then pause,end
+
+[Q,R,x]=qr(Ac);
+if Err(Q*R-Ac*x)> 200*%eps then pause,end
+[Q,R,x]=qr(Ac,"e");
+if Err(Q*R-Ac*x)> 200*%eps then pause,end
+
+[Q,R,x]=qr(Ac');
+if Err(Q*R-Ac'*x)> 200*%eps then pause,end
+[Q,R,x]=qr(Ac',"e");
+if Err(Q*R-Ac'*x)> 200*%eps then pause,end
+
+//Rank detection (obsolete)
+[Q,R,rk,x]=qr(A);
+if Err(Q*R*x'-A)> 200*%eps | rk<>2 then pause,end
+[Q,R,rk,x]=qr(A,1.d-8);
+if Err(Q*R*x'-A)> 200*%eps | rk<>2 then pause,end
+
+[Q,R,rk,x]=qr(Ac);
+if Err(Q*R*x'-Ac)> 200*%eps | rk<>2 then pause,end
+
+[Q,R,rk,x]=qr(Ac,1.d-8);
+if Err(Q*R*x'-Ac)> 200*%eps | rk<>2 then pause,end
+
+//Large dimension
+//---------------
+A=rand(150,60);Ac=A+rand(A)*%i;
+//Real Case
+Q=qr(A);
+if Err(Q*Q'-eye())> 1000*%eps then pause,end
+Q=qr(A,"e");
+if Err(Q'*Q-eye())> 1000*%eps then pause,end
+
+[Q,R]=qr(A);
+if Err(Q*R-A)> 1000*%eps then pause,end
+
+[Q,R]=qr(A,"e");
+if Err(Q*R-A)> 1000*%eps then pause,end
+if Err(Q'*Q-eye())> 1000*%eps then pause,end
+
+Q=qr(A');
+if Err(Q*Q'-eye())> 1000*%eps then pause,end
+Q=qr(A',"e");
+if Err(Q*Q'-eye())> 1000*%eps then pause,end
+
+[Q,R]=qr(A');
+if Err(Q*R-A')> 1000*%eps then pause,end
+
+[Q,R]=qr(A',"e");
+if Err(Q*R-A')> 1000*%eps then pause,end
+
+[Q,R,x]=qr(A);
+if Err(Q*R*x'-A)> 1000*%eps then pause,end
+
+[Q,R,x]=qr(A,"e");
+if Err(Q*R*x'-A)> 1000*%eps then pause,end
+
+//Complex case
+Q=qr(Ac);
+if Err(Q*Q'-eye())> 2000*%eps then pause,end
+Q=qr(Ac,"e");
+if Err(Q'*Q-eye())> 2000*%eps then pause,end
+
+[Q,R]=qr(Ac);
+if Err(Q*R-Ac)> 2000*%eps then pause,end
+[Q,R]=qr(Ac,"e");
+if Err(Q*R-Ac)> 2000*%eps then pause,end
+if Err(Q'*Q-eye())> 2000*%eps then pause,end
+
+Q=qr(Ac');
+if Err(Q*Q'-eye())> 2000*%eps then pause,end
+Q=qr(Ac',"e");
+if Err(Q*Q'-eye())> 2000*%eps then pause,end
+
+
+[Q,R]=qr(Ac');
+if Err(Q*R-Ac')> 2000*%eps then pause,end
+[Q,R]=qr(Ac',"e");
+if Err(Q*R-Ac')> 2000*%eps then pause,end
+
+[Q,R,x]=qr(Ac);
+if Err(Q*R-Ac*x)> 2000*%eps then pause,end
+[Q,R,x]=qr(Ac,"e");
+if Err(Q*R-Ac*x)> 2000*%eps then pause,end
+
+[Q,R,x]=qr(Ac');
+if Err(Q*R-Ac'*x)> 2000*%eps then pause,end
+[Q,R,x]=qr(Ac',"e");
+if Err(Q*R-Ac'*x)> 2000*%eps then pause,end
+
+//Rank detection (obsolete)
+[Q,R,rk,x]=qr(A);
+if Err(Q*R*x'-A)> 2000*%eps | rk<>60 then pause,end
+[Q,R,rk,x]=qr(A,1.d-8);
+if Err(Q*R*x'-A)> 2000*%eps | rk<>60 then pause,end
+
+[Q,R,rk,x]=qr(Ac);
+if Err(Q*R*x'-Ac)> 2000*%eps | rk<>60 then pause,end
+
+[Q,R,rk,x]=qr(Ac,1.d-8);
+if Err(Q*R*x'-Ac)> 2000*%eps | rk<>60 then pause,end
+
diff --git a/modules/linear_algebra/tests/unit_tests/rcond.dia.ref b/modules/linear_algebra/tests/unit_tests/rcond.dia.ref
new file mode 100755
index 000000000..28de8c3db
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/rcond.dia.ref
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+//==========================================================================
+//============================== rcond ==============================
+//==========================================================================
+//Empty matrix
+A=[];
+if rcond(A)<>[] then bugmes();quit;end
+//Rectangular matrix
+if execstr('rcond(rand(2,3))','errcatch')==0 then bugmes();quit;end
+if execstr('rcond(rand(2,3)+%i*eye())','errcatch')==0 then bugmes();quit;end
+//Small dimension
+//---------------
+//Real Case
+if Err(rcond(eye(5,5))-1)>10*%eps then bugmes();quit;end
+//Complex Case
+if Err(rcond(eye(5,5)*(1+%i))-1)>10*%eps then bugmes();quit;end
+//Large dimension
+//---------------
+//Real Case
+if Err(rcond(eye(50,50))-1)>10*%eps then bugmes();quit;end
+//Complex Case
+if Err(rcond(eye(50,50)*(1+%i))-1)>10*%eps then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/unit_tests/rcond.tst b/modules/linear_algebra/tests/unit_tests/rcond.tst
new file mode 100755
index 000000000..ca2b6101f
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/rcond.tst
@@ -0,0 +1,33 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+
+//==========================================================================
+//============================== rcond ==============================
+//==========================================================================
+//Empty matrix
+A=[];
+if rcond(A)<>[] then pause,end
+
+//Rectangular matrix
+if execstr('rcond(rand(2,3))','errcatch')==0 then pause,end
+if execstr('rcond(rand(2,3)+%i*eye())','errcatch')==0 then pause,end
+//Small dimension
+//---------------
+//Real Case
+if Err(rcond(eye(5,5))-1)>10*%eps then pause,end
+//Complex Case
+if Err(rcond(eye(5,5)*(1+%i))-1)>10*%eps then pause,end
+
+
+//Large dimension
+//---------------
+//Real Case
+if Err(rcond(eye(50,50))-1)>10*%eps then pause,end
+//Complex Case
+if Err(rcond(eye(50,50)*(1+%i))-1)>10*%eps then pause,end
diff --git a/modules/linear_algebra/tests/unit_tests/rdiv.dia.ref b/modules/linear_algebra/tests/unit_tests/rdiv.dia.ref
new file mode 100755
index 000000000..ee39fc494
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/rdiv.dia.ref
@@ -0,0 +1,118 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+//==========================================================================
+//============================== / ==============================
+//==========================================================================
+//function x=rdiv(A,B),x=slash(A,B),endfunction
+function x=rdiv(A,B),x=A/B,endfunction
+//scalar division
+//-----Square matrix-----
+n=5; A=rand(n,n);b=rand(2,n+1);
+if rdiv([],A) <>[] then bugmes();quit;end
+if execstr('rdiv(b,A)','errcatch')==0 then bugmes();quit;end
+//Small dimensions real
+n=5;
+b=rand(2,n);A=rand(n,n);
+x=rdiv(b,A);
+if Err(x*A-b)>200*%eps then bugmes();quit;end
+//Small dimensions complex
+b=rand(2,n)+%i;A=rand(n,n);
+x=rdiv(b,A);
+if Err(x*A-b)>500*%eps then bugmes();quit;end
+b=rand(2,n);A=rand(n,n)+%i;
+x=rdiv(b,A);
+if Err(x*A-b)>500*%eps then bugmes();quit;end
+b=rand(2,n)+%i;A=rand(n,n)+%i;
+x=rdiv(b,A);
+if Err(x*A-b)>500*%eps then bugmes();quit;end
+//Large dimensions real
+n=50;
+b=rand(2,n);A=rand(n,n);
+x=rdiv(b,A);
+if Err(x*A-b)>10000*%eps then bugmes();quit;end
+//Small dimensions complex
+b=rand(2,n)+%i;A=rand(n,n);
+x=rdiv(b,A);
+if Err(x*A-b)>10000*%eps then bugmes();quit;end
+b=rand(2,n);A=rand(n,n)+%i;
+x=rdiv(b,A);
+if Err(x*A-b)>10000*%eps then bugmes();quit;end
+b=rand(2,n)+%i;A=rand(n,n)+%i;
+x=rdiv(b,A);
+if Err(x*A-b)>10000*%eps then bugmes();quit;end
+//-----Rectangular matrix-----
+n=5;m=3; A=rand(m,n);b=rand(2,n+1);
+if rdiv([],A) <>[] then bugmes();quit;end
+if execstr('rdiv(b,A)','errcatch')==0 then bugmes();quit;end
+//Small dimensions real
+n=5;m=3;
+b=rand(2,n);A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>200*%eps then bugmes();quit;end
+n=3;m=5;
+b=rand(2,n);A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>200*%eps then bugmes();quit;end
+//Small dimensions complex
+n=5;m=3;
+b=rand(2,n)+%i;A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>200*%eps then bugmes();quit;end
+n=5;m=3;
+b=rand(2,n);A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>200*%eps then bugmes();quit;end
+b=rand(2,n)+%i;A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>200*%eps then bugmes();quit;end
+n=3;m=5;
+b=rand(2,n)+%i;A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then bugmes();quit;end
+n=3;m=5;
+b=rand(2,n);A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then bugmes();quit;end
+n=3;m=5;
+b=rand(2,n)+%i;A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then bugmes();quit;end
+//LArge dimension real
+n=50;m=30;
+b=rand(2,n);A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then bugmes();quit;end
+n=30;m=50;
+b=rand(2,n);A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then bugmes();quit;end
+//Large dimensions complex
+n=50;m=30;
+b=rand(2,n)+%i;A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then bugmes();quit;end
+n=50;m=30;
+b=rand(2,n);A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then bugmes();quit;end
+b=rand(2,n)+%i;A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then bugmes();quit;end
+n=30;m=50;
+b=rand(2,n)+%i;A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then bugmes();quit;end
+n=30;m=50;
+b=rand(2,n);A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then bugmes();quit;end
+n=30;m=50;
+b=rand(2,n)+%i;A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/unit_tests/rdiv.tst b/modules/linear_algebra/tests/unit_tests/rdiv.tst
new file mode 100755
index 000000000..6e558dddc
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/rdiv.tst
@@ -0,0 +1,138 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x),r=norm(x,1),endfunction
+rand('normal')
+
+//==========================================================================
+//============================== / ==============================
+//==========================================================================
+//function x=rdiv(A,B),x=slash(A,B),endfunction
+function x=rdiv(A,B),x=A/B,endfunction
+//scalar division
+
+//-----Square matrix-----
+n=5; A=rand(n,n);b=rand(2,n+1);
+if rdiv([],A) <>[] then pause,end
+if execstr('rdiv(b,A)','errcatch')==0 then pause,end
+//Small dimensions real
+n=5;
+b=rand(2,n);A=rand(n,n);
+x=rdiv(b,A);
+if Err(x*A-b)>200*%eps then pause,end
+//Small dimensions complex
+b=rand(2,n)+%i;A=rand(n,n);
+x=rdiv(b,A);
+if Err(x*A-b)>500*%eps then pause,end
+
+b=rand(2,n);A=rand(n,n)+%i;
+x=rdiv(b,A);
+if Err(x*A-b)>500*%eps then pause,end
+
+b=rand(2,n)+%i;A=rand(n,n)+%i;
+x=rdiv(b,A);
+if Err(x*A-b)>500*%eps then pause,end
+
+//Large dimensions real
+n=50;
+b=rand(2,n);A=rand(n,n);
+x=rdiv(b,A);
+if Err(x*A-b)>10000*%eps then pause,end
+//Small dimensions complex
+b=rand(2,n)+%i;A=rand(n,n);
+x=rdiv(b,A);
+if Err(x*A-b)>10000*%eps then pause,end
+
+b=rand(2,n);A=rand(n,n)+%i;
+x=rdiv(b,A);
+if Err(x*A-b)>10000*%eps then pause,end
+
+b=rand(2,n)+%i;A=rand(n,n)+%i;
+x=rdiv(b,A);
+if Err(x*A-b)>10000*%eps then pause,end
+
+//-----Rectangular matrix-----
+n=5;m=3; A=rand(m,n);b=rand(2,n+1);
+if rdiv([],A) <>[] then pause,end
+if execstr('rdiv(b,A)','errcatch')==0 then pause,end
+
+//Small dimensions real
+n=5;m=3;
+b=rand(2,n);A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>200*%eps then pause,end
+
+n=3;m=5;
+b=rand(2,n);A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>200*%eps then pause,end
+//Small dimensions complex
+n=5;m=3;
+b=rand(2,n)+%i;A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>200*%eps then pause,end
+n=5;m=3;
+b=rand(2,n);A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>200*%eps then pause,end
+b=rand(2,n)+%i;A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>200*%eps then pause,end
+
+n=3;m=5;
+b=rand(2,n)+%i;A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then pause,end
+
+n=3;m=5;
+b=rand(2,n);A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then pause,end
+
+n=3;m=5;
+b=rand(2,n)+%i;A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then pause,end
+
+//LArge dimension real
+
+n=50;m=30;
+b=rand(2,n);A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then pause,end
+
+n=30;m=50;
+b=rand(2,n);A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then pause,end
+//Large dimensions complex
+n=50;m=30;
+b=rand(2,n)+%i;A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then pause,end
+n=50;m=30;
+b=rand(2,n);A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then pause,end
+b=rand(2,n)+%i;A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then pause,end
+
+n=30;m=50;
+b=rand(2,n)+%i;A=rand(m,n);
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then pause,end
+
+n=30;m=50;
+b=rand(2,n);A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then pause,end
+
+n=30;m=50;
+b=rand(2,n)+%i;A=rand(m,n)+%i;
+x=rdiv(b,A);
+if Err(x*A*A'-b*A')>1000*%eps then pause,end
+
diff --git a/modules/linear_algebra/tests/unit_tests/schur.dia.ref b/modules/linear_algebra/tests/unit_tests/schur.dia.ref
new file mode 100755
index 000000000..50a543ab5
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/schur.dia.ref
@@ -0,0 +1,407 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x)
+ r=norm(x,1)
+endfunction
+rand('normal')
+//define tools
+function A=testmat1(a,n)
+ //eigen values are given by a dilation of nth roots of 1
+ A=diag(a*ones(1,n-1),1)+diag((1/a)*ones(1,n-1),-1)
+ A(1,n)=1/a;A(n,1)=a
+endfunction
+//==========================================================================
+//============================== schur ==============================
+//==========================================================================
+clear sel
+function t=sel(R),t=real(R)<0 ,endfunction
+//Empty matrix
+A=[];
+if schur(A)<>[] then bugmes();quit;end
+if schur(A,'real')<>[] then bugmes();quit;end
+if schur(A,'complex')<>[] then bugmes();quit;end
+if schur(A,'c')<>[] then bugmes();quit;end
+if schur(A,'d')<>[] then bugmes();quit;end
+if schur(A,sel)<>[] then bugmes();quit;end
+[U,S]=schur(A);
+if U<>[]|S<>[] then bugmes();quit;end
+[U,S]=schur(A,'real');
+if U<>[]|S<>[] then bugmes();quit;end
+[U,S]=schur(A,'complex');
+if U<>[]|S<>[] then bugmes();quit;end
+[U,N]=schur(A,'c');
+if U<>[]|N<>0 then bugmes();quit;end
+[U,N]=schur(A,'d');
+if U<>[]|N<>0 then bugmes();quit;end
+[U,N]=schur(A,sel);
+if U<>[]|N<>0 then bugmes();quit;end
+[U,N,S]=schur(A,'c');
+if U<>[]|N<>0|S<>[] then bugmes();quit;end
+[U,N,S]=schur(A,'d');
+if U<>[]|N<>0|S<>[] then bugmes();quit;end
+[U,N,S]=schur(A,sel);
+if U<>[]|N<>0|S<>[] then bugmes();quit;end
+//Rectangular matrix
+if execstr('schur(rand(2,3))','errcatch')==0 then bugmes();quit;end
+if execstr('[U,S]=schur(rand(2,3))','errcatch')==0 then bugmes();quit;end
+if execstr('schur(rand(2,3)+%i*eye())','errcatch')==0 then bugmes();quit;end
+if execstr('[U,S]=schur(rand(2,3)+%i*eye())','errcatch')==0 then bugmes();quit;end
+//Small dimension
+A=testmat1(3,5);Ac=testmat1(3+%i,5);
+//Real
+[U,S]=schur(A);
+if Err(triu(S,-1)-S)>%eps then bugmes();quit;end
+if Err(U*S*U'-A)>200*%eps then bugmes();quit;end
+if Err(schur(A)-S) >%eps then bugmes();quit;end
+[U,S]=schur(A,'real');
+if Err(triu(S,-1)-S)>%eps then bugmes();quit;end
+if Err(U*S*U'-A)>200*%eps then bugmes();quit;end
+if Err(schur(A)-S) >%eps then bugmes();quit;end
+[U,S]=schur(A,'complex');
+if Err(triu(S)-S)>%eps then bugmes();quit;end
+if Err(U*S*U'-A)>200*%eps then bugmes();quit;end
+if Err(schur(A,'complex')-S) >%eps then bugmes();quit;end
+[U,n]=schur(A,'c');S=U'*A*U;
+if n<>2 then bugmes();quit;end
+if or(real(spec(S(1:n,1:n)))>=0) then bugmes();quit;end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then bugmes();quit;end
+[U,n]=schur(A,'d');S=U'*A*U;
+if n<>0 then bugmes();quit;end
+if or(abs(spec(S(n+1:$,n+1:$)))<1) then bugmes();quit;end
+[U,n]=schur(A,sel);S=U'*A*U;
+if n<>2 then bugmes();quit;end
+if or(real(spec(S(1:n,1:n)))>=0) then bugmes();quit;end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then bugmes();quit;end
+//Complex
+[U,S]=schur(Ac);
+if Err(triu(S,-1)-S)>%eps then bugmes();quit;end
+if Err(U*S*U'-Ac)>200*%eps then bugmes();quit;end
+if Err(schur(Ac)-S) >%eps then bugmes();quit;end
+[U,S]=schur(Ac,'complex');
+if Err(triu(S,-1)-S)>%eps then bugmes();quit;end
+if Err(U*S*U'-Ac)>200*%eps then bugmes();quit;end
+if Err(schur(Ac)-S) >%eps then bugmes();quit;end
+[U,n]=schur(Ac,'c');S=U'*Ac*U;
+if n<>3 then bugmes();quit;end
+if or(real(spec(S(1:n,1:n)))>=0) then bugmes();quit;end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then bugmes();quit;end
+[U,n]=schur(Ac,'d');S=U'*A*U;
+if n<>0 then bugmes();quit;end
+if or(abs(spec(S(n+1:$,n+1:$)))<1) then bugmes();quit;end
+[U,n]=schur(Ac,sel);S=U'*Ac*U;
+if n<>3 then bugmes();quit;end
+if or(real(spec(S(1:n,1:n)))>=0) then bugmes();quit;end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then bugmes();quit;end
+//Large dimension
+A=testmat1(3,50);Ac=testmat1(3+%i,50);
+//Real
+[U,S]=schur(A);
+if Err(triu(S,-1)-S)>%eps then bugmes();quit;end
+if Err(U*S*U'-A)>1000*%eps then bugmes();quit;end
+if Err(schur(A)-S) >%eps then bugmes();quit;end
+[U,S]=schur(A,'real');
+if Err(triu(S,-1)-S)>%eps then bugmes();quit;end
+if Err(U*S*U'-A)>1000*%eps then bugmes();quit;end
+if Err(schur(A)-S) >%eps then bugmes();quit;end
+[U,S]=schur(A,'complex');
+if Err(triu(S)-S)>%eps then bugmes();quit;end
+if Err(U*S*U'-A)>1000*%eps then bugmes();quit;end
+if Err(schur(A,'complex')-S) >%eps then bugmes();quit;end
+[U,n]=schur(A,'c');S=U'*A*U;
+if n<>25 then bugmes();quit;end
+if or(real(spec(S(1:n,1:n)))>=0) then bugmes();quit;end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then bugmes();quit;end
+[U,n]=schur(A,'d');S=U'*A*U;
+if n<>0 then bugmes();quit;end
+if or(abs(spec(S(n+1:$,n+1:$)))<1) then bugmes();quit;end
+[U,n]=schur(A,sel);S=U'*A*U;
+if n<>25 then bugmes();quit;end
+if or(real(spec(S(1:n,1:n)))>=0) then bugmes();quit;end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then bugmes();quit;end
+//Complex
+[U,S]=schur(Ac);
+if Err(triu(S,-1)-S)>%eps then bugmes();quit;end
+if Err(U*S*U'-Ac)>1000*%eps then bugmes();quit;end
+if Err(schur(Ac)-S) >%eps then bugmes();quit;end
+[U,S]=schur(Ac,'complex');
+if Err(triu(S,-1)-S)>%eps then bugmes();quit;end
+if Err(U*S*U'-Ac)>1000*%eps then bugmes();quit;end
+if Err(schur(Ac)-S) >%eps then bugmes();quit;end
+[U,n]=schur(Ac,'c');S=U'*Ac*U;
+if n<>25 then bugmes();quit;end
+if or(real(spec(S(1:n,1:n)))>=0) then bugmes();quit;end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then bugmes();quit;end
+[U,n]=schur(Ac,'d');S=U'*Ac*U;
+if n<>0 then bugmes();quit;end
+if or(abs(spec(S(n+1:$,n+1:$)))<1) then bugmes();quit;end
+[U,n]=schur(Ac,sel);S=U'*Ac*U;
+if n<>25 then bugmes();quit;end
+if or(real(spec(S(1:n,1:n)))>=0) then bugmes();quit;end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then bugmes();quit;end
+//==========================================================================
+//============================== schur part II ========================
+//==========================================================================
+//Empty matrix
+[As,Es]=schur([],[]);
+if As<>[]|Es<>[] then bugmes();quit;end
+[As,dim]=schur([],[],'c');
+if As<>[]|dim<>0 then bugmes();quit;end
+[As,dim]=schur([],[],'d');
+if As<>[]|dim<>0 then bugmes();quit;end
+[As,dim]=schur([],[],sel);
+if As<>[]|dim<>0 then bugmes();quit;end
+[As,Es,Q,Z]=schur([],[]);
+if As<>[]|Es<>[]|Q<>[]|Z<>[] then bugmes();quit;end
+[As,Es,dim]=schur([],[],'c');
+if As<>[]|Es<>[]|dim<>0 then bugmes();quit;end
+[As,Es,dim]=schur([],[],'d');
+if As<>[]|Es<>[]|dim<>0 then bugmes();quit;end
+[As,Es,dim]=schur([],[],sel);
+if As<>[]|Es<>[]|dim<>0 then bugmes();quit;end
+[Z,dim]=schur([],[],'c');
+if Z<>[]|dim<>0 then bugmes();quit;end
+[Z,dim]=schur([],[],'d');
+if Z<>[]|dim<>0 then bugmes();quit;end
+[Z,dim]=schur([],[],sel);
+if Z<>[]|dim<>0 then bugmes();quit;end
+//Rectangular matrix
+if execstr('[As,Es]=schur(rand(2,3),rand(2,3))','errcatch')==0 then bugmes();quit;end
+if execstr('[As,Es,Q,Z]=schur(rand(2,3),rand(2,3))','errcatch')==0 then bugmes();quit;end
+if execstr('[As,Es,dim]=schur(rand(2,3),rand(2,3),''c'')','errcatch')==0 then bugmes();quit;end
+if execstr('[Z,dim]=schur(rand(2,3),rand(2,3),sel)','errcatch')==0 then bugmes();quit;end
+//Small dimension
+//----Real------------
+A=testmat1(1,5);E=testmat1(-2,5) ;
+[As,Es,Q,Z]=schur(A,E);
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >200*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >200*%eps then bugmes();quit;end
+[As1,Es1]=schur(A,E);
+if Err(As1-As)>10*%eps then bugmes();quit;end
+if Err(Es1-Es)>10*%eps then bugmes();quit;end
+// Ordered 'c'
+dim=schur(A,E,'c');
+if dim<>5 then bugmes();quit;end
+[Z,dim]=schur(A,E,'c');
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+[Q,Z1,dim]=schur(A,E,'c');
+if Err(Z1-Z)>10*%eps then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if dim<>5 then bugmes();quit;end
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>5 then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >200*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >200*%eps then bugmes();quit;end
+// Ordered 'd'
+dim=schur(A,E,'d');
+if dim<>5 then bugmes();quit;end
+[Z,dim]=schur(A,E,'d');
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+[Q,Z1,dim]=schur(A,E,'d');
+if Err(Z1-Z)>10*%eps then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if dim<>5 then bugmes();quit;end
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>5 then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >200*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >200*%eps then bugmes();quit;end
+//ordered sel
+clear sel
+function t=sel(Alpha,Beta),t=real(Alpha)>-0.2*real(Beta) ,endfunction
+dim=schur(A,E,sel);
+if dim<>2 then bugmes();quit;end
+[Z,dim]=schur(A,E,sel);
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+[Q,Z1,dim]=schur(A,E,sel);
+if Err(Z1-Z)>10*%eps then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if dim<>2 then bugmes();quit;end
+[As,Es,Z,dim]=schur(A,E,sel);
+if dim<>2 then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >200*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >200*%eps then bugmes();quit;end
+//----Complex------------
+A=testmat1(1+%i,5);E=testmat1(-2-3*%i,5) ;
+[As,Es,Q,Z]=schur(A,E);
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >200*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >200*%eps then bugmes();quit;end
+[As1,Es1]=schur(A,E);
+if Err(As1-As)>10*%eps then bugmes();quit;end
+if Err(Es1-Es)>10*%eps then bugmes();quit;end
+// Ordered 'c'
+dim=schur(A,E,'c');
+if dim<>5 then bugmes();quit;end
+[Z,dim]=schur(A,E,'c');
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+[Q,Z1,dim]=schur(A,E,'c');
+if Err(Z1-Z)>10*%eps then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if dim<>5 then bugmes();quit;end
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>5 then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >200*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >200*%eps then bugmes();quit;end
+// Ordered 'd'
+dim=schur(A,E,'d');
+if dim<>5 then bugmes();quit;end
+[Z,dim]=schur(A,E,'d');
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+[Q,Z1,dim]=schur(A,E,'d');
+if Err(Z1-Z)>10*%eps then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if dim<>5 then bugmes();quit;end
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>5 then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >200*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >200*%eps then bugmes();quit;end
+//ordered sel
+clear sel
+function t=sel(Alpha,Beta),t=imag(Alpha)>0 ,endfunction
+dim=schur(A,E,sel);
+if dim<>3 then bugmes();quit;end
+[Z,dim]=schur(A,E,sel);
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+[Q,Z1,dim]=schur(A,E,sel);
+if Err(Z1-Z)>10*%eps then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if dim<>3 then bugmes();quit;end
+[As,Es,Z,dim]=schur(A,E,sel);
+if dim<>3 then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >200*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >200*%eps then bugmes();quit;end
+//Large dimension
+//----Real------------
+A=testmat1(1,50);E=testmat1(-2,50) ;
+[As,Es,Q,Z]=schur(A,E);
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >200*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >200*%eps then bugmes();quit;end
+[As1,Es1]=schur(A,E);
+if Err(As1-As)>10*%eps then bugmes();quit;end
+if Err(Es1-Es)>10*%eps then bugmes();quit;end
+// Ordered 'c'
+dim=schur(A,E,'c');
+if dim<>50 then bugmes();quit;end
+[Z,dim]=schur(A,E,'c');
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+[Q,Z1,dim]=schur(A,E,'c');
+if Err(Z1-Z)>10*%eps then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if dim<>50 then bugmes();quit;end
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>50 then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >200*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >200*%eps then bugmes();quit;end
+// Ordered 'd'
+dim=schur(A,E,'d');
+if dim<>50 then bugmes();quit;end
+[Z,dim]=schur(A,E,'d');
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+[Q,Z1,dim]=schur(A,E,'d');
+if Err(Z1-Z)>10*%eps then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if dim<>50 then bugmes();quit;end
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>50 then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >200*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >200*%eps then bugmes();quit;end
+//ordered sel
+clear sel
+function t=sel(Alpha,Beta)
+ t=real(Alpha)>-0.2*real(Beta)
+endfunction
+dim=schur(A,E,sel); // plante ici DGGES LAPACK 3.1
+if dim<>12 then bugmes();quit;end
+[Z,dim]=schur(A,E,sel);
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+[Q,Z1,dim]=schur(A,E,sel);
+if Err(Z1-Z)>10*%eps then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if dim<>12 then bugmes();quit;end
+[As,Es,Z,dim]=schur(A,E,sel);
+if dim<>12 then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >200*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >200*%eps then bugmes();quit;end
+//----Complex------------
+A=testmat1(1+%i,50);E=testmat1(-2-3*%i,50) ;
+[As,Es,Q,Z]=schur(A,E);
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >1000*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >1000*%eps then bugmes();quit;end
+[As1,Es1]=schur(A,E);
+if Err(As1-As)>10*%eps then bugmes();quit;end
+if Err(Es1-Es)>10*%eps then bugmes();quit;end
+// Ordered 'c'
+dim=schur(A,E,'c');
+if dim<>50 then bugmes();quit;end
+[Z,dim]=schur(A,E,'c');
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+[Q,Z1,dim]=schur(A,E,'c');
+if Err(Z1-Z)>10*%eps then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if dim<>50 then bugmes();quit;end
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>50 then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >1000*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >1000*%eps then bugmes();quit;end
+// Ordered 'd'
+dim=schur(A,E,'d');
+if dim<>50 then bugmes();quit;end
+[Z,dim]=schur(A,E,'d');
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+[Q,Z1,dim]=schur(A,E,'d');
+if Err(Z1-Z)>10*%eps then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if dim<>50 then bugmes();quit;end
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>50 then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >1000*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >1000*%eps then bugmes();quit;end
+//ordered sel
+clear sel
+function t=sel(Alpha,Beta),t=imag(Alpha)>0 ,endfunction
+dim=schur(A,E,sel);
+if dim<>32 then bugmes();quit;end
+[Z,dim]=schur(A,E,sel);
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+[Q,Z1,dim]=schur(A,E,sel);
+if Err(Z1-Z)>10*%eps then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if dim<>32 then bugmes();quit;end
+[As,Es,Z,dim]=schur(A,E,sel);
+if dim<>32 then bugmes();quit;end
+if Err(Q*Q'-eye(Q)) >200*%eps then bugmes();quit;end
+if Err(Z*Z'-eye(Z)) >200*%eps then bugmes();quit;end
+if Err(As-Q'*A*Z) >1000*%eps then bugmes();quit;end
+if Err(Es-Q'*E*Z) >1000*%eps then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/unit_tests/schur.tst b/modules/linear_algebra/tests/unit_tests/schur.tst
new file mode 100755
index 000000000..1e3fc341b
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/schur.tst
@@ -0,0 +1,493 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x)
+ r=norm(x,1)
+endfunction
+rand('normal')
+
+//define tools
+function A=testmat1(a,n)
+ //eigen values are given by a dilation of nth roots of 1
+ A=diag(a*ones(1,n-1),1)+diag((1/a)*ones(1,n-1),-1)
+ A(1,n)=1/a;A(n,1)=a
+endfunction
+
+//==========================================================================
+//============================== schur ==============================
+//==========================================================================
+clear sel
+function t=sel(R),t=real(R)<0 ,endfunction
+//Empty matrix
+A=[];
+if schur(A)<>[] then pause,end
+if schur(A,'real')<>[] then pause,end
+if schur(A,'complex')<>[] then pause,end
+
+if schur(A,'c')<>[] then pause,end
+if schur(A,'d')<>[] then pause,end
+if schur(A,sel)<>[] then pause,end
+
+[U,S]=schur(A);
+if U<>[]|S<>[] then pause,end
+[U,S]=schur(A,'real');
+if U<>[]|S<>[] then pause,end
+[U,S]=schur(A,'complex');
+if U<>[]|S<>[] then pause,end
+
+
+
+[U,N]=schur(A,'c');
+if U<>[]|N<>0 then pause,end
+[U,N]=schur(A,'d');
+if U<>[]|N<>0 then pause,end
+[U,N]=schur(A,sel);
+if U<>[]|N<>0 then pause,end
+
+[U,N,S]=schur(A,'c');
+if U<>[]|N<>0|S<>[] then pause,end
+[U,N,S]=schur(A,'d');
+if U<>[]|N<>0|S<>[] then pause,end
+[U,N,S]=schur(A,sel);
+if U<>[]|N<>0|S<>[] then pause,end
+
+//Rectangular matrix
+if execstr('schur(rand(2,3))','errcatch')==0 then pause,end
+if execstr('[U,S]=schur(rand(2,3))','errcatch')==0 then pause,end
+
+if execstr('schur(rand(2,3)+%i*eye())','errcatch')==0 then pause,end
+if execstr('[U,S]=schur(rand(2,3)+%i*eye())','errcatch')==0 then pause,end
+
+//Small dimension
+A=testmat1(3,5);Ac=testmat1(3+%i,5);
+//Real
+[U,S]=schur(A);
+if Err(triu(S,-1)-S)>%eps then pause,end
+if Err(U*S*U'-A)>200*%eps then pause,end
+if Err(schur(A)-S) >%eps then pause,end
+
+[U,S]=schur(A,'real');
+if Err(triu(S,-1)-S)>%eps then pause,end
+if Err(U*S*U'-A)>200*%eps then pause,end
+if Err(schur(A)-S) >%eps then pause,end
+
+[U,S]=schur(A,'complex');
+if Err(triu(S)-S)>%eps then pause,end
+if Err(U*S*U'-A)>200*%eps then pause,end
+if Err(schur(A,'complex')-S) >%eps then pause,end
+
+[U,n]=schur(A,'c');S=U'*A*U;
+if n<>2 then pause,end
+if or(real(spec(S(1:n,1:n)))>=0) then pause,end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then pause,end
+
+[U,n]=schur(A,'d');S=U'*A*U;
+if n<>0 then pause,end
+if or(abs(spec(S(n+1:$,n+1:$)))<1) then pause,end
+
+[U,n]=schur(A,sel);S=U'*A*U;
+if n<>2 then pause,end
+if or(real(spec(S(1:n,1:n)))>=0) then pause,end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then pause,end
+
+
+//Complex
+[U,S]=schur(Ac);
+if Err(triu(S,-1)-S)>%eps then pause,end
+if Err(U*S*U'-Ac)>200*%eps then pause,end
+if Err(schur(Ac)-S) >%eps then pause,end
+
+[U,S]=schur(Ac,'complex');
+if Err(triu(S,-1)-S)>%eps then pause,end
+if Err(U*S*U'-Ac)>200*%eps then pause,end
+if Err(schur(Ac)-S) >%eps then pause,end
+
+
+[U,n]=schur(Ac,'c');S=U'*Ac*U;
+if n<>3 then pause,end
+if or(real(spec(S(1:n,1:n)))>=0) then pause,end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then pause,end
+
+[U,n]=schur(Ac,'d');S=U'*A*U;
+if n<>0 then pause,end
+if or(abs(spec(S(n+1:$,n+1:$)))<1) then pause,end
+
+[U,n]=schur(Ac,sel);S=U'*Ac*U;
+if n<>3 then pause,end
+if or(real(spec(S(1:n,1:n)))>=0) then pause,end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then pause,end
+
+
+//Large dimension
+A=testmat1(3,50);Ac=testmat1(3+%i,50);
+//Real
+[U,S]=schur(A);
+if Err(triu(S,-1)-S)>%eps then pause,end
+if Err(U*S*U'-A)>1000*%eps then pause,end
+if Err(schur(A)-S) >%eps then pause,end
+
+[U,S]=schur(A,'real');
+if Err(triu(S,-1)-S)>%eps then pause,end
+if Err(U*S*U'-A)>1000*%eps then pause,end
+if Err(schur(A)-S) >%eps then pause,end
+
+[U,S]=schur(A,'complex');
+if Err(triu(S)-S)>%eps then pause,end
+if Err(U*S*U'-A)>1000*%eps then pause,end
+if Err(schur(A,'complex')-S) >%eps then pause,end
+
+
+[U,n]=schur(A,'c');S=U'*A*U;
+if n<>25 then pause,end
+if or(real(spec(S(1:n,1:n)))>=0) then pause,end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then pause,end
+
+[U,n]=schur(A,'d');S=U'*A*U;
+if n<>0 then pause,end
+if or(abs(spec(S(n+1:$,n+1:$)))<1) then pause,end
+
+[U,n]=schur(A,sel);S=U'*A*U;
+if n<>25 then pause,end
+if or(real(spec(S(1:n,1:n)))>=0) then pause,end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then pause,end
+
+//Complex
+[U,S]=schur(Ac);
+if Err(triu(S,-1)-S)>%eps then pause,end
+if Err(U*S*U'-Ac)>1000*%eps then pause,end
+if Err(schur(Ac)-S) >%eps then pause,end
+
+[U,S]=schur(Ac,'complex');
+if Err(triu(S,-1)-S)>%eps then pause,end
+if Err(U*S*U'-Ac)>1000*%eps then pause,end
+if Err(schur(Ac)-S) >%eps then pause,end
+
+[U,n]=schur(Ac,'c');S=U'*Ac*U;
+if n<>25 then pause,end
+if or(real(spec(S(1:n,1:n)))>=0) then pause,end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then pause,end
+
+[U,n]=schur(Ac,'d');S=U'*Ac*U;
+if n<>0 then pause,end
+if or(abs(spec(S(n+1:$,n+1:$)))<1) then pause,end
+
+[U,n]=schur(Ac,sel);S=U'*Ac*U;
+if n<>25 then pause,end
+if or(real(spec(S(1:n,1:n)))>=0) then pause,end
+if or(real(spec(S(n+1:$,n+1:$)))<0) then pause,end
+//==========================================================================
+//============================== schur part II ========================
+//==========================================================================
+//Empty matrix
+[As,Es]=schur([],[]);
+if As<>[]|Es<>[] then pause,end
+
+[As,dim]=schur([],[],'c');
+if As<>[]|dim<>0 then pause,end
+[As,dim]=schur([],[],'d');
+if As<>[]|dim<>0 then pause,end
+[As,dim]=schur([],[],sel);
+if As<>[]|dim<>0 then pause,end
+
+[As,Es,Q,Z]=schur([],[]);
+if As<>[]|Es<>[]|Q<>[]|Z<>[] then pause,end
+
+[As,Es,dim]=schur([],[],'c');
+if As<>[]|Es<>[]|dim<>0 then pause,end
+[As,Es,dim]=schur([],[],'d');
+if As<>[]|Es<>[]|dim<>0 then pause,end
+[As,Es,dim]=schur([],[],sel);
+if As<>[]|Es<>[]|dim<>0 then pause,end
+
+[Z,dim]=schur([],[],'c');
+if Z<>[]|dim<>0 then pause,end
+[Z,dim]=schur([],[],'d');
+if Z<>[]|dim<>0 then pause,end
+[Z,dim]=schur([],[],sel);
+if Z<>[]|dim<>0 then pause,end
+
+
+//Rectangular matrix
+if execstr('[As,Es]=schur(rand(2,3),rand(2,3))','errcatch')==0 then pause,end
+if execstr('[As,Es,Q,Z]=schur(rand(2,3),rand(2,3))','errcatch')==0 then pause,end
+if execstr('[As,Es,dim]=schur(rand(2,3),rand(2,3),''c'')','errcatch')==0 then pause,end
+if execstr('[Z,dim]=schur(rand(2,3),rand(2,3),sel)','errcatch')==0 then pause,end
+
+//Small dimension
+//----Real------------
+A=testmat1(1,5);E=testmat1(-2,5) ;
+[As,Es,Q,Z]=schur(A,E);
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >200*%eps then pause,end
+if Err(Es-Q'*E*Z) >200*%eps then pause,end
+
+[As1,Es1]=schur(A,E);
+if Err(As1-As)>10*%eps then pause,end
+if Err(Es1-Es)>10*%eps then pause,end
+
+// Ordered 'c'
+dim=schur(A,E,'c');
+if dim<>5 then pause,end
+[Z,dim]=schur(A,E,'c');
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+
+[Q,Z1,dim]=schur(A,E,'c');
+if Err(Z1-Z)>10*%eps then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if dim<>5 then pause,end
+
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>5 then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >200*%eps then pause,end
+if Err(Es-Q'*E*Z) >200*%eps then pause,end
+// Ordered 'd'
+dim=schur(A,E,'d');
+if dim<>5 then pause,end
+[Z,dim]=schur(A,E,'d');
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+
+[Q,Z1,dim]=schur(A,E,'d');
+if Err(Z1-Z)>10*%eps then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if dim<>5 then pause,end
+
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>5 then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >200*%eps then pause,end
+if Err(Es-Q'*E*Z) >200*%eps then pause,end
+
+//ordered sel
+clear sel
+function t=sel(Alpha,Beta),t=real(Alpha)>-0.2*real(Beta) ,endfunction
+
+dim=schur(A,E,sel);
+if dim<>2 then pause,end
+[Z,dim]=schur(A,E,sel);
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+
+[Q,Z1,dim]=schur(A,E,sel);
+if Err(Z1-Z)>10*%eps then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if dim<>2 then pause,end
+
+[As,Es,Z,dim]=schur(A,E,sel);
+if dim<>2 then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >200*%eps then pause,end
+if Err(Es-Q'*E*Z) >200*%eps then pause,end
+//----Complex------------
+A=testmat1(1+%i,5);E=testmat1(-2-3*%i,5) ;
+[As,Es,Q,Z]=schur(A,E);
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >200*%eps then pause,end
+if Err(Es-Q'*E*Z) >200*%eps then pause,end
+
+[As1,Es1]=schur(A,E);
+if Err(As1-As)>10*%eps then pause,end
+if Err(Es1-Es)>10*%eps then pause,end
+
+// Ordered 'c'
+dim=schur(A,E,'c');
+if dim<>5 then pause,end
+[Z,dim]=schur(A,E,'c');
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+
+[Q,Z1,dim]=schur(A,E,'c');
+if Err(Z1-Z)>10*%eps then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if dim<>5 then pause,end
+
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>5 then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >200*%eps then pause,end
+if Err(Es-Q'*E*Z) >200*%eps then pause,end
+// Ordered 'd'
+dim=schur(A,E,'d');
+if dim<>5 then pause,end
+[Z,dim]=schur(A,E,'d');
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+
+[Q,Z1,dim]=schur(A,E,'d');
+if Err(Z1-Z)>10*%eps then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if dim<>5 then pause,end
+
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>5 then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >200*%eps then pause,end
+if Err(Es-Q'*E*Z) >200*%eps then pause,end
+
+//ordered sel
+clear sel
+function t=sel(Alpha,Beta),t=imag(Alpha)>0 ,endfunction
+
+dim=schur(A,E,sel);
+if dim<>3 then pause,end
+[Z,dim]=schur(A,E,sel);
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+
+[Q,Z1,dim]=schur(A,E,sel);
+if Err(Z1-Z)>10*%eps then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if dim<>3 then pause,end
+
+[As,Es,Z,dim]=schur(A,E,sel);
+if dim<>3 then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >200*%eps then pause,end
+if Err(Es-Q'*E*Z) >200*%eps then pause,end
+
+//Large dimension
+
+//----Real------------
+A=testmat1(1,50);E=testmat1(-2,50) ;
+[As,Es,Q,Z]=schur(A,E);
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >200*%eps then pause,end
+if Err(Es-Q'*E*Z) >200*%eps then pause,end
+
+[As1,Es1]=schur(A,E);
+if Err(As1-As)>10*%eps then pause,end
+if Err(Es1-Es)>10*%eps then pause,end
+
+// Ordered 'c'
+dim=schur(A,E,'c');
+if dim<>50 then pause,end
+[Z,dim]=schur(A,E,'c');
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+
+[Q,Z1,dim]=schur(A,E,'c');
+if Err(Z1-Z)>10*%eps then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if dim<>50 then pause,end
+
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>50 then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >200*%eps then pause,end
+if Err(Es-Q'*E*Z) >200*%eps then pause,end
+// Ordered 'd'
+dim=schur(A,E,'d');
+if dim<>50 then pause,end
+[Z,dim]=schur(A,E,'d');
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+
+[Q,Z1,dim]=schur(A,E,'d');
+if Err(Z1-Z)>10*%eps then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if dim<>50 then pause,end
+
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>50 then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >200*%eps then pause,end
+if Err(Es-Q'*E*Z) >200*%eps then pause,end
+
+//ordered sel
+clear sel
+function t=sel(Alpha,Beta)
+ t=real(Alpha)>-0.2*real(Beta)
+endfunction
+
+dim=schur(A,E,sel); // plante ici DGGES LAPACK 3.1
+if dim<>12 then pause,end
+[Z,dim]=schur(A,E,sel);
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+
+[Q,Z1,dim]=schur(A,E,sel);
+if Err(Z1-Z)>10*%eps then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if dim<>12 then pause,end
+
+[As,Es,Z,dim]=schur(A,E,sel);
+if dim<>12 then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >200*%eps then pause,end
+if Err(Es-Q'*E*Z) >200*%eps then pause,end
+//----Complex------------
+A=testmat1(1+%i,50);E=testmat1(-2-3*%i,50) ;
+[As,Es,Q,Z]=schur(A,E);
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >1000*%eps then pause,end
+if Err(Es-Q'*E*Z) >1000*%eps then pause,end
+
+[As1,Es1]=schur(A,E);
+if Err(As1-As)>10*%eps then pause,end
+if Err(Es1-Es)>10*%eps then pause,end
+
+// Ordered 'c'
+dim=schur(A,E,'c');
+if dim<>50 then pause,end
+[Z,dim]=schur(A,E,'c');
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+
+[Q,Z1,dim]=schur(A,E,'c');
+if Err(Z1-Z)>10*%eps then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if dim<>50 then pause,end
+
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>50 then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >1000*%eps then pause,end
+if Err(Es-Q'*E*Z) >1000*%eps then pause,end
+// Ordered 'd'
+dim=schur(A,E,'d');
+if dim<>50 then pause,end
+[Z,dim]=schur(A,E,'d');
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+
+[Q,Z1,dim]=schur(A,E,'d');
+if Err(Z1-Z)>10*%eps then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if dim<>50 then pause,end
+
+[As,Es,Z,dim]=schur(A,E,'d');
+if dim<>50 then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >1000*%eps then pause,end
+if Err(Es-Q'*E*Z) >1000*%eps then pause,end
+
+//ordered sel
+clear sel
+function t=sel(Alpha,Beta),t=imag(Alpha)>0 ,endfunction
+
+dim=schur(A,E,sel);
+if dim<>32 then pause,end
+[Z,dim]=schur(A,E,sel);
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+
+[Q,Z1,dim]=schur(A,E,sel);
+if Err(Z1-Z)>10*%eps then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if dim<>32 then pause,end
+
+[As,Es,Z,dim]=schur(A,E,sel);
+if dim<>32 then pause,end
+if Err(Q*Q'-eye(Q)) >200*%eps then pause,end
+if Err(Z*Z'-eye(Z)) >200*%eps then pause,end
+if Err(As-Q'*A*Z) >1000*%eps then pause,end
+if Err(Es-Q'*E*Z) >1000*%eps then pause,end
+
diff --git a/modules/linear_algebra/tests/unit_tests/spec.dia.ref b/modules/linear_algebra/tests/unit_tests/spec.dia.ref
new file mode 100755
index 000000000..2626a0fab
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/spec.dia.ref
@@ -0,0 +1,132 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// easy and simple test
+A=[0,2,0,1;2,2,3,2;4,-3,0,1.;6,1,-6,-5];
+refA=[ 4.1774842;-4.8201083;-1.1786879+%i*3.1987051;-1.1786879-%i*3.1987051];
+assert_checkalmostequal(spec(A),refA, 10^-7);
+//define tools
+function A=testmat1(a,n)
+ //eigen values are given by a dilation of nth roots of 1
+ A=diag(a*ones(1,n-1),1)+diag((1/a)*ones(1,n-1),-1)
+ A(1,n)=1/a;
+ A(n,1)=a
+endfunction
+function r=Err(x)
+ r=norm(x,1)
+endfunction
+rand('normal')
+//
+// spec.tst --
+// Test spec with 1 RHS and one or several LHS.
+//
+function r=Checktestmat1(a,n)
+ A=testmat1(a,n);
+ S=spec(A);
+ SR=real(S);
+ SI=imag(S);
+ dt=2*%i*%pi/n;
+ Z=exp(dt*(1:n)');
+ ZR=real(Z*((1+a*a')/a));
+ ZI=-imag(Z*((a*a'-1)/a));
+ r=max(norm(gsort(SR)-gsort(ZR)),norm(gsort(SI)-gsort(ZI)))
+endfunction
+function A=testmat2(a,n)
+ //eigen values are given by a dilation of nth roots of 1
+ A=testmat1(a,n);
+ A=A+A'
+endfunction
+function r=Checktestmat2(a,n)
+ A=testmat2(a,n);
+ S=spec(A);
+ SR=real(S);
+ SI=imag(S);
+ dt=2*%i*%pi/n;
+ Z=exp(dt*(1:n)');
+ ZR=2*real(Z*((1+a*a')/a));
+ ZI=0*ZR;
+ r=max(norm(gsort(SR)-gsort(ZR)),norm(gsort(SI)-gsort(ZI)))
+endfunction
+// Empty matrix
+A=[];
+B=[];
+// 1. One RHS, one LHS
+S=spec(A);
+if S<>[] then bugmes();quit;end
+// 2. One RHS, two LHS
+[al,be]=spec(A);
+if al<>[] then bugmes();quit;end
+if be<>[] then bugmes();quit;end
+//Matrix with Inf or Nan (test de la detection d'erreur)
+// 1. Real
+// 1.1 Not symetric
+if execstr('spec([%inf 1;2 3])','errcatch')==0 then bugmes();quit;end
+if execstr('spec([1 %nan;2 3])','errcatch')==0 then bugmes();quit;end
+// 1.2 Symetric
+if execstr('spec([%inf 1;1 3])','errcatch')==0 then bugmes();quit;end
+// 2. Complex
+// 2.1 Not symetric
+if execstr('spec([%inf %i;2 3])','errcatch')==0 then bugmes();quit;end
+if execstr('spec([%i %i;%nan 3])','errcatch')==0 then bugmes();quit;end
+// 2.2 Symetric
+if execstr('spec([%inf %i;-%i 3])','errcatch')==0 then bugmes();quit;end
+//Small dimension
+//---------------
+//Real Case
+//Unsymetric, 2 LHS
+if Checktestmat1(3,5)>200*%eps then bugmes();quit;end
+[U,S]=spec(testmat1(3,5));
+if Err(U*S/U-testmat1(3,5))>200*%eps then bugmes();quit;end
+//Symmetric, 2 LHS
+if Checktestmat2(3,5)>200*%eps then bugmes();quit;end
+[U,S]=spec(testmat2(3,5));
+if Err(U*S/U-testmat2(3,5))>200*%eps then bugmes();quit;end
+//Unsymetric, 1 LHS
+Scomputed = spec([2,1;3,4]);
+Sexpected = [1;5];
+if Err(Scomputed - Sexpected)>200*%eps then bugmes();quit;end
+//Symmetric, 1 LHS
+Scomputed=spec([2,1;1,2]);
+Sexpected = [1;3];
+if Err(Scomputed - Sexpected)>200*%eps then bugmes();quit;end
+//Complex Case
+//Unsymetric
+if Checktestmat1(3+2*%i,5)>200*%eps then bugmes();quit;end
+[U,S]=spec(testmat1(3+2*%i,5));
+if Err(U*S/U-testmat1(3+2*%i,5))>200*%eps then bugmes();quit;end
+//Symmetric
+if Checktestmat2(3+2*%i,5)>200*%eps then bugmes();quit;end
+[U,S]=spec(testmat2(3+2*%i,5));
+if Err(U*S/U-testmat2(3+2*%i,5))>200*%eps then bugmes();quit;end
+//Unsymetric, 1 LHS
+Scomputed = spec([2*%i,1*%i;3*%i,4*%i]);
+Sexpected = [%i;5*%i];
+if Err(Scomputed - Sexpected)>200*%eps then bugmes();quit;end
+//Symmetric, 1 LHS
+Scomputed=spec([2,%i;-%i,2]);
+Sexpected = [1;3];
+if Err(Scomputed - Sexpected)>200*%eps then bugmes();quit;end
+//Large dimension
+//---------------
+//Real Case
+//Unsymetric
+if Checktestmat1(3,50)>1000*%eps then bugmes();quit;end
+[U,S]=spec(testmat1(3,50));
+if Err(U*S/U-testmat1(3,50))>1000*%eps then bugmes();quit;end
+//Symmetric
+if Checktestmat2(3,50)>1000*%eps then bugmes();quit;end
+[U,S]=spec(testmat2(3,50));
+if Err(U*S/U-testmat2(3,50))>1000*%eps then bugmes();quit;end
+//Complex Case
+//Unsymetric
+if Checktestmat1(3+2*%i,50)>1000*%eps then bugmes();quit;end
+[U,S]=spec(testmat1(3+2*%i,50));
+if Err(U*S/U-testmat1(3+2*%i,50))>1000*%eps then bugmes();quit;end
+//Symmetric
+if Checktestmat2(3+2*%i,50)>1000*%eps then bugmes();quit;end
+[U,S]=spec(testmat2(3+2*%i,50));
+if Err(U*S/U-testmat2(3+2*%i,50))>10000*%eps then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/unit_tests/spec.tst b/modules/linear_algebra/tests/unit_tests/spec.tst
new file mode 100755
index 000000000..fbd54e228
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/spec.tst
@@ -0,0 +1,153 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA Michael Baudin
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// easy and simple test
+
+A=[0,2,0,1;2,2,3,2;4,-3,0,1.;6,1,-6,-5];
+refA=[ 4.1774842;-4.8201083;-1.1786879+%i*3.1987051;-1.1786879-%i*3.1987051];
+assert_checkalmostequal(spec(A),refA, 10^-7);
+
+
+//define tools
+function A=testmat1(a,n)
+ //eigen values are given by a dilation of nth roots of 1
+ A=diag(a*ones(1,n-1),1)+diag((1/a)*ones(1,n-1),-1)
+ A(1,n)=1/a;
+ A(n,1)=a
+endfunction
+function r=Err(x)
+ r=norm(x,1)
+endfunction
+rand('normal')
+
+//
+// spec.tst --
+// Test spec with 1 RHS and one or several LHS.
+//
+
+function r=Checktestmat1(a,n)
+ A=testmat1(a,n);
+ S=spec(A);
+ SR=real(S);
+ SI=imag(S);
+ dt=2*%i*%pi/n;
+ Z=exp(dt*(1:n)');
+ ZR=real(Z*((1+a*a')/a));
+ ZI=-imag(Z*((a*a'-1)/a));
+ r=max(norm(gsort(SR)-gsort(ZR)),norm(gsort(SI)-gsort(ZI)))
+endfunction
+function A=testmat2(a,n)
+ //eigen values are given by a dilation of nth roots of 1
+ A=testmat1(a,n);
+ A=A+A'
+endfunction
+function r=Checktestmat2(a,n)
+ A=testmat2(a,n);
+ S=spec(A);
+ SR=real(S);
+ SI=imag(S);
+ dt=2*%i*%pi/n;
+ Z=exp(dt*(1:n)');
+ ZR=2*real(Z*((1+a*a')/a));
+ ZI=0*ZR;
+ r=max(norm(gsort(SR)-gsort(ZR)),norm(gsort(SI)-gsort(ZI)))
+endfunction
+
+
+
+// Empty matrix
+A=[];
+B=[];
+// 1. One RHS, one LHS
+S=spec(A);
+if S<>[] then pause,end
+// 2. One RHS, two LHS
+[al,be]=spec(A);
+if al<>[] then pause,end
+if be<>[] then pause,end
+
+//Matrix with Inf or Nan (test de la detection d'erreur)
+// 1. Real
+// 1.1 Not symetric
+if execstr('spec([%inf 1;2 3])','errcatch')==0 then pause,end
+if execstr('spec([1 %nan;2 3])','errcatch')==0 then pause,end
+// 1.2 Symetric
+if execstr('spec([%inf 1;1 3])','errcatch')==0 then pause,end
+// 2. Complex
+// 2.1 Not symetric
+if execstr('spec([%inf %i;2 3])','errcatch')==0 then pause,end
+if execstr('spec([%i %i;%nan 3])','errcatch')==0 then pause,end
+// 2.2 Symetric
+if execstr('spec([%inf %i;-%i 3])','errcatch')==0 then pause,end
+
+//Small dimension
+//---------------
+//Real Case
+//Unsymetric, 2 LHS
+if Checktestmat1(3,5)>200*%eps then pause,end
+[U,S]=spec(testmat1(3,5));
+if Err(U*S/U-testmat1(3,5))>200*%eps then pause,end
+//Symmetric, 2 LHS
+if Checktestmat2(3,5)>200*%eps then pause,end
+[U,S]=spec(testmat2(3,5));
+if Err(U*S/U-testmat2(3,5))>200*%eps then pause,end
+//Unsymetric, 1 LHS
+Scomputed = spec([2,1;3,4]);
+Sexpected = [1;5];
+if Err(Scomputed - Sexpected)>200*%eps then pause,end
+//Symmetric, 1 LHS
+Scomputed=spec([2,1;1,2]);
+Sexpected = [1;3];
+if Err(Scomputed - Sexpected)>200*%eps then pause,end
+
+//Complex Case
+//Unsymetric
+if Checktestmat1(3+2*%i,5)>200*%eps then pause,end
+[U,S]=spec(testmat1(3+2*%i,5));
+if Err(U*S/U-testmat1(3+2*%i,5))>200*%eps then pause,end
+
+//Symmetric
+if Checktestmat2(3+2*%i,5)>200*%eps then pause,end
+[U,S]=spec(testmat2(3+2*%i,5));
+if Err(U*S/U-testmat2(3+2*%i,5))>200*%eps then pause,end
+
+//Unsymetric, 1 LHS
+Scomputed = spec([2*%i,1*%i;3*%i,4*%i]);
+Sexpected = [%i;5*%i];
+if Err(Scomputed - Sexpected)>200*%eps then pause,end
+//Symmetric, 1 LHS
+Scomputed=spec([2,%i;-%i,2]);
+Sexpected = [1;3];
+if Err(Scomputed - Sexpected)>200*%eps then pause,end
+
+
+//Large dimension
+//---------------
+//Real Case
+//Unsymetric
+if Checktestmat1(3,50)>1000*%eps then pause,end
+[U,S]=spec(testmat1(3,50));
+if Err(U*S/U-testmat1(3,50))>1000*%eps then pause,end
+
+//Symmetric
+if Checktestmat2(3,50)>1000*%eps then pause,end
+[U,S]=spec(testmat2(3,50));
+if Err(U*S/U-testmat2(3,50))>1000*%eps then pause,end
+
+//Complex Case
+//Unsymetric
+if Checktestmat1(3+2*%i,50)>1000*%eps then pause,end
+[U,S]=spec(testmat1(3+2*%i,50));
+if Err(U*S/U-testmat1(3+2*%i,50))>1000*%eps then pause,end
+
+//Symmetric
+if Checktestmat2(3+2*%i,50)>1000*%eps then pause,end
+[U,S]=spec(testmat2(3+2*%i,50));
+if Err(U*S/U-testmat2(3+2*%i,50))>10000*%eps then pause,end
+
diff --git a/modules/linear_algebra/tests/unit_tests/squeeze.dia.ref b/modules/linear_algebra/tests/unit_tests/squeeze.dia.ref
new file mode 100755
index 000000000..d72bb1da2
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/squeeze.dia.ref
@@ -0,0 +1,31 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - INRIA - Serge.Steer@inria.fr
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+C=cell(1,6);C.entries=list(1,%s+1,[3,4],[%f %t],int32(8),-24);
+S=[];S.a=1;S(6).a=33;
+data=list(1:6,string(1:6),(1:6)+%s,(1:6)>2, int32(1:6),C,S);
+//check with hypermatrices and hyper cells
+for v=data
+ a=matrix(v,[1 2 3]);
+ if or(squeeze(a)<>matrix(v,[2 3])) then bugmes();quit;end
+ a=matrix(v,[1 2 1 3]);
+ if or(squeeze(a)<>matrix(v,[2 3])) then bugmes();quit;end
+end
+//check with matrices and 2D cells the function should return the input
+for v=data
+ a=matrix(v,[2 3]);
+ if or(squeeze(a)<>matrix(v,[2 3])) then bugmes();quit;end
+end
+//scalar case
+a=33;
+if or(size(squeeze(a))<>[1 1]) then bugmes();quit;end
+c=cell(1,1);c(1).entries=1:3;
+if or(size(squeeze(c))<>[1 1]) then bugmes();quit;end
+//empty matrix
+if or(size(squeeze([]))<>[0 0]) then bugmes();quit;end
+if or(size(squeeze(cell()))<>[0 0]) then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/unit_tests/squeeze.tst b/modules/linear_algebra/tests/unit_tests/squeeze.tst
new file mode 100755
index 000000000..59fc65596
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/squeeze.tst
@@ -0,0 +1,36 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - INRIA - Serge.Steer@inria.fr
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+
+C=cell(1,6);C.entries=list(1,%s+1,[3,4],[%f %t],int32(8),-24);
+S=[];S.a=1;S(6).a=33;
+
+data=list(1:6,string(1:6),(1:6)+%s,(1:6)>2, int32(1:6),C,S);
+//check with hypermatrices and hyper cells
+for v=data
+ a=matrix(v,[1 2 3]);
+ if or(squeeze(a)<>matrix(v,[2 3])) then pause,end
+
+ a=matrix(v,[1 2 1 3]);
+ if or(squeeze(a)<>matrix(v,[2 3])) then pause,end
+end
+//check with matrices and 2D cells the function should return the input
+for v=data
+ a=matrix(v,[2 3]);
+ if or(squeeze(a)<>matrix(v,[2 3])) then pause,end
+end
+
+//scalar case
+a=33;
+if or(size(squeeze(a))<>[1 1]) then pause,end
+c=cell(1,1);c(1).entries=1:3;
+if or(size(squeeze(c))<>[1 1]) then pause,end
+//empty matrix
+if or(size(squeeze([]))<>[0 0]) then pause,end
+if or(size(squeeze(cell()))<>[0 0]) then pause,end
+
diff --git a/modules/linear_algebra/tests/unit_tests/svd.dia.ref b/modules/linear_algebra/tests/unit_tests/svd.dia.ref
new file mode 100755
index 000000000..e323097ff
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/svd.dia.ref
@@ -0,0 +1,293 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x)
+ r=norm(x,1)
+endfunction
+rand('normal')
+//==========================================================================
+//============================== svd ==============================
+//==========================================================================
+//Empty matrix
+A=[];
+[U,S,V]=svd(A);
+if U<>[]|V<>[]|S<>[] then bugmes();quit;end
+S=svd(A);
+if S<>[] then bugmes();quit;end
+[U,S,V]=svd(A,"e");
+if U<>[]|V<>[]|S<>[] then bugmes();quit;end
+S=svd(A,"e");
+if S<>[] then bugmes();quit;end
+//Matrix with inf or nan
+if execstr('svd([%inf 1;2 3])','errcatch')==0 then bugmes();quit;end
+if execstr('svd([1 %nan;2 3])','errcatch')==0 then bugmes();quit;end
+if execstr('svd([%inf %i;2 3])','errcatch')==0 then bugmes();quit;end
+if execstr('svd([%i %i;%nan 3])','errcatch')==0 then bugmes();quit;end
+//Small dimension
+//---------------
+A=rand(3,5);
+Ac=A+%i*rand(A);
+//Real Case
+[U,S,V]=svd(A);
+if Err(U*S*V'-A)>200*%eps then bugmes();quit;end
+if Err(svd(A)-diag(S))> 200*%eps then bugmes();quit;end
+[U,S,V]=svd(A,"e");
+if Err(U*S*V'-A)>200*%eps then bugmes();quit;end
+A=A';
+[U,S,V]=svd(A);
+if Err(U*S*V'-A)>200*%eps then bugmes();quit;end
+if Err(svd(A)-diag(S))> 200*%eps then bugmes();quit;end
+[U,S,V]=svd(A,"e");
+if Err(U*S*V'-A)>200*%eps then bugmes();quit;end
+//Complex Case
+[U,S,V]=svd(Ac);
+if Err(U*S*V'-Ac)>200*%eps then bugmes();quit;end
+if Err(svd(Ac)-diag(S))> 200*%eps then bugmes();quit;end
+[U,S,V]=svd(Ac,"e");
+if Err(U*S*V'-Ac)>200*%eps then bugmes();quit;end
+Ac=Ac';
+[U,S,V]=svd(Ac);U*S*V'-Ac;
+if Err(U*S*V'-Ac)>200*%eps then bugmes();quit;end
+if Err(svd(Ac)-diag(S))> 200*%eps then bugmes();quit;end
+[U,S,V]=svd(Ac,"e");
+if Err(U*S*V'-Ac)>200*%eps then bugmes();quit;end
+//Large dimension
+//---------------
+A=rand(150,60);
+Ac=A+rand(A)*%i;
+//Real Case
+[U,S,V]=svd(A);
+if Err(U*S*V'-A)>10000*%eps then bugmes();quit;end
+if Err(svd(A)-diag(S))> 10000*%eps then bugmes();quit;end
+[U,S,V]=svd(A,"e");
+if Err(U*S*V'-A)>10000*%eps then bugmes();quit;end
+A=A';
+[U,S,V]=svd(A);
+if Err(U*S*V'-A)>10000*%eps then bugmes();quit;end
+if Err(svd(A)-diag(S))> 10000*%eps then bugmes();quit;end
+[U,S,V]=svd(A,"e");
+if Err(U*S*V'-A)>10000*%eps then bugmes();quit;end
+//Complex Case
+[U,S,V]=svd(Ac);
+if Err(U*S*V'-Ac)>10000*%eps then bugmes();quit;end
+if Err(svd(Ac)-diag(S))> 10000*%eps then bugmes();quit;end
+[U,S,V]=svd(Ac,"e");
+if Err(U*S*V'-Ac)>10000*%eps then bugmes();quit;end
+Ac=Ac';
+[U,S,V]=svd(Ac);U*S*V'-Ac;
+if Err(U*S*V'-Ac)>10000*%eps then bugmes();quit;end
+if Err(svd(Ac)-diag(S))> 10000*%eps then bugmes();quit;end
+[U,S,V]=svd(Ac,"e");
+if Err(U*S*V'-Ac)>10000*%eps then bugmes();quit;end
+//==========================================================================
+//============================== svd part II =======================
+//==========================================================================
+//Empty matrix
+if svd([])<>[] then bugmes();quit;end
+if svd([],"e")<>[] then bugmes();quit;end
+[U,S]=svd([]);
+if U<>[]|S<>[] then bugmes();quit;end
+[U,S,V]=svd([]);
+if U<>[]|S<>[]|V<>[] then bugmes();quit;end
+[U,S,V,rk]=svd([]);
+if U<>[]|S<>[]|V<>[]|rk<>0 then bugmes();quit;end
+[U,S,V,rk]=svd([],%eps);
+if U<>[]|S<>[]|V<>[]|rk<>0 then bugmes();quit;end
+if execstr('[U,S,V,rk]=svd([],'"e'")','errcatch') == 0 then bugmes();quit;end
+//Small dimension
+//Real Case Fat
+A=rand(3,5);
+S=svd(A);
+if or(S<0) then bugmes();quit;end
+if gsort(S)<>S then bugmes();quit;end
+[U,S1]=svd(A);
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U'*U-eye())>10*%eps then bugmes();quit;end
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U1'*U1-eye())>200*%eps then bugmes();quit;end
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U'*U-eye())>200*%eps then bugmes();quit;end
+if Err(U1*S1*V'-A) >200*%eps then bugmes();quit;end
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U-U1)>10*%eps then bugmes();quit;end
+if Err(U1*S1*V1'-A) >200*%eps then bugmes();quit;end
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U-U1)>200*%eps then bugmes();quit;end
+if Err(V-V1) >200*%eps then bugmes();quit;end
+if rk<>3 then bugmes();quit;end
+//Real Case Tall
+A=rand(5,3);
+S=svd(A);
+if or(S<0) then bugmes();quit;end
+if gsort(S)<>S then bugmes();quit;end
+[U,S1]=svd(A);
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U'*U-eye())>200*%eps then bugmes();quit;end
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U1'*U1-eye())>200*%eps then bugmes();quit;end
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U'*U-eye())>200*%eps then bugmes();quit;end
+if Err(U1*S1*V'-A) >200*%eps then bugmes();quit;end
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if size(U1,2)<>3 then bugmes();quit;end
+if Err(U1*S1*V1'-A) >200*%eps then bugmes();quit;end
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U-U1)>200*%eps then bugmes();quit;end
+if Err(V-V1) >200*%eps then bugmes();quit;end
+if rk<>3 then bugmes();quit;end
+//Complex Case Fat
+A=rand(3,5)+%i*rand(3,5);
+S=svd(A);
+if or(S<0) then bugmes();quit;end
+if gsort(S)<>S then bugmes();quit;end
+[U,S1]=svd(A);
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U'*U-eye())>200*%eps then bugmes();quit;end
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U1'*U1-eye())>200*%eps then bugmes();quit;end
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U'*U-eye())>200*%eps then bugmes();quit;end
+if Err(U1*S1*V'-A) >30*%eps then bugmes();quit;end
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U-U1)>200*%eps then bugmes();quit;end
+if Err(U1*S1*V1'-A) >200*%eps then bugmes();quit;end
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U-U1)>200*%eps then bugmes();quit;end
+if Err(V-V1) >200*%eps then bugmes();quit;end
+if rk<>3 then bugmes();quit;end
+//Complex Case Tall
+A=rand(5,3)+%i*rand(5,3);
+S=svd(A);
+if or(S<0) then bugmes();quit;end
+if gsort(S)<>S then bugmes();quit;end
+[U,S1]=svd(A);
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U'*U-eye())>200*%eps then bugmes();quit;end
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U1'*U1-eye())>200*%eps then bugmes();quit;end
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U'*U-eye())>200*%eps then bugmes();quit;end
+if Err(U1*S1*V'-A) >200*%eps then bugmes();quit;end
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if size(U1,2)<>3 then bugmes();quit;end
+if Err(U1*S1*V1'-A) >200*%eps then bugmes();quit;end
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>200*%eps then bugmes();quit;end
+if Err(U-U1)>200*%eps then bugmes();quit;end
+if Err(V-V1) >200*%eps then bugmes();quit;end
+if rk<>3 then bugmes();quit;end
+//Large dimension
+//Real Case Fat
+A=rand(30,50);
+S=svd(A);
+if or(S<0) then bugmes();quit;end
+if gsort(S)<>S then bugmes();quit;end
+[U,S1]=svd(A);
+if Err(S-diag(S1))>1000*%eps then bugmes();quit;end
+if Err(U'*U-eye())>1000*%eps then bugmes();quit;end
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>1000*%eps then bugmes();quit;end
+if Err(U1'*U1-eye())>1000*%eps then bugmes();quit;end
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>1000*%eps then bugmes();quit;end
+if Err(U'*U-eye())>1000*%eps then bugmes();quit;end
+if Err(U1*S1*V'-A) >1000*%eps then bugmes();quit;end
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>1000*%eps then bugmes();quit;end
+if Err(U-U1)>10*%eps then bugmes();quit;end
+if Err(U1*S1*V1'-A) >1000*%eps then bugmes();quit;end
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>1000*%eps then bugmes();quit;end
+if Err(U-U1)>5000*%eps then bugmes();quit;end
+if Err(V-V1) >5000*%eps then bugmes();quit;end
+if rk<>30 then bugmes();quit;end
+//Real Case Tall
+A=rand(50,30);
+S=svd(A);
+if or(S<0) then bugmes();quit;end
+if gsort(S)<>S then bugmes();quit;end
+[U,S1]=svd(A);
+if Err(S-diag(S1))>5000*%eps then bugmes();quit;end
+if Err(U'*U-eye())>5000*%eps then bugmes();quit;end
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>5000*%eps then bugmes();quit;end
+if Err(U1'*U1-eye())>5000*%eps then bugmes();quit;end
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>5000*%eps then bugmes();quit;end
+if Err(U'*U-eye())>5000*%eps then bugmes();quit;end
+if Err(U1*S1*V'-A) >5000*%eps then bugmes();quit;end
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>5000*%eps then bugmes();quit;end
+if size(U1,2)<>30 then bugmes();quit;end
+if Err(U1*S1*V1'-A) >5000*%eps then bugmes();quit;end
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>5000*%eps then bugmes();quit;end
+if Err(U-U1)>5000*%eps then bugmes();quit;end
+if Err(V-V1) >5000*%eps then bugmes();quit;end
+if rk<>30 then bugmes();quit;end
+//Complex Case Fat
+A=rand(30,50)+%i*rand(30,50);
+S=svd(A);
+if or(S<0) then bugmes();quit;end
+if gsort(S)<>S then bugmes();quit;end
+[U,S1]=svd(A);
+if Err(S-diag(S1))>5000*%eps then bugmes();quit;end
+if Err(U'*U-eye())>5000*%eps then bugmes();quit;end
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>5000*%eps then bugmes();quit;end
+if Err(U1'*U1-eye())>5000*%eps then bugmes();quit;end
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>5000*%eps then bugmes();quit;end
+if Err(U'*U-eye())>5000*%eps then bugmes();quit;end
+if Err(U1*S1*V'-A) >5000*%eps then bugmes();quit;end
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>5000*%eps then bugmes();quit;end
+if Err(U-U1)>5000*%eps then bugmes();quit;end
+if Err(U1*S1*V1'-A) >5000*%eps then bugmes();quit;end
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>5000*%eps then bugmes();quit;end
+if Err(U-U1)>5000*%eps then bugmes();quit;end
+if Err(V-V1) >5000*%eps then bugmes();quit;end
+if rk<>30 then bugmes();quit;end
+//Complex Case Tall
+A=rand(50,30)+%i*rand(50,30);
+S=svd(A);
+if or(S<0) then bugmes();quit;end
+if gsort(S)<>S then bugmes();quit;end
+[U,S1]=svd(A);
+if Err(S-diag(S1))>5000*%eps then bugmes();quit;end
+if Err(U'*U-eye())>5000*%eps then bugmes();quit;end
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>5000*%eps then bugmes();quit;end
+if Err(U1'*U1-eye())>5000*%eps then bugmes();quit;end
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>5000*%eps then bugmes();quit;end
+if Err(U'*U-eye())>5000*%eps then bugmes();quit;end
+if Err(U1*S1*V'-A) >5000*%eps then bugmes();quit;end
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>5000*%eps then bugmes();quit;end
+if size(U1,2)<>30 then bugmes();quit;end
+if Err(U1*S1*V1'-A) >5000*%eps then bugmes();quit;end
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>5000*%eps then bugmes();quit;end
+if Err(U-U1)>5000*%eps then bugmes();quit;end
+if Err(V-V1) >5000*%eps then bugmes();quit;end
+if rk<>30 then bugmes();quit;end
diff --git a/modules/linear_algebra/tests/unit_tests/svd.tst b/modules/linear_algebra/tests/unit_tests/svd.tst
new file mode 100755
index 000000000..68c2ca6e0
--- /dev/null
+++ b/modules/linear_algebra/tests/unit_tests/svd.tst
@@ -0,0 +1,376 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) ????-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+function r=Err(x)
+ r=norm(x,1)
+endfunction
+rand('normal')
+
+//==========================================================================
+//============================== svd ==============================
+//==========================================================================
+//Empty matrix
+A=[];
+[U,S,V]=svd(A);
+if U<>[]|V<>[]|S<>[] then pause,end
+S=svd(A);
+if S<>[] then pause,end
+[U,S,V]=svd(A,"e");
+if U<>[]|V<>[]|S<>[] then pause,end
+
+S=svd(A,"e");
+if S<>[] then pause,end
+
+//Matrix with inf or nan
+if execstr('svd([%inf 1;2 3])','errcatch')==0 then pause,end
+if execstr('svd([1 %nan;2 3])','errcatch')==0 then pause,end
+
+if execstr('svd([%inf %i;2 3])','errcatch')==0 then pause,end
+if execstr('svd([%i %i;%nan 3])','errcatch')==0 then pause,end
+
+
+//Small dimension
+//---------------
+A=rand(3,5);
+Ac=A+%i*rand(A);
+
+//Real Case
+[U,S,V]=svd(A);
+if Err(U*S*V'-A)>200*%eps then pause,end
+if Err(svd(A)-diag(S))> 200*%eps then pause,end
+
+[U,S,V]=svd(A,"e");
+if Err(U*S*V'-A)>200*%eps then pause,end
+
+A=A';
+[U,S,V]=svd(A);
+if Err(U*S*V'-A)>200*%eps then pause,end
+if Err(svd(A)-diag(S))> 200*%eps then pause,end
+
+[U,S,V]=svd(A,"e");
+if Err(U*S*V'-A)>200*%eps then pause,end
+
+
+//Complex Case
+[U,S,V]=svd(Ac);
+if Err(U*S*V'-Ac)>200*%eps then pause,end
+if Err(svd(Ac)-diag(S))> 200*%eps then pause,end
+
+[U,S,V]=svd(Ac,"e");
+if Err(U*S*V'-Ac)>200*%eps then pause,end
+
+Ac=Ac';
+[U,S,V]=svd(Ac);U*S*V'-Ac;
+if Err(U*S*V'-Ac)>200*%eps then pause,end
+if Err(svd(Ac)-diag(S))> 200*%eps then pause,end
+
+[U,S,V]=svd(Ac,"e");
+if Err(U*S*V'-Ac)>200*%eps then pause,end
+
+
+//Large dimension
+//---------------
+A=rand(150,60);
+Ac=A+rand(A)*%i;
+//Real Case
+[U,S,V]=svd(A);
+if Err(U*S*V'-A)>10000*%eps then pause,end
+if Err(svd(A)-diag(S))> 10000*%eps then pause,end
+
+[U,S,V]=svd(A,"e");
+if Err(U*S*V'-A)>10000*%eps then pause,end
+
+A=A';
+[U,S,V]=svd(A);
+if Err(U*S*V'-A)>10000*%eps then pause,end
+if Err(svd(A)-diag(S))> 10000*%eps then pause,end
+
+[U,S,V]=svd(A,"e");
+if Err(U*S*V'-A)>10000*%eps then pause,end
+
+
+//Complex Case
+[U,S,V]=svd(Ac);
+if Err(U*S*V'-Ac)>10000*%eps then pause,end
+if Err(svd(Ac)-diag(S))> 10000*%eps then pause,end
+
+[U,S,V]=svd(Ac,"e");
+if Err(U*S*V'-Ac)>10000*%eps then pause,end
+
+Ac=Ac';
+[U,S,V]=svd(Ac);U*S*V'-Ac;
+if Err(U*S*V'-Ac)>10000*%eps then pause,end
+if Err(svd(Ac)-diag(S))> 10000*%eps then pause,end
+
+[U,S,V]=svd(Ac,"e");
+if Err(U*S*V'-Ac)>10000*%eps then pause,end
+
+//==========================================================================
+//============================== svd part II =======================
+//==========================================================================
+//Empty matrix
+if svd([])<>[] then pause,end
+if svd([],"e")<>[] then pause,end
+
+[U,S]=svd([]);
+if U<>[]|S<>[] then pause,end
+[U,S,V]=svd([]);
+if U<>[]|S<>[]|V<>[] then pause,end
+[U,S,V,rk]=svd([]);
+if U<>[]|S<>[]|V<>[]|rk<>0 then pause,end
+[U,S,V,rk]=svd([],%eps);
+if U<>[]|S<>[]|V<>[]|rk<>0 then pause,end
+
+if execstr('[U,S,V,rk]=svd([],'"e'")','errcatch') == 0 then pause,end
+
+//Small dimension
+//Real Case Fat
+A=rand(3,5);
+S=svd(A);
+if or(S<0) then pause,end
+if gsort(S)<>S then pause,end
+
+[U,S1]=svd(A);
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U'*U-eye())>10*%eps then pause,end
+
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U1'*U1-eye())>200*%eps then pause,end
+
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U'*U-eye())>200*%eps then pause,end
+if Err(U1*S1*V'-A) >200*%eps then pause,end
+
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U-U1)>10*%eps then pause,end
+if Err(U1*S1*V1'-A) >200*%eps then pause,end
+
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U-U1)>200*%eps then pause,end
+if Err(V-V1) >200*%eps then pause,end
+if rk<>3 then pause,end
+
+//Real Case Tall
+A=rand(5,3);
+
+S=svd(A);
+if or(S<0) then pause,end
+if gsort(S)<>S then pause,end
+
+[U,S1]=svd(A);
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U'*U-eye())>200*%eps then pause,end
+
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U1'*U1-eye())>200*%eps then pause,end
+
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U'*U-eye())>200*%eps then pause,end
+if Err(U1*S1*V'-A) >200*%eps then pause,end
+
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then pause,end
+if size(U1,2)<>3 then pause,end
+if Err(U1*S1*V1'-A) >200*%eps then pause,end
+
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U-U1)>200*%eps then pause,end
+if Err(V-V1) >200*%eps then pause,end
+if rk<>3 then pause,end
+
+//Complex Case Fat
+A=rand(3,5)+%i*rand(3,5);
+S=svd(A);
+if or(S<0) then pause,end
+if gsort(S)<>S then pause,end
+
+[U,S1]=svd(A);
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U'*U-eye())>200*%eps then pause,end
+
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U1'*U1-eye())>200*%eps then pause,end
+
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U'*U-eye())>200*%eps then pause,end
+if Err(U1*S1*V'-A) >30*%eps then pause,end
+
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U-U1)>200*%eps then pause,end
+if Err(U1*S1*V1'-A) >200*%eps then pause,end
+
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U-U1)>200*%eps then pause,end
+if Err(V-V1) >200*%eps then pause,end
+if rk<>3 then pause,end
+
+//Complex Case Tall
+A=rand(5,3)+%i*rand(5,3);
+
+S=svd(A);
+if or(S<0) then pause,end
+if gsort(S)<>S then pause,end
+
+[U,S1]=svd(A);
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U'*U-eye())>200*%eps then pause,end
+
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U1'*U1-eye())>200*%eps then pause,end
+
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U'*U-eye())>200*%eps then pause,end
+if Err(U1*S1*V'-A) >200*%eps then pause,end
+
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>200*%eps then pause,end
+if size(U1,2)<>3 then pause,end
+if Err(U1*S1*V1'-A) >200*%eps then pause,end
+
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>200*%eps then pause,end
+if Err(U-U1)>200*%eps then pause,end
+if Err(V-V1) >200*%eps then pause,end
+if rk<>3 then pause,end
+
+
+//Large dimension
+//Real Case Fat
+A=rand(30,50);
+S=svd(A);
+if or(S<0) then pause,end
+if gsort(S)<>S then pause,end
+
+[U,S1]=svd(A);
+if Err(S-diag(S1))>1000*%eps then pause,end
+if Err(U'*U-eye())>1000*%eps then pause,end
+
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>1000*%eps then pause,end
+if Err(U1'*U1-eye())>1000*%eps then pause,end
+
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>1000*%eps then pause,end
+if Err(U'*U-eye())>1000*%eps then pause,end
+if Err(U1*S1*V'-A) >1000*%eps then pause,end
+
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>1000*%eps then pause,end
+if Err(U-U1)>10*%eps then pause,end
+if Err(U1*S1*V1'-A) >1000*%eps then pause,end
+
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>1000*%eps then pause,end
+if Err(U-U1)>5000*%eps then pause,end
+if Err(V-V1) >5000*%eps then pause,end
+if rk<>30 then pause,end
+
+//Real Case Tall
+A=rand(50,30);
+
+S=svd(A);
+if or(S<0) then pause,end
+if gsort(S)<>S then pause,end
+
+[U,S1]=svd(A);
+if Err(S-diag(S1))>5000*%eps then pause,end
+if Err(U'*U-eye())>5000*%eps then pause,end
+
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>5000*%eps then pause,end
+if Err(U1'*U1-eye())>5000*%eps then pause,end
+
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>5000*%eps then pause,end
+if Err(U'*U-eye())>5000*%eps then pause,end
+if Err(U1*S1*V'-A) >5000*%eps then pause,end
+
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>5000*%eps then pause,end
+if size(U1,2)<>30 then pause,end
+if Err(U1*S1*V1'-A) >5000*%eps then pause,end
+
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>5000*%eps then pause,end
+if Err(U-U1)>5000*%eps then pause,end
+if Err(V-V1) >5000*%eps then pause,end
+if rk<>30 then pause,end
+
+//Complex Case Fat
+A=rand(30,50)+%i*rand(30,50);
+S=svd(A);
+if or(S<0) then pause,end
+if gsort(S)<>S then pause,end
+
+[U,S1]=svd(A);
+if Err(S-diag(S1))>5000*%eps then pause,end
+if Err(U'*U-eye())>5000*%eps then pause,end
+
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>5000*%eps then pause,end
+if Err(U1'*U1-eye())>5000*%eps then pause,end
+
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>5000*%eps then pause,end
+if Err(U'*U-eye())>5000*%eps then pause,end
+if Err(U1*S1*V'-A) >5000*%eps then pause,end
+
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>5000*%eps then pause,end
+if Err(U-U1)>5000*%eps then pause,end
+if Err(U1*S1*V1'-A) >5000*%eps then pause,end
+
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>5000*%eps then pause,end
+if Err(U-U1)>5000*%eps then pause,end
+if Err(V-V1) >5000*%eps then pause,end
+if rk<>30 then pause,end
+
+//Complex Case Tall
+A=rand(50,30)+%i*rand(50,30);
+
+S=svd(A);
+if or(S<0) then pause,end
+if gsort(S)<>S then pause,end
+
+[U,S1]=svd(A);
+if Err(S-diag(S1))>5000*%eps then pause,end
+if Err(U'*U-eye())>5000*%eps then pause,end
+
+[U1,S1]=svd(A,"e");
+if Err(S-diag(S1))>5000*%eps then pause,end
+if Err(U1'*U1-eye())>5000*%eps then pause,end
+
+[U1,S1,V]=svd(A);
+if Err(S-diag(S1))>5000*%eps then pause,end
+if Err(U'*U-eye())>5000*%eps then pause,end
+if Err(U1*S1*V'-A) >5000*%eps then pause,end
+
+[U1,S1,V1]=svd(A,"e");
+if Err(S-diag(S1))>5000*%eps then pause,end
+if size(U1,2)<>30 then pause,end
+if Err(U1*S1*V1'-A) >5000*%eps then pause,end
+
+[U1,S1,V1,rk]=svd(A);
+if Err(S-diag(S1))>5000*%eps then pause,end
+if Err(U-U1)>5000*%eps then pause,end
+if Err(V-V1) >5000*%eps then pause,end
+if rk<>30 then pause,end
+
+