Set svn:eol-style to native
Pierre Marechal [Thu, 7 Feb 2008 10:14:19 +0000 (10:14 +0000)]
299 files changed:
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext10c.c
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext10c.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext10f.f
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext10f.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext11c.c
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext11c.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext11f.f
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext12c.c
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext12c.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext12f.f
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext13c.c
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext13c.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext13f.f
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext14c.c
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext14c.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext1c.c
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext1c.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext1f.f
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext1f.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext2c.c
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext2c.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext2f.f
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext2f.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext3c.c
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext3c.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext3f.f
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext3f.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext4c.c
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext4c.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext4f.f
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext4f.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext5c.c
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext5c.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext5f.f
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext5f.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext6c.c
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext6c.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext6f.f
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext6f.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext7c.c
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext7c.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext7f.f
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext7f.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext8c.c
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext8c.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext8f.f
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext8f.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext9c.c
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext9c.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext9f.f
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext9f.sce
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/runall.sce
scilab/modules/dynamic_link/examples/gateway/builder.sce
scilab/modules/dynamic_link/examples/gateway/displ.c
scilab/modules/dynamic_link/examples/gateway/displ.h
scilab/modules/dynamic_link/examples/gateway/example_gateway.sce
scilab/modules/dynamic_link/examples/gateway/matmul.c
scilab/modules/dynamic_link/examples/gateway/matmul.h
scilab/modules/dynamic_link/examples/gateway/sci_matmul.c
scilab/modules/dynamic_link/examples/gateway/sci_view.c
scilab/modules/dynamic_link/examples/interfaces/c/as2osc.c
scilab/modules/dynamic_link/examples/interfaces/c/crestrc.c
scilab/modules/dynamic_link/examples/interfaces/c/ex10c.sce
scilab/modules/dynamic_link/examples/interfaces/c/ex11c.sce
scilab/modules/dynamic_link/examples/interfaces/c/ex12c.sce
scilab/modules/dynamic_link/examples/interfaces/c/ex13c.sce
scilab/modules/dynamic_link/examples/interfaces/c/ex14c.sce
scilab/modules/dynamic_link/examples/interfaces/c/ex15c.sce
scilab/modules/dynamic_link/examples/interfaces/c/ex1c.sce
scilab/modules/dynamic_link/examples/interfaces/c/ex2c.sce
scilab/modules/dynamic_link/examples/interfaces/c/ex3c.sce
scilab/modules/dynamic_link/examples/interfaces/c/ex4c.sce
scilab/modules/dynamic_link/examples/interfaces/c/ex5c.sce
scilab/modules/dynamic_link/examples/interfaces/c/ex6c.sce
scilab/modules/dynamic_link/examples/interfaces/c/ex7c.sce
scilab/modules/dynamic_link/examples/interfaces/c/ex8c.sce
scilab/modules/dynamic_link/examples/interfaces/c/ex9c.sce
scilab/modules/dynamic_link/examples/interfaces/c/intex10c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex11c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex12c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex13c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex14c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex15c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex16c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex17c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex1c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex2c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex3c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex4c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex5c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex6c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex7c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex8c.c
scilab/modules/dynamic_link/examples/interfaces/c/intex9c.c
scilab/modules/dynamic_link/examples/interfaces/c/runall.sce
scilab/modules/dynamic_link/examples/interfaces/fortran/ex1f.sce
scilab/modules/dynamic_link/examples/interfaces/fortran/ex2f.sce
scilab/modules/dynamic_link/examples/interfaces/fortran/ex3f.sce
scilab/modules/dynamic_link/examples/interfaces/fortran/ex4f.sce
scilab/modules/dynamic_link/examples/interfaces/fortran/intex1f.f
scilab/modules/dynamic_link/examples/interfaces/fortran/intex2f.f
scilab/modules/dynamic_link/examples/interfaces/fortran/intex3f.f
scilab/modules/dynamic_link/examples/interfaces/fortran/intex4f.f
scilab/modules/dynamic_link/examples/interfaces/fortran/runall.sce
scilab/modules/graphic_export/src/jni/GL2PSConstant.i
scilab/modules/graphic_export/src/jni/GL2PSConstant_wrap.c
scilab/modules/graphic_export/src/jni/GL2PSToJOGL.cpp
scilab/modules/graphic_export/src/jni/GL2PSToJOGL.giws.xml
scilab/modules/graphic_export/src/jni/GL2PSToJOGL.hxx
scilab/modules/graphic_export/src/jni/GL2PSWrapping.i
scilab/modules/graphic_export/src/jni/GL2PSWrapping_wrap.c
scilab/modules/graphic_export/src/jni/JOGLConstant.cpp
scilab/modules/graphic_export/src/jni/JOGLConstant.giws.xml
scilab/modules/graphic_export/src/jni/JOGLConstant.hxx
scilab/modules/scicos/help/scicos_doc/Makefile
scilab/modules/scicos/help/scicos_doc/test_BUILD4_scicos.sce
scilab/modules/scicos/includes/ExistScicos.h
scilab/modules/scicos/includes/scicos_free.h
scilab/modules/scicos/includes/scicos_malloc.h
scilab/modules/scicos/macros/scicos_scicos/CodeGeneration_.sci
scilab/modules/scicos/macros/scicos_scicos/Fitdiagramtofigure_.sci
scilab/modules/scicos/macros/scicos_scicos/Flip_.sci
scilab/modules/scicos/macros/scicos_scicos/Grid_.sci
scilab/modules/scicos/macros/scicos_scicos/RotateLeft_.sci
scilab/modules/scicos/macros/scicos_scicos/RotateRight_.sci
scilab/modules/scicos/macros/scicos_scicos/SelectRegion_.sci
scilab/modules/scicos/macros/scicos_scicos/adjust.sci
scilab/modules/scicos/macros/scicos_scicos/bad_connection.sci
scilab/modules/scicos/macros/scicos_scicos/build_modelica_block.sci
scilab/modules/scicos/macros/scicos_scicos/buildnewblock.sci
scilab/modules/scicos/macros/scicos_scicos/c_pass1.sci
scilab/modules/scicos/macros/scicos_scicos/c_pass3.sci
scilab/modules/scicos/macros/scicos_scicos/check_edge.sci
scilab/modules/scicos/macros/scicos_scicos/compile_modelica.sci
scilab/modules/scicos/macros/scicos_scicos/do_move.sci
scilab/modules/scicos/macros/scicos_scicos/do_region2block.sci
scilab/modules/scicos/macros/scicos_scicos/do_turn.sci
scilab/modules/scicos/macros/scicos_scicos/entity_menu.sce
scilab/modules/scicos/macros/scicos_scicos/genfunc1.sci
scilab/modules/scicos/macros/scicos_scicos/get_errorcmd.sci
scilab/modules/scicos/macros/scicos_scicos/get_gri.sci
scilab/modules/scicos/macros/scicos_scicos/getblock.sci
scilab/modules/scicos/macros/scicos_scicos/getblocklink.sci
scilab/modules/scicos/macros/scicos_scicos/getlink.sci
scilab/modules/scicos/macros/scicos_scicos/getobj.sci
scilab/modules/scicos/macros/scicos_scicos/lnkptrcomp.sci
scilab/modules/scicos/macros/scicos_scicos/loadpallibs.sci
scilab/modules/scicos/macros/scicos_scicos/prt_align.sci
scilab/modules/scicos/macros/scicos_scicos/rotate_compound.sci
scilab/modules/scicos/macros/scicos_scicos/rubberbox.sci
scilab/modules/scicos/macros/scicos_scicos/save_csuper.sci
scilab/modules/scicos/macros/scicos_scicos/save_super.sci
scilab/modules/scicos/macros/scicos_scicos/scicos_flat.sci
scilab/modules/scicos/macros/scicos_scicos/scs_full_path.sci
scilab/modules/scicos/macros/scicos_scicos/setvalue.sci
scilab/modules/scicos/macros/scicos_scicos/split_lasterror.sci
scilab/modules/scicos/macros/scicos_scicos/standard_etiquette.sci
scilab/modules/scicos/macros/scicos_scicos/tk_getvalue.sci
scilab/modules/scicos/macros/scicos_scicos/tk_message.sci
scilab/modules/scicos/macros/scicos_scicos/validvar.sci
scilab/modules/scicos/sci_gateway/c/gw_cscicos.c
scilab/modules/scicos/sci_gateway/c/gw_scicos.c
scilab/modules/scicos/sci_gateway/c/sci_buildouttb.c
scilab/modules/scicos/sci_gateway/c/sci_ctree2.c
scilab/modules/scicos/sci_gateway/c/sci_ctree3.c
scilab/modules/scicos/sci_gateway/c/sci_ctree4.c
scilab/modules/scicos/sci_gateway/c/sci_curblock.c
scilab/modules/scicos/sci_gateway/c/sci_curblockc.c
scilab/modules/scicos/sci_gateway/c/sci_diffobjs.c
scilab/modules/scicos/sci_gateway/c/sci_duplicate.c
scilab/modules/scicos/sci_gateway/c/sci_end_scicosim.c
scilab/modules/scicos/sci_gateway/c/sci_getblocklabel.c
scilab/modules/scicos/sci_gateway/c/sci_getscicosvars.c
scilab/modules/scicos/sci_gateway/c/sci_permutobj.c
scilab/modules/scicos/sci_gateway/c/sci_phase_simulation.c
scilab/modules/scicos/sci_gateway/c/sci_pointer_xproperty.c
scilab/modules/scicos/sci_gateway/c/sci_sci_tree2.c
scilab/modules/scicos/sci_gateway/c/sci_sci_tree3.c
scilab/modules/scicos/sci_gateway/c/sci_sci_tree4.c
scilab/modules/scicos/sci_gateway/c/sci_scicos_debug.c
scilab/modules/scicos/sci_gateway/c/sci_scicos_debug_count.c
scilab/modules/scicos/sci_gateway/c/sci_scicos_time.c
scilab/modules/scicos/sci_gateway/c/sci_scicosim.c
scilab/modules/scicos/sci_gateway/c/sci_sctree.c
scilab/modules/scicos/sci_gateway/c/sci_set_blockerror.c
scilab/modules/scicos/sci_gateway/c/sci_set_xproperty.c
scilab/modules/scicos/sci_gateway/c/sci_var2vec.c
scilab/modules/scicos/sci_gateway/c/sci_vec2var.c
scilab/modules/scicos/sci_gateway/c/sci_xstringb2.c
scilab/modules/scicos/sci_gateway/fortran/sci_ctree.f
scilab/modules/scicos/sci_gateway/fortran/sci_curblock.f
scilab/modules/scicos/sci_gateway/fortran/sci_debug_count.f
scilab/modules/scicos/sci_gateway/fortran/sci_getblocklabel.f
scilab/modules/scicos/sci_gateway/fortran/sci_scicos_debug.f
scilab/modules/scicos/sci_gateway/fortran/sci_tree2.f
scilab/modules/scicos/sci_gateway/fortran/sci_tree3.f
scilab/modules/scicos/sci_gateway/fortran/sci_tree4.f
scilab/modules/scicos/sci_gateway/fortran/sci_var2vec.f
scilab/modules/scicos/sci_gateway/fortran/sci_vec2var.f
scilab/modules/scicos/src/c/ExistScicos.c
scilab/modules/scicos/src/c/haltscicos.c
scilab/modules/scicos/src/c/scicos-def.h
scilab/modules/scicos/src/fortran/Output_stream_Import.def
scilab/modules/scicos/src/modelica_compiler/Modelicac.vcproj
scilab/modules/scicos/src/modelica_compiler/causalityGraph.mli
scilab/modules/scicos/src/modelica_compiler/makefile.mak
scilab/modules/scicos/src/scicos_sundials/scicos_sundials.vcproj
scilab/modules/scicos/src/scicos_sundials/scicos_sundials_header.def
scilab/modules/scicos_blocks/etc/scicos_blocks.quit
scilab/modules/scicos_blocks/etc/scicos_blocks.start
scilab/modules/scicos_blocks/includes/blocks.h.vc
scilab/modules/scicos_blocks/license.txt
scilab/modules/scicos_blocks/macros/Electrical/CCS.sci
scilab/modules/scicos_blocks/macros/Electrical/CVS.sci
scilab/modules/scicos_blocks/macros/Electrical/Gyrator.sci
scilab/modules/scicos_blocks/macros/Electrical/IdealTransformer.sci
scilab/modules/scicos_blocks/macros/Electrical/NPN.sci
scilab/modules/scicos_blocks/macros/Electrical/PNP.sci
scilab/modules/scicos_blocks/macros/Misc/MBLOCK.sci
scilab/modules/scicos_blocks/macros/PDE/CFORTREDP.sci
scilab/modules/scicos_blocks/macros/PDE/Disc2_5_FVM1d.sci
scilab/modules/scicos_blocks/macros/PDE/Disc_diff_oper2.sci
scilab/modules/scicos_blocks/macros/PDE/Disc_diff_oper45.sci
scilab/modules/scicos_blocks/macros/PDE/IHM_EDP.sci
scilab/modules/scicos_blocks/macros/PDE/PDE.sci
scilab/modules/scicos_blocks/macros/PDE/addf_mat.sci
scilab/modules/scicos_blocks/macros/PDE/addfv.sci
scilab/modules/scicos_blocks/macros/PDE/arbre_decision.sci
scilab/modules/scicos_blocks/macros/PDE/assemb.sci
scilab/modules/scicos_blocks/macros/PDE/assemblage_FE1D.sci
scilab/modules/scicos_blocks/macros/PDE/cformatlinedp.sci
scilab/modules/scicos_blocks/macros/PDE/code_generation.sci
scilab/modules/scicos_blocks/macros/PDE/coef_FEM1d.sci
scilab/modules/scicos_blocks/macros/PDE/elemoper.sci
scilab/modules/scicos_blocks/macros/PDE/eval_pts_EF.sci
scilab/modules/scicos_blocks/macros/PDE/eval_pts_df.sci
scilab/modules/scicos_blocks/macros/PDE/eval_pts_vf.sci
scilab/modules/scicos_blocks/macros/PDE/extraction_infos.sci
scilab/modules/scicos_blocks/macros/PDE/formkf.sci
scilab/modules/scicos_blocks/macros/PDE/gen_code_FDM.sci
scilab/modules/scicos_blocks/macros/PDE/gen_code_FEM.sci
scilab/modules/scicos_blocks/macros/PDE/gen_code_FVM.sci
scilab/modules/scicos_blocks/macros/PDE/lecture_xml.sci
scilab/modules/scicos_blocks/macros/PDE/maillage_FE1D.sci
scilab/modules/scicos_blocks/macros/PDE/msprintfv.sci
scilab/modules/scicos_blocks/macros/PDE/mulf3.sci
scilab/modules/scicos_blocks/macros/PDE/mulf3v.sci
scilab/modules/scicos_blocks/macros/PDE/mulf_string.sci
scilab/modules/scicos_blocks/macros/PDE/mulfstring.sci
scilab/modules/scicos_blocks/macros/PDE/mulfv.sci
scilab/modules/scicos_blocks/macros/PDE/multMatVect.sci
scilab/modules/scicos_blocks/macros/PDE/multVectStr.sci
scilab/modules/scicos_blocks/macros/PDE/nombre_etats.sci
scilab/modules/scicos_blocks/macros/PDE/setint.sci
scilab/modules/scicos_blocks/macros/PDE/setvalue_IHM-PDE.sci
scilab/modules/scicos_blocks/macros/PDE/shape.sci
scilab/modules/scicos_blocks/macros/PDE/subf_mat.sci
scilab/modules/scicos_blocks/macros/PDE/subfv.sci
scilab/modules/scicos_blocks/macros/PDE/translate.sci
scilab/modules/scicos_blocks/macros/PDE/unimesh1D.sci
scilab/modules/scicos_blocks/macros/Sinks/TOWS_c.sci
scilab/modules/scicos_blocks/macros/Sinks/WFILE.sci
scilab/modules/scicos_blocks/macros/Sources/CURVE_c.sci
scilab/modules/scicos_blocks/macros/Sources/SLIDER_f.sci
scilab/modules/scicos_blocks/macros/Sources/TKSCALE.sci
scilab/modules/scicos_blocks/scicos_blocks.iss
scilab/modules/scicos_blocks/src/c/LibScilab_Import.def
scilab/modules/scicos_blocks/src/c/Linear_algebra_f_Import.def
scilab/modules/scicos_blocks/src/c/Output_stream_Import.def
scilab/modules/scicos_blocks/src/c/Render_Import.def
scilab/modules/scicos_blocks/src/c/Scicos_Import.def
scilab/modules/scicos_blocks/src/c/String_Import.def
scilab/modules/scicos_blocks/src/c/cumsum_c.c
scilab/modules/scicos_blocks/src/c/cumsum_r.c
scilab/modules/scicos_blocks/src/c/cumsumz_c.c
scilab/modules/scicos_blocks/src/c/cumsumz_r.c
scilab/modules/scicos_blocks/src/c/expblk_m.c
scilab/modules/scicos_blocks/src/c/fileio_Import.def
scilab/modules/scicos_blocks/src/c/graphics_Import.def
scilab/modules/scicos_blocks/src/c/mat_sqrt.c
scilab/modules/scicos_blocks/src/c/mat_sumc.c
scilab/modules/scicos_blocks/src/c/mat_suml.c
scilab/modules/scicos_blocks/src/c/matmul2_m.c
scilab/modules/scicos_blocks/src/c/matmul_m.c
scilab/modules/scicos_blocks/src/c/mattran_m.c
scilab/modules/scicos_blocks/src/c/matz_sqrt.c
scilab/modules/scicos_blocks/src/c/matz_sumc.c
scilab/modules/scicos_blocks/src/c/matz_suml.c
scilab/modules/scicos_blocks/src/c/scicos_blocks.vcproj
scilab/modules/scicos_blocks/src/c/scicos_blocks_f_Import.def
scilab/modules/scicos_blocks/src/c/scicos_blocks_header.def
scilab/modules/scicos_blocks/src/fortran/LibScilab_Import.def
scilab/modules/scicos_blocks/src/fortran/Output_stream_Import.def
scilab/modules/scicos_blocks/src/fortran/Scicos_f_Import.def
scilab/modules/scicos_blocks/src/fortran/String_Import.def
scilab/modules/scicos_blocks/src/fortran/scicos_blocks_f.vfproj
scilab/modules/scicos_blocks/src/fortran/scicos_blocks_f_header.def
scilab/modules/scicos_blocks/version.xml
scilab/modules/string/includes/stricmp.h

index ee72a7a..40f9abc 100644 (file)
@@ -1,40 +1,40 @@
-/* Copyright Inria/Enpc */\r
-\r
-/*********************************************\r
- *     external fonction for ode \r
- *     input variables n, t, y \r
- *     n = dimension of state vector y \r
- *     t = time \r
- *     y = state variable \r
- *     output variable = ydot \r
- *    ================================\r
- *     external routine must \r
- *     load ydot[0] with d/dt ( y(1)(t) ) \r
- *          ydot[1] with d/dt ( y(2)(t) ) \r
- *          ... \r
- *     i.e. ydot vector of derivative of state y \r
- *    ================================\r
- *     With dynamic link: \r
- *     link('ext10c.o','ext10c','C') \r
- *    ================================\r
- *     passing a parameter to ext6 routine by a list: \r
- *     -->param=[0.04,10000,3d+7]; \r
- *     -->y=ode([1;0;0],0,[0.4,4],list('ext10c',param)) \r
- *     param is retrieved in ext6 by: \r
- *     param[0]=y[ *n ] , param[1]=y[ *n + 1] etc \r
- *     with this calling sequence y is a n+np vector \r
- *     where np=dimension of scilab variable param \r
- *********************************************/\r
-\r
-int ext10c(int *n, double *t, double *y, double *ydot)\r
-{\r
-  static double param[3];\r
-  param[0] = y[*n + 0];\r
-  param[1] = y[*n + 1];\r
-  param[2] = y[*n + 2];\r
-  ydot[0] = -param[0] * y[0] + param[1] * y[1] * y[2];\r
-  ydot[2] = param[2] * y[1] * y[1];\r
-  ydot[1] = -ydot[0] - ydot[2];\r
-  return(0);\r
-} \r
-\r
+/* Copyright Inria/Enpc */
+
+/*********************************************
+ *     external fonction for ode 
+ *     input variables n, t, y 
+ *     n = dimension of state vector y 
+ *     t = time 
+ *     y = state variable 
+ *     output variable = ydot 
+ *    ================================
+ *     external routine must 
+ *     load ydot[0] with d/dt ( y(1)(t) ) 
+ *          ydot[1] with d/dt ( y(2)(t) ) 
+ *          ... 
+ *     i.e. ydot vector of derivative of state y 
+ *    ================================
+ *     With dynamic link: 
+ *     link('ext10c.o','ext10c','C') 
+ *    ================================
+ *     passing a parameter to ext6 routine by a list: 
+ *     -->param=[0.04,10000,3d+7]; 
+ *     -->y=ode([1;0;0],0,[0.4,4],list('ext10c',param)) 
+ *     param is retrieved in ext6 by: 
+ *     param[0]=y[ *n ] , param[1]=y[ *n + 1] etc 
+ *     with this calling sequence y is a n+np vector 
+ *     where np=dimension of scilab variable param 
+ *********************************************/
+
+int ext10c(int *n, double *t, double *y, double *ydot)
+{
+  static double param[3];
+  param[0] = y[*n + 0];
+  param[1] = y[*n + 1];
+  param[2] = y[*n + 2];
+  ydot[0] = -param[0] * y[0] + param[1] * y[1] * y[2];
+  ydot[2] = param[2] * y[1] * y[1];
+  ydot[1] = -ydot[0] - ydot[2];
+  return(0);
+} 
+
index 32dfccf..e4ac05d 100644 (file)
@@ -1,23 +1,23 @@
-// Demo file for ext10c example \r
-\r
-// builder code for ext10c.c \r
-link_name = 'ext10c';    // functions to be added to the call table \r
-flag  = "c";            // ext10c is a C function \r
-files = ['ext10c.o' ];   // objects files for ext10c \r
-libs  = [];             // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext10c and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the ode function \r
-//passing a parameter to ext10c routine by a list:\r
-\r
-param=[0.04,10000,3d+7];    \r
-y=ode([1;0;0],0,[0.4,4],list('ext10c',param));\r
-\r
+// Demo file for ext10c example 
+
+// builder code for ext10c.c 
+link_name = 'ext10c';    // functions to be added to the call table 
+flag  = "c";            // ext10c is a C function 
+files = ['ext10c.o' ];   // objects files for ext10c 
+libs  = [];             // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext10c and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the ode function 
+//passing a parameter to ext10c routine by a list:
+
+param=[0.04,10000,3d+7];    
+y=ode([1;0;0],0,[0.4,4],list('ext10c',param));
+
index eac5e2e..3c4ef4f 100644 (file)
@@ -1,21 +1,21 @@
-      subroutine ext10f(neq, t, y, ydot)\r
-c     -------------------------------------------\r
-c     exemple with a call to readmat routine\r
-c     -->param=[0.04,10000,3d+7];\r
-c     -->link('ext10f.o','ext10f')\r
-c     -->y=ode([1;0;0],0,[0.4,4],'ext10f')\r
-c     param must be defined as a scilab variable\r
-c     Copyright Inria\r
-      double precision t, y, ydot, param\r
-      logical creadmat\r
-      dimension y(3), ydot(3), param(3)\r
-\r
-c     If "param" does not exists return else loads param\r
-      if(.not.creadmat('param'//char(0),m,n,param)) return\r
-c     ***********************************\r
-\r
-      ydot(1) = -param(1)*y(1) + param(2)*y(2)*y(3)\r
-      ydot(3) = param(3)*y(2)*y(2)\r
-      ydot(2) = -ydot(1) - ydot(3)\r
-      return\r
-      end\r
+      subroutine ext10f(neq, t, y, ydot)
+c     -------------------------------------------
+c     exemple with a call to readmat routine
+c     -->param=[0.04,10000,3d+7];
+c     -->link('ext10f.o','ext10f')
+c     -->y=ode([1;0;0],0,[0.4,4],'ext10f')
+c     param must be defined as a scilab variable
+c     Copyright Inria
+      double precision t, y, ydot, param
+      logical creadmat
+      dimension y(3), ydot(3), param(3)
+
+c     If "param" does not exists return else loads param
+      if(.not.creadmat('param'//char(0),m,n,param)) return
+c     ***********************************
+
+      ydot(1) = -param(1)*y(1) + param(2)*y(2)*y(3)
+      ydot(3) = param(3)*y(2)*y(2)
+      ydot(2) = -ydot(1) - ydot(3)
+      return
+      end
index 37a42db..69ede3d 100644 (file)
@@ -1,25 +1,25 @@
-// Demo file for ext10f example \r
-\r
-// builder code for ext10f.c \r
-link_name = 'ext10f';    // functions to be added to the call table \r
-flag  = "f";            // ext10f is a C function \r
-files = ['ext10f.o' ];   // objects files for ext10f \r
-libs  = [];             // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext10f and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the ode function \r
-//passing a parameter to ext10f routine by a list:\r
-\r
-param=[0.04,10000,3d+7];    \r
-y=ode([1;0;0],0,[0.4,4],list('ext10f',param));\r
-\r
-\r
-\r
+// Demo file for ext10f example 
+
+// builder code for ext10f.c 
+link_name = 'ext10f';    // functions to be added to the call table 
+flag  = "f";            // ext10f is a C function 
+files = ['ext10f.o' ];   // objects files for ext10f 
+libs  = [];             // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext10f and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the ode function 
+//passing a parameter to ext10f routine by a list:
+
+param=[0.04,10000,3d+7];    
+y=ode([1;0;0],0,[0.4,4],list('ext10f',param));
+
+
+
index 5dffc4d..aa43433 100644 (file)
@@ -1,22 +1,22 @@
-/* Copyright Inria/Enpc */\r
-\r
-#include "stack-c.h"\r
-\r
-/****************************************\r
- *     exemple with a call to ReadMatrix\r
- *     -->param=[0.04,10000,3d+7]; \r
- *     -->link('ext11c.o','ext11c','C')  \r
- *     -->y=ode([1;0;0],0,[0.4,4],'ext11c') \r
- *     param must be defined as a scilab variable \r
- *********************************/\r
-\r
-int ext11c(int *neq, double *t, double *y, double *ydot)\r
-{\r
-    static int m, n;\r
-    static double param[3];\r
-    ReadMatrix("param", &m, &n, param);\r
-    ydot[0] = -param[0] * y[0] + param[1] * y[1] * y[2];\r
-    ydot[2] = param[2] * y[1] * y[1];\r
-    ydot[1] = -ydot[0] - ydot[2];\r
-    return(0);\r
-}\r
+/* Copyright Inria/Enpc */
+
+#include "stack-c.h"
+
+/****************************************
+ *     exemple with a call to ReadMatrix
+ *     -->param=[0.04,10000,3d+7]; 
+ *     -->link('ext11c.o','ext11c','C')  
+ *     -->y=ode([1;0;0],0,[0.4,4],'ext11c') 
+ *     param must be defined as a scilab variable 
+ *********************************/
+
+int ext11c(int *neq, double *t, double *y, double *ydot)
+{
+    static int m, n;
+    static double param[3];
+    ReadMatrix("param", &m, &n, param);
+    ydot[0] = -param[0] * y[0] + param[1] * y[1] * y[2];
+    ydot[2] = param[2] * y[1] * y[1];
+    ydot[1] = -ydot[0] - ydot[2];
+    return(0);
+}
index 70bb38b..f9eb540 100644 (file)
@@ -1,24 +1,24 @@
-// Demo file for ext11c example \r
-\r
-// builder code for ext11c.c \r
-link_name = 'ext11c';    // functions to be added to the call table \r
-flag  = "c";            // ext11c is a C function \r
-files = ['ext11c.o' ];   // objects files for ext11c \r
-libs  = [];             // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext11c and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the ode function \r
-// Passing a parameter to argument funtion of ode\r
-\r
-param=[0.04,10000,3d+7];\r
-y=ode([1;0;0],0,[0.4,4],'ext11c')\r
-//param must be defined as a scilab variable upon calling ode\r
-\r
+// Demo file for ext11c example 
+
+// builder code for ext11c.c 
+link_name = 'ext11c';    // functions to be added to the call table 
+flag  = "c";            // ext11c is a C function 
+files = ['ext11c.o' ];   // objects files for ext11c 
+libs  = [];             // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext11c and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the ode function 
+// Passing a parameter to argument funtion of ode
+
+param=[0.04,10000,3d+7];
+y=ode([1;0;0],0,[0.4,4],'ext11c')
+//param must be defined as a scilab variable upon calling ode
+
index a168f99..baa882f 100644 (file)
@@ -1,30 +1,30 @@
-      subroutine ext11f(neq, t, y, ydot)\r
-c     -------------------------------------------\r
-c     same example with call to cmatptr\r
-c     param must be defined as a scilab variable\r
-c     exemple with a call to cmatptr function\r
-c     -->param=[0.04,10000,3d+7];\r
-c     -->link('ext11f.o','ext11f')\r
-c     -->y=ode([1;0;0],0,[0.4,4],'ext11f')\r
-c     Copyright Inria\r
-      double precision t, y, ydot\r
-      logical cmatptr\r
-      dimension y(3), ydot(3)\r
-c\r
-      include 'stack.h'\r
-c\r
-\r
-c     If variable 'param' exists gets its pointer in \r
-c     internal stack else return\r
-      if(.not.cmatptr('param'//char(0),m,n,lp)) return\r
-c     ********************************\r
-c     param entries are in stk(lp),stk(lp+1),stk(lp+2)\r
-c     i.e. param(1)= stk(lp), ...\r
-c     m,n = dimensions of param = 3,1 (or 1,3 if row v.)\r
-\r
-c     (note that vector param not used in this example)\r
-      ydot(1) = -stk(lp)*y(1) + stk(lp+1)*y(2)*y(3)\r
-      ydot(3) = stk(lp+2)*y(2)*y(2)\r
-      ydot(2) = -ydot(1) - ydot(3)\r
-      return\r
-      end\r
+      subroutine ext11f(neq, t, y, ydot)
+c     -------------------------------------------
+c     same example with call to cmatptr
+c     param must be defined as a scilab variable
+c     exemple with a call to cmatptr function
+c     -->param=[0.04,10000,3d+7];
+c     -->link('ext11f.o','ext11f')
+c     -->y=ode([1;0;0],0,[0.4,4],'ext11f')
+c     Copyright Inria
+      double precision t, y, ydot
+      logical cmatptr
+      dimension y(3), ydot(3)
+c
+      include 'stack.h'
+c
+
+c     If variable 'param' exists gets its pointer in 
+c     internal stack else return
+      if(.not.cmatptr('param'//char(0),m,n,lp)) return
+c     ********************************
+c     param entries are in stk(lp),stk(lp+1),stk(lp+2)
+c     i.e. param(1)= stk(lp), ...
+c     m,n = dimensions of param = 3,1 (or 1,3 if row v.)
+
+c     (note that vector param not used in this example)
+      ydot(1) = -stk(lp)*y(1) + stk(lp+1)*y(2)*y(3)
+      ydot(3) = stk(lp+2)*y(2)*y(2)
+      ydot(2) = -ydot(1) - ydot(3)
+      return
+      end
index 2e7c7a7..eb4e23d 100644 (file)
@@ -1,25 +1,25 @@
-/* Copyright Inria/Enpc */\r
-#include "stack-c.h"\r
-\r
-/****************************************\r
- *     same example with call to GetMatrixptr \r
- *     param must be defined as a scilab variable \r
- *     exemple with a call to matptr routine \r
- *     -->param=[0.04,10000,3d+7];         \r
- *     -->link('ext12c.o','ext12c','C');     \r
- *     -->y=ode([1;0;0],0,[0.4,4],'ext12c') \r
- *     *************************** \r
- *     param entries are in stk(lp),stk(lp+1),stk(lp+2) \r
- *     m,n = dimensions of param = 3,1 (or 1,3 if row v.) \r
- *     (note that vector param not used in this example) \r
- ****************************************/\r
-\r
-int ext12c(int *neq, double *t, double *y, double *ydot)\r
-{\r
-  static int m, n, lp;\r
-  GetMatrixptr("param", &m, &n, &lp);\r
-  ydot[0] = - (*stk(lp)) * y[0] + (*stk(lp+1)) * y[1] * y[2];\r
-  ydot[2] = (*stk(lp + 2)) * y[1] * y[1];\r
-  ydot[1] = -ydot[0] - ydot[2];\r
-  return 0;\r
-}\r
+/* Copyright Inria/Enpc */
+#include "stack-c.h"
+
+/****************************************
+ *     same example with call to GetMatrixptr 
+ *     param must be defined as a scilab variable 
+ *     exemple with a call to matptr routine 
+ *     -->param=[0.04,10000,3d+7];         
+ *     -->link('ext12c.o','ext12c','C');     
+ *     -->y=ode([1;0;0],0,[0.4,4],'ext12c') 
+ *     *************************** 
+ *     param entries are in stk(lp),stk(lp+1),stk(lp+2) 
+ *     m,n = dimensions of param = 3,1 (or 1,3 if row v.) 
+ *     (note that vector param not used in this example) 
+ ****************************************/
+
+int ext12c(int *neq, double *t, double *y, double *ydot)
+{
+  static int m, n, lp;
+  GetMatrixptr("param", &m, &n, &lp);
+  ydot[0] = - (*stk(lp)) * y[0] + (*stk(lp+1)) * y[1] * y[2];
+  ydot[2] = (*stk(lp + 2)) * y[1] * y[1];
+  ydot[1] = -ydot[0] - ydot[2];
+  return 0;
+}
index cad6029..756ec63 100644 (file)
@@ -1,25 +1,25 @@
-// Demo file for ext12c example \r
-\r
-// builder code for ext12c.c \r
-link_name = 'ext12c';    // functions to be added to the call table \r
-flag  = "c";            // ext12c is a C function \r
-files = ['ext12c.o' ];   // objects files for ext12c \r
-libs  = [];             // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext12c and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the ode function \r
-//same example as # 10 with call to matptr\r
-//param must be defined as a scilab variable\r
-\r
-param=[0.04,10000,3d+7];\r
-y=ode([1;0;0],0,[0.4,4],'ext12c');\r
-\r
-\r
+// Demo file for ext12c example 
+
+// builder code for ext12c.c 
+link_name = 'ext12c';    // functions to be added to the call table 
+flag  = "c";            // ext12c is a C function 
+files = ['ext12c.o' ];   // objects files for ext12c 
+libs  = [];             // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext12c and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the ode function 
+//same example as # 10 with call to matptr
+//param must be defined as a scilab variable
+
+param=[0.04,10000,3d+7];
+y=ode([1;0;0],0,[0.4,4],'ext12c');
+
+
index c34506d..6fbe408 100644 (file)
@@ -1,14 +1,14 @@
-      subroutine ext12if(n,a)\r
-c     Copyright Inria\r
-      common/cmntest/b(10)\r
-      real a(*)\r
-      do 1 k=1,max(n,10)\r
- 1       b(k)=a(k)\r
-      end\r
-      subroutine ext12of(n,c)\r
-      common/cmntest/b(10)\r
-      real c(*)\r
-      do 1 k=1,max(n,10)\r
- 1    c(k)=b(k)\r
-      end\r
-\r
+      subroutine ext12if(n,a)
+c     Copyright Inria
+      common/cmntest/b(10)
+      real a(*)
+      do 1 k=1,max(n,10)
+ 1       b(k)=a(k)
+      end
+      subroutine ext12of(n,c)
+      common/cmntest/b(10)
+      real c(*)
+      do 1 k=1,max(n,10)
+ 1    c(k)=b(k)
+      end
+
index 3a10ab9..108dc2f 100644 (file)
@@ -1,29 +1,29 @@
-/* Copyright Inria/Enpc */\r
-\r
-struct {\r
-    float b[10];\r
-} cmntest;\r
-\r
-#define Max(x,y)        (((x)>(y))?(x):(y))\r
-\r
-int ext13ic(int *n, float *a)\r
-{\r
-  int i1;\r
-  static int k;\r
-  i1 = Max(*n,10);\r
-  for (k = 0; k < i1; ++k) {\r
-    cmntest.b[k] = a[k];\r
-  }\r
-} \r
-\r
-int ext13oc(int *n, float *c)\r
-{\r
-  int i1;\r
-  static int k;\r
-  i1 = Max(*n,10);\r
-  for (k = 0; k < i1; ++k) {\r
-    c[k] = cmntest.b[k];\r
-  }\r
-} \r
-\r
-\r
+/* Copyright Inria/Enpc */
+
+struct {
+    float b[10];
+} cmntest;
+
+#define Max(x,y)        (((x)>(y))?(x):(y))
+
+int ext13ic(int *n, float *a)
+{
+  int i1;
+  static int k;
+  i1 = Max(*n,10);
+  for (k = 0; k < i1; ++k) {
+    cmntest.b[k] = a[k];
+  }
+} 
+
+int ext13oc(int *n, float *c)
+{
+  int i1;
+  static int k;
+  i1 = Max(*n,10);
+  for (k = 0; k < i1; ++k) {
+    c[k] = cmntest.b[k];
+  }
+} 
+
+
index db30492..72be51e 100644 (file)
@@ -1,28 +1,28 @@
-// Demo file for ext13c example \r
-\r
-// builder code for ext13c.c \r
-// functions to be added to the call table \r
-link_name = ['ext13ic','ext13oc']; \r
-flag  = "c";            // ext13c is a C function \r
-files = ['ext13c.o' ];   // objects files for ext13c \r
-libs  = [];             // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext13c and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-//sharing common data\r
-\r
-a=1:10;\r
-n=10;a=1:10;\r
-call('ext13ic',n,1,'i',a,2,'r','out',2);  //loads b with a\r
-c=call('ext13oc',n,1,'i','out',[1,10],2,'r');  //loads c with b\r
-if norm(c-a) > %eps then pause,end\r
-\r
-\r
+// Demo file for ext13c example 
+
+// builder code for ext13c.c 
+// functions to be added to the call table 
+link_name = ['ext13ic','ext13oc']; 
+flag  = "c";            // ext13c is a C function 
+files = ['ext13c.o' ];   // objects files for ext13c 
+libs  = [];             // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext13c and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+//sharing common data
+
+a=1:10;
+n=10;a=1:10;
+call('ext13ic',n,1,'i',a,2,'r','out',2);  //loads b with a
+c=call('ext13oc',n,1,'i','out',[1,10],2,'r');  //loads c with b
+if norm(c-a) > %eps then pause,end
+
+
index e6d21e6..eb47a83 100644 (file)
@@ -1,51 +1,51 @@
-\r
-c     Copyright INRIA\r
-      subroutine ext13fi(fname)\r
-      character*(*) fname\r
-      logical getrhsvar, createvar,  putlhsvar\r
-      include 'stack.h'\r
-c\r
-      nbvars=0\r
-      minrhs=3\r
-      maxrhs=3\r
-      minlhs=1\r
-      maxlhs=1\r
-c\r
-      if(.not.((rhs.ge.minrhs).and.(rhs.le.maxrhs))) then\r
-         call erro('wrong number of rhs arguments')\r
-         return\r
-      endif\r
-      if(.not.((lhs.ge.minlhs).and.(lhs.le.maxlhs))) then\r
-         call erro('wrong number of lhs arguments')\r
-         return\r
-      endif\r
-c     \r
-c     when using fort the first parameter is the function name \r
-      if(.not.getrhsvar(1,'c',m1,n1,l1)) return\r
-      if(.not.getrhsvar(2,'d',m2,n2,l2)) return\r
-      if(.not.getrhsvar(3,'d',m3,n3,l3)) return\r
-      if(m2*n2.ne.m3*n3) then \r
-         call erro('incompatible arguments ')\r
-         return\r
-      endif\r
-c\r
-      if(.not.createvar(4,'d',m2,n2,l4)) return\r
-c\r
-      call ext14f(n2*m2,stk(l2),stk(l3),stk(l4))\r
-      lhsvar(1)=4\r
-      if(.not.putlhsvar()) return\r
-      end\r
-\r
-\r
-      subroutine ext13f(n,a,b,c)\r
-c     (very) simple example 1\r
-c     -->link('ext1f.o','ext1f');\r
-c     -->a=[1,2,3];b=[4,5,6];n=3;\r
-c     -->c=fort('ext1f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d')\r
-c     c=a+b\r
-      double precision a(*),b(*),c(*)\r
-      do 1 k=1,n\r
-         c(k)=a(k)+b(k)\r
- 1    continue\r
-      return\r
-      end\r
+
+c     Copyright INRIA
+      subroutine ext13fi(fname)
+      character*(*) fname
+      logical getrhsvar, createvar,  putlhsvar
+      include 'stack.h'
+c
+      nbvars=0
+      minrhs=3
+      maxrhs=3
+      minlhs=1
+      maxlhs=1
+c
+      if(.not.((rhs.ge.minrhs).and.(rhs.le.maxrhs))) then
+         call erro('wrong number of rhs arguments')
+         return
+      endif
+      if(.not.((lhs.ge.minlhs).and.(lhs.le.maxlhs))) then
+         call erro('wrong number of lhs arguments')
+         return
+      endif
+c     
+c     when using fort the first parameter is the function name 
+      if(.not.getrhsvar(1,'c',m1,n1,l1)) return
+      if(.not.getrhsvar(2,'d',m2,n2,l2)) return
+      if(.not.getrhsvar(3,'d',m3,n3,l3)) return
+      if(m2*n2.ne.m3*n3) then 
+         call erro('incompatible arguments ')
+         return
+      endif
+c
+      if(.not.createvar(4,'d',m2,n2,l4)) return
+c
+      call ext14f(n2*m2,stk(l2),stk(l3),stk(l4))
+      lhsvar(1)=4
+      if(.not.putlhsvar()) return
+      end
+
+
+      subroutine ext13f(n,a,b,c)
+c     (very) simple example 1
+c     -->link('ext1f.o','ext1f');
+c     -->a=[1,2,3];b=[4,5,6];n=3;
+c     -->c=fort('ext1f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d')
+c     c=a+b
+      double precision a(*),b(*),c(*)
+      do 1 k=1,n
+         c(k)=a(k)+b(k)
+ 1    continue
+      return
+      end
index 1ecf2df..0fbd891 100644 (file)
@@ -1,49 +1,49 @@
-/* Copyright Inria/Enpc */\r
-\r
-/************************************\r
- *     (very) simple example 1 \r
- *     with a C wrapper \r
- *     -->link('ext1c.o','ext1cI','C'); \r
- *     -->a=[1,2,3];b=[4,5,6];n=3; \r
- *     -->c=fort('ext1cI',n,a,b)\r
- *     c=a+b \r
- ************************************/\r
-\r
-#include "stack-c.h"\r
-\r
-int ext14cI(char *fname)\r
-{ \r
-  int m1,n1,l1,m2,n2,l2,m3,n3,l3,n,l4;\r
-  int minlhs=1, minrhs=3, maxlhs=1, maxrhs=3;\r
-  Nbvars = 0;\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-  GetRhsVar( 1,STRING_DATATYPE, &m1, &n1, &l1);\r
-  GetRhsVar( 2,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);\r
-  GetRhsVar( 3,MATRIX_OF_DOUBLE_DATATYPE, &m3, &n3, &l3);\r
-  if ( m3*n3 != m2*n2) \r
-    {\r
-      sciprint("%s :Incompatible dimensions\n",fname);\r
-      Error(999); return(0);\r
-    }\r
-  CreateVar( 4,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l4);\r
-  n=m3*n3;\r
-  ext14c(&n,stk(l2),stk(l3),stk(l4));\r
-  LhsVar(1) = 4;\r
-  PutLhsVar();\r
-  return(0);\r
-}\r
-\r
-\r
-int ext14c(n, a, b, c)\r
-     int *n;\r
-     double *a, *b, *c;\r
-{   \r
-  int k;\r
-  for (k = 0; k < *n; ++k) \r
-    {\r
-      c[k] = a[k] + b[k];\r
-    }\r
-  return(0);\r
-}\r
-\r
+/* Copyright Inria/Enpc */
+
+/************************************
+ *     (very) simple example 1 
+ *     with a C wrapper 
+ *     -->link('ext1c.o','ext1cI','C'); 
+ *     -->a=[1,2,3];b=[4,5,6];n=3; 
+ *     -->c=fort('ext1cI',n,a,b)
+ *     c=a+b 
+ ************************************/
+
+#include "stack-c.h"
+
+int ext14cI(char *fname)
+{ 
+  int m1,n1,l1,m2,n2,l2,m3,n3,l3,n,l4;
+  int minlhs=1, minrhs=3, maxlhs=1, maxrhs=3;
+  Nbvars = 0;
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+  GetRhsVar( 1,STRING_DATATYPE, &m1, &n1, &l1);
+  GetRhsVar( 2,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);
+  GetRhsVar( 3,MATRIX_OF_DOUBLE_DATATYPE, &m3, &n3, &l3);
+  if ( m3*n3 != m2*n2) 
+    {
+      sciprint("%s :Incompatible dimensions\n",fname);
+      Error(999); return(0);
+    }
+  CreateVar( 4,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l4);
+  n=m3*n3;
+  ext14c(&n,stk(l2),stk(l3),stk(l4));
+  LhsVar(1) = 4;
+  PutLhsVar();
+  return(0);
+}
+
+
+int ext14c(n, a, b, c)
+     int *n;
+     double *a, *b, *c;
+{   
+  int k;
+  for (k = 0; k < *n; ++k) 
+    {
+      c[k] = a[k] + b[k];
+    }
+  return(0);
+}
+
index 19555ee..f85fcef 100644 (file)
@@ -1,26 +1,26 @@
-// Demo file for ext14c example \r
-\r
-// builder code for ext14c.c \r
-// functions to be added to the call table \r
-link_name = ['ext14cI']; \r
-flag  = "c";            // ext14c is a C function \r
-files = ['ext14c.o' ];   // objects files for ext14c \r
-libs  = [];             // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext14c and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-//(very) simple example 1\r
-\r
-a=[1,2,3];b=[4,5,6];n=3;\r
-c=call('ext14cI',a,b);\r
-if norm(c-(a+b)) > %eps then pause,end\r
-\r
-\r
+// Demo file for ext14c example 
+
+// builder code for ext14c.c 
+// functions to be added to the call table 
+link_name = ['ext14cI']; 
+flag  = "c";            // ext14c is a C function 
+files = ['ext14c.o' ];   // objects files for ext14c 
+libs  = [];             // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext14c and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+//(very) simple example 1
+
+a=[1,2,3];b=[4,5,6];n=3;
+c=call('ext14cI',a,b);
+if norm(c-(a+b)) > %eps then pause,end
+
+
index f354169..3b81268 100644 (file)
@@ -1,20 +1,20 @@
-/* Copyright Inria/Enpc */\r
-\r
-/************************************\r
- *     (very) simple example 1 \r
- *     -->link('ext1c.o','ext1c','C'); \r
- *     -->a=[1,2,3];b=[4,5,6];n=3; \r
- *     -->c=call('ext1c',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d') \r
- *     c=a+b \r
- ************************************/\r
-\r
-int ext1c(int *n, double *a, double *b,  double *c)\r
-{   \r
-  int k;\r
-  for (k = 0; k < *n; ++k) \r
-    {\r
-      c[k] = a[k] + b[k];\r
-    }\r
-  return(0);\r
-}\r
-\r
+/* Copyright Inria/Enpc */
+
+/************************************
+ *     (very) simple example 1 
+ *     -->link('ext1c.o','ext1c','C'); 
+ *     -->a=[1,2,3];b=[4,5,6];n=3; 
+ *     -->c=call('ext1c',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d') 
+ *     c=a+b 
+ ************************************/
+
+int ext1c(int *n, double *a, double *b,  double *c)
+{   
+  int k;
+  for (k = 0; k < *n; ++k) 
+    {
+      c[k] = a[k] + b[k];
+    }
+  return(0);
+}
+
index 8fb04db..9e6a36a 100644 (file)
@@ -1,29 +1,29 @@
-// Demo file for ext1c example \r
-\r
-// builder code for ext1c.c \r
-link_name = 'ext1c';    // functions to be added to the call table \r
-flag  = "c";           // ext1c is a C function \r
-files = ['ext1c.o' ];   // objects files for ext1c \r
-libs  = [];            // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext1c and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-//(very) simple example 1\r
-\r
-a=[1,2,3];b=[4,5,6];n=3;\r
-c=call('ext1c',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');\r
-if norm(c-(a+b)) > %eps then pause,end\r
-\r
-\r
-\r
-\r
-\r
-\r
+// Demo file for ext1c example 
+
+// builder code for ext1c.c 
+link_name = 'ext1c';    // functions to be added to the call table 
+flag  = "c";           // ext1c is a C function 
+files = ['ext1c.o' ];   // objects files for ext1c 
+libs  = [];            // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext1c and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+//(very) simple example 1
+
+a=[1,2,3];b=[4,5,6];n=3;
+c=call('ext1c',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
+if norm(c-(a+b)) > %eps then pause,end
+
+
+
+
+
+
index 1a11da4..9e14d8f 100644 (file)
@@ -1,13 +1,13 @@
-      subroutine ext1f(n,a,b,c)\r
-c     (very) simple example 1\r
-c     -->link('ext1f.o','ext1f');\r
-c     -->a=[1,2,3];b=[4,5,6];n=3;\r
-c     -->c=call('ext1f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d')\r
-c     c=a+b\r
-c     Copyright Inria/Enpc\r
-      double precision a(*),b(*),c(*)\r
-      do 1 k=1,n\r
-         c(k)=a(k)+b(k)\r
- 1    continue\r
-      return\r
-      end\r
+      subroutine ext1f(n,a,b,c)
+c     (very) simple example 1
+c     -->link('ext1f.o','ext1f');
+c     -->a=[1,2,3];b=[4,5,6];n=3;
+c     -->c=call('ext1f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d')
+c     c=a+b
+c     Copyright Inria/Enpc
+      double precision a(*),b(*),c(*)
+      do 1 k=1,n
+         c(k)=a(k)+b(k)
+ 1    continue
+      return
+      end
index 59a1f99..d822782 100644 (file)
@@ -1,24 +1,24 @@
-// Demo file for ext1f example \r
-\r
-// builder code for ext1f.c \r
-link_name = 'ext1f';    // functions to be added to the call table \r
-flag  = "f";           // ext1f is a C function \r
-files = ['ext1f.o' ];   // objects files for ext1f \r
-libs  = [];            // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext1f and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-//(very) simple example 1\r
-\r
-a=[1,2,3];b=[4,5,6];n=3;\r
-c=call('ext1f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');\r
-if norm(c-(a+b)) > %eps then pause,end\r
-\r
+// Demo file for ext1f example 
+
+// builder code for ext1f.c 
+link_name = 'ext1f';    // functions to be added to the call table 
+flag  = "f";           // ext1f is a C function 
+files = ['ext1f.o' ];   // objects files for ext1f 
+libs  = [];            // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext1f and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+//(very) simple example 1
+
+a=[1,2,3];b=[4,5,6];n=3;
+c=call('ext1f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
+if norm(c-(a+b)) > %eps then pause,end
+
index afa6686..fa9c442 100644 (file)
@@ -1,20 +1,20 @@
-/* Copyright Inria/Enpc */\r
-\r
-/************************************\r
- *     simple example 2 (using sin and cos) \r
- *     -->link('ext2c.o','ext2c','C'); \r
- *     -->a=[1,2,3];b=[4,5,6];n=3; \r
- *     -->c=call('ext2c',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d') \r
- *     -->c=sin(a)+cos(b) \r
- ************************************/\r
-\r
-#include <math.h>\r
-\r
-int ext2c(int *n, double *a, double *b, double *c)\r
-{\r
-    static int k;\r
-    for (k = 0; k < *n; ++k) {\r
-       c[k] = sin(a[k]) + cos(b[k]);\r
-    }\r
-    return(0);\r
-} \r
+/* Copyright Inria/Enpc */
+
+/************************************
+ *     simple example 2 (using sin and cos) 
+ *     -->link('ext2c.o','ext2c','C'); 
+ *     -->a=[1,2,3];b=[4,5,6];n=3; 
+ *     -->c=call('ext2c',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d') 
+ *     -->c=sin(a)+cos(b) 
+ ************************************/
+
+#include <math.h>
+
+int ext2c(int *n, double *a, double *b, double *c)
+{
+    static int k;
+    for (k = 0; k < *n; ++k) {
+       c[k] = sin(a[k]) + cos(b[k]);
+    }
+    return(0);
+} 
index 3e10b3a..5554840 100644 (file)
@@ -1,22 +1,22 @@
-// Demo file for ext2c example \r
-\r
-// builder code for ext2c.c \r
-link_name = 'ext2c';    // functions to be added to the call table \r
-flag  = "c";           // ext2c is a C function \r
-files = ['ext2c.o' ];   // objects files for ext2c \r
-libs  = [];            // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext2c and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-\r
-a=[1,2,3];b=[4,5,6];n=3;\r
-c=call('ext2c',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');\r
-if norm(c-(sin(a)+cos(b))) > %eps then pause,end\r
+// Demo file for ext2c example 
+
+// builder code for ext2c.c 
+link_name = 'ext2c';    // functions to be added to the call table 
+flag  = "c";           // ext2c is a C function 
+files = ['ext2c.o' ];   // objects files for ext2c 
+libs  = [];            // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext2c and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+
+a=[1,2,3];b=[4,5,6];n=3;
+c=call('ext2c',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
+if norm(c-(sin(a)+cos(b))) > %eps then pause,end
index 4ffe0eb..0a8b6ad 100644 (file)
@@ -1,13 +1,13 @@
-      subroutine ext2f(n,a,b,c)\r
-c     simple example 2 (using sin and cos)\r
-c     -->link('ext2f.o','ext2f');\r
-c     -->a=[1,2,3];b=[4,5,6];n=3;\r
-c     -->c=call('ext2f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d')\r
-c     -->c=sin(a)+cos(b)\r
-c     Copyright Inria/Enpc\r
-      double precision a(*),b(*),c(*)\r
-      do 1 k=1,n\r
-         c(k)=sin(a(k))+cos(b(k))\r
- 1    continue\r
-      return\r
-      end\r
+      subroutine ext2f(n,a,b,c)
+c     simple example 2 (using sin and cos)
+c     -->link('ext2f.o','ext2f');
+c     -->a=[1,2,3];b=[4,5,6];n=3;
+c     -->c=call('ext2f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d')
+c     -->c=sin(a)+cos(b)
+c     Copyright Inria/Enpc
+      double precision a(*),b(*),c(*)
+      do 1 k=1,n
+         c(k)=sin(a(k))+cos(b(k))
+ 1    continue
+      return
+      end
index f6d4ff7..48faecc 100644 (file)
@@ -1,22 +1,22 @@
-// Demo file for ext2f example \r
-\r
-// builder code for ext2f.c \r
-link_name = 'ext2f';    // functions to be added to the call table \r
-flag  = "f";           // ext2f is a C function \r
-files = ['ext2f.o' ];   // objects files for ext2f \r
-libs  = [];            // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext2f and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-\r
-a=[1,2,3];b=[4,5,6];n=3;\r
-c=call('ext2f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');\r
-if norm(c-(sin(a)+cos(b))) > %eps then pause,end\r
+// Demo file for ext2f example 
+
+// builder code for ext2f.c 
+link_name = 'ext2f';    // functions to be added to the call table 
+flag  = "f";           // ext2f is a C function 
+files = ['ext2f.o' ];   // objects files for ext2f 
+libs  = [];            // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext2f and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+
+a=[1,2,3];b=[4,5,6];n=3;
+c=call('ext2f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
+if norm(c-(sin(a)+cos(b))) > %eps then pause,end
index b09b2ff..a1ab4ae 100644 (file)
@@ -1,32 +1,32 @@
-/* Copyright Inria/Enpc */\r
-\r
-\r
-/************************************\r
- *     simple example 3 (passing a chain) \r
- * -->host('make /tmp/ext3c.o');\r
- * -->link('/tmp/ext3c.o','ext3c','C');\r
- * -->a=[1,2,3];b=[4,5,6];n=3;\r
- * -->c=call('ext3c','yes',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d') \r
- * -->c-(sin(a)+cos(b) )\r
- * -->c=call('ext3c','no',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d') \r
- * -->c-(a+b )\r
- ************************************/\r
-\r
-#include <math.h>\r
-#include <string.h>\r
-\r
-int ext3c(char *ch, int *n, double *a, double *b, double *c)\r
-{\r
-  static int k;\r
-  if (strcmp(ch, "yes") == 0) \r
-    {\r
-      for (k = 0; k < *n; ++k) \r
-       c[k] = sin(a[k]) + cos(b[k]);\r
-    } \r
-  else \r
-    {\r
-      for (k = 0; k < *n; ++k) \r
-       c[k] = a[k] + b[k];\r
-    }\r
-  return(0);\r
-} \r
+/* Copyright Inria/Enpc */
+
+
+/************************************
+ *     simple example 3 (passing a chain) 
+ * -->host('make /tmp/ext3c.o');
+ * -->link('/tmp/ext3c.o','ext3c','C');
+ * -->a=[1,2,3];b=[4,5,6];n=3;
+ * -->c=call('ext3c','yes',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d') 
+ * -->c-(sin(a)+cos(b) )
+ * -->c=call('ext3c','no',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d') 
+ * -->c-(a+b )
+ ************************************/
+
+#include <math.h>
+#include <string.h>
+
+int ext3c(char *ch, int *n, double *a, double *b, double *c)
+{
+  static int k;
+  if (strcmp(ch, "yes") == 0) 
+    {
+      for (k = 0; k < *n; ++k) 
+       c[k] = sin(a[k]) + cos(b[k]);
+    } 
+  else 
+    {
+      for (k = 0; k < *n; ++k) 
+       c[k] = a[k] + b[k];
+    }
+  return(0);
+} 
index 706d884..15f7164 100644 (file)
@@ -1,24 +1,24 @@
-// Demo file for ext3c example \r
-\r
-// builder code for ext3c.c \r
-link_name = 'ext3c';    // functions to be added to the call table \r
-flag  = "c";           // ext3c is a C function \r
-files = ['ext3c.o' ];   // objects files for ext3c \r
-libs  = [];            // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext3c and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-\r
-a=[1,2,3];b=[4,5,6];n=3;\r
-c=call('ext3c','yes',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d');\r
-if norm(c-(sin(a)+cos(b)))> %eps then pause,end\r
-c=call('ext3c','no',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d');\r
-if norm(c-(a+b)) > %eps then pause,end\r
+// Demo file for ext3c example 
+
+// builder code for ext3c.c 
+link_name = 'ext3c';    // functions to be added to the call table 
+flag  = "c";           // ext3c is a C function 
+files = ['ext3c.o' ];   // objects files for ext3c 
+libs  = [];            // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext3c and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+
+a=[1,2,3];b=[4,5,6];n=3;
+c=call('ext3c','yes',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d');
+if norm(c-(sin(a)+cos(b)))> %eps then pause,end
+c=call('ext3c','no',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d');
+if norm(c-(a+b)) > %eps then pause,end
index c0da710..484ad9b 100644 (file)
@@ -1,22 +1,22 @@
-      subroutine ext3f(ch,n,a,b,c)\r
-c     ----------------------------\r
-c     example 3 (passing a chain)\r
-c     -->link('ext3f.o','ext3f');\r
-c     -->a=[1,2,3];b=[4,5,6];n=3;\r
-c     -->c=call('ext3f','yes',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d')\r
-c     -->c=sin(a)+cos(b)\r
-c     -------------------------------------\r
-c     Copyright Inria/Enpc\r
-      double precision a(*),b(*),c(*)\r
-      character*(*) ch\r
-      if(ch(1:3).eq.'yes') then\r
-         do 1 k=1,n\r
-            c(k)=sin(a(k))+cos(b(k))\r
- 1       continue\r
-      else\r
-         do 2 k=1,n\r
-            c(k)=a(k)+b(k)\r
- 2       continue\r
-      endif\r
-      return\r
-      end\r
+      subroutine ext3f(ch,n,a,b,c)
+c     ----------------------------
+c     example 3 (passing a chain)
+c     -->link('ext3f.o','ext3f');
+c     -->a=[1,2,3];b=[4,5,6];n=3;
+c     -->c=call('ext3f','yes',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d')
+c     -->c=sin(a)+cos(b)
+c     -------------------------------------
+c     Copyright Inria/Enpc
+      double precision a(*),b(*),c(*)
+      character*(*) ch
+      if(ch(1:3).eq.'yes') then
+         do 1 k=1,n
+            c(k)=sin(a(k))+cos(b(k))
+ 1       continue
+      else
+         do 2 k=1,n
+            c(k)=a(k)+b(k)
+ 2       continue
+      endif
+      return
+      end
index 948a251..82cd47d 100644 (file)
@@ -1,26 +1,26 @@
-// Demo file for ext3f example \r
-\r
-// builder code for ext3f.c \r
-link_name = 'ext3f';    // functions to be added to the call table \r
-flag  = "f";           // ext3f is a C function \r
-files = ['ext3f.o' ];   // objects files for ext3f \r
-libs  = [];            // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext3f and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-//reading  vector with name='a' in scilab internal stack\r
-\r
-a=[1,2,3];b=[4,5,6];n=3;\r
-c=call('ext3f','yes',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d');\r
-if norm(c-(sin(a)+cos(b)))> %eps then pause,end\r
-c=call('ext3f','no',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d');\r
-if norm(c-(a+b)) > %eps then pause,end\r
-\r
+// Demo file for ext3f example 
+
+// builder code for ext3f.c 
+link_name = 'ext3f';    // functions to be added to the call table 
+flag  = "f";           // ext3f is a C function 
+files = ['ext3f.o' ];   // objects files for ext3f 
+libs  = [];            // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext3f and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+//reading  vector with name='a' in scilab internal stack
+
+a=[1,2,3];b=[4,5,6];n=3;
+c=call('ext3f','yes',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d');
+if norm(c-(sin(a)+cos(b)))> %eps then pause,end
+c=call('ext3f','no',1,'c',n,2,'i',a,3,'d',b,4,'d','out',[1,3],5,'d');
+if norm(c-(a+b)) > %eps then pause,end
+
index 8d3c300..349cad5 100644 (file)
@@ -1,47 +1,47 @@
-/* Copyright Inria/Enpc */\r
-#include <math.h>\r
-#include "stack-c.h"\r
-\r
-/************************************\r
- *     simple example 4 (reading a scilab chain) \r
- *     -->link('ext4c.o','ext4c','C'); \r
- *     -->a=[1,2,3];b=[4,5,6];n=3;YesOrNo='yes' \r
- *     -->c=call('ext4c',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d') \r
- *     -->c=sin(a)+cos(b) \r
- *     -->YesOrNo='no' \r
- *     -->c=a+b \r
- *     -->clear yes  --> undefined variable : yes \r
- ************************************/\r
-\r
-#define MAXCH 10\r
-\r
-int ext4c(int *n, double *a, double *b, double *c)\r
-{\r
-  int k;\r
-  char ch[MAXCH];\r
-  int lch=MAXCH;\r
-\r
-  /* We search a Scilab Object name YesOrNo \r
-   * check that it is a string \r
-   * and store the string in ch \r
-   * lch is used on entry to give the maximum number \r
-   * of characters which can be stored in ch \r
-   * After the call lch contains the number of \r
-   * copied characters\r
-   */\r
-\r
-  ReadString("YesOrNo", &lch, ch);\r
-  /******************************/\r
-  if (strcmp(ch, "yes") == 0) \r
-    {\r
-      for (k = 0; k < *n; ++k) \r
-       c[k] = sin(a[k]) + cos(b[k]);\r
-    } \r
-  else \r
-    {\r
-      for (k = 0; k < *n; ++k) \r
-       c[k] = a[k] + b[k];\r
-    }\r
-  return(0);\r
-}\r
-\r
+/* Copyright Inria/Enpc */
+#include <math.h>
+#include "stack-c.h"
+
+/************************************
+ *     simple example 4 (reading a scilab chain) 
+ *     -->link('ext4c.o','ext4c','C'); 
+ *     -->a=[1,2,3];b=[4,5,6];n=3;YesOrNo='yes' 
+ *     -->c=call('ext4c',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d') 
+ *     -->c=sin(a)+cos(b) 
+ *     -->YesOrNo='no' 
+ *     -->c=a+b 
+ *     -->clear yes  --> undefined variable : yes 
+ ************************************/
+
+#define MAXCH 10
+
+int ext4c(int *n, double *a, double *b, double *c)
+{
+  int k;
+  char ch[MAXCH];
+  int lch=MAXCH;
+
+  /* We search a Scilab Object name YesOrNo 
+   * check that it is a string 
+   * and store the string in ch 
+   * lch is used on entry to give the maximum number 
+   * of characters which can be stored in ch 
+   * After the call lch contains the number of 
+   * copied characters
+   */
+
+  ReadString("YesOrNo", &lch, ch);
+  /******************************/
+  if (strcmp(ch, "yes") == 0) 
+    {
+      for (k = 0; k < *n; ++k) 
+       c[k] = sin(a[k]) + cos(b[k]);
+    } 
+  else 
+    {
+      for (k = 0; k < *n; ++k) 
+       c[k] = a[k] + b[k];
+    }
+  return(0);
+}
+
index 8ad2ec9..30966f6 100644 (file)
@@ -1,27 +1,27 @@
-// Demo file for ext4c example \r
-\r
-// builder code for ext4c.c \r
-link_name = 'ext4c';    // functions to be added to the call table \r
-flag  = "c";           // ext4c is a C function \r
-files = ['ext4c.o' ];   // objects files for ext4c \r
-libs  = [];            // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext4c and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-\r
-a=[1,2,3];b=[4,5,6];n=3;YesOrNo='yes';\r
-c=call('ext4c',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');\r
-if norm(c-(sin(a)+cos(b))) > %eps then pause,end\r
-YesOrNo='no';\r
-c=call('ext4c',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');\r
-if norm(c-(a+b)) > %eps then pause,end\r
-//clear yes  --> undefined variable : yes\r
-\r
+// Demo file for ext4c example 
+
+// builder code for ext4c.c 
+link_name = 'ext4c';    // functions to be added to the call table 
+flag  = "c";           // ext4c is a C function 
+files = ['ext4c.o' ];   // objects files for ext4c 
+libs  = [];            // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext4c and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+
+a=[1,2,3];b=[4,5,6];n=3;YesOrNo='yes';
+c=call('ext4c',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
+if norm(c-(sin(a)+cos(b))) > %eps then pause,end
+YesOrNo='no';
+c=call('ext4c',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
+if norm(c-(a+b)) > %eps then pause,end
+//clear yes  --> undefined variable : yes
+
index 5234546..4be7467 100644 (file)
@@ -1,32 +1,32 @@
-      subroutine ext4f(n,a,b,c)\r
-c     example 4 (reading a chain)\r
-c     -->link('ext4f.o','ext4f');\r
-c     -->a=[1,2,3];b=[4,5,6];n=3;yes='yes'\r
-c     -->c=call('ext4f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d')\r
-c     -->c=sin(a)+cos(b)\r
-c     -->yes='no'\r
-c     -->c=a+b\r
-c     -->clear yes  --> undefined variable : yes\r
-c     Copyright Inria/Enpc\r
-      double precision a(*),b(*),c(*)\r
-      integer chmax\r
-      logical creadchain\r
-      parameter (chmax=10)\r
-      character ch*(chmax)\r
-\r
-c     If chain named yes exists reads it in ch else return\r
-      lch=chmax\r
-      if(.not.creadchain('yes'//char(0),lch,ch)) return\r
-c     *********************************     \r
-      if(ch(1:lch).eq.'yes') then\r
-         do 1 k=1,n\r
-            c(k)=sin(a(k))+cos(b(k))\r
- 1       continue\r
-      else\r
-         do 2 k=1,n\r
-            c(k)=a(k)+b(k)\r
- 2       continue\r
-      endif\r
-      return\r
-      end\r
-      \r
+      subroutine ext4f(n,a,b,c)
+c     example 4 (reading a chain)
+c     -->link('ext4f.o','ext4f');
+c     -->a=[1,2,3];b=[4,5,6];n=3;yes='yes'
+c     -->c=call('ext4f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d')
+c     -->c=sin(a)+cos(b)
+c     -->yes='no'
+c     -->c=a+b
+c     -->clear yes  --> undefined variable : yes
+c     Copyright Inria/Enpc
+      double precision a(*),b(*),c(*)
+      integer chmax
+      logical creadchain
+      parameter (chmax=10)
+      character ch*(chmax)
+
+c     If chain named yes exists reads it in ch else return
+      lch=chmax
+      if(.not.creadchain('yes'//char(0),lch,ch)) return
+c     *********************************     
+      if(ch(1:lch).eq.'yes') then
+         do 1 k=1,n
+            c(k)=sin(a(k))+cos(b(k))
+ 1       continue
+      else
+         do 2 k=1,n
+            c(k)=a(k)+b(k)
+ 2       continue
+      endif
+      return
+      end
+      
index 80f82a0..28823c9 100644 (file)
@@ -1,27 +1,27 @@
-// Demo file for ext4f example \r
-\r
-// builder code for ext4f.c \r
-link_name = 'ext4f';    // functions to be added to the call table \r
-flag  = "f";           // ext4f is a C function \r
-files = ['ext4f.o' ];   // objects files for ext4f \r
-libs  = [];            // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext4f and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-\r
-a=[1,2,3];b=[4,5,6];n=3;yes='yes';\r
-c=call('ext4f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');\r
-if norm(c-(sin(a)+cos(b))) > %eps then pause,end\r
-yes='no';\r
-c=call('ext4f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');\r
-if norm(c-(a+b)) > %eps then pause,end\r
-//clear yes  --> undefined variable : yes\r
-\r
+// Demo file for ext4f example 
+
+// builder code for ext4f.c 
+link_name = 'ext4f';    // functions to be added to the call table 
+flag  = "f";           // ext4f is a C function 
+files = ['ext4f.o' ];   // objects files for ext4f 
+libs  = [];            // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext4f and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+
+a=[1,2,3];b=[4,5,6];n=3;yes='yes';
+c=call('ext4f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
+if norm(c-(sin(a)+cos(b))) > %eps then pause,end
+yes='no';
+c=call('ext4f',n,1,'i',a,2,'d',b,3,'d','out',[1,3],4,'d');
+if norm(c-(a+b)) > %eps then pause,end
+//clear yes  --> undefined variable : yes
+
index 85baec1..c78ccf0 100644 (file)
@@ -1,24 +1,24 @@
-/* Copyright Inria/Enpc */\r
-#include "stack-c.h"\r
-\r
-/******************************************\r
- *     Example 5 \r
- *     reading a vector in scilab internal stack using ReadMatrix\r
- *     (see SCIDIR/system2/readmat.f) \r
- *     -->link('ext5c.o','ext5c','C') \r
- *     -->Amatrix=[1,2,3];b=[2,3,4]; \r
- *     -->c=call('ext5c',b,1,'d','out',[1,3],2,'d') \r
- *     -->c=Amatrix+2*b \r
- ******************************************/\r
-\r
-int ext5c(double *b, double *c)\r
-{ \r
-  static double a[3];\r
-  static int k, m, n;\r
-  ReadMatrix("Amatrix",&m, &n, a);\r
-  /*******************************/\r
-  /* [m,n]=size(Amatrix)  here m=1 n=3, a=Amatrix which must exist in Scilab*/\r
-  for (k = 0; k < n; ++k) \r
-    c[k] = a[k] + b[k] * 2.;\r
-  return(0);\r
-}\r
+/* Copyright Inria/Enpc */
+#include "stack-c.h"
+
+/******************************************
+ *     Example 5 
+ *     reading a vector in scilab internal stack using ReadMatrix
+ *     (see SCIDIR/system2/readmat.f) 
+ *     -->link('ext5c.o','ext5c','C') 
+ *     -->Amatrix=[1,2,3];b=[2,3,4]; 
+ *     -->c=call('ext5c',b,1,'d','out',[1,3],2,'d') 
+ *     -->c=Amatrix+2*b 
+ ******************************************/
+
+int ext5c(double *b, double *c)
+{ 
+  static double a[3];
+  static int k, m, n;
+  ReadMatrix("Amatrix",&m, &n, a);
+  /*******************************/
+  /* [m,n]=size(Amatrix)  here m=1 n=3, a=Amatrix which must exist in Scilab*/
+  for (k = 0; k < n; ++k) 
+    c[k] = a[k] + b[k] * 2.;
+  return(0);
+}
index 08e7976..c517272 100644 (file)
@@ -1,24 +1,24 @@
-// Demo file for ext5c example \r
-\r
-// builder code for ext5c.c \r
-link_name = 'ext5c';    // functions to be added to the call table \r
-flag  = "c";           // ext5c is a C function \r
-files = ['ext5c.o' ];   // objects files for ext5c \r
-libs  = [];            // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext5c and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-// reading vector a in scilab internal stack\r
-\r
-Amatrix=[1,2,3];b=[2,3,4];\r
-c=call('ext5c',b,1,'d','out',[1,3],2,'d');\r
-if norm(c-(Amatrix+2*b)) > %eps then pause,end\r
-\r
+// Demo file for ext5c example 
+
+// builder code for ext5c.c 
+link_name = 'ext5c';    // functions to be added to the call table 
+flag  = "c";           // ext5c is a C function 
+files = ['ext5c.o' ];   // objects files for ext5c 
+libs  = [];            // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext5c and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+// reading vector a in scilab internal stack
+
+Amatrix=[1,2,3];b=[2,3,4];
+c=call('ext5c',b,1,'d','out',[1,3],2,'d');
+if norm(c-(Amatrix+2*b)) > %eps then pause,end
+
index 669d018..9042423 100644 (file)
@@ -1,22 +1,22 @@
-      subroutine ext5f(b,c)\r
-c     example 5\r
-c     reading a vector in scilab internal stack using creadmat\r
-c     (see SCIDIR/system2/creadmat.f)\r
-c     -->link('ext5f.o','ext5f')\r
-c     -->a=[1,2,3];b=[2,3,4];\r
-c     -->c=call('ext5f',b,1,'d','out',[1,3],2,'d')\r
-c     -->c=a+2*b\r
-c     Copyright Inria/Enpc\r
-      double precision a(3),b(*),c(*)\r
-      logical creadmat\r
-\r
-c     If 'a' exists reads it else return\r
-      if(.not.creadmat('a'//char(0),m,n,a)) then\r
-         write(6,*) 'ext5', m,n,a(1),a(2),a(3)\r
-         return\r
-      endif\r
-      do 1 k=1,n\r
-         c(k)=a(k)+2.0d0*b(k)\r
- 1    continue\r
-      return\r
-      end\r
+      subroutine ext5f(b,c)
+c     example 5
+c     reading a vector in scilab internal stack using creadmat
+c     (see SCIDIR/system2/creadmat.f)
+c     -->link('ext5f.o','ext5f')
+c     -->a=[1,2,3];b=[2,3,4];
+c     -->c=call('ext5f',b,1,'d','out',[1,3],2,'d')
+c     -->c=a+2*b
+c     Copyright Inria/Enpc
+      double precision a(3),b(*),c(*)
+      logical creadmat
+
+c     If 'a' exists reads it else return
+      if(.not.creadmat('a'//char(0),m,n,a)) then
+         write(6,*) 'ext5', m,n,a(1),a(2),a(3)
+         return
+      endif
+      do 1 k=1,n
+         c(k)=a(k)+2.0d0*b(k)
+ 1    continue
+      return
+      end
index c4711a5..62b9b5f 100644 (file)
@@ -1,23 +1,23 @@
-// Demo file for ext5f example \r
-\r
-// builder code for ext5f.c \r
-link_name = 'ext5f';    // functions to be added to the call table \r
-flag  = "f";           // ext5f is a C function \r
-files = ['ext5f.o' ];   // objects files for ext5f \r
-libs  = [];            // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext5f and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-// reading vector a in scilab internal stack\r
-\r
-a=[1,2,3];b=[2,3,4];\r
-c=call('ext5f',b,1,'d','out',[1,3],2,'d');\r
-if norm(c-(a+2*b)) > %eps then pause,end\r
+// Demo file for ext5f example 
+
+// builder code for ext5f.c 
+link_name = 'ext5f';    // functions to be added to the call table 
+flag  = "f";           // ext5f is a C function 
+files = ['ext5f.o' ];   // objects files for ext5f 
+libs  = [];            // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext5f and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+// reading vector a in scilab internal stack
+
+a=[1,2,3];b=[2,3,4];
+c=call('ext5f',b,1,'d','out',[1,3],2,'d');
+if norm(c-(a+2*b)) > %eps then pause,end
index 31c5659..215600a 100644 (file)
@@ -1,22 +1,22 @@
-/* Copyright Inria/Enpc */\r
-#include "stack-c.h"\r
-\r
-/******************************************\r
- *   example 6 \r
- *   reading a vector in scilab internal stack using ReadMatrix \r
- *     -->link('ext6c.o','ext6c','C') \r
- *     -->a=[1,2,3];b=[2,3,4];\r
- *     -->c=call('ext6c',a,1,'c',b,2,'d','out',[1,3],3,'d') \r
- *     -->c=a+2*b \r
- ******************************************/\r
-\r
-int ext6c(char *aname, double *b, double *c)\r
-{   \r
-  double a[3];\r
-  int k, m, n;\r
-  ReadMatrix(aname, &m, &n, a);\r
-  /*     [m,n]=size(a)  here m=1 n=3  */\r
-  for (k = 0; k < n; ++k) \r
-    c[k] = a[k] + b[k] * 2.;\r
-  return(0);\r
-}\r
+/* Copyright Inria/Enpc */
+#include "stack-c.h"
+
+/******************************************
+ *   example 6 
+ *   reading a vector in scilab internal stack using ReadMatrix 
+ *     -->link('ext6c.o','ext6c','C') 
+ *     -->a=[1,2,3];b=[2,3,4];
+ *     -->c=call('ext6c',a,1,'c',b,2,'d','out',[1,3],3,'d') 
+ *     -->c=a+2*b 
+ ******************************************/
+
+int ext6c(char *aname, double *b, double *c)
+{   
+  double a[3];
+  int k, m, n;
+  ReadMatrix(aname, &m, &n, a);
+  /*     [m,n]=size(a)  here m=1 n=3  */
+  for (k = 0; k < n; ++k) 
+    c[k] = a[k] + b[k] * 2.;
+  return(0);
+}
index 131c0f5..88402a0 100644 (file)
@@ -1,25 +1,25 @@
-// Demo file for ext6c example \r
-\r
-// builder code for ext6c.c \r
-link_name = 'ext6c';    // functions to be added to the call table \r
-flag  = "c";           // ext6c is a C function \r
-files = ['ext6c.o' ];   // objects files for ext6c \r
-libs  = [];            // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext6c and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-//reading  vector with name='a' in scilab internal stack\r
-\r
-a=[1,2,3];b=[2,3,4];\r
-c=call('ext6c','a',1,'c',b,2,'d','out',[1,3],3,'d');\r
-if norm(c-(a+2*b)) > %eps then pause,end\r
-\r
-\r
+// Demo file for ext6c example 
+
+// builder code for ext6c.c 
+link_name = 'ext6c';    // functions to be added to the call table 
+flag  = "c";           // ext6c is a C function 
+files = ['ext6c.o' ];   // objects files for ext6c 
+libs  = [];            // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext6c and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+//reading  vector with name='a' in scilab internal stack
+
+a=[1,2,3];b=[2,3,4];
+c=call('ext6c','a',1,'c',b,2,'d','out',[1,3],3,'d');
+if norm(c-(a+2*b)) > %eps then pause,end
+
+
index 63dedf0..aff7bf5 100644 (file)
@@ -1,21 +1,21 @@
-      subroutine ext6f(aname,b,c)\r
-c     example 6\r
-c     reading a vector in scilab internal stack using readmat interface\r
-c     -->link('ext6f.o','ext6f')\r
-c     -->a=[1,2,3];b=[2,3,4];\r
-c     -->c=call('ext6f','a',1,'c',b,2,'d','out',[1,3],3,'d')\r
-c     -->c=a+2*b\r
-c     Copyright Inria/Enpc\r
-      double precision a(3),b(*),c(*)\r
-      logical creadmat\r
-      character*(*) aname\r
-\r
-c     If aname exists reads it (in a) else return\r
-      if(.not.creadmat(aname,m,n,a)) return\r
-c     \r
-c     [m,n]=size(a)  here m=1 n=3\r
-      do 1 k=1,n\r
-         c(k)=a(k)+2.0d0*b(k)\r
- 1    continue\r
-      return\r
-      end\r
+      subroutine ext6f(aname,b,c)
+c     example 6
+c     reading a vector in scilab internal stack using readmat interface
+c     -->link('ext6f.o','ext6f')
+c     -->a=[1,2,3];b=[2,3,4];
+c     -->c=call('ext6f','a',1,'c',b,2,'d','out',[1,3],3,'d')
+c     -->c=a+2*b
+c     Copyright Inria/Enpc
+      double precision a(3),b(*),c(*)
+      logical creadmat
+      character*(*) aname
+
+c     If aname exists reads it (in a) else return
+      if(.not.creadmat(aname,m,n,a)) return
+c     
+c     [m,n]=size(a)  here m=1 n=3
+      do 1 k=1,n
+         c(k)=a(k)+2.0d0*b(k)
+ 1    continue
+      return
+      end
index 0c803fe..639e76a 100644 (file)
@@ -1,28 +1,28 @@
-// Demo file for ext6f example \r
-\r
-// builder code for ext6f.c \r
-link_name = 'ext6f';    // functions to be added to the call table \r
-flag  = "f";            // ext6f is a C function \r
-files = ['ext6f.o' ];   // objects files for ext6f \r
-libs  = [];             // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext6f and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-//reading  vector with name='a' in scilab internal stack\r
-\r
-a=[1,2,3];b=[2,3,4];\r
-c=call('ext6f','a',1,'c',b,2,'d','out',[1,3],3,'d');\r
-if norm(c-(a+2*b)) > %eps then pause,end\r
-\r
-\r
-\r
-\r
-\r
+// Demo file for ext6f example 
+
+// builder code for ext6f.c 
+link_name = 'ext6f';    // functions to be added to the call table 
+flag  = "f";            // ext6f is a C function 
+files = ['ext6f.o' ];   // objects files for ext6f 
+libs  = [];             // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext6f and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+//reading  vector with name='a' in scilab internal stack
+
+a=[1,2,3];b=[2,3,4];
+c=call('ext6f','a',1,'c',b,2,'d','out',[1,3],3,'d');
+if norm(c-(a+2*b)) > %eps then pause,end
+
+
+
+
+
index b82bda8..e8cad12 100644 (file)
@@ -1,34 +1,34 @@
-/* Copyright Inria/Enpc */\r
-#include "stack-c.h"\r
-\r
-/******************************************\r
- *     example 7 \r
- *     creating vector c in scilab internal stack \r
- *     -->link('ext7c.o','ext7c','C') \r
- *     -->a=[1,2,3]; b=[2,3,4]; \r
- *     c does not exist (c made by the call to matz) \r
- *     -->call('ext7c',a,1,'d',b,2,'d','out',1); \r
- *     c now exists \r
- *     -->c=a+2*b \r
- ******************************************/\r
-\r
-\r
-int ext7c(double *a, double *b)\r
-{\r
-       static int c1 = 1;\r
-  static int c3 = 3;\r
-       static char str[] ="test";\r
-       int strl;\r
-       \r
-  double c[3];\r
-  int k=0;\r
-  for (k = 0; k < 3; k++) c[k] = a[k] + b[k] * 2.;\r
-  /** sending c[] to scilab variable c (size [1,3]) **/\r
-  WriteMatrix("c",&c1,&c3,c);\r
-  /** sending f characters of "test" to Scilab variable d **/\r
-  strl=strlen(str);\r
-  /* Creating the Scilab variable d from str */\r
-  WriteString("d", &strl, str);\r
-  return(0);\r
-}\r
-\r
+/* Copyright Inria/Enpc */
+#include "stack-c.h"
+
+/******************************************
+ *     example 7 
+ *     creating vector c in scilab internal stack 
+ *     -->link('ext7c.o','ext7c','C') 
+ *     -->a=[1,2,3]; b=[2,3,4]; 
+ *     c does not exist (c made by the call to matz) 
+ *     -->call('ext7c',a,1,'d',b,2,'d','out',1); 
+ *     c now exists 
+ *     -->c=a+2*b 
+ ******************************************/
+
+
+int ext7c(double *a, double *b)
+{
+       static int c1 = 1;
+  static int c3 = 3;
+       static char str[] ="test";
+       int strl;
+       
+  double c[3];
+  int k=0;
+  for (k = 0; k < 3; k++) c[k] = a[k] + b[k] * 2.;
+  /** sending c[] to scilab variable c (size [1,3]) **/
+  WriteMatrix("c",&c1,&c3,c);
+  /** sending f characters of "test" to Scilab variable d **/
+  strl=strlen(str);
+  /* Creating the Scilab variable d from str */
+  WriteString("d", &strl, str);
+  return(0);
+}
+
index e065e63..96dcb4a 100644 (file)
@@ -1,29 +1,29 @@
-// Demo file for ext7c example \r
-\r
-// builder code for ext7c.c \r
-link_name = 'ext7c';    // functions to be added to the call table \r
-flag  = "c";           // ext7c is a C function \r
-files = ['ext7c.o' ];   // objects files for ext7c \r
-libs  = [];            // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext7c and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-//creating vector c in scilab internal stack\r
-\r
-a=[1,2,3]; b=[2,3,4];\r
-//c does not exist (c made by ext7c)\r
-c1=call('ext7c',a,1,'d',b,2,'d','out',2);\r
-if norm(c1-b) > %eps then pause,end\r
-//c now exists\r
-if norm(c-(a+2*b)) > %eps then pause,end\r
-//d exists \r
-if d<>"test" then pause,end\r
-\r
+// Demo file for ext7c example 
+
+// builder code for ext7c.c 
+link_name = 'ext7c';    // functions to be added to the call table 
+flag  = "c";           // ext7c is a C function 
+files = ['ext7c.o' ];   // objects files for ext7c 
+libs  = [];            // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext7c and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+//creating vector c in scilab internal stack
+
+a=[1,2,3]; b=[2,3,4];
+//c does not exist (c made by ext7c)
+c1=call('ext7c',a,1,'d',b,2,'d','out',2);
+if norm(c1-b) > %eps then pause,end
+//c now exists
+if norm(c-(a+2*b)) > %eps then pause,end
+//d exists 
+if d<>"test" then pause,end
+
index c2dec05..d1bfd9c 100644 (file)
@@ -1,22 +1,22 @@
-      subroutine ext7f(a,b)\r
-c     example 7\r
-c     creating vector c in scilab internal stack\r
-c     -->link('ext7f.o','ext7f')\r
-c     -->a=[1,2,3]; b=[2,3,4];\r
-c     c does not exist (c made by the call to matz)\r
-c     -->call('ext7f',a,1,'d',b,2,'d','out',1);\r
-c     c now exists\r
-c     -->c=a+2*b\r
-c     Copyright Inria/Enpc\r
-      double precision a(3),b(3),c(3),w\r
-      logical cwritemat,cwritechain\r
-      do 1 k=1,3\r
-         c(k)=a(k)+2.0d0*b(k)\r
- 1    continue\r
-c     sending c array values to c Scilab variable \r
-c     of size [1,3]\r
-      if (.not.cwritemat('c'//char(0),1,3,c)) return\r
-c     sending string 'test' (size 4) to Scilab variable d\r
-      if (.not.cwritechain('d'//char(0),4,'test')) return\r
-      return\r
-      end\r
+      subroutine ext7f(a,b)
+c     example 7
+c     creating vector c in scilab internal stack
+c     -->link('ext7f.o','ext7f')
+c     -->a=[1,2,3]; b=[2,3,4];
+c     c does not exist (c made by the call to matz)
+c     -->call('ext7f',a,1,'d',b,2,'d','out',1);
+c     c now exists
+c     -->c=a+2*b
+c     Copyright Inria/Enpc
+      double precision a(3),b(3),c(3),w
+      logical cwritemat,cwritechain
+      do 1 k=1,3
+         c(k)=a(k)+2.0d0*b(k)
+ 1    continue
+c     sending c array values to c Scilab variable 
+c     of size [1,3]
+      if (.not.cwritemat('c'//char(0),1,3,c)) return
+c     sending string 'test' (size 4) to Scilab variable d
+      if (.not.cwritechain('d'//char(0),4,'test')) return
+      return
+      end
index b85d0f6..30a4f48 100644 (file)
@@ -1,30 +1,30 @@
-// Demo file for ext7f example \r
-\r
-// builder code for ext7f.c \r
-link_name = 'ext7f';    // functions to be added to the call table \r
-flag  = "f";            // ext7f is a C function \r
-files = ['ext7f.o' ];   // objects files for ext7f \r
-libs  = [];             // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext7f and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-//creating vector c in scilab internal stack\r
-\r
-\r
-a=[1,2,3]; b=[2,3,4];\r
-//c does not exist (c made by ext7c)\r
-c1=call('ext7f',a,1,'d',b,2,'d','out',2);\r
-if norm(c1-b) > %eps then pause,end\r
-//c now exists\r
-if norm(c-(a+2*b)) > %eps then pause,end\r
-//d exists \r
-if d<>"test" then pause,end\r
-\r
+// Demo file for ext7f example 
+
+// builder code for ext7f.c 
+link_name = 'ext7f';    // functions to be added to the call table 
+flag  = "f";            // ext7f is a C function 
+files = ['ext7f.o' ];   // objects files for ext7f 
+libs  = [];             // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext7f and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+//creating vector c in scilab internal stack
+
+
+a=[1,2,3]; b=[2,3,4];
+//c does not exist (c made by ext7c)
+c1=call('ext7f',a,1,'d',b,2,'d','out',2);
+if norm(c1-b) > %eps then pause,end
+//c now exists
+if norm(c-(a+2*b)) > %eps then pause,end
+//d exists 
+if d<>"test" then pause,end
+
index 6bda80e..4781c09 100644 (file)
@@ -1,20 +1,20 @@
-/* Copyright Inria/Enpc */\r
-#include "stack-c.h"\r
-\r
-/****************************************\r
- *     an example with  GetMatrixptr \r
- *     -->param=[1,2,3];         \r
- *     -->link('ext8c.o','ext8c','C');     \r
- *     -->y=call('ext8c','out',size(param),1,'d');\r
- ****************************************/\r
-\r
-int ext8c(double *y)\r
-{\r
-  static int m, n, lp,i;\r
-  GetMatrixptr("param", &m, &n, &lp);\r
-  /* param can be changed */\r
-  *stk(lp)=18.0;\r
-  /* param can be read */\r
-  for (i=0; i < m*n ; i++ ) y[i] = (*stk(lp+i));\r
-  return 0;\r
-}\r
+/* Copyright Inria/Enpc */
+#include "stack-c.h"
+
+/****************************************
+ *     an example with  GetMatrixptr 
+ *     -->param=[1,2,3];         
+ *     -->link('ext8c.o','ext8c','C');     
+ *     -->y=call('ext8c','out',size(param),1,'d');
+ ****************************************/
+
+int ext8c(double *y)
+{
+  static int m, n, lp,i;
+  GetMatrixptr("param", &m, &n, &lp);
+  /* param can be changed */
+  *stk(lp)=18.0;
+  /* param can be read */
+  for (i=0; i < m*n ; i++ ) y[i] = (*stk(lp+i));
+  return 0;
+}
index 1dcc9c2..5f2fa45 100644 (file)
@@ -1,26 +1,26 @@
-// Demo file for ext8c example \r
-\r
-// builder code for ext8c.c \r
-link_name = 'ext8c';    // functions to be added to the call table \r
-flag  = "c";           // ext8c is a C function \r
-files = ['ext8c.o' ];   // objects files for ext8c \r
-libs  = [];            // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext8c and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the call function \r
-//same example as # 10 with call to matptr\r
-//param must be defined as a scilab variable\r
-\r
-param=[1,2,3]\r
-y=call('ext8c','out',size(param),1,'d');\r
-if norm(y-param) > %eps then pause,end\r
-if norm(param(1)-18.0) > %eps then pause,end\r
-\r
+// Demo file for ext8c example 
+
+// builder code for ext8c.c 
+link_name = 'ext8c';    // functions to be added to the call table 
+flag  = "c";           // ext8c is a C function 
+files = ['ext8c.o' ];   // objects files for ext8c 
+libs  = [];            // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext8c and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the call function 
+//same example as # 10 with call to matptr
+//param must be defined as a scilab variable
+
+param=[1,2,3]
+y=call('ext8c','out',size(param),1,'d');
+if norm(y-param) > %eps then pause,end
+if norm(param(1)-18.0) > %eps then pause,end
+
index 9005df7..910548c 100644 (file)
@@ -1,29 +1,29 @@
-      subroutine ext8f(n, t, y, ydot)\r
-c     argument function for ode\r
-c     input variables n, t, y\r
-c     n = dimension of state vector y\r
-c     t = time\r
-c     y = state variable \r
-c     output variable = ydot\r
-c\r
-c     external routine must \r
-c     load ydot(1) with d/dt ( y(1)(t) )\r
-c          ydot(2) with d/dt ( y(2)(t) )\r
-c          ...\r
-c     i.e. ydot vector of derivative of state y\r
-c\r
-c     Example:\r
-c     call this ext8f routine: \r
-c     ode([1;0;0],0,[0.4,4],'ext9f')\r
-c\r
-c     With dynamic link: \r
-c     -->link('ext8f.o','ext8f')\r
-c     -->ode([1;0;0],0,[0.4,4],'ext8f')\r
-c\r
-c     Copyright Inria\r
-      double precision t, y, ydot\r
-      dimension y(3), ydot(3)\r
-      ydot(1) = -.0400d+0*y(1) + 1.0d+4*y(2)*y(3)\r
-      ydot(3) = 3.0d+7*y(2)*y(2)\r
-      ydot(2) = -ydot(1) - ydot(3)\r
-      end\r
+      subroutine ext8f(n, t, y, ydot)
+c     argument function for ode
+c     input variables n, t, y
+c     n = dimension of state vector y
+c     t = time
+c     y = state variable 
+c     output variable = ydot
+c
+c     external routine must 
+c     load ydot(1) with d/dt ( y(1)(t) )
+c          ydot(2) with d/dt ( y(2)(t) )
+c          ...
+c     i.e. ydot vector of derivative of state y
+c
+c     Example:
+c     call this ext8f routine: 
+c     ode([1;0;0],0,[0.4,4],'ext9f')
+c
+c     With dynamic link: 
+c     -->link('ext8f.o','ext8f')
+c     -->ode([1;0;0],0,[0.4,4],'ext8f')
+c
+c     Copyright Inria
+      double precision t, y, ydot
+      dimension y(3), ydot(3)
+      ydot(1) = -.0400d+0*y(1) + 1.0d+4*y(2)*y(3)
+      ydot(3) = 3.0d+7*y(2)*y(2)
+      ydot(2) = -ydot(1) - ydot(3)
+      end
index fc8f104..6e00d9d 100644 (file)
@@ -1,25 +1,25 @@
-// Demo file for ext8f example \r
-\r
-// builder code for ext8f.c \r
-link_name = 'ext8f';    // functions to be added to the call table \r
-flag  = "f";            // ext8f is a C function \r
-files = ['ext8f.o' ];   // objects files for ext8f \r
-libs  = [];             // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext8f and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the ode function \r
-//same example as # 10 with call to matptr\r
-//param must be defined as a scilab variable\r
-\r
-param=[0.04,10000,3d+7];\r
-y=ode([1;0;0],0,[0.4,4],'ext8f');\r
-\r
-\r
+// Demo file for ext8f example 
+
+// builder code for ext8f.c 
+link_name = 'ext8f';    // functions to be added to the call table 
+flag  = "f";            // ext8f is a C function 
+files = ['ext8f.o' ];   // objects files for ext8f 
+libs  = [];             // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext8f and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the ode function 
+//same example as # 10 with call to matptr
+//param must be defined as a scilab variable
+
+param=[0.04,10000,3d+7];
+y=ode([1;0;0],0,[0.4,4],'ext8f');
+
+
index e7a085d..2d433c9 100644 (file)
@@ -1,35 +1,35 @@
-/* Copyright Inria/Enpc */\r
-\r
-/*********************************************\r
- *     argument function for ode \r
- *     input variables n, t, y \r
- *     n = dimension of state vector y \r
- *     t = time \r
- *     y = state variable \r
- *     output variable = ydot \r
- *     ================================\r
- *     external routine must \r
- *     load ydot[0] with d/dt ( y(1)(t) ) \r
- *          ydot[1] with d/dt ( y(2)(t) ) \r
- *          ... \r
- *     i.e. ydot vector of derivative of state y \r
- *     ================================\r
- *     Example: \r
- *     call this ext5 routine: \r
- *     ode([1;0;0],0,[0.4,4],'ext9c') \r
- *     ================================\r
- *     With dynamic link: \r
- *     -->link('ext9c.o','ext9c','C') \r
- *     -->ode([1;0;0],0,[0.4,4],'ext9c') \r
- *********************************************/\r
-\r
-int ext9c(int *n, double *t, double *y, double *ydot)\r
-{\r
-  ydot[0] = y[0] * -.04 + y[1] * 1e4 * y[2];\r
-  ydot[2] = y[1] * 3e7 * y[1];\r
-  ydot[1] = -ydot[0] - ydot[2];\r
-  return(0);\r
-}\r
-\r
-\r
-\r
+/* Copyright Inria/Enpc */
+
+/*********************************************
+ *     argument function for ode 
+ *     input variables n, t, y 
+ *     n = dimension of state vector y 
+ *     t = time 
+ *     y = state variable 
+ *     output variable = ydot 
+ *     ================================
+ *     external routine must 
+ *     load ydot[0] with d/dt ( y(1)(t) ) 
+ *          ydot[1] with d/dt ( y(2)(t) ) 
+ *          ... 
+ *     i.e. ydot vector of derivative of state y 
+ *     ================================
+ *     Example: 
+ *     call this ext5 routine: 
+ *     ode([1;0;0],0,[0.4,4],'ext9c') 
+ *     ================================
+ *     With dynamic link: 
+ *     -->link('ext9c.o','ext9c','C') 
+ *     -->ode([1;0;0],0,[0.4,4],'ext9c') 
+ *********************************************/
+
+int ext9c(int *n, double *t, double *y, double *ydot)
+{
+  ydot[0] = y[0] * -.04 + y[1] * 1e4 * y[2];
+  ydot[2] = y[1] * 3e7 * y[1];
+  ydot[1] = -ydot[0] - ydot[2];
+  return(0);
+}
+
+
+
index 0556fc2..36cd0de 100644 (file)
@@ -1,22 +1,22 @@
-// Demo file for ext8c example \r
-\r
-// builder code for ext9c.c \r
-link_name = 'ext9c';    // functions to be added to the call table \r
-flag  = "c";           // ext9c is a C function \r
-files = ['ext9c.o' ];   // objects files for ext9c \r
-libs  = [];            // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext9c and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-//test new function through the call function \r
-//argument function for ode\r
-//call ext9c argument function with dynamic link\r
-\r
-ode([1;0;0],0,[0.4,4],'ext9c');\r
+// Demo file for ext8c example 
+
+// builder code for ext9c.c 
+link_name = 'ext9c';    // functions to be added to the call table 
+flag  = "c";           // ext9c is a C function 
+files = ['ext9c.o' ];   // objects files for ext9c 
+libs  = [];            // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext9c and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+//test new function through the call function 
+//argument function for ode
+//call ext9c argument function with dynamic link
+
+ode([1;0;0],0,[0.4,4],'ext9c');
index a7ee9d9..2e0fa36 100644 (file)
@@ -1,35 +1,35 @@
-      subroutine ext9f(n, t, y, ydot)\r
-c     external fonction for ode\r
-c     input variables n, t, y\r
-c     n = dimension of state vector y\r
-c     t = time\r
-c     y = state variable \r
-c     output variable = ydot\r
-c\r
-c     external routine must \r
-c     load ydot(1) with d/dt ( y(1)(t) )\r
-c          ydot(2) with d/dt ( y(2)(t) )\r
-c          ...\r
-c     i.e. ydot vector of derivative of state y\r
-c\r
-c     With dynamic link: \r
-c     link('ext9f.o','ext9f')\r
-c\r
-c     passing a parameter to ext10f routine by a list:\r
-c     -->param=[0.04,10000,3d+7];    \r
-c     -->y=ode([1;0;0],0,[0.4,4],list('ext9f',param))\r
-c     param is retrieved in ext9f by:\r
-c     param(1)=y(n+1) , param(2)=y(n+2) etc \r
-c     with this calling sequence y is a n+np vector\r
-c     where np=dimension of scilab variable param\r
-c\r
-c     Copyright Inria\r
-      double precision t, y, ydot, param\r
-      dimension y(3), ydot(3),param(3)\r
-      param(1)=y(n+1)\r
-      param(2)=y(n+2)\r
-      param(3)=y(n+3)\r
-      ydot(1) = -param(1)*y(1) + param(2)*y(2)*y(3)\r
-      ydot(3) = param(3)*y(2)*y(2)\r
-      ydot(2) = -ydot(1) - ydot(3)\r
-      end\r
+      subroutine ext9f(n, t, y, ydot)
+c     external fonction for ode
+c     input variables n, t, y
+c     n = dimension of state vector y
+c     t = time
+c     y = state variable 
+c     output variable = ydot
+c
+c     external routine must 
+c     load ydot(1) with d/dt ( y(1)(t) )
+c          ydot(2) with d/dt ( y(2)(t) )
+c          ...
+c     i.e. ydot vector of derivative of state y
+c
+c     With dynamic link: 
+c     link('ext9f.o','ext9f')
+c
+c     passing a parameter to ext10f routine by a list:
+c     -->param=[0.04,10000,3d+7];    
+c     -->y=ode([1;0;0],0,[0.4,4],list('ext9f',param))
+c     param is retrieved in ext9f by:
+c     param(1)=y(n+1) , param(2)=y(n+2) etc 
+c     with this calling sequence y is a n+np vector
+c     where np=dimension of scilab variable param
+c
+c     Copyright Inria
+      double precision t, y, ydot, param
+      dimension y(3), ydot(3),param(3)
+      param(1)=y(n+1)
+      param(2)=y(n+2)
+      param(3)=y(n+3)
+      ydot(1) = -param(1)*y(1) + param(2)*y(2)*y(3)
+      ydot(3) = param(3)*y(2)*y(2)
+      ydot(2) = -ydot(1) - ydot(3)
+      end
index 2d10e36..5cc5d33 100644 (file)
@@ -1,30 +1,30 @@
-// Demo file for ext9f example \r
-\r
-// builder code for ext9f.c \r
-// functions to be added to the call table \r
-link_name = ['ext9f']; \r
-flag  = "f";            // ext9f is a C function \r
-files = ['ext9f.o' ];   // objects files for ext9f \r
-libs  = [];             // other libs needed for linking \r
-\r
-// the next call generates files (Makelib,loader.sce) used\r
-// for compiling and loading ext10f and performs the compilation\r
-\r
-ilib_for_link(link_name,files,libs,flag);\r
-\r
-// load new function code in the scope of call \r
-// using the previously generated loader \r
-exec loader.sce; \r
-\r
-// test new function through the ode function \r
-//passing a parameter to ext10f routine by a list:\r
-\r
-param=[0.04,10000,3d+7];    \r
-y=ode([1;0;0],0,[0.4,4],list('ext9f',param));\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
+// Demo file for ext9f example 
+
+// builder code for ext9f.c 
+// functions to be added to the call table 
+link_name = ['ext9f']; 
+flag  = "f";            // ext9f is a C function 
+files = ['ext9f.o' ];   // objects files for ext9f 
+libs  = [];             // other libs needed for linking 
+
+// the next call generates files (Makelib,loader.sce) used
+// for compiling and loading ext10f and performs the compilation
+
+ilib_for_link(link_name,files,libs,flag);
+
+// load new function code in the scope of call 
+// using the previously generated loader 
+exec loader.sce; 
+
+// test new function through the ode function 
+//passing a parameter to ext10f routine by a list:
+
+param=[0.04,10000,3d+7];    
+y=ode([1;0;0],0,[0.4,4],list('ext9f',param));
+
+
+
+
+
+
+
index 4480970..73ad208 100644 (file)
@@ -1,29 +1,29 @@
-examples = [ 'ext1c.sce' ; 'ext1f.sce' ;\r
-             'ext2c.sce' ; 'ext2f.sce' ;\r
-             'ext3c.sce' ; 'ext3f.sce' ;\r
-             'ext4c.sce' ; 'ext4f.sce' ;\r
-             'ext5c.sce' ; 'ext5f.sce' ;\r
-             'ext6c.sce' ; 'ext6f.sce' ;\r
-             'ext7c.sce' ; 'ext7f.sce' ;\r
-             'ext8c.sce' ; 'ext8f.sce' ;\r
-             'ext9c.sce' ; 'ext9f.sce' ;\r
-             'ext10c.sce' ; 'ext10f.sce' ;\r
-             'ext11c.sce' ; 'ext12c.sce' ;\r
-             'ext13c.sce' ; 'ext14c.sce' ];\r
-             \r
-for i=1:size(examples,'*')\r
-   disp('-----------------------------------');\r
-   disp('Example : ' + examples(i));\r
-   disp('-----------------------------------');\r
-   exec(examples(i));\r
-   \r
-end             \r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
+examples = [ 'ext1c.sce' ; 'ext1f.sce' ;
+             'ext2c.sce' ; 'ext2f.sce' ;
+             'ext3c.sce' ; 'ext3f.sce' ;
+             'ext4c.sce' ; 'ext4f.sce' ;
+             'ext5c.sce' ; 'ext5f.sce' ;
+             'ext6c.sce' ; 'ext6f.sce' ;
+             'ext7c.sce' ; 'ext7f.sce' ;
+             'ext8c.sce' ; 'ext8f.sce' ;
+             'ext9c.sce' ; 'ext9f.sce' ;
+             'ext10c.sce' ; 'ext10f.sce' ;
+             'ext11c.sce' ; 'ext12c.sce' ;
+             'ext13c.sce' ; 'ext14c.sce' ];
+             
+for i=1:size(examples,'*')
+   disp('-----------------------------------');
+   disp('Example : ' + examples(i));
+   disp('-----------------------------------');
+   exec(examples(i));
+   
+end             
+
+
+
+
+
+
+
+
+
index 72ea768..c4085df 100644 (file)
@@ -1,16 +1,16 @@
-// This is the builder.sce \r
-// must be run from this directory \r
-\r
-ilib_name  = 'libtutorial';            // interface library name \r
-files = ['sci_view.o','displ.o','sci_matmul.o','matmul.o'];     // objects files \r
-                                       // \r
-libs  = [];                            // other libs needed for linking\r
-table = [ 'matmul','sci_matmul';\r
-          'view', 'sci_view'];         // table of (scilab_name,interface-name) \r
-\r
-// do not modify below \r
-// ----------------------------------------------\r
-ilib_build(ilib_name,table,files,libs);\r
-\r
-\r
-\r
+// This is the builder.sce 
+// must be run from this directory 
+
+ilib_name  = 'libtutorial';            // interface library name 
+files = ['sci_view.o','displ.o','sci_matmul.o','matmul.o'];     // objects files 
+                                       // 
+libs  = [];                            // other libs needed for linking
+table = [ 'matmul','sci_matmul';
+          'view', 'sci_view'];         // table of (scilab_name,interface-name) 
+
+// do not modify below 
+// ----------------------------------------------
+ilib_build(ilib_name,table,files,libs);
+
+
+
index 97be6e7..480e859 100644 (file)
@@ -1,14 +1,14 @@
-\r
-#include "displ.h"\r
-#include "sciprint.h"\r
-\r
-void displ(double *a, int ma,int na, int *b,int mb, int nb, char *c,int  mc,int  nc)\r
-{\r
-  sciprint("First parameter (matrix) is %i x %i:\n",ma,na);\r
-  sciprint("its (1,1) entry is %e (double).\n", a[0]);\r
-  sciprint("Second parameter (matrix) is %i x %i:\n",mb,nb);\r
-  sciprint("its (1,1) entry is %i (int).\n", b[0]);\r
-  sciprint("Third parameter (string) is %i character long: it is the string \"%s\"\n",mc*nc, c);\r
-}\r
-\r
-\r
+
+#include "displ.h"
+#include "sciprint.h"
+
+void displ(double *a, int ma,int na, int *b,int mb, int nb, char *c,int  mc,int  nc)
+{
+  sciprint("First parameter (matrix) is %i x %i:\n",ma,na);
+  sciprint("its (1,1) entry is %e (double).\n", a[0]);
+  sciprint("Second parameter (matrix) is %i x %i:\n",mb,nb);
+  sciprint("its (1,1) entry is %i (int).\n", b[0]);
+  sciprint("Third parameter (string) is %i character long: it is the string \"%s\"\n",mc*nc, c);
+}
+
+
index 7c4f14c..2654ec1 100644 (file)
@@ -1,6 +1,6 @@
-#ifndef __DISPL_H__\r
-#define __DISPL_H__\r
-\r
-void displ(double *a, int ma,int na, int *b,int mb, int nb, char *c,int  mc,int  nc);\r
-\r
+#ifndef __DISPL_H__
+#define __DISPL_H__
+
+void displ(double *a, int ma,int na, int *b,int mb, int nb, char *c,int  mc,int  nc);
+
 #endif /* __DISPL_H__ */
\ No newline at end of file
index e70e290..a5ee27e 100644 (file)
@@ -1,9 +1,9 @@
-exec(SCI+'/modules/dynamic_link/examples/gateway/builder.sce');\r
-exec(SCI+'/modules/dynamic_link/examples/gateway/loader.sce');\r
-\r
-A=ones(2,2);B=ones(2,2);\r
-C=matmul(A,B);\r
-if norm(A*B-matmul(A,B)) > %eps then pause,end\r
-\r
-D="test string";\r
+exec(SCI+'/modules/dynamic_link/examples/gateway/builder.sce');
+exec(SCI+'/modules/dynamic_link/examples/gateway/loader.sce');
+
+A=ones(2,2);B=ones(2,2);
+C=matmul(A,B);
+if norm(A*B-matmul(A,B)) > %eps then pause,end
+
+D="test string";
 view(A,C,D);
\ No newline at end of file
index bf1b3f6..c1ae350 100644 (file)
@@ -1,30 +1,30 @@
-\r
-#include "matmul.h"\r
-\r
-/*--------------------------------------------------------\r
- *  Matrix multiplication C= A*B, (A,B,C stored columnwise) \r
- *  C function\r
- *--------------------------------------------------------*/\r
-\r
-#define A(i,k) a[i + k*n]\r
-#define B(k,j) b[k + j*m]\r
-#define C(i,j) c[i + j*n]\r
-\r
-void matmul(double a[],int n,int m,double b[],int l, double c[])\r
-{\r
-  int i = 0,j = 0,k = 0;\r
-  double s = 0.0;\r
-  \r
-  for( i=0 ; i < n; i++)\r
-  {\r
-    for( j=0; j < l; j++)\r
-    {\r
-      s = 0.;\r
-      for( k=0; k< m; k++)\r
-      {\r
-             s += A(i,k)*B(k,j);\r
-      }\r
-      C(i,j) = s;\r
-    }\r
-  }\r
-}\r
+
+#include "matmul.h"
+
+/*--------------------------------------------------------
+ *  Matrix multiplication C= A*B, (A,B,C stored columnwise) 
+ *  C function
+ *--------------------------------------------------------*/
+
+#define A(i,k) a[i + k*n]
+#define B(k,j) b[k + j*m]
+#define C(i,j) c[i + j*n]
+
+void matmul(double a[],int n,int m,double b[],int l, double c[])
+{
+  int i = 0,j = 0,k = 0;
+  double s = 0.0;
+  
+  for( i=0 ; i < n; i++)
+  {
+    for( j=0; j < l; j++)
+    {
+      s = 0.;
+      for( k=0; k< m; k++)
+      {
+             s += A(i,k)*B(k,j);
+      }
+      C(i,j) = s;
+    }
+  }
+}
index 799150e..765f6bc 100644 (file)
@@ -1,7 +1,7 @@
-#ifndef __MATMUL_H__\r
-#define __MATMUL_H__\r
-\r
-void matmul(double a[],int n,int m,double b[],int l, double c[]);\r
-\r
-#endif /* __MATMUL_H__ */\r
-\r
+#ifndef __MATMUL_H__
+#define __MATMUL_H__
+
+void matmul(double a[],int n,int m,double b[],int l, double c[]);
+
+#endif /* __MATMUL_H__ */
+
index 53f1db0..8ce6886 100644 (file)
@@ -1,36 +1,36 @@
-\r
-#include "matmul.h"\r
-\r
-#include "stack-c.h"\r
-\r
-#include "sciprint.h"\r
-\r
-int sci_matmul(char *fname) \r
-{\r
-  static int l1, m1, n1, l2, m2, n2, l3;\r
-  static int minlhs=1, maxlhs=1, minrhs=2, maxrhs=2;\r
-\r
-  /* Check number of inputs (rhs=2) and outputs (lhs=1) */\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  /* Get A (#1) and B (#2) and create C (#3) as double ("d") matrices */\r
-  GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);   /* m1, n1 (and l1) are output parameters */\r
-  GetRhsVar(2,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);   /* m1, n1 (and l1) are output parameters */\r
-  CreateVar(3,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n2, &l3);   /* m1 and n2 are input parameters */\r
-\r
-  /* Check dimensions    */\r
-  if (!(n1==m2)) { sciprint("%s: Incompatible inputs\n", "matmul");\r
-    Error(999);\r
-    return 0;}\r
-\r
-  /* Call multiplication function \r
-   * inputs:stk(l1)->A, stk(l2)->B \r
-   *  output:stk(l3)->C               \r
-   */\r
-  matmul(stk(l1), m1, n1, stk(l2), n2, stk(l3));\r
-\r
-  /*  Return C (3)  */\r
-  LhsVar(1) = 3;\r
-  return 0;\r
-}\r
+
+#include "matmul.h"
+
+#include "stack-c.h"
+
+#include "sciprint.h"
+
+int sci_matmul(char *fname) 
+{
+  static int l1, m1, n1, l2, m2, n2, l3;
+  static int minlhs=1, maxlhs=1, minrhs=2, maxrhs=2;
+
+  /* Check number of inputs (rhs=2) and outputs (lhs=1) */
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  /* Get A (#1) and B (#2) and create C (#3) as double ("d") matrices */
+  GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);   /* m1, n1 (and l1) are output parameters */
+  GetRhsVar(2,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);   /* m1, n1 (and l1) are output parameters */
+  CreateVar(3,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n2, &l3);   /* m1 and n2 are input parameters */
+
+  /* Check dimensions    */
+  if (!(n1==m2)) { sciprint("%s: Incompatible inputs\n", "matmul");
+    Error(999);
+    return 0;}
+
+  /* Call multiplication function 
+   * inputs:stk(l1)->A, stk(l2)->B 
+   *  output:stk(l3)->C               
+   */
+  matmul(stk(l1), m1, n1, stk(l2), n2, stk(l3));
+
+  /*  Return C (3)  */
+  LhsVar(1) = 3;
+  return 0;
+}
index 4581ed2..8b978a5 100644 (file)
@@ -1,28 +1,28 @@
-\r
-#include "displ.h"\r
-#include "stack-c.h"\r
-\r
-int sci_view(char *fname) \r
-{\r
-  static int l1, m1, n1, l2, m2, n2, m3, n3, l3;\r
-  static int minlhs=1, maxlhs=3, minrhs=3, maxrhs=3;\r
-\r
-  /* Check number of inputs (rhs=3) and outputs (lhs=3) */\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  /* Get X (1 ,double), Y (2, int) and  C (3, string) */\r
-  GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);\r
-  GetRhsVar(2,MATRIX_OF_INTEGER_DATATYPE, &m2, &n2, &l2);\r
-  GetRhsVar(3,STRING_DATATYPE, &m3, &n3, &l3);\r
-\r
-  /* Call display function\r
-     stk(l1)->X (double), istk(l2)->Y (int), cstk(l3)->Z  (char)    */\r
-  displ(stk(l1), m1, n1, istk(l2), m2, n2, cstk(l3), m3, n3);\r
-\r
-  /*  Return variables  */\r
-  LhsVar(1) = 1;\r
-  LhsVar(2) = 2;\r
-  LhsVar(3) = 3;\r
-  return 0;\r
-}\r
+
+#include "displ.h"
+#include "stack-c.h"
+
+int sci_view(char *fname) 
+{
+  static int l1, m1, n1, l2, m2, n2, m3, n3, l3;
+  static int minlhs=1, maxlhs=3, minrhs=3, maxrhs=3;
+
+  /* Check number of inputs (rhs=3) and outputs (lhs=3) */
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  /* Get X (1 ,double), Y (2, int) and  C (3, string) */
+  GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);
+  GetRhsVar(2,MATRIX_OF_INTEGER_DATATYPE, &m2, &n2, &l2);
+  GetRhsVar(3,STRING_DATATYPE, &m3, &n3, &l3);
+
+  /* Call display function
+     stk(l1)->X (double), istk(l2)->Y (int), cstk(l3)->Z  (char)    */
+  displ(stk(l1), m1, n1, istk(l2), m2, n2, cstk(l3), m3, n3);
+
+  /*  Return variables  */
+  LhsVar(1) = 1;
+  LhsVar(2) = 2;
+  LhsVar(3) = 3;
+  return 0;
+}
index 12f4240..4386140 100644 (file)
@@ -1,22 +1,22 @@
-#include <string.h> \r
-#include <stdio.h>\r
-#include "stack-c.h"\r
-#include "sciprint.h"\r
-\r
-/*************************************************************\r
- * Example of using a character string sent by the interface.\r
- * All 'a' are replaced by 'o'.\r
- *************************************************************/\r
-\r
-int as2osc(char *thechain)\r
-{\r
-  static int k, l;\r
-  l = strlen(thechain);\r
-  sciprint("character string length %d\n",l);\r
-  for (k = 0 ; k < l; k++) \r
-    {\r
-      if ( thechain[k] == 'a' ) thechain[k]='o';\r
-    }\r
-  return 0;\r
-} \r
-\r
+#include <string.h> 
+#include <stdio.h>
+#include "stack-c.h"
+#include "sciprint.h"
+
+/*************************************************************
+ * Example of using a character string sent by the interface.
+ * All 'a' are replaced by 'o'.
+ *************************************************************/
+
+int as2osc(char *thechain)
+{
+  static int k, l;
+  l = strlen(thechain);
+  sciprint("character string length %d\n",l);
+  for (k = 0 ; k < l; k++) 
+    {
+      if ( thechain[k] == 'a' ) thechain[k]='o';
+    }
+  return 0;
+} 
+
index 28e561e..2a9bf57 100644 (file)
@@ -1,72 +1,72 @@
-#include <stdlib.h>\r
-#include <string.h> \r
-#include <stdio.h>\r
-#include "machine.h"\r
-#include "stack-c.h" \r
-#include "sciprint.h"\r
-\r
-/*************************************************************\r
- *  Example of array created by C code\r
- *  converted to Scilab output variable\r
- *************************************************************/\r
-\r
-/*     double array    */\r
-int dblearrayc(double **a,int *m,int *n,int *ierr)\r
-{\r
-  int i ;\r
-  *n=5 ;\r
-  *m=3 ;\r
-  *a= ( double *) malloc( (unsigned) (*m)*(*n) *sizeof(double));\r
-  if ( *a != (double *) 0)   \r
-    {\r
-      *ierr=0;\r
-      for ( i= 0 ; i < (*m)*(*n) ; i++) (*a)[i] = i+1;\r
-    }\r
-  else \r
-    *ierr=1;\r
-  return(0);\r
-}\r
-\r
-\r
-/*     integer array    */\r
-int intarrayc(int **a,int *m,int *n,int *ierr) \r
-{\r
-  int i ;\r
-  *n=5 ;\r
-  *m=3 ;\r
-  *a= ( int *) malloc( (unsigned) (*m)*(*n) *sizeof(int));\r
-  if ( *a != (int *) 0)   \r
-    {\r
-      *ierr=0;\r
-      for ( i= 0 ; i < (*m)*(*n) ; i++) (*a)[i] = i+1;\r
-    }\r
-  else \r
-      *ierr=1;\r
-  return(0);\r
-}\r
-\r
-/*************************************************************\r
- * Example of character string created here.\r
- * Its length is sent back as an output.\r
- * It is converted into Scilab variable in the interface program.\r
- * The allocated array is freed in the interface program.\r
- *************************************************************/\r
-\r
-#define MYSTR "Scilab is ..."\r
-\r
-int crestrc(char **a,int *m,int *ierr)\r
-{\r
-  *m= strlen(MYSTR);\r
-  *a= (char *) malloc((unsigned) (*m+1)*sizeof(char));\r
-  if ( *a != (char *) 0) \r
-    {\r
-      *ierr=0;\r
-      sprintf((*a),MYSTR);\r
-    }\r
-  else\r
-    {\r
-      *ierr=1;\r
-      sciprint("malloc : No more space\n");\r
-    }\r
-  return(0);\r
-}\r
+#include <stdlib.h>
+#include <string.h> 
+#include <stdio.h>
+#include "machine.h"
+#include "stack-c.h" 
+#include "sciprint.h"
+
+/*************************************************************
+ *  Example of array created by C code
+ *  converted to Scilab output variable
+ *************************************************************/
+
+/*     double array    */
+int dblearrayc(double **a,int *m,int *n,int *ierr)
+{
+  int i ;
+  *n=5 ;
+  *m=3 ;
+  *a= ( double *) malloc( (unsigned) (*m)*(*n) *sizeof(double));
+  if ( *a != (double *) 0)   
+    {
+      *ierr=0;
+      for ( i= 0 ; i < (*m)*(*n) ; i++) (*a)[i] = i+1;
+    }
+  else 
+    *ierr=1;
+  return(0);
+}
+
+
+/*     integer array    */
+int intarrayc(int **a,int *m,int *n,int *ierr) 
+{
+  int i ;
+  *n=5 ;
+  *m=3 ;
+  *a= ( int *) malloc( (unsigned) (*m)*(*n) *sizeof(int));
+  if ( *a != (int *) 0)   
+    {
+      *ierr=0;
+      for ( i= 0 ; i < (*m)*(*n) ; i++) (*a)[i] = i+1;
+    }
+  else 
+      *ierr=1;
+  return(0);
+}
+
+/*************************************************************
+ * Example of character string created here.
+ * Its length is sent back as an output.
+ * It is converted into Scilab variable in the interface program.
+ * The allocated array is freed in the interface program.
+ *************************************************************/
+
+#define MYSTR "Scilab is ..."
+
+int crestrc(char **a,int *m,int *ierr)
+{
+  *m= strlen(MYSTR);
+  *a= (char *) malloc((unsigned) (*m+1)*sizeof(char));
+  if ( *a != (char *) 0) 
+    {
+      *ierr=0;
+      sprintf((*a),MYSTR);
+    }
+  else
+    {
+      *ierr=1;
+      sciprint("malloc : No more space\n");
+    }
+  return(0);
+}
index dd760b0..01e65ac 100644 (file)
@@ -1,10 +1,10 @@
-files=['intex10c.o'];\r
-ilib_build('gw_ex10c',['ex10c','intex10c'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-\r
-//variable read in Scilab stack\r
-param=1:10;\r
-z=ex10c();\r
-if norm(z-param) > %eps then pause,end\r
+files=['intex10c.o'];
+ilib_build('gw_ex10c',['ex10c','intex10c'],files,[]);
+
+exec loader.sce;
+
+
+//variable read in Scilab stack
+param=1:10;
+z=ex10c();
+if norm(z-param) > %eps then pause,end
index f809477..ed057c7 100644 (file)
@@ -1,11 +1,11 @@
-files=['intex11c.o'];\r
-ilib_build('gw_ex11c',['ex11c','intex11c'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-deff('[u,v,w]=myfct(x,y)','u=7+x,v=8+y,w=9+y')\r
-//ex11c executes myfct with input variables x=5 and y=6\r
-x=5;y=6;[u,v,w]=myfct(x,y);\r
-[p,q,r]=ex11c(1,2,3,4,5,6);\r
-if p<>u | q <> v | r <> w then pause,end\r
-\r
+files=['intex11c.o'];
+ilib_build('gw_ex11c',['ex11c','intex11c'],files,[]);
+
+exec loader.sce;
+
+deff('[u,v,w]=myfct(x,y)','u=7+x,v=8+y,w=9+y')
+//ex11c executes myfct with input variables x=5 and y=6
+x=5;y=6;[u,v,w]=myfct(x,y);
+[p,q,r]=ex11c(1,2,3,4,5,6);
+if p<>u | q <> v | r <> w then pause,end
+
index 3e2c85a..b0be771 100644 (file)
@@ -1,9 +1,9 @@
-files=['intex12c.o'];\r
-ilib_build('gw_ex12c',['ex12c','intex12c'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-deff('p=mypoly(x)','p=poly(x,''z'',''coeffs'')')\r
-c=[1,2,3];\r
-P1=ex12c(2,c);\r
-\r
+files=['intex12c.o'];
+ilib_build('gw_ex12c',['ex12c','intex12c'],files,[]);
+
+exec loader.sce;
+
+deff('p=mypoly(x)','p=poly(x,''z'',''coeffs'')')
+c=[1,2,3];
+P1=ex12c(2,c);
+
index 8a623be..4fefa63 100644 (file)
@@ -1,16 +1,16 @@
-\r
-files=['intex13c.o'];\r
-ilib_build('gw_ex13c',['ex13c','intex13c'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-a=ex13c([1,2,3]+%i*[4,5,5]);\r
-if norm(a-2*[1,2,3]-%i*[4,5,5]*3) > %eps then pause,end\r
-\r
-a=ex13c([1,2,3]);\r
-if norm(a-2*[1,2,3]) > %eps then pause,end\r
-\r
-\r
-\r
-\r
-\r
+
+files=['intex13c.o'];
+ilib_build('gw_ex13c',['ex13c','intex13c'],files,[]);
+
+exec loader.sce;
+
+a=ex13c([1,2,3]+%i*[4,5,5]);
+if norm(a-2*[1,2,3]-%i*[4,5,5]*3) > %eps then pause,end
+
+a=ex13c([1,2,3]);
+if norm(a-2*[1,2,3]) > %eps then pause,end
+
+
+
+
+
index 8611671..67ab8bb 100644 (file)
@@ -1,11 +1,11 @@
-\r
-files=['intex14c.o'];\r
-ilib_build('gw_ex14c',['ex14c','intex14c'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-// Creating the variable C \r
-ex14c();\r
-if C<>[10,20,30] then pause,end\r
-\r
-\r
+
+files=['intex14c.o'];
+ilib_build('gw_ex14c',['ex14c','intex14c'],files,[]);
+
+exec loader.sce;
+
+// Creating the variable C 
+ex14c();
+if C<>[10,20,30] then pause,end
+
+
index 0d321cf..0f7ac7e 100644 (file)
@@ -1,10 +1,10 @@
-\r
-files=['intex15c.o'];\r
-ilib_build('gw_ex15c',['ex15c','intex15c'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-// Accessing a Scilab string inside an interface \r
-Mystr='My string';\r
-ex15c()\r
-\r
+
+files=['intex15c.o'];
+ilib_build('gw_ex15c',['ex15c','intex15c'],files,[]);
+
+exec loader.sce;
+
+// Accessing a Scilab string inside an interface 
+Mystr='My string';
+ex15c()
+
index 1ef0548..25a36f2 100644 (file)
@@ -1,20 +1,20 @@
-\r
-files=['intex1c.o'];\r
-ilib_build('gw_ex1c',['ex1c','intex1c'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-a=1:10;b=a+1;c=ones(2,3)+2;\r
-[x,y,z,t]=ex1c('mul',a,b,c);\r
-\r
- rt  = [ 2.    4.    6.    8.    10.    12.    14.    16.    18.    20.];\r
- rz  = [ 4.    6.    8.    10.    12.    14.    16.    18.    20.    22.];\r
- ry  = [ 6.    6.    6.;\r
-        6.    6.    6.];\r
- rx  = [ 0.    6.     12.;\r
-        6.    12.    18.];\r
-        \r
-if rt <> t then pause,end\r
-if rz <> z then pause,end\r
-if rx <> x then pause,end\r
-if ry <> y then pause,end\r
+
+files=['intex1c.o'];
+ilib_build('gw_ex1c',['ex1c','intex1c'],files,[]);
+
+exec loader.sce;
+
+a=1:10;b=a+1;c=ones(2,3)+2;
+[x,y,z,t]=ex1c('mul',a,b,c);
+
+ rt  = [ 2.    4.    6.    8.    10.    12.    14.    16.    18.    20.];
+ rz  = [ 4.    6.    8.    10.    12.    14.    16.    18.    20.    22.];
+ ry  = [ 6.    6.    6.;
+        6.    6.    6.];
+ rx  = [ 0.    6.     12.;
+        6.    12.    18.];
+        
+if rt <> t then pause,end
+if rz <> z then pause,end
+if rx <> x then pause,end
+if ry <> y then pause,end
index 45feb36..e0d25c3 100644 (file)
@@ -1,36 +1,36 @@
-\r
-files=['intex2c.o'];\r
-ilib_build('gw_ex2c',['ex2c','intex2c'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-// Example with optional argument specified with the \r
-// arg=value syntax\r
-// [a,b,c] = ex2c(x1,{ v1= arg1, v2=arg2}) , arg1 default value 99\r
-//                                            arg2 default value 3\r
-// only v1 and v2 are recognized as optional argument names \r
-// the return value are a<--x1, b = 2*v2 , c = 3*v2 \r
-//\r
-\r
-[a,b,c]=ex2c('test');\r
-\r
-if norm([99*2,3*3]-[b,c]) > %eps then pause,end\r
-\r
-[a,b,c]=ex2c('test',v1=[10,20]);\r
-\r
-if norm([[10,20]*2,3*3]-[b,c]) > %eps then pause,end\r
-\r
-[a,b,c]=ex2c('test',v1=[10,20],v2=8);\r
-\r
-if norm([[10,20]*2,8*3]-[b,c]) > %eps then pause,end\r
-\r
-[a,b,c]=ex2c('test',v2=8,v1=[10]);\r
-\r
-if norm([10*2,8*3]-[b,c]) > %eps then pause,end\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
+
+files=['intex2c.o'];
+ilib_build('gw_ex2c',['ex2c','intex2c'],files,[]);
+
+exec loader.sce;
+
+// Example with optional argument specified with the 
+// arg=value syntax
+// [a,b,c] = ex2c(x1,{ v1= arg1, v2=arg2}) , arg1 default value 99
+//                                            arg2 default value 3
+// only v1 and v2 are recognized as optional argument names 
+// the return value are a<--x1, b = 2*v2 , c = 3*v2 
+//
+
+[a,b,c]=ex2c('test');
+
+if norm([99*2,3*3]-[b,c]) > %eps then pause,end
+
+[a,b,c]=ex2c('test',v1=[10,20]);
+
+if norm([[10,20]*2,3*3]-[b,c]) > %eps then pause,end
+
+[a,b,c]=ex2c('test',v1=[10,20],v2=8);
+
+if norm([[10,20]*2,8*3]-[b,c]) > %eps then pause,end
+
+[a,b,c]=ex2c('test',v2=8,v1=[10]);
+
+if norm([10*2,8*3]-[b,c]) > %eps then pause,end
+
+
+
+
+
+
+
index 93b484a..0078ac0 100644 (file)
@@ -1,11 +1,11 @@
-\r
-files=['intex3c.o'];\r
-ilib_build('gw_ex3c',['ex3c','intex3c'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-\r
-A = rand(10,10,'n')>=0 ;\r
-\r
-B=ex3c(A);\r
-\r
+
+files=['intex3c.o'];
+ilib_build('gw_ex3c',['ex3c','intex3c'],files,[]);
+
+exec loader.sce;
+
+
+A = rand(10,10,'n')>=0 ;
+
+B=ex3c(A);
+
index 7867329..05462aa 100644 (file)
@@ -1,9 +1,9 @@
-\r
-files=['intex4c.o'];\r
-ilib_build('gw_ex4c',['ex4c','intex4c'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-//matrix (double) created by C function\r
-x1=ex4c();\r
-if norm(x1-matrix((1:5*3),3,5)) > %eps then pause,end\r
+
+files=['intex4c.o'];
+ilib_build('gw_ex4c',['ex4c','intex4c'],files,[]);
+
+exec loader.sce;
+
+//matrix (double) created by C function
+x1=ex4c();
+if norm(x1-matrix((1:5*3),3,5)) > %eps then pause,end
index 231dd19..cb462f1 100644 (file)
@@ -1,9 +1,9 @@
-\r
-files=['intex5c.o','crestrc.o'];\r
-ilib_build('gw_ex5c',['ex5c','intex5c'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-//Character string created by C function\r
-x3=ex5c();\r
+
+files=['intex5c.o','crestrc.o'];
+ilib_build('gw_ex5c',['ex5c','intex5c'],files,[]);
+
+exec loader.sce;
+
+//Character string created by C function
+x3=ex5c();
 if x3<>"Scilab is ..." then pause,end
\ No newline at end of file
index a5f8962..162f932 100644 (file)
@@ -1,12 +1,12 @@
-\r
-files=['intex6c.o','crestrc.o'];\r
-ilib_build('gw_ex6c',['ex6c','intex6c'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-// all together \r
-\r
-[y1,y2,y3]=ex6c();\r
-if y1<>"Scilab is ..." then pause,end\r
-if norm(y2-matrix((1:5*3),3,5)) > %eps then pause,end\r
+
+files=['intex6c.o','crestrc.o'];
+ilib_build('gw_ex6c',['ex6c','intex6c'],files,[]);
+
+exec loader.sce;
+
+// all together 
+
+[y1,y2,y3]=ex6c();
+if y1<>"Scilab is ..." then pause,end
+if norm(y2-matrix((1:5*3),3,5)) > %eps then pause,end
 if norm(y3-matrix((1:5*3),3,5)) > %eps then pause,end
\ No newline at end of file
index 0537f5f..aedaf84 100644 (file)
@@ -1,11 +1,11 @@
-\r
-files=['intex7c.o'];\r
-ilib_build('gw_ex7c',['ex7c','intex7c'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-A=[1,2,3,4];\r
-B=[10,20,30;40,50,60];\r
-//Just display A and B\r
-ex7c(A,B)\r
-\r
+
+files=['intex7c.o'];
+ilib_build('gw_ex7c',['ex7c','intex7c'],files,[]);
+
+exec loader.sce;
+
+A=[1,2,3,4];
+B=[10,20,30;40,50,60];
+//Just display A and B
+ex7c(A,B)
+
index 0a2092b..d69cc6d 100644 (file)
@@ -1,19 +1,19 @@
-\r
-files=['intex8c.o'];\r
-ilib_build('gw_ex8c',['ex8c','intex8c'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-a_chain='hello';s=poly(0,'s');\r
-deff('[y1,y2,y3]=myfunction(x1,x2)','y1=x1+x2,y2=1+s,y3=a_chain')\r
-\r
-x1=1;x2=2;\r
-[y1,y2,y3]=myfunction(x1,x2);\r
-\r
-[u,v,w]=ex8c(x1,x2,myfunction);\r
-\r
-if u-y1 > %eps then pause,end\r
-if v-y2<>0 then pause,end\r
-if w<>y3 then pause,end\r
-\r
-\r
+
+files=['intex8c.o'];
+ilib_build('gw_ex8c',['ex8c','intex8c'],files,[]);
+
+exec loader.sce;
+
+a_chain='hello';s=poly(0,'s');
+deff('[y1,y2,y3]=myfunction(x1,x2)','y1=x1+x2,y2=1+s,y3=a_chain')
+
+x1=1;x2=2;
+[y1,y2,y3]=myfunction(x1,x2);
+
+[u,v,w]=ex8c(x1,x2,myfunction);
+
+if u-y1 > %eps then pause,end
+if v-y2<>0 then pause,end
+if w<>y3 then pause,end
+
+
index 122f0b7..9a0abbf 100644 (file)
@@ -1,9 +1,9 @@
-\r
-files=['intex9c.o','as2osc.o'];\r
-ilib_build('gw_ex9c',['ex9c','intex9c'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-//a's to o's\r
-x=ex9c('gaad');\r
-if x<>'good' then pause,end \r
+
+files=['intex9c.o','as2osc.o'];
+ilib_build('gw_ex9c',['ex9c','intex9c'],files,[]);
+
+exec loader.sce;
+
+//a's to o's
+x=ex9c('gaad');
+if x<>'good' then pause,end 
index bc709ed..8509b9c 100644 (file)
@@ -1,35 +1,35 @@
-#include "stack-c.h"\r
-\r
-/*****************************************\r
- *  Accessing the Scilab Stack \r
- *     1- Accessing a Scilab Matrix (read and write) \r
- *        by its name. \r
- *****************************************/\r
-\r
-int intex10c(char* fname)\r
-{ \r
-  int l1;\r
-  static int minlhs=1, minrhs=0, maxlhs=1, maxrhs=0;\r
-  static int m, n, lp;\r
-  int k;\r
-\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  /*\r
-   * we want to acces scilab variable : param \r
-   * we can modify or read param with *stk(lp+k)\r
-   */ \r
-\r
-  GetMatrixptr("param", &m, &n, &lp);\r
-  CreateVar(1,MATRIX_OF_DOUBLE_DATATYPE,  &m, &n, &l1);\r
-\r
-  for (k = 0; k < m*n ; ++k) \r
-    { \r
-      (*stk(l1+k)) = (*stk(lp+k));\r
-    }\r
-  \r
-  LhsVar(1) = 1;\r
-  return(0);\r
-}\r
-\r
+#include "stack-c.h"
+
+/*****************************************
+ *  Accessing the Scilab Stack 
+ *     1- Accessing a Scilab Matrix (read and write) 
+ *        by its name. 
+ *****************************************/
+
+int intex10c(char* fname)
+{ 
+  int l1;
+  static int minlhs=1, minrhs=0, maxlhs=1, maxrhs=0;
+  static int m, n, lp;
+  int k;
+
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  /*
+   * we want to acces scilab variable : param 
+   * we can modify or read param with *stk(lp+k)
+   */ 
+
+  GetMatrixptr("param", &m, &n, &lp);
+  CreateVar(1,MATRIX_OF_DOUBLE_DATATYPE,  &m, &n, &l1);
+
+  for (k = 0; k < m*n ; ++k) 
+    { 
+      (*stk(l1+k)) = (*stk(lp+k));
+    }
+  
+  LhsVar(1) = 1;
+  return(0);
+}
+
index a6d5fba..59457e3 100644 (file)
@@ -1,55 +1,55 @@
-#include "stack-c.h"\r
-\r
-/**************************************************\r
- * Executing the Scilab function "myfct" defined in ex11c.sce\r
- **************************************************/\r
-\r
-int intex11c(char *fname) \r
-{\r
-  int mlhs,mrhs,ibegin;\r
-  static int l1, m1, n1, m2, n2, l2 ;\r
-  static int minlhs=1, minrhs=6, maxlhs=3, maxrhs=6;\r
-  static char name[] = "myfct" ;\r
-\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);\r
-  GetRhsVar(2,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);\r
-  GetRhsVar(3,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);\r
-  GetRhsVar(4,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);\r
-  GetRhsVar(5,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);\r
-  GetRhsVar(6,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);\r
-\r
-  /* \r
-   *  We receive 6 input variables indexed by (1,2,...6) \r
-   *  when the command ex11c(x1,x2,x3,x4,x5,x6) is issued.\r
-   *  We have a Scilab function "myfct" with mrhs=2 inputs \r
-   *  and mlhs=3 outputs:\r
-   *  function [u,v,w]=myfct(x,y)','u=7+x,v=8+y,w=9+y')\r
-   *  To run myfct with input variables x5 and x6,\r
-   *  we must set ibegin=5. Variables passed to the function must\r
-   *  appear consecutively with index ifirst, ifirst+1,..., ifirst+mrhs. \r
-   */\r
-  ibegin=5;  mlhs=3; mrhs=2 ; \r
-  /* execute the function "myfct" */\r
-  SciString(&ibegin,name,&mlhs,&mrhs);\r
-\r
-  /* check if an error has occured while running a_function */\r
-  if (Err > 0 ) return 0;\r
-  \r
-  /* Output variables u, v, and w of myfct\r
-   * are now indexed by ifirst, ifirst+1, ifirst+mlhs i.e.\r
-   * u and v are indexed by 5 and 6 resp. and w (created by myfct)\r
-   * is indexed by 7.\r
-   * We return u v and w:\r
-   * Caution: Variables with index larger than ifirst+mrhs cannot be \r
-   *  returned to Scilab.\r
-   */\r
-\r
-  LhsVar(1) = 5;\r
-  LhsVar(2) = 6;\r
-  LhsVar(3) = 7;\r
-  return 0;\r
-}\r
-\r
+#include "stack-c.h"
+
+/**************************************************
+ * Executing the Scilab function "myfct" defined in ex11c.sce
+ **************************************************/
+
+int intex11c(char *fname) 
+{
+  int mlhs,mrhs,ibegin;
+  static int l1, m1, n1, m2, n2, l2 ;
+  static int minlhs=1, minrhs=6, maxlhs=3, maxrhs=6;
+  static char name[] = "myfct" ;
+
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);
+  GetRhsVar(2,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);
+  GetRhsVar(3,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);
+  GetRhsVar(4,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);
+  GetRhsVar(5,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);
+  GetRhsVar(6,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);
+
+  /* 
+   *  We receive 6 input variables indexed by (1,2,...6) 
+   *  when the command ex11c(x1,x2,x3,x4,x5,x6) is issued.
+   *  We have a Scilab function "myfct" with mrhs=2 inputs 
+   *  and mlhs=3 outputs:
+   *  function [u,v,w]=myfct(x,y)','u=7+x,v=8+y,w=9+y')
+   *  To run myfct with input variables x5 and x6,
+   *  we must set ibegin=5. Variables passed to the function must
+   *  appear consecutively with index ifirst, ifirst+1,..., ifirst+mrhs. 
+   */
+  ibegin=5;  mlhs=3; mrhs=2 ; 
+  /* execute the function "myfct" */
+  SciString(&ibegin,name,&mlhs,&mrhs);
+
+  /* check if an error has occured while running a_function */
+  if (Err > 0 ) return 0;
+  
+  /* Output variables u, v, and w of myfct
+   * are now indexed by ifirst, ifirst+1, ifirst+mlhs i.e.
+   * u and v are indexed by 5 and 6 resp. and w (created by myfct)
+   * is indexed by 7.
+   * We return u v and w:
+   * Caution: Variables with index larger than ifirst+mrhs cannot be 
+   *  returned to Scilab.
+   */
+
+  LhsVar(1) = 5;
+  LhsVar(2) = 6;
+  LhsVar(3) = 7;
+  return 0;
+}
+
index 36495c1..1f89ecf 100644 (file)
@@ -1,49 +1,49 @@
-#include "stack-c.h"\r
-\r
-int C2F(dscal)(integer *n, double *da,double *dx,integer *incx);\r
-\r
-/**************************************************\r
- * Calling the scilab function "mypoly" inside the interface \r
- * "mypoly" is defined in ex12c.sce\r
- **************************************************/\r
-\r
-int intex12c(char *fname) \r
-{\r
-  int mlhs,mrhs,ibegin,un=1,mn2;\r
-  static int l1, m1, n1, m2, n2, l2 ; \r
-  static int minlhs=1, minrhs=2, maxlhs=1, maxrhs=2;\r
-  static char name[] = "mypoly" ;\r
-\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);\r
-  GetRhsVar(2,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);\r
-\r
-  /** multiply the roots by the scaling factor in place. */\r
-\r
-  C2F(dscal)((mn2=m2*n2,&mn2),stk(l1),stk(l2),&un);\r
-\r
-  /* call mypoly to create the polynomial from its roots \r
-   *\r
-   *  To call a function it is required that its input arguments are\r
-   *  stored in the last positions of the variables stack (it is the\r
-   *  ase here. NOTE that when \r
-   *  called, the function destroys its input variables and replaces them by \r
-   *  the output variables. \r
-   *  Here  function  takes  variables 1 and 2 as inputs and generates output\r
-   *  variables at positions 1.\r
-   *  ibegin must be the index of the first input variable of a_function\r
-   */\r
-  ibegin=2;\r
-\r
-  /* execute the function "mypoly" */\r
-  mlhs=1; mrhs=1 ; \r
-  SciString(&ibegin,name,&mlhs,&mrhs);\r
-  /* check if an error has occured while running mypoly */\r
-  if (Err > 0 ) return 0;\r
-\r
-  LhsVar(1) = 2; \r
-  return 0;\r
-}\r
-\r
+#include "stack-c.h"
+
+int C2F(dscal)(integer *n, double *da,double *dx,integer *incx);
+
+/**************************************************
+ * Calling the scilab function "mypoly" inside the interface 
+ * "mypoly" is defined in ex12c.sce
+ **************************************************/
+
+int intex12c(char *fname) 
+{
+  int mlhs,mrhs,ibegin,un=1,mn2;
+  static int l1, m1, n1, m2, n2, l2 ; 
+  static int minlhs=1, minrhs=2, maxlhs=1, maxrhs=2;
+  static char name[] = "mypoly" ;
+
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);
+  GetRhsVar(2,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);
+
+  /** multiply the roots by the scaling factor in place. */
+
+  C2F(dscal)((mn2=m2*n2,&mn2),stk(l1),stk(l2),&un);
+
+  /* call mypoly to create the polynomial from its roots 
+   *
+   *  To call a function it is required that its input arguments are
+   *  stored in the last positions of the variables stack (it is the
+   *  ase here. NOTE that when 
+   *  called, the function destroys its input variables and replaces them by 
+   *  the output variables. 
+   *  Here  function  takes  variables 1 and 2 as inputs and generates output
+   *  variables at positions 1.
+   *  ibegin must be the index of the first input variable of a_function
+   */
+  ibegin=2;
+
+  /* execute the function "mypoly" */
+  mlhs=1; mrhs=1 ; 
+  SciString(&ibegin,name,&mlhs,&mrhs);
+  /* check if an error has occured while running mypoly */
+  if (Err > 0 ) return 0;
+
+  LhsVar(1) = 2; 
+  return 0;
+}
+
index 6a6f83d..1fbd77b 100644 (file)
@@ -1,39 +1,39 @@
-#include <string.h> \r
-#include <stdio.h>\r
-#include "stack-c.h"\r
-\r
-/** external functions to be called through this interface **/\r
-\r
-static int f99 (double *,double *,int*, int *,int *,int *);\r
-\r
-int intex13c(char *fname) \r
-{\r
-  static int ierr;\r
-  static int lr1,lc1,it1,m1, n1;\r
-  static int minlhs=1, minrhs=1, maxlhs=1, maxrhs=1;\r
-\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  GetRhsCVar(1,MATRIX_OF_DOUBLE_DATATYPE, &it1, &m1, &n1, &lr1,&lc1);\r
-  \r
-  f99(stk(lr1), stk(lc1), &it1, &m1, &n1, &ierr);\r
-  \r
-  if (ierr > 0) \r
-    {\r
-      Scierror(999,"%s: Internal Error\n",fname);\r
-      return 0;\r
-    }\r
-  LhsVar(1) = 1;\r
-  return 0;\r
-}\r
-\r
-static int f99(double *ar,double *ac,int *ita,int *ma,int *na,int *err) \r
-{\r
-  int i;\r
-  *err=0;\r
-  for ( i= 0 ; i < (*ma)*(*na) ; i++) ar[i] = 2*ar[i] ;\r
-  if ( *ita == 1) \r
-    for ( i= 0 ; i < (*ma)*(*na) ; i++) ac[i] = 3*ac[i] ;\r
-  return(0);\r
-}\r
+#include <string.h> 
+#include <stdio.h>
+#include "stack-c.h"
+
+/** external functions to be called through this interface **/
+
+static int f99 (double *,double *,int*, int *,int *,int *);
+
+int intex13c(char *fname) 
+{
+  static int ierr;
+  static int lr1,lc1,it1,m1, n1;
+  static int minlhs=1, minrhs=1, maxlhs=1, maxrhs=1;
+
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  GetRhsCVar(1,MATRIX_OF_DOUBLE_DATATYPE, &it1, &m1, &n1, &lr1,&lc1);
+  
+  f99(stk(lr1), stk(lc1), &it1, &m1, &n1, &ierr);
+  
+  if (ierr > 0) 
+    {
+      Scierror(999,"%s: Internal Error\n",fname);
+      return 0;
+    }
+  LhsVar(1) = 1;
+  return 0;
+}
+
+static int f99(double *ar,double *ac,int *ita,int *ma,int *na,int *err) 
+{
+  int i;
+  *err=0;
+  for ( i= 0 ; i < (*ma)*(*na) ; i++) ar[i] = 2*ar[i] ;
+  if ( *ita == 1) 
+    for ( i= 0 ; i < (*ma)*(*na) ; i++) ac[i] = 3*ac[i] ;
+  return(0);
+}
index 8ec70d2..47b5cfb 100644 (file)
@@ -1,23 +1,23 @@
-#include "stack-c.h"\r
-\r
-/*****************************************\r
- *  Accessing the Scilab Stack :\r
- *   Creation of a Scilab Matrix "C"\r
- *   from a name and an array of data\r
- *****************************************/\r
-int intex14c(char* fname)\r
-{ \r
-  static int minlhs=1, minrhs=0, maxlhs=1, maxrhs=0;\r
-  static int m=1, n=3;\r
-  static double C[3]={10,20,30};\r
-\r
-  /*  zero input and one output (ans) of type 0 */\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  /** sending array C[] to Scilab as variable C (size [1,3]) **/\r
-  WriteMatrix("C", &m, &n, C);\r
-  /* LhsVar(1) = 0  means "no output" */\r
-  LhsVar(1) = 0;\r
-  return(0);\r
-}\r
+#include "stack-c.h"
+
+/*****************************************
+ *  Accessing the Scilab Stack :
+ *   Creation of a Scilab Matrix "C"
+ *   from a name and an array of data
+ *****************************************/
+int intex14c(char* fname)
+{ 
+  static int minlhs=1, minrhs=0, maxlhs=1, maxrhs=0;
+  static int m=1, n=3;
+  static double C[3]={10,20,30};
+
+  /*  zero input and one output (ans) of type 0 */
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  /** sending array C[] to Scilab as variable C (size [1,3]) **/
+  WriteMatrix("C", &m, &n, C);
+  /* LhsVar(1) = 0  means "no output" */
+  LhsVar(1) = 0;
+  return(0);
+}
index d252a8c..e8dba6f 100644 (file)
@@ -1,37 +1,37 @@
-#include "stack-c.h"\r
-#include "sciprint.h"\r
-\r
-/*****************************************\r
- *  Accessing the Scilab Stack \r
- *   Accessing a Scilab String (read) by its name. \r
- *****************************************/\r
-\r
-#define MAXCH 30\r
-\r
-int intex15c(char* fname)\r
-\r
-{ \r
-  static int minlhs=1, minrhs=0, maxlhs=1, maxrhs=0;\r
-  char str[MAXCH];\r
-  int strl=MAXCH;\r
-\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  /* We search a Scilab Object named Mystr check that it is a string \r
-   * and store the string in str. \r
-   * strl is used on entry to give the maximum number \r
-   * of characters which can be stored in str \r
-   * After the call strl contains the number of \r
-   * copied characters\r
-   */\r
-\r
-  ReadString("Mystr", &strl, str);\r
-\r
-  sciprint("Mystr= \"%s\", length %d\n", str, strl);\r
-\r
-  /*    LhsVar(1) = 0; means "no output"   */\r
-  LhsVar(1) = 0;\r
-  return(0);\r
-}\r
-\r
+#include "stack-c.h"
+#include "sciprint.h"
+
+/*****************************************
+ *  Accessing the Scilab Stack 
+ *   Accessing a Scilab String (read) by its name. 
+ *****************************************/
+
+#define MAXCH 30
+
+int intex15c(char* fname)
+
+{ 
+  static int minlhs=1, minrhs=0, maxlhs=1, maxrhs=0;
+  char str[MAXCH];
+  int strl=MAXCH;
+
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  /* We search a Scilab Object named Mystr check that it is a string 
+   * and store the string in str. 
+   * strl is used on entry to give the maximum number 
+   * of characters which can be stored in str 
+   * After the call strl contains the number of 
+   * copied characters
+   */
+
+  ReadString("Mystr", &strl, str);
+
+  sciprint("Mystr= \"%s\", length %d\n", str, strl);
+
+  /*    LhsVar(1) = 0; means "no output"   */
+  LhsVar(1) = 0;
+  return(0);
+}
+
index 68c1ec0..f19445e 100644 (file)
@@ -1,27 +1,27 @@
-#include "stack-c.h"\r
-\r
-/*****************************************\r
- *  Accessing the Scilab Stack \r
- *   Creation of a Scilab variable Str of type string\r
- *   from a name and an a C string \r
- *****************************************/\r
-\r
-int intex16c(char* fname)\r
-{ \r
-  static int minlhs=1, minrhs=0, maxlhs=1, maxrhs=0;\r
-  static char str[] ="Pilgrim said he, where can it be this land of Eldorado";\r
-  int strl;\r
-\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  strl=strlen(str);\r
-  /* Creating the Scilab variable Str from str */\r
-  WriteString("Str", &strl, str);\r
-\r
-  /* No output */\r
-  LhsVar(1) = 0;\r
-  return(0);\r
-}\r
-\r
-\r
+#include "stack-c.h"
+
+/*****************************************
+ *  Accessing the Scilab Stack 
+ *   Creation of a Scilab variable Str of type string
+ *   from a name and an a C string 
+ *****************************************/
+
+int intex16c(char* fname)
+{ 
+  static int minlhs=1, minrhs=0, maxlhs=1, maxrhs=0;
+  static char str[] ="Pilgrim said he, where can it be this land of Eldorado";
+  int strl;
+
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  strl=strlen(str);
+  /* Creating the Scilab variable Str from str */
+  WriteString("Str", &strl, str);
+
+  /* No output */
+  LhsVar(1) = 0;
+  return(0);
+}
+
+
index 4b2de5b..194e98a 100644 (file)
-#include <string.h>\r
-\r
-#include "stack-c.h"\r
-\r
-typedef void (*voidf)();\r
-\r
-typedef struct {\r
-  char *name;\r
-  voidf f;\r
-} FTAB;\r
-\r
-/*******************************************\r
- * Table of predefined functions f1c and f2c\r
- *******************************************/\r
-\r
-#define ARGS_ex17c double,double, double *\r
-\r
-typedef int (*funcex) __PARAMS((ARGS_ex17c));\r
-extern int f1c __PARAMS((ARGS_ex17c));\r
-extern int f2c __PARAMS((ARGS_ex17c));\r
-extern int ex17c __PARAMS((double *,integer ,double *,integer,double *, funcex));\r
\r
-FTAB FTab_ex17c[] ={\r
-  {"f1c", (voidf) f1c},\r
-  {"f2c", (voidf) f2c},\r
-  {(char *) 0, (voidf) 0}};\r
-\r
-/***************************************************\r
- * deal with errors in scilab functions \r
- ***************************************************/\r
-\r
-#include <setjmp.h>\r
-static  jmp_buf ex17cenv; \r
-\r
-/***************************************************\r
- * data for interface \r
- ***************************************************/\r
-\r
-static int sci_f, lhs_f, rhs_f;\r
-\r
-/***************************************************\r
- * Functions \r
- ***************************************************/\r
-\r
-static int sciex17c __PARAMS((ARGS_ex17c));\r
-static funcex Argex17c;\r
-\r
-/***************************************************\r
- * intex17c interface for ex17c \r
- ***************************************************/\r
-\r
-int intex17c(fname) \r
-     char *fname;\r
-{ \r
-  int returned_from_longjump ;\r
-  int m_X,n_X,l_X,m_Y,n_Y,l_Y,m_Z,n_Z,l_Z;\r
-  static int minlhs=1, minrhs=3, maxlhs=1, maxrhs=3;\r
-\r
-  /*   Check rhs and lhs   */  \r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  /*   Variable #1 (X = real vector)   */\r
-  GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &m_X, &n_X, &l_X);\r
-\r
-  /*   Variable #2 (Y = real vector)   */\r
-  GetRhsVar(2,MATRIX_OF_DOUBLE_DATATYPE, &m_Y, &n_Y, &l_Y);\r
-\r
-  /*   Variable #3 (f = "argument function")   */\r
-  /*   ex17c(X,Y,f) \r
-   *   if f is a string we search for f in Tables and on succes \r
-   *         Argex17c will be the function to be called  \r
-   *   if f is a macro then sciex17c will be called (see its definition bellow) \r
-   *         returned arguments are sci_f, lhs_f, rhs_f \r
-   *         function position in the stack sci_f required lhs and rhs in lhs_f, rhs_f \r
-   *         (we do not use lhs_f and rhs_f in this example)\r
-   */\r
-\r
-  Argex17c  = (funcex) GetFuncPtr("ex17c", 3, FTab_ex17c, (voidf) sciex17c, &sci_f, &lhs_f, &rhs_f);\r
-  if ( Argex17c == (funcex) 0 ) return 0;\r
-  \r
-  m_Z= m_X*n_X;  n_Z= m_Y*n_Y;\r
-\r
-  /*  Creating the output variable Z (#4) , real matrix variable with m_Z rows and n_Z columns    */\r
-\r
-  CreateVar(4,MATRIX_OF_DOUBLE_DATATYPE, &m_Z, &n_Z, &l_Z);\r
-  \r
-  /* If an error occurs while Z is calculated ... */\r
-\r
-  if (( returned_from_longjump = setjmp(ex17cenv)) != 0 )\r
-    {\r
-      Scierror(999,"%s: Internal error\n",fname);\r
-      return 0;\r
-    } \r
-  \r
-  /*  Now matrix Z is populated i.e. appropriate values are \r
-   *  assigned to stk(l_Z)[0] ( = Z(1,1) ), stk(l_Z)[1]  ( = Z(2,1) ), ... \r
-   */\r
-\r
-  ex17c(stk(l_X), m_X*n_X, stk(l_Y), m_Y*n_Y, stk(l_Z), Argex17c);\r
-\r
-  /*  Variable #4 is returned to Scilab  */\r
-  LhsVar(1) = 4;\r
-  return 0;\r
-}\r
-\r
-/*---------------------------------------------------------------\r
- *  Computing z=f(x,y), f being the Scilab argument function \r
- * C function emulating the Scilab function pointed to by sci_f \r
- *---------------------------------------------------------------*/\r
-\r
-static int sciex17c(x, y, z)\r
-     double x, y, *z;\r
-{\r
-  static int lhs=1,rhs=2;\r
-  int scilab_i,scilab_j, un=1;\r
-  /* Inputs (x(i),y(j)) at positions  (5,6) */\r
-  CreateVar(5,MATRIX_OF_DOUBLE_DATATYPE, &un, &un, &scilab_i);\r
-  stk(scilab_i)[0] = x;\r
-\r
-  CreateVar(6,MATRIX_OF_DOUBLE_DATATYPE, &un, &un, &scilab_j);\r
-  stk(scilab_j)[0] = y;\r
-\r
-  /* executes the Scilab function (f) pointed to by sci_f. \r
-   * we provide a rhs=2 and expect lhs = 1 \r
-   */\r
-  PExecSciFunction(5, &sci_f, &lhs, &rhs, "ArgFex", ex17cenv);\r
-  /* One output at position of first input (5) */\r
-  *z = *stk(scilab_i);\r
-  return 0;\r
-}\r
-\r
-\r
-\r
-\r
-\r
+#include <string.h>
+
+#include "stack-c.h"
+
+typedef void (*voidf)();
+
+typedef struct {
+  char *name;
+  voidf f;
+} FTAB;
+
+/*******************************************
+ * Table of predefined functions f1c and f2c
+ *******************************************/
+
+#define ARGS_ex17c double,double, double *
+
+typedef int (*funcex) __PARAMS((ARGS_ex17c));
+extern int f1c __PARAMS((ARGS_ex17c));
+extern int f2c __PARAMS((ARGS_ex17c));
+extern int ex17c __PARAMS((double *,integer ,double *,integer,double *, funcex));
+FTAB FTab_ex17c[] ={
+  {"f1c", (voidf) f1c},
+  {"f2c", (voidf) f2c},
+  {(char *) 0, (voidf) 0}};
+
+/***************************************************
+ * deal with errors in scilab functions 
+ ***************************************************/
+
+#include <setjmp.h>
+static  jmp_buf ex17cenv; 
+
+/***************************************************
+ * data for interface 
+ ***************************************************/
+
+static int sci_f, lhs_f, rhs_f;
+
+/***************************************************
+ * Functions 
+ ***************************************************/
+
+static int sciex17c __PARAMS((ARGS_ex17c));
+static funcex Argex17c;
+
+/***************************************************
+ * intex17c interface for ex17c 
+ ***************************************************/
+
+int intex17c(fname) 
+     char *fname;
+{ 
+  int returned_from_longjump ;
+  int m_X,n_X,l_X,m_Y,n_Y,l_Y,m_Z,n_Z,l_Z;
+  static int minlhs=1, minrhs=3, maxlhs=1, maxrhs=3;
+
+  /*   Check rhs and lhs   */  
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  /*   Variable #1 (X = real vector)   */
+  GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &m_X, &n_X, &l_X);
+
+  /*   Variable #2 (Y = real vector)   */
+  GetRhsVar(2,MATRIX_OF_DOUBLE_DATATYPE, &m_Y, &n_Y, &l_Y);
+
+  /*   Variable #3 (f = "argument function")   */
+  /*   ex17c(X,Y,f) 
+   *   if f is a string we search for f in Tables and on succes 
+   *         Argex17c will be the function to be called  
+   *   if f is a macro then sciex17c will be called (see its definition bellow) 
+   *         returned arguments are sci_f, lhs_f, rhs_f 
+   *         function position in the stack sci_f required lhs and rhs in lhs_f, rhs_f 
+   *         (we do not use lhs_f and rhs_f in this example)
+   */
+
+  Argex17c  = (funcex) GetFuncPtr("ex17c", 3, FTab_ex17c, (voidf) sciex17c, &sci_f, &lhs_f, &rhs_f);
+  if ( Argex17c == (funcex) 0 ) return 0;
+  
+  m_Z= m_X*n_X;  n_Z= m_Y*n_Y;
+
+  /*  Creating the output variable Z (#4) , real matrix variable with m_Z rows and n_Z columns    */
+
+  CreateVar(4,MATRIX_OF_DOUBLE_DATATYPE, &m_Z, &n_Z, &l_Z);
+  
+  /* If an error occurs while Z is calculated ... */
+
+  if (( returned_from_longjump = setjmp(ex17cenv)) != 0 )
+    {
+      Scierror(999,"%s: Internal error\n",fname);
+      return 0;
+    } 
+  
+  /*  Now matrix Z is populated i.e. appropriate values are 
+   *  assigned to stk(l_Z)[0] ( = Z(1,1) ), stk(l_Z)[1]  ( = Z(2,1) ), ... 
+   */
+
+  ex17c(stk(l_X), m_X*n_X, stk(l_Y), m_Y*n_Y, stk(l_Z), Argex17c);
+
+  /*  Variable #4 is returned to Scilab  */
+  LhsVar(1) = 4;
+  return 0;
+}
+
+/*---------------------------------------------------------------
+ *  Computing z=f(x,y), f being the Scilab argument function 
+ * C function emulating the Scilab function pointed to by sci_f 
+ *---------------------------------------------------------------*/
+
+static int sciex17c(x, y, z)
+     double x, y, *z;
+{
+  static int lhs=1,rhs=2;
+  int scilab_i,scilab_j, un=1;
+  /* Inputs (x(i),y(j)) at positions  (5,6) */
+  CreateVar(5,MATRIX_OF_DOUBLE_DATATYPE, &un, &un, &scilab_i);
+  stk(scilab_i)[0] = x;
+
+  CreateVar(6,MATRIX_OF_DOUBLE_DATATYPE, &un, &un, &scilab_j);
+  stk(scilab_j)[0] = y;
+
+  /* executes the Scilab function (f) pointed to by sci_f. 
+   * we provide a rhs=2 and expect lhs = 1 
+   */
+  PExecSciFunction(5, &sci_f, &lhs, &rhs, "ArgFex", ex17cenv);
+  /* One output at position of first input (5) */
+  *z = *stk(scilab_i);
+  return 0;
+}
+
+
+
+
+
index 768c133..4359fe6 100644 (file)
-#include "stack-c.h"\r
-\r
-int ex1c (char *ch, int *a, int *ia, float *b, int *ib, double *c, int *mc, int *nc, double *d, double *w, int *err);\r
-\r
-\r
-/**************************************************\r
- * An example of an hand written interface \r
- * the interface program is intex1c, the\r
- * associated scilab function is ex1c\r
- **************************************************/\r
-\r
-int intex1c(char *fname) \r
-{\r
-  int i1, i2;\r
-  static int ierr;\r
-  static int l1, m1, n1, m2, n2, l2, m3, n3, l3, m4, n4, l4, l5, l6;\r
-  static int minlhs=1, minrhs=4, maxlhs=5, maxrhs=4;\r
-\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-  /*  1-Get the 4 input variables of ex1f:\r
-   *\r
-   * Variable #1 is a chain ("c") , GetRhsVar returns its\r
-   * dimensions: m1 = # of rows = length of the chain, \r
-   * n1 = # of columns = 1 default value for chains.\r
-   * The chain starts at cstk(l1)  \r
-   */\r
-  GetRhsVar(1,STRING_DATATYPE, &m1, &n1, &l1);\r
-\r
-  /*  a=variable #2 is an integer ('i') matrix, getrhsvar returns its\r
-   *   dimensions: m2 = # of rows , n2 = # of columns\r
-   * values in matrix a are istk(l2), istk(l2+1), ... (columnwise) \r
-   */\r
-  GetRhsVar(2,MATRIX_OF_INTEGER_DATATYPE, &m2, &n2, &l2);\r
-\r
-  /*  b=variable #3 is an real ('r') matrix, getrhsvar returns its\r
-   * dimensions: m3 = # of rows , n3 = # of columns\r
-   * values in matrix a are sstk(l2), sstk(l2+1), ... (columnwise) \r
-   */\r
-\r
-  GetRhsVar(3,MATRIX_OF_RATIONAL_DATATYPE, &m3, &n3, &l3);\r
-\r
-  /*  c=variable #4 is an double ('d') matrix, getrhsvar returns its\r
-   * dimensions: m4 = # of rows , n4 = # of columns\r
-   *  values in matrix a are stk(l2), stk(l2+1), ... (columnwise)  \r
-   */\r
-  \r
-  GetRhsVar(4,MATRIX_OF_DOUBLE_DATATYPE, &m4, &n4, &l4);\r
-\r
-  /*  2-Create  Scilab variable #5  as double matrix of\r
-   *  dimensions  m4 x n4. The first fourth parameters of\r
-   *  Createvar are input parameters. Createvar returns the adress l5\r
-   *  as output. \r
-   *  The values of stk(l5), stk(l5+1), ... should be set\r
-   *  to desired values.  \r
-   */\r
-\r
-  CreateVar(5,MATRIX_OF_DOUBLE_DATATYPE, &m4, &n4, &l5);\r
-  CreateVar(6,MATRIX_OF_DOUBLE_DATATYPE, &m4, &n4, &l6);\r
-\r
-  i1 = n2 * m2;\r
-  i2 = n3 * m3;\r
-\r
-  ex1c( cstk(l1),istk(l2), &i1, sstk(l3), &i2, stk(l4), \r
-            &m4, &n4, stk(l5),stk(l6), &ierr);\r
-  \r
-  if (ierr > 0) \r
-    {\r
-      Scierror(999,"%s: Internal error\n",fname);\r
-      return 0;\r
-    }\r
-  \r
-  /*   Variables #5, #4, #3, #2, #1 are returned in that\r
-   *   order. For instance, w=ex1f('chain',a,b,c) puts\r
-   *   in w the variable #5 and [w,r]=ex1f('chain',a,b,c)\r
-   *   puts in w the variable #5 and in r the variable #4  \r
-   */\r
-\r
-  LhsVar(1) = 5;\r
-  LhsVar(2) = 4;\r
-  LhsVar(3) = 3;\r
-  LhsVar(4) = 2;\r
-  LhsVar(5) = 1;\r
-  return 0;\r
-}\r
-\r
-\r
-/**************************************************\r
- *     inputs:  ch, a,b and c; ia,ib and mc,nc \r
- *     ch=character, a=integer, b=float and c=double \r
- *     ia,ib and [mc,nc] are the dimensions of a,b and c resp. \r
- *     outputs: a,b,c,d \r
- *     if ch='mul'   a,b and c = 2 * (a,b and c) \r
- *     and d of same dimensions as c with \r
- *     d(i,j)=(i+j)*c(i,j) \r
- *     if ch='add' a,b and c = 2 + (a,b and c) \r
- *     d(i,j)=(i+j)+c(i,j) \r
- *     w is a working array of size [mc,nc] \r
- *********************************************/\r
-\r
-int ex1c(char *ch,int *a,int *ia, float *b,int *ib,double *c,int *mc,int *nc, double *d, double *w, int *err)\r
-{\r
-  static int i, j, k;\r
-  *err = 0;\r
-  if (strcmp(ch, "mul") == 0) \r
-    {\r
-      for (k = 0 ; k < *ib; ++k) \r
-       a[k] <<= 1;\r
-      for (k = 0; k < *ib ; ++k) \r
-       b[k] *= (float)2.;\r
-      for (i =  0 ; i < *mc ; ++i) \r
-       for (j = 0 ;  j < *nc ; ++j) \r
-         c[i + j *(*mc) ] *= 2.;\r
-      for (i = 0 ; i < *mc ; ++i) \r
-       for (j = 0 ; j < *nc ; ++j) \r
-           {\r
-             w[i + j * (*mc) ] = (double) (i + j);\r
-             d[i + j * (*mc) ] = w[i + j *(*mc)] * c[i + j *(*mc)];\r
-           }\r
-    } \r
-  else if (strcmp(ch, "add") == 0) \r
-    {\r
-      for (k = 0; k < *ia ; ++k) \r
-       a[k] += 2;\r
-      for (k = 0 ; k < *ib ; ++k) \r
-       b[k] += (float)2.;\r
-      for (i =  0 ; i < *mc ; ++i) \r
-       for (j = 0 ;  j < *nc ; ++j) \r
-         c[i + j *(*mc) ] += 2.;\r
-      for (i = 0 ; i < *mc ; ++i) \r
-       for (j = 0 ; j < *nc ; ++j) \r
-           {\r
-             w[i + j * (*mc) ] = (double) (i + j);\r
-             d[i + j * (*mc) ] = w[i + j *(*mc)] + c[i + j *(*mc)];\r
-           }\r
-    } \r
-  else \r
-    {\r
-      *err = 1;\r
-    }\r
-  return(0);\r
-}\r
-\r
+#include "stack-c.h"
+
+int ex1c (char *ch, int *a, int *ia, float *b, int *ib, double *c, int *mc, int *nc, double *d, double *w, int *err);
+
+
+/**************************************************
+ * An example of an hand written interface 
+ * the interface program is intex1c, the
+ * associated scilab function is ex1c
+ **************************************************/
+
+int intex1c(char *fname) 
+{
+  int i1, i2;
+  static int ierr;
+  static int l1, m1, n1, m2, n2, l2, m3, n3, l3, m4, n4, l4, l5, l6;
+  static int minlhs=1, minrhs=4, maxlhs=5, maxrhs=4;
+
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+  /*  1-Get the 4 input variables of ex1f:
+   *
+   * Variable #1 is a chain ("c") , GetRhsVar returns its
+   * dimensions: m1 = # of rows = length of the chain, 
+   * n1 = # of columns = 1 default value for chains.
+   * The chain starts at cstk(l1)  
+   */
+  GetRhsVar(1,STRING_DATATYPE, &m1, &n1, &l1);
+
+  /*  a=variable #2 is an integer ('i') matrix, getrhsvar returns its
+   *   dimensions: m2 = # of rows , n2 = # of columns
+   * values in matrix a are istk(l2), istk(l2+1), ... (columnwise) 
+   */
+  GetRhsVar(2,MATRIX_OF_INTEGER_DATATYPE, &m2, &n2, &l2);
+
+  /*  b=variable #3 is an real ('r') matrix, getrhsvar returns its
+   * dimensions: m3 = # of rows , n3 = # of columns
+   * values in matrix a are sstk(l2), sstk(l2+1), ... (columnwise) 
+   */
+
+  GetRhsVar(3,MATRIX_OF_RATIONAL_DATATYPE, &m3, &n3, &l3);
+
+  /*  c=variable #4 is an double ('d') matrix, getrhsvar returns its
+   * dimensions: m4 = # of rows , n4 = # of columns
+   *  values in matrix a are stk(l2), stk(l2+1), ... (columnwise)  
+   */
+  
+  GetRhsVar(4,MATRIX_OF_DOUBLE_DATATYPE, &m4, &n4, &l4);
+
+  /*  2-Create  Scilab variable #5  as double matrix of
+   *  dimensions  m4 x n4. The first fourth parameters of
+   *  Createvar are input parameters. Createvar returns the adress l5
+   *  as output. 
+   *  The values of stk(l5), stk(l5+1), ... should be set
+   *  to desired values.  
+   */
+
+  CreateVar(5,MATRIX_OF_DOUBLE_DATATYPE, &m4, &n4, &l5);
+  CreateVar(6,MATRIX_OF_DOUBLE_DATATYPE, &m4, &n4, &l6);
+
+  i1 = n2 * m2;
+  i2 = n3 * m3;
+
+  ex1c( cstk(l1),istk(l2), &i1, sstk(l3), &i2, stk(l4), 
+            &m4, &n4, stk(l5),stk(l6), &ierr);
+  
+  if (ierr > 0) 
+    {
+      Scierror(999,"%s: Internal error\n",fname);
+      return 0;
+    }
+  
+  /*   Variables #5, #4, #3, #2, #1 are returned in that
+   *   order. For instance, w=ex1f('chain',a,b,c) puts
+   *   in w the variable #5 and [w,r]=ex1f('chain',a,b,c)
+   *   puts in w the variable #5 and in r the variable #4  
+   */
+
+  LhsVar(1) = 5;
+  LhsVar(2) = 4;
+  LhsVar(3) = 3;
+  LhsVar(4) = 2;
+  LhsVar(5) = 1;
+  return 0;
+}
+
+
+/**************************************************
+ *     inputs:  ch, a,b and c; ia,ib and mc,nc 
+ *     ch=character, a=integer, b=float and c=double 
+ *     ia,ib and [mc,nc] are the dimensions of a,b and c resp. 
+ *     outputs: a,b,c,d 
+ *     if ch='mul'   a,b and c = 2 * (a,b and c) 
+ *     and d of same dimensions as c with 
+ *     d(i,j)=(i+j)*c(i,j) 
+ *     if ch='add' a,b and c = 2 + (a,b and c) 
+ *     d(i,j)=(i+j)+c(i,j) 
+ *     w is a working array of size [mc,nc] 
+ *********************************************/
+
+int ex1c(char *ch,int *a,int *ia, float *b,int *ib,double *c,int *mc,int *nc, double *d, double *w, int *err)
+{
+  static int i, j, k;
+  *err = 0;
+  if (strcmp(ch, "mul") == 0) 
+    {
+      for (k = 0 ; k < *ib; ++k) 
+       a[k] <<= 1;
+      for (k = 0; k < *ib ; ++k) 
+       b[k] *= (float)2.;
+      for (i =  0 ; i < *mc ; ++i) 
+       for (j = 0 ;  j < *nc ; ++j) 
+         c[i + j *(*mc) ] *= 2.;
+      for (i = 0 ; i < *mc ; ++i) 
+       for (j = 0 ; j < *nc ; ++j) 
+           {
+             w[i + j * (*mc) ] = (double) (i + j);
+             d[i + j * (*mc) ] = w[i + j *(*mc)] * c[i + j *(*mc)];
+           }
+    } 
+  else if (strcmp(ch, "add") == 0) 
+    {
+      for (k = 0; k < *ia ; ++k) 
+       a[k] += 2;
+      for (k = 0 ; k < *ib ; ++k) 
+       b[k] += (float)2.;
+      for (i =  0 ; i < *mc ; ++i) 
+       for (j = 0 ;  j < *nc ; ++j) 
+         c[i + j *(*mc) ] += 2.;
+      for (i = 0 ; i < *mc ; ++i) 
+       for (j = 0 ; j < *nc ; ++j) 
+           {
+             w[i + j * (*mc) ] = (double) (i + j);
+             d[i + j * (*mc) ] = w[i + j *(*mc)] + c[i + j *(*mc)];
+           }
+    } 
+  else 
+    {
+      *err = 1;
+    }
+  return(0);
+}
+
index d7e56f8..e4441bf 100644 (file)
@@ -1,70 +1,70 @@
-#include <string.h> \r
-#include <stdio.h>\r
-#include "stack-c.h"\r
-\r
-int ex2c (double *, int *,int *,double *, int *,int *,int *);\r
-\r
-/**************************************************\r
- * An example of an hand written interface \r
- **************************************************/\r
-\r
-int intex2c(char* fname)\r
-{ \r
-  int m1,n1,l1,ierr=0;\r
-  /** optional names must be stored in alphabetical order in opts **/\r
-  static rhs_opts opts[]= { {-1,"v1","d",0,0,0},\r
-                           {-1,"v2","d",0,0,0},\r
-                           {-1,NULL,NULL,0,0}\r
-  };\r
-  int minrhs = 1,maxrhs = 1,minlhs=1,maxlhs=3,nopt,iopos;\r
-\r
-  nopt = NumOpt();\r
-\r
-  CheckRhs(minrhs,maxrhs+nopt) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  /** first non optional argument **/\r
-\r
-  GetRhsVar( 1,STRING_DATATYPE, &m1, &n1, &l1);\r
-  \r
-  if ( get_optionals(fname,opts) == 0) return 0;\r
-\r
-  /** default values if optional arguments are not given :  v1=[99] and v2=[3] **/\r
-  iopos=Rhs ;\r
-  if ( opts[0].position  == -1 ) {\r
-    iopos++ ; opts[0].position = iopos;\r
-    opts[0].m = opts[0].n = 1; opts[0].type = "d";\r
-    CreateVar(opts[0].position,opts[0].type,&opts[0].m,&opts[0].n,&opts[0].l);\r
-    *stk(opts[0].l)=99.0;\r
-  }\r
-  if ( opts[1].position  == -1 ) {\r
-    iopos++ ; opts[1].position = iopos;\r
-    opts[1].m = opts[1].n = 1; opts[1].type = "d";\r
-    CreateVar(opts[1].position,opts[1].type,&opts[1].m,&opts[1].n,&opts[1].l);\r
-    *stk(opts[1].l)= 3;\r
-  }\r
-\r
-  ex2c(stk(opts[0].l),&opts[0].m,&opts[0].n,\r
-       stk(opts[1].l),&opts[1].m,&opts[1].n,&ierr);\r
-\r
-  if (ierr > 0) \r
-    {\r
-      Scierror(999,"%s: Internal error\n",fname);\r
-      return 0;\r
-    }\r
-  /** return the first argument (unchanged ) then v1 and v2 **/\r
-  LhsVar(1) = 1;\r
-  LhsVar(2) = opts[0].position;\r
-  LhsVar(3) = opts[1].position;\r
-  return 0;\r
-}\r
-\r
-int ex2c( double *a,int *ma,int *na, double *b,int *mb,int *nb,int *err) \r
-{\r
-  int i;\r
-  *err=0;\r
-  for ( i= 0 ; i < (*ma)*(*na) ; i++) a[i] = 2*a[i] ;\r
-  for ( i= 0 ; i < (*mb)*(*nb) ; i++) b[i] = 3*b[i] ;\r
-  return(0);\r
-}\r
-\r
+#include <string.h> 
+#include <stdio.h>
+#include "stack-c.h"
+
+int ex2c (double *, int *,int *,double *, int *,int *,int *);
+
+/**************************************************
+ * An example of an hand written interface 
+ **************************************************/
+
+int intex2c(char* fname)
+{ 
+  int m1,n1,l1,ierr=0;
+  /** optional names must be stored in alphabetical order in opts **/
+  static rhs_opts opts[]= { {-1,"v1","d",0,0,0},
+                           {-1,"v2","d",0,0,0},
+                           {-1,NULL,NULL,0,0}
+  };
+  int minrhs = 1,maxrhs = 1,minlhs=1,maxlhs=3,nopt,iopos;
+
+  nopt = NumOpt();
+
+  CheckRhs(minrhs,maxrhs+nopt) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  /** first non optional argument **/
+
+  GetRhsVar( 1,STRING_DATATYPE, &m1, &n1, &l1);
+  
+  if ( get_optionals(fname,opts) == 0) return 0;
+
+  /** default values if optional arguments are not given :  v1=[99] and v2=[3] **/
+  iopos=Rhs ;
+  if ( opts[0].position  == -1 ) {
+    iopos++ ; opts[0].position = iopos;
+    opts[0].m = opts[0].n = 1; opts[0].type = "d";
+    CreateVar(opts[0].position,opts[0].type,&opts[0].m,&opts[0].n,&opts[0].l);
+    *stk(opts[0].l)=99.0;
+  }
+  if ( opts[1].position  == -1 ) {
+    iopos++ ; opts[1].position = iopos;
+    opts[1].m = opts[1].n = 1; opts[1].type = "d";
+    CreateVar(opts[1].position,opts[1].type,&opts[1].m,&opts[1].n,&opts[1].l);
+    *stk(opts[1].l)= 3;
+  }
+
+  ex2c(stk(opts[0].l),&opts[0].m,&opts[0].n,
+       stk(opts[1].l),&opts[1].m,&opts[1].n,&ierr);
+
+  if (ierr > 0) 
+    {
+      Scierror(999,"%s: Internal error\n",fname);
+      return 0;
+    }
+  /** return the first argument (unchanged ) then v1 and v2 **/
+  LhsVar(1) = 1;
+  LhsVar(2) = opts[0].position;
+  LhsVar(3) = opts[1].position;
+  return 0;
+}
+
+int ex2c( double *a,int *ma,int *na, double *b,int *mb,int *nb,int *err) 
+{
+  int i;
+  *err=0;
+  for ( i= 0 ; i < (*ma)*(*na) ; i++) a[i] = 2*a[i] ;
+  for ( i= 0 ; i < (*mb)*(*nb) ; i++) b[i] = 3*b[i] ;
+  return(0);
+}
+
index 6d4ac82..0e24f7b 100644 (file)
@@ -1,51 +1,51 @@
-#include <string.h> \r
-#include <stdio.h>\r
-#include "stack-c.h"\r
-\r
-/**************************************************\r
- * examples of an hand written interface \r
- * Shows how to pass \r
- *       - Scilab boolean matrices as arguments \r
- *       how to create and return new boolean matrices\r
- **************************************************/\r
-\r
-/*-------------------------------------------------\r
- * GetRhsVar(..,'b',...) and CreateVar(..,'b',...\r
- *-------------------------------------------------*/\r
-\r
-static void not (int * iv1,int *iv2,int  size);\r
-\r
-int intex3c(char *fname) \r
-{\r
-  static int l1,m1, n1,l2;\r
-  static int minlhs=1, minrhs=1, maxlhs=1, maxrhs=1;\r
-\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  /* a boolean matrix argument */ \r
-  \r
-  GetRhsVar(1,MATRIX_OF_BOOLEAN_DATATYPE, &m1, &n1, &l1);\r
-\r
-  /* create a new boolean matrix same size as first argument \r
-   *\r
-   * note that this is only for illustration since we could directly work \r
-   * with istk(l1) which can be modified and returned. \r
-   */\r
-\r
-  CreateVar(2,MATRIX_OF_BOOLEAN_DATATYPE,&m1,&n1,&l2);\r
-\r
-  /* fills new matrix  */\r
-  \r
-  not(istk(l2),istk(l1),m1*n1);\r
-\r
-  LhsVar(1) = 2; /* returns new matrix */\r
-  return 0;\r
-}\r
-\r
-\r
-static void not(int *iv1,int *iv2,int size)\r
-{\r
-  int i;\r
-  for ( i=0 ; i < size ; i++) iv1[i] = ! iv2[i];\r
-}\r
+#include <string.h> 
+#include <stdio.h>
+#include "stack-c.h"
+
+/**************************************************
+ * examples of an hand written interface 
+ * Shows how to pass 
+ *       - Scilab boolean matrices as arguments 
+ *       how to create and return new boolean matrices
+ **************************************************/
+
+/*-------------------------------------------------
+ * GetRhsVar(..,'b',...) and CreateVar(..,'b',...
+ *-------------------------------------------------*/
+
+static void not (int * iv1,int *iv2,int  size);
+
+int intex3c(char *fname) 
+{
+  static int l1,m1, n1,l2;
+  static int minlhs=1, minrhs=1, maxlhs=1, maxrhs=1;
+
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  /* a boolean matrix argument */ 
+  
+  GetRhsVar(1,MATRIX_OF_BOOLEAN_DATATYPE, &m1, &n1, &l1);
+
+  /* create a new boolean matrix same size as first argument 
+   *
+   * note that this is only for illustration since we could directly work 
+   * with istk(l1) which can be modified and returned. 
+   */
+
+  CreateVar(2,MATRIX_OF_BOOLEAN_DATATYPE,&m1,&n1,&l2);
+
+  /* fills new matrix  */
+  
+  not(istk(l2),istk(l1),m1*n1);
+
+  LhsVar(1) = 2; /* returns new matrix */
+  return 0;
+}
+
+
+static void not(int *iv1,int *iv2,int size)
+{
+  int i;
+  for ( i=0 ; i < size ; i++) iv1[i] = ! iv2[i];
+}
index fb4f07d..d327742 100644 (file)
-#include <string.h> \r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-\r
-#include "machine.h"\r
-#include "stack-c.h" \r
-\r
-\r
-/**************************************************\r
- * examples of an hand written interface \r
- * Shows how to create Scilab variable from a C array \r
- * (of int, float or double type). This is mainly used \r
- * when the arrays are allocated in the C-code and we \r
- * want to return the allocated arrays as Scilab objects\r
- **************************************************/\r
-\r
-/*------------------------------------------------------\r
- * Creating a scilab variable from a pointer\r
- * intex4c_1 : a pointer to a double array \r
- * intex4c_2 : a pointer to an int  array \r
- * intex4c_3 : a pointer to a  char array (i.e a string) \r
- * intex4c_4 : 3,4,5 in one interface \r
- * The interfaced functions are at the end of this file \r
- *-------------------------------------------------------*/\r
-\r
-int C2F(dblearray)(double **a, int *m, int *n,int *err);\r
-int C2F(intarray) (int **a, int *m, int *n,int *err);\r
-int C2F(crestr) (char **a, int *m,int *err);\r
-\r
-/*------------------------------------------------------\r
- * intex4c_1 : a pointer to a double array \r
- *-------------------------------------------------------*/\r
-\r
-int intex4c(char* fname)\r
-{ \r
-  static double l2[] ={ 1.0,2.0,3.0}, *ptr2= l2;\r
-  double *l1;\r
-  int m1,n1,ierr=0,m2=3,n2=1;\r
-  CheckRhs(0,0);\r
-  CheckLhs(1,2);\r
-  C2F(dblearray)( &l1,&m1,&n1,&ierr);\r
-  if ( ierr > 0 )  { Scierror(999,"%s: Internal error\n",fname);  return 0;  }\r
-  /* first example : l1 was allocated inside dblearray */ \r
-  CreateVarFromPtr( 1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);\r
-  \r
-  free(l1); /* freeing space allocated inside dblearray */ \r
-  /* second example : l2 is defined here */\r
-  CreateVarFromPtr( 2,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &ptr2);\r
-\r
-  LhsVar(1) = 1;\r
-  LhsVar(2) = 2;\r
-  return(0);\r
-}\r
-\r
-\r
-/*------------------------------------------------------\r
- * intex4c_2 : a pointer to an int  array \r
- *-------------------------------------------------------*/\r
-\r
-int intex4c_2(char* fname)\r
-{ \r
-  int *l1;\r
-  int m1,n1,ierr=0;\r
-\r
-  CheckRhs(0,0);\r
-  CheckLhs(1,1);\r
-  C2F(intarray)( &l1, &m1, &n1, &ierr);\r
-  if ( ierr > 0 )  { Scierror(999,"%s: Internal error\n",fname);  return 0 ;  }\r
-  CreateVarFromPtr( 1,MATRIX_OF_INTEGER_DATATYPE, &m1, &n1, &l1);\r
-  free(l1);\r
-  /* we can access and change data through VarPtr\r
-   * but it does not work for variables of type 's' (sparse) and 'S' \r
-   * (string matrices)\r
-   */\r
-  *istk(VarPtr(1)) = 12;\r
-  LhsVar(1) = 1;\r
-  return(0);\r
-}\r
-\r
-/*------------------------------------------------------\r
- * intex4c_3 : a pointer to a  char array (i.e a string) \r
- *-------------------------------------------------------*/\r
-\r
-int intex4c_3(char* fname)\r
-{ \r
-  char *l1;\r
-  int m1,n1=1,ierr=0;\r
-\r
-  CheckRhs(0,0);\r
-  CheckLhs(1,1);\r
-  C2F(crestr)( &l1,&m1,&ierr);\r
-  if ( ierr > 0 )  { Scierror(999,"%s: Internal error\n",fname);  return 0;  }\r
-  CreateVarFromPtr( 1,STRING_DATATYPE, &m1, &n1, &l1);\r
-  free(l1);\r
-  LhsVar(1) = 1;\r
-  return(0);\r
-}\r
-\r
-\r
-/*------------------------------------------------------\r
- * intex4c_4 :\r
- *-------------------------------------------------------*/\r
-\r
-int intex4c_4(char* fname)\r
-{ \r
-  char *l1;\r
-  int *l2;\r
-  double *l3;\r
-\r
-  int m1,n1=1,m2,n2,m3,n3,ierr=0;\r
-\r
-  CheckRhs(0,0);\r
-  CheckLhs(1,4);\r
-  C2F(crestr)( &l1, &m1, &ierr);\r
-  C2F(intarray)( &l2, &m2, &n2, &ierr);\r
-  C2F(dblearray)( &l3, &m3, &n3, &ierr);\r
-  if ( ierr > 0 )  { Scierror(999,"%s: Internal error\n",fname);  return 0;  }\r
-  /* Creating variable #1 of type character and dimension m1 x n1 (m1=1) */\r
-  CreateVarFromPtr( 1,STRING_DATATYPE, &m1, &n1, &l1);\r
-  CreateVarFromPtr( 2,MATRIX_OF_INTEGER_DATATYPE, &m2, &n2, &l2);\r
-  CreateVarFromPtr( 3,MATRIX_OF_DOUBLE_DATATYPE, &m3, &n3, &l3);\r
-  /* Free  memory */\r
-  free(l1);  free(l2);   free(l3);\r
-  /* we change the first value of each variable */\r
-  *cstk(VarPtr(1)) = 'X';\r
-  *istk(VarPtr(2)) = 12;\r
-  *stk(VarPtr(3)) = 89.0;\r
-  /* Returning 3 variables (#1, #2, #3) to Scilab  */\r
-  LhsVar(1) = 1;\r
-  LhsVar(2) = 2;\r
-  LhsVar(3) = 3;\r
-  return(0);\r
-}\r
-\r
-/*--------------------------------------------------------------\r
- *  Example of array created by C code\r
- *  converted to Scilab output variable\r
- *---------------------------------------------------------------*/\r
-\r
-/*     double array    */\r
-\r
-int C2F(dblearray)(double **a,int *m,int *n,int*ierr)\r
-\r
-{\r
-  int i ;\r
-  *n=5 ;\r
-  *m=3 ;\r
-  *a= ( double *) malloc( (unsigned) (*m)*(*n) *sizeof(double));\r
-  if ( *a != (double *) 0)   \r
-    {\r
-      *ierr=0;\r
-      for ( i= 0 ; i < (*m)*(*n) ; i++) (*a)[i] = i+1;\r
-    }\r
-  else \r
-    *ierr=1;\r
-  return(0);\r
-}\r
-\r
-\r
-/*     integer array    */\r
-\r
-int C2F(intarray)(int **a,int *m,int *n,int *ierr) \r
-{\r
-  int i ;\r
-  *n=5 ;\r
-  *m=3 ;\r
-  *a= ( int *) malloc( (unsigned) (*m)*(*n) *sizeof(int));\r
-  if ( *a != (int *) 0)   \r
-    {\r
-      *ierr=0;\r
-      for ( i= 0 ; i < (*m)*(*n) ; i++) (*a)[i] = i+1;\r
-    }\r
-  else \r
-      *ierr=1;\r
-  return(0);\r
-}\r
-\r
-/*************************************************************\r
- * Example of character string created here.\r
- * Its length is sent back as an output.\r
- * It is converted into Scilab variable in the interface program.\r
- * The allocated array is freed in the interface program.\r
- *************************************************************/\r
-\r
-#define MYSTR "Scilab is ..."\r
-\r
-int C2F(crestr)(char **a,int *m,int *ierr)\r
-{\r
-  *m= strlen(MYSTR);\r
-  *a= (char *) malloc((unsigned) (*m+1)*sizeof(char));\r
-  if ( *a != (char *) 0) \r
-    {\r
-      *ierr=0;\r
-      sprintf((*a),MYSTR);\r
-    }\r
-  else\r
-    {\r
-      *ierr=1;\r
-      printf("malloc : No more space\n");\r
-    }\r
-  return(0);\r
-}\r
-\r
+#include <string.h> 
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "machine.h"
+#include "stack-c.h" 
+
+
+/**************************************************
+ * examples of an hand written interface 
+ * Shows how to create Scilab variable from a C array 
+ * (of int, float or double type). This is mainly used 
+ * when the arrays are allocated in the C-code and we 
+ * want to return the allocated arrays as Scilab objects
+ **************************************************/
+
+/*------------------------------------------------------
+ * Creating a scilab variable from a pointer
+ * intex4c_1 : a pointer to a double array 
+ * intex4c_2 : a pointer to an int  array 
+ * intex4c_3 : a pointer to a  char array (i.e a string) 
+ * intex4c_4 : 3,4,5 in one interface 
+ * The interfaced functions are at the end of this file 
+ *-------------------------------------------------------*/
+
+int C2F(dblearray)(double **a, int *m, int *n,int *err);
+int C2F(intarray) (int **a, int *m, int *n,int *err);
+int C2F(crestr) (char **a, int *m,int *err);
+
+/*------------------------------------------------------
+ * intex4c_1 : a pointer to a double array 
+ *-------------------------------------------------------*/
+
+int intex4c(char* fname)
+{ 
+  static double l2[] ={ 1.0,2.0,3.0}, *ptr2= l2;
+  double *l1;
+  int m1,n1,ierr=0,m2=3,n2=1;
+  CheckRhs(0,0);
+  CheckLhs(1,2);
+  C2F(dblearray)( &l1,&m1,&n1,&ierr);
+  if ( ierr > 0 )  { Scierror(999,"%s: Internal error\n",fname);  return 0;  }
+  /* first example : l1 was allocated inside dblearray */ 
+  CreateVarFromPtr( 1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);
+  
+  free(l1); /* freeing space allocated inside dblearray */ 
+  /* second example : l2 is defined here */
+  CreateVarFromPtr( 2,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &ptr2);
+
+  LhsVar(1) = 1;
+  LhsVar(2) = 2;
+  return(0);
+}
+
+
+/*------------------------------------------------------
+ * intex4c_2 : a pointer to an int  array 
+ *-------------------------------------------------------*/
+
+int intex4c_2(char* fname)
+{ 
+  int *l1;
+  int m1,n1,ierr=0;
+
+  CheckRhs(0,0);
+  CheckLhs(1,1);
+  C2F(intarray)( &l1, &m1, &n1, &ierr);
+  if ( ierr > 0 )  { Scierror(999,"%s: Internal error\n",fname);  return 0 ;  }
+  CreateVarFromPtr( 1,MATRIX_OF_INTEGER_DATATYPE, &m1, &n1, &l1);
+  free(l1);
+  /* we can access and change data through VarPtr
+   * but it does not work for variables of type 's' (sparse) and 'S' 
+   * (string matrices)
+   */
+  *istk(VarPtr(1)) = 12;
+  LhsVar(1) = 1;
+  return(0);
+}
+
+/*------------------------------------------------------
+ * intex4c_3 : a pointer to a  char array (i.e a string) 
+ *-------------------------------------------------------*/
+
+int intex4c_3(char* fname)
+{ 
+  char *l1;
+  int m1,n1=1,ierr=0;
+
+  CheckRhs(0,0);
+  CheckLhs(1,1);
+  C2F(crestr)( &l1,&m1,&ierr);
+  if ( ierr > 0 )  { Scierror(999,"%s: Internal error\n",fname);  return 0;  }
+  CreateVarFromPtr( 1,STRING_DATATYPE, &m1, &n1, &l1);
+  free(l1);
+  LhsVar(1) = 1;
+  return(0);
+}
+
+
+/*------------------------------------------------------
+ * intex4c_4 :
+ *-------------------------------------------------------*/
+
+int intex4c_4(char* fname)
+{ 
+  char *l1;
+  int *l2;
+  double *l3;
+
+  int m1,n1=1,m2,n2,m3,n3,ierr=0;
+
+  CheckRhs(0,0);
+  CheckLhs(1,4);
+  C2F(crestr)( &l1, &m1, &ierr);
+  C2F(intarray)( &l2, &m2, &n2, &ierr);
+  C2F(dblearray)( &l3, &m3, &n3, &ierr);
+  if ( ierr > 0 )  { Scierror(999,"%s: Internal error\n",fname);  return 0;  }
+  /* Creating variable #1 of type character and dimension m1 x n1 (m1=1) */
+  CreateVarFromPtr( 1,STRING_DATATYPE, &m1, &n1, &l1);
+  CreateVarFromPtr( 2,MATRIX_OF_INTEGER_DATATYPE, &m2, &n2, &l2);
+  CreateVarFromPtr( 3,MATRIX_OF_DOUBLE_DATATYPE, &m3, &n3, &l3);
+  /* Free  memory */
+  free(l1);  free(l2);   free(l3);
+  /* we change the first value of each variable */
+  *cstk(VarPtr(1)) = 'X';
+  *istk(VarPtr(2)) = 12;
+  *stk(VarPtr(3)) = 89.0;
+  /* Returning 3 variables (#1, #2, #3) to Scilab  */
+  LhsVar(1) = 1;
+  LhsVar(2) = 2;
+  LhsVar(3) = 3;
+  return(0);
+}
+
+/*--------------------------------------------------------------
+ *  Example of array created by C code
+ *  converted to Scilab output variable
+ *---------------------------------------------------------------*/
+
+/*     double array    */
+
+int C2F(dblearray)(double **a,int *m,int *n,int*ierr)
+
+{
+  int i ;
+  *n=5 ;
+  *m=3 ;
+  *a= ( double *) malloc( (unsigned) (*m)*(*n) *sizeof(double));
+  if ( *a != (double *) 0)   
+    {
+      *ierr=0;
+      for ( i= 0 ; i < (*m)*(*n) ; i++) (*a)[i] = i+1;
+    }
+  else 
+    *ierr=1;
+  return(0);
+}
+
+
+/*     integer array    */
+
+int C2F(intarray)(int **a,int *m,int *n,int *ierr) 
+{
+  int i ;
+  *n=5 ;
+  *m=3 ;
+  *a= ( int *) malloc( (unsigned) (*m)*(*n) *sizeof(int));
+  if ( *a != (int *) 0)   
+    {
+      *ierr=0;
+      for ( i= 0 ; i < (*m)*(*n) ; i++) (*a)[i] = i+1;
+    }
+  else 
+      *ierr=1;
+  return(0);
+}
+
+/*************************************************************
+ * Example of character string created here.
+ * Its length is sent back as an output.
+ * It is converted into Scilab variable in the interface program.
+ * The allocated array is freed in the interface program.
+ *************************************************************/
+
+#define MYSTR "Scilab is ..."
+
+int C2F(crestr)(char **a,int *m,int *ierr)
+{
+  *m= strlen(MYSTR);
+  *a= (char *) malloc((unsigned) (*m+1)*sizeof(char));
+  if ( *a != (char *) 0) 
+    {
+      *ierr=0;
+      sprintf((*a),MYSTR);
+    }
+  else
+    {
+      *ierr=1;
+      printf("malloc : No more space\n");
+    }
+  return(0);
+}
+
index 3f246ca..11468f8 100644 (file)
@@ -1,32 +1,32 @@
-#include <stdlib.h>\r
-#include "stack-c.h"\r
-\r
-int crestrc (char **a, int *m,int *err);\r
-\r
-/* Creating a scilab variable from a pointer\r
- * l1 is a pointer to a char array created \r
- * by the C function crestrc (in file pgmsc.c)   \r
- */\r
-\r
-int intex5c(char* fname)\r
-{ \r
-  char *l1;\r
-  int m1,n1,ierr=0;\r
-  static int minlhs=1, minrhs=0, maxlhs=1, maxrhs=0;\r
-\r
-  CheckRhs(minrhs,maxrhs);\r
-  CheckLhs(minlhs,maxlhs);\r
-\r
-  crestrc( &l1,&m1,&ierr);\r
-  if ( ierr > 0 ) \r
-    {\r
-      Scierror(999,"%s: Internal error\n",fname);\r
-      return 0;\r
-    }\r
-\r
-  n1=1;\r
-  CreateVarFromPtr( 1,STRING_DATATYPE, &m1, &n1, &l1);\r
-  free(l1);\r
-  LhsVar(1) = 1;\r
-  return(0);\r
-}\r
+#include <stdlib.h>
+#include "stack-c.h"
+
+int crestrc (char **a, int *m,int *err);
+
+/* Creating a scilab variable from a pointer
+ * l1 is a pointer to a char array created 
+ * by the C function crestrc (in file pgmsc.c)   
+ */
+
+int intex5c(char* fname)
+{ 
+  char *l1;
+  int m1,n1,ierr=0;
+  static int minlhs=1, minrhs=0, maxlhs=1, maxrhs=0;
+
+  CheckRhs(minrhs,maxrhs);
+  CheckLhs(minlhs,maxlhs);
+
+  crestrc( &l1,&m1,&ierr);
+  if ( ierr > 0 ) 
+    {
+      Scierror(999,"%s: Internal error\n",fname);
+      return 0;
+    }
+
+  n1=1;
+  CreateVarFromPtr( 1,STRING_DATATYPE, &m1, &n1, &l1);
+  free(l1);
+  LhsVar(1) = 1;
+  return(0);
+}
index f8c9eb1..fe5719e 100644 (file)
@@ -1,43 +1,43 @@
-#include <stdlib.h>\r
-#include "stack-c.h"\r
-\r
-int dblearrayc (double **a, int *m, int *n,int *err);\r
-int intarrayc (int **a, int *m, int *n,int *err);\r
-int crestrc (char **a, int *m,int *err);\r
-\r
-int intex6c(char* fname)\r
-{ \r
-  char *l1;\r
-  int *l2;\r
-  double *l3;\r
-\r
-  int m1,n1,m2,n2,m3,n3,ierr=0;\r
-  int minlhs=1, minrhs=0, maxlhs=4, maxrhs=0;\r
-\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  crestrc( &l1, &m1, &ierr);\r
-  intarrayc( &l2, &m2, &n2, &ierr);\r
-  dblearrayc( &l3, &m3, &n3, &ierr);\r
-\r
-  if ( ierr > 0 ) \r
-    {\r
-      Scierror(999,"%s: Internal error\n",fname);\r
-      return 0;\r
-    }\r
-\r
-  n1=1;\r
-  /* Creating variable #1 of type character and dimension m1 x n1 (m1=1) */\r
-  CreateVarFromPtr( 1,STRING_DATATYPE, &m1, &n1, &l1);\r
-  CreateVarFromPtr( 2,MATRIX_OF_INTEGER_DATATYPE, &m2, &n2, &l2);\r
-  CreateVarFromPtr( 3,MATRIX_OF_DOUBLE_DATATYPE, &m3, &n3, &l3);\r
-\r
-  free(l1);  free(l2);   free(l3);\r
-\r
-  /* Returning 3 variables (#1, #2, #3) to Scilab  */\r
-  LhsVar(1) = 1;\r
-  LhsVar(2) = 2;\r
-  LhsVar(3) = 3;\r
-  return(0);\r
-}\r
+#include <stdlib.h>
+#include "stack-c.h"
+
+int dblearrayc (double **a, int *m, int *n,int *err);
+int intarrayc (int **a, int *m, int *n,int *err);
+int crestrc (char **a, int *m,int *err);
+
+int intex6c(char* fname)
+{ 
+  char *l1;
+  int *l2;
+  double *l3;
+
+  int m1,n1,m2,n2,m3,n3,ierr=0;
+  int minlhs=1, minrhs=0, maxlhs=4, maxrhs=0;
+
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  crestrc( &l1, &m1, &ierr);
+  intarrayc( &l2, &m2, &n2, &ierr);
+  dblearrayc( &l3, &m3, &n3, &ierr);
+
+  if ( ierr > 0 ) 
+    {
+      Scierror(999,"%s: Internal error\n",fname);
+      return 0;
+    }
+
+  n1=1;
+  /* Creating variable #1 of type character and dimension m1 x n1 (m1=1) */
+  CreateVarFromPtr( 1,STRING_DATATYPE, &m1, &n1, &l1);
+  CreateVarFromPtr( 2,MATRIX_OF_INTEGER_DATATYPE, &m2, &n2, &l2);
+  CreateVarFromPtr( 3,MATRIX_OF_DOUBLE_DATATYPE, &m3, &n3, &l3);
+
+  free(l1);  free(l2);   free(l3);
+
+  /* Returning 3 variables (#1, #2, #3) to Scilab  */
+  LhsVar(1) = 1;
+  LhsVar(2) = 2;
+  LhsVar(3) = 3;
+  return(0);
+}
index f35376d..62b3d4c 100644 (file)
@@ -1,46 +1,46 @@
-#include "stack-c.h"\r
-\r
-/**************************************************\r
- * An example of an hand written interface \r
- * We call a scilab function (disp) inside the interface \r
- **************************************************/\r
-\r
-int intex7c(char *fname) \r
-{\r
-  int mlhs,mrhs,ibegin;\r
-  static int l1, m1, n1, m2, n2, l2 ; \r
-  static int minlhs=1, minrhs=2, maxlhs=1, maxrhs=2;\r
-  static char name[] = "disp" ;\r
-\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);\r
-  GetRhsVar(2,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);\r
-\r
-  /* \r
-   *  To call a function it is required that its input arguments are\r
-   *  stored in the last positions of the variables stack (it is the\r
-   *  case here. NOTE that when \r
-   *  called, the function destroys its input variables and replaces them by \r
-   *  the output variables. \r
-   *  Here  function  takes  variables 1 and 2 as inputs and generates output\r
-   *  variables at positions 1.\r
-   *  ibegin must be the index of the first input variable of a_function\r
-   */\r
-  ibegin=1;\r
-\r
-  /* execute the Scilab disp function */\r
-  mlhs=1; mrhs=2; \r
-  SciString(&ibegin,name,&mlhs,&mrhs);\r
-  /* check if an error has occured while running a_function */\r
-  if (Err > 0 ) return 0;\r
-\r
-  /*  Note that disp, as every function which has nothing to return,\r
-   *  creates as output a variable with special type 0.\r
-   */\r
-\r
-  LhsVar(1) = 0; \r
-  return 0;\r
-}\r
-\r
+#include "stack-c.h"
+
+/**************************************************
+ * An example of an hand written interface 
+ * We call a scilab function (disp) inside the interface 
+ **************************************************/
+
+int intex7c(char *fname) 
+{
+  int mlhs,mrhs,ibegin;
+  static int l1, m1, n1, m2, n2, l2 ; 
+  static int minlhs=1, minrhs=2, maxlhs=1, maxrhs=2;
+  static char name[] = "disp" ;
+
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);
+  GetRhsVar(2,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);
+
+  /* 
+   *  To call a function it is required that its input arguments are
+   *  stored in the last positions of the variables stack (it is the
+   *  case here. NOTE that when 
+   *  called, the function destroys its input variables and replaces them by 
+   *  the output variables. 
+   *  Here  function  takes  variables 1 and 2 as inputs and generates output
+   *  variables at positions 1.
+   *  ibegin must be the index of the first input variable of a_function
+   */
+  ibegin=1;
+
+  /* execute the Scilab disp function */
+  mlhs=1; mrhs=2; 
+  SciString(&ibegin,name,&mlhs,&mrhs);
+  /* check if an error has occured while running a_function */
+  if (Err > 0 ) return 0;
+
+  /*  Note that disp, as every function which has nothing to return,
+   *  creates as output a variable with special type 0.
+   */
+
+  LhsVar(1) = 0; 
+  return 0;
+}
+
index f7b056f..ee7d41e 100644 (file)
@@ -1,81 +1,81 @@
-#include "stack-c.h"\r
-\r
-/*--------------------------------------------------------\r
- * An example of an hand written interface \r
- * passing a Scilab function as input of function ex8c\r
- *\r
- * call in Scilab:-->ex8c(x1,x2,a_function)\r
- *     x1<->1    (double array)\r
- *     x2<->2    (double array) \r
- *     a_function <-> 3    (a scilab function).\r
- *     a_function is the function "myfunction" defined \r
- *     in ex8c.sce. It has mlhs=2 inputs and mrhs=3 outputs.\r
- *\r
- *--------------------------------------------------------*/\r
-\r
-int intex8c(char *fname) \r
-{\r
-  int ibegin;\r
-  static int l1, m1, n1, m2, n2, l2,mlhs,mrhs,lf, l4,l5,i;\r
-  static int minlhs=1, minrhs=3, maxlhs=3, maxrhs=3;\r
-  \r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  /* Getting x1 and x2 at l1 and l2 . x1 is m1 x n1 and x2 is m2 x n2 */\r
-  GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);\r
-  GetRhsVar(2,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);\r
-  /* Getting the Scilab function:\r
-     It is the 3rd input parameter of ex8c and it is a function ("f") */\r
-  GetRhsVar(3,EXTERNAL_DATATYPE, &mlhs, &mrhs, &lf);\r
-  /*   It is at lf and has mlhs outputs and mrhs inputs */\r
-\r
-  if ( mrhs != 2 ) \r
-    {\r
-      Scierror(999,"%s: Third argument has an invalid rhs\n",fname);\r
-      return 0;\r
-    }\r
-\r
-  /* \r
-   *  To call a_function it is required that its input arguments are\r
-   *  stored in the last positions of the variables stack. NOTE that when \r
-   *  called, the function destroys its input variables and replaces them by \r
-   *  the output variables. so in this  case we need to make a copy of\r
-   *  them.\r
-   *  Remark: if the calling sequence of ex8c had been ex8c(a_function,x1,x2)\r
-   *  the following two copies would be un-necessary.\r
-   */\r
-\r
-  CreateVar(3+1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l4);\r
-  for (i =0 ; i < m1*n1 ; i++) *stk(l4+i) = *stk(l1+i);\r
-\r
-  CreateVar(3+mrhs,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l5);\r
-  for (i =0 ; i < m1*n1 ; i++) *stk(l5+i) = *stk(l2+i);\r
-\r
-  /* \r
-   *  Here a_function  takes  variables 4 and 5 as inputs and generates output\r
-   *  variables at positions 4 to 4-1+mlhs\r
-   *  ibegin must be the index of the first input variable of a_function\r
-   */\r
-  \r
-  ibegin=3+1;\r
-\r
-  /* execute the function */\r
-\r
-  SciFunction(&ibegin,&lf,&mlhs,&mrhs);\r
-  /* check if an error has occured while running a_function */\r
-  if (Err > 0 ) return 0;\r
-  \r
-  /* output variables: 4 and 5 (created by a_function) and possibly 6\r
-   * if a_function has 3 output parameters\r
-   */\r
-\r
-  LhsVar(1) = 4;\r
-  LhsVar(2) = 5;\r
-  if ( mlhs == 3) LhsVar(3) = 6;\r
-  return 0;\r
-}\r
-\r
-\r
-\r
-\r
+#include "stack-c.h"
+
+/*--------------------------------------------------------
+ * An example of an hand written interface 
+ * passing a Scilab function as input of function ex8c
+ *
+ * call in Scilab:-->ex8c(x1,x2,a_function)
+ *     x1<->1    (double array)
+ *     x2<->2    (double array) 
+ *     a_function <-> 3    (a scilab function).
+ *     a_function is the function "myfunction" defined 
+ *     in ex8c.sce. It has mlhs=2 inputs and mrhs=3 outputs.
+ *
+ *--------------------------------------------------------*/
+
+int intex8c(char *fname) 
+{
+  int ibegin;
+  static int l1, m1, n1, m2, n2, l2,mlhs,mrhs,lf, l4,l5,i;
+  static int minlhs=1, minrhs=3, maxlhs=3, maxrhs=3;
+  
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  /* Getting x1 and x2 at l1 and l2 . x1 is m1 x n1 and x2 is m2 x n2 */
+  GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);
+  GetRhsVar(2,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l2);
+  /* Getting the Scilab function:
+     It is the 3rd input parameter of ex8c and it is a function ("f") */
+  GetRhsVar(3,EXTERNAL_DATATYPE, &mlhs, &mrhs, &lf);
+  /*   It is at lf and has mlhs outputs and mrhs inputs */
+
+  if ( mrhs != 2 ) 
+    {
+      Scierror(999,"%s: Third argument has an invalid rhs\n",fname);
+      return 0;
+    }
+
+  /* 
+   *  To call a_function it is required that its input arguments are
+   *  stored in the last positions of the variables stack. NOTE that when 
+   *  called, the function destroys its input variables and replaces them by 
+   *  the output variables. so in this  case we need to make a copy of
+   *  them.
+   *  Remark: if the calling sequence of ex8c had been ex8c(a_function,x1,x2)
+   *  the following two copies would be un-necessary.
+   */
+
+  CreateVar(3+1,MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l4);
+  for (i =0 ; i < m1*n1 ; i++) *stk(l4+i) = *stk(l1+i);
+
+  CreateVar(3+mrhs,MATRIX_OF_DOUBLE_DATATYPE, &m2, &n2, &l5);
+  for (i =0 ; i < m1*n1 ; i++) *stk(l5+i) = *stk(l2+i);
+
+  /* 
+   *  Here a_function  takes  variables 4 and 5 as inputs and generates output
+   *  variables at positions 4 to 4-1+mlhs
+   *  ibegin must be the index of the first input variable of a_function
+   */
+  
+  ibegin=3+1;
+
+  /* execute the function */
+
+  SciFunction(&ibegin,&lf,&mlhs,&mrhs);
+  /* check if an error has occured while running a_function */
+  if (Err > 0 ) return 0;
+  
+  /* output variables: 4 and 5 (created by a_function) and possibly 6
+   * if a_function has 3 output parameters
+   */
+
+  LhsVar(1) = 4;
+  LhsVar(2) = 5;
+  if ( mlhs == 3) LhsVar(3) = 6;
+  return 0;
+}
+
+
+
+
index 0686224..9fa74f0 100644 (file)
@@ -1,26 +1,26 @@
-#include "stack-c.h"\r
-\r
-/** external functions to be called through this interface **/\r
-\r
-int as2osc (char *thechain);\r
-\r
-/*--------------------------------------------------------\r
- * A string argument passed to as2osc\r
- *--------------------------------------------------------*/\r
-\r
-int intex9c(char* fname)\r
-{ \r
-  int l1,m1,n1;\r
-  static int minlhs=1, minrhs=1, maxlhs=1, maxrhs=1;\r
-\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  GetRhsVar( 1,STRING_DATATYPE, &m1, &n1, &l1);\r
-\r
-  as2osc(cstk(l1));\r
-\r
-  LhsVar(1) = 1;\r
-  return(0);\r
-}\r
-\r
+#include "stack-c.h"
+
+/** external functions to be called through this interface **/
+
+int as2osc (char *thechain);
+
+/*--------------------------------------------------------
+ * A string argument passed to as2osc
+ *--------------------------------------------------------*/
+
+int intex9c(char* fname)
+{ 
+  int l1,m1,n1;
+  static int minlhs=1, minrhs=1, maxlhs=1, maxrhs=1;
+
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  GetRhsVar( 1,STRING_DATATYPE, &m1, &n1, &l1);
+
+  as2osc(cstk(l1));
+
+  LhsVar(1) = 1;
+  return(0);
+}
+
index f01d666..c053e99 100644 (file)
@@ -1,26 +1,26 @@
-examples = [ 'ex1c.sce' ;\r
-             'ex2c.sce' ;\r
-             'ex3c.sce' ;\r
-             'ex4c.sce' ;\r
-             'ex5c.sce' ; \r
-             'ex6c.sce' ; \r
-             'ex7c.sce' ;\r
-             'ex8c.sce' ;\r
-             'ex9c.sce' ; \r
-             'ex10c.sce' ;\r
-             'ex11c.sce' ;\r
-             'ex12c.sce' ;\r
-             'ex13c.sce' ;\r
-             'ex14c.sce' ;\r
-             'ex15c.sce' ];\r
-             \r
-for i=1:size(examples,'*')\r
-   disp('-----------------------------------');\r
-   disp('Example : ' + examples(i));\r
-   disp('-----------------------------------');\r
-   exec(examples(i));\r
-   \r
-end             \r
-\r
-\r
-\r
+examples = [ 'ex1c.sce' ;
+             'ex2c.sce' ;
+             'ex3c.sce' ;
+             'ex4c.sce' ;
+             'ex5c.sce' ; 
+             'ex6c.sce' ; 
+             'ex7c.sce' ;
+             'ex8c.sce' ;
+             'ex9c.sce' ; 
+             'ex10c.sce' ;
+             'ex11c.sce' ;
+             'ex12c.sce' ;
+             'ex13c.sce' ;
+             'ex14c.sce' ;
+             'ex15c.sce' ];
+             
+for i=1:size(examples,'*')
+   disp('-----------------------------------');
+   disp('Example : ' + examples(i));
+   disp('-----------------------------------');
+   exec(examples(i));
+   
+end             
+
+
+
index 2468b46..cba0168 100644 (file)
@@ -1,12 +1,12 @@
-\r
-files=['intex1f.o'];\r
-ilib_build('gw_ex1f',['ex1f','C2F(intex1f)'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-A=[1,2,3,4];\r
-B=[10,20,30;40,50,60];\r
-//Just display A and B\r
-ex1f(A,B)\r
-\r
-\r
+
+files=['intex1f.o'];
+ilib_build('gw_ex1f',['ex1f','C2F(intex1f)'],files,[]);
+
+exec loader.sce;
+
+A=[1,2,3,4];
+B=[10,20,30;40,50,60];
+//Just display A and B
+ex1f(A,B)
+
+
index 485125a..fed74ca 100644 (file)
@@ -1,11 +1,11 @@
-\r
-files=['intex2f.o'];\r
-ilib_build('gw_ex2f',['ex2f','C2F(intex2f)'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-// Creating the variable C \r
-ex2f();\r
-if C<>[10,20,30] then pause,end\r
-\r
-\r
+
+files=['intex2f.o'];
+ilib_build('gw_ex2f',['ex2f','C2F(intex2f)'],files,[]);
+
+exec loader.sce;
+
+// Creating the variable C 
+ex2f();
+if C<>[10,20,30] then pause,end
+
+
index 39509c3..8c7af8e 100644 (file)
@@ -1,10 +1,10 @@
-\r
-files=['intex3f.o'];\r
-ilib_build('gw_ex3f',['ex3f','C2F(intex3f)'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-// Accessing a Scilab string inside an interface \r
-Mystr='My string';\r
-ex3f()\r
-\r
+
+files=['intex3f.o'];
+ilib_build('gw_ex3f',['ex3f','C2F(intex3f)'],files,[]);
+
+exec loader.sce;
+
+// Accessing a Scilab string inside an interface 
+Mystr='My string';
+ex3f()
+
index bd48b5c..5ae5a63 100644 (file)
@@ -1,9 +1,9 @@
-\r
-files=['intex4f.o'];\r
-ilib_build('gw_ex4f',['ex4f','C2F(intex4f)'],files,[]);\r
-\r
-exec loader.sce;\r
-\r
-ex4f();\r
-if Str<> "Pilgrim said he, where can it be this land of Eldorado" then pause;end\r
-\r
+
+files=['intex4f.o'];
+ilib_build('gw_ex4f',['ex4f','C2F(intex4f)'],files,[]);
+
+exec loader.sce;
+
+ex4f();
+if Str<> "Pilgrim said he, where can it be this land of Eldorado" then pause;end
+
index 8143c4c..b2a823e 100644 (file)
@@ -1,47 +1,47 @@
-      subroutine intex1f(fname)\r
-      character*(*) fname\r
-C     --------------------------------------------\r
-      include 'stack.h'\r
-      logical getrhsvar,scistring\r
-      logical checklhs,checkrhs\r
-      common/  ierfeval / iero\r
-\r
-      if(.not.checkrhs(fname,2,2)) return\r
-      if(.not.checklhs(fname,1,1)) return\r
-c\r
-c     get adress of x1\r
-      if (.not.getrhsvar(1,'d',m1,n1,l1))  return\r
-c     get adress of x2\r
-      if (.not.getrhsvar(2,'d',m2,n2,l2))  return\r
-\r
-c     To call a function it is required that its input arguments are\r
-c     stored in the last positions of the variables stack (it is the\r
-c     ase here. NOTE that when \r
-c     called, the function destroys its input variables and replaces them by \r
-c     the output variables. \r
-\r
-c     Here  function  takes  variables 1 and 2 as inputs and generates output\r
-c     variables at positions 1.\r
-\r
-c     ibegin must be the index of the first input variable of a_function\r
-      ibegin=1\r
-\r
-c     execute the disp function\r
-      mlhs=1\r
-      mrhs=2\r
-      if(.not.scistring(ibegin,'disp',mlhs,mrhs)) return\r
-\r
-c     check if an error has occured while running a_function\r
-      if(err.gt.0) return\r
-\r
-c     Note that disp, as every function which has nothing to return,\r
-c     creates as output a variable with special type 0.\r
-\r
-c     output variable: \r
-\r
-c     select index of variables to return\r
-      lhsvar(1)=1\r
-      return\r
-      end\r
-       \r
-\r
+      subroutine intex1f(fname)
+      character*(*) fname
+C     --------------------------------------------
+      include 'stack.h'
+      logical getrhsvar,scistring
+      logical checklhs,checkrhs
+      common/  ierfeval / iero
+
+      if(.not.checkrhs(fname,2,2)) return
+      if(.not.checklhs(fname,1,1)) return
+c
+c     get adress of x1
+      if (.not.getrhsvar(1,'d',m1,n1,l1))  return
+c     get adress of x2
+      if (.not.getrhsvar(2,'d',m2,n2,l2))  return
+
+c     To call a function it is required that its input arguments are
+c     stored in the last positions of the variables stack (it is the
+c     ase here. NOTE that when 
+c     called, the function destroys its input variables and replaces them by 
+c     the output variables. 
+
+c     Here  function  takes  variables 1 and 2 as inputs and generates output
+c     variables at positions 1.
+
+c     ibegin must be the index of the first input variable of a_function
+      ibegin=1
+
+c     execute the disp function
+      mlhs=1
+      mrhs=2
+      if(.not.scistring(ibegin,'disp',mlhs,mrhs)) return
+
+c     check if an error has occured while running a_function
+      if(err.gt.0) return
+
+c     Note that disp, as every function which has nothing to return,
+c     creates as output a variable with special type 0.
+
+c     output variable: 
+
+c     select index of variables to return
+      lhsvar(1)=1
+      return
+      end
+       
+
index aa6c0dd..d3c86dd 100644 (file)
@@ -1,37 +1,37 @@
-      subroutine intex2f(fname)\r
-      include 'stack.h'\r
-c  -------------------------------\r
-c\r
-c   Accessing the Scilab Stack :\r
-c   Creation of a Scilab Matrix "C"\r
-c   from a name and an array of data\r
-c\r
-      character*(*) fname\r
-      logical cwritemat\r
-      logical checklhs,checkrhs\r
-\r
-      double precision C(3)\r
-\r
-      minlhs=1\r
-      maxlhs=1\r
-      minrhs=0\r
-      maxrhs=0\r
-\r
-      if(.not.checkrhs(fname,minrhs,maxrhs)) return\r
-      if(.not.checklhs(fname,minlhs,maxlhs)) return\r
-\r
-      nrows=1\r
-      ncols=3\r
-      C(1)=10.0d0\r
-      C(2)=20.0d0\r
-      C(3)=30.0d0\r
-\r
-c  Sending array C to Scilab as variable "C" (size [1,3]) \r
-      if(.not.cwritemat("C"//char(0), nrows, ncols, C)) return\r
-\r
-c  No output\r
-      lhsvar(1) = 0\r
-      return\r
-      end\r
-\r
-\r
+      subroutine intex2f(fname)
+      include 'stack.h'
+c  -------------------------------
+c
+c   Accessing the Scilab Stack :
+c   Creation of a Scilab Matrix "C"
+c   from a name and an array of data
+c
+      character*(*) fname
+      logical cwritemat
+      logical checklhs,checkrhs
+
+      double precision C(3)
+
+      minlhs=1
+      maxlhs=1
+      minrhs=0
+      maxrhs=0
+
+      if(.not.checkrhs(fname,minrhs,maxrhs)) return
+      if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+      nrows=1
+      ncols=3
+      C(1)=10.0d0
+      C(2)=20.0d0
+      C(3)=30.0d0
+
+c  Sending array C to Scilab as variable "C" (size [1,3]) 
+      if(.not.cwritemat("C"//char(0), nrows, ncols, C)) return
+
+c  No output
+      lhsvar(1) = 0
+      return
+      end
+
+
index bfa9e93..f0f3fcb 100644 (file)
@@ -1,28 +1,28 @@
-      subroutine intex3f(fname)\r
-      include 'stack.h'\r
-c ------------------------------------\r
-      character*(*) fname\r
-      logical checklhs, checkrhs, cwritechain\r
-      character*(54) str\r
-      integer strl\r
-c\r
-c   Creation of a Scilab variable Str of type string\r
-c   from a name and an a Fortran string \r
-\r
-      minrhs=0\r
-      maxrhs=0\r
-      minlhs=1\r
-      maxlhs=1\r
-c\r
-      if(.not.checkrhs(fname,minrhs,maxrhs)) return\r
-      if(.not.checklhs(fname,minlhs,maxlhs)) return\r
-\r
-      str='Pilgrim said he, where can it be this land of Eldorado'\r
-      strl=len(str)\r
-      if(.not.cwritechain('Str', strl, str)) return\r
-\r
-c   No output\r
-      lhsvar(1)=0\r
-      return\r
-      end\r
-\r
+      subroutine intex3f(fname)
+      include 'stack.h'
+c ------------------------------------
+      character*(*) fname
+      logical checklhs, checkrhs, cwritechain
+      character*(54) str
+      integer strl
+c
+c   Creation of a Scilab variable Str of type string
+c   from a name and an a Fortran string 
+
+      minrhs=0
+      maxrhs=0
+      minlhs=1
+      maxlhs=1
+c
+      if(.not.checkrhs(fname,minrhs,maxrhs)) return
+      if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+      str='Pilgrim said he, where can it be this land of Eldorado'
+      strl=len(str)
+      if(.not.cwritechain('Str', strl, str)) return
+
+c   No output
+      lhsvar(1)=0
+      return
+      end
+
index 9098153..f7d0a89 100644 (file)
@@ -1,28 +1,28 @@
-      subroutine intex4f(fname)\r
-      include 'stack.h'\r
-c ------------------------------------\r
-      character*(*) fname\r
-      logical checklhs, checkrhs, cwritechain\r
-      character*(54) str\r
-      integer strl\r
-c\r
-c   Creation of a Scilab variable Str of type string\r
-c   from a name and an a Fortran string \r
-\r
-      minrhs=0\r
-      maxrhs=0\r
-      minlhs=1\r
-      maxlhs=1\r
-c\r
-      if(.not.checkrhs(fname,minrhs,maxrhs)) return\r
-      if(.not.checklhs(fname,minlhs,maxlhs)) return\r
-\r
-      str='Pilgrim said he, where can it be this land of Eldorado'\r
-      strl=len(str)\r
-      if(.not.cwritechain('Str', strl, str)) return\r
-\r
-c   No output\r
-      lhsvar(1)=0\r
-      return\r
-      end\r
-\r
+      subroutine intex4f(fname)
+      include 'stack.h'
+c ------------------------------------
+      character*(*) fname
+      logical checklhs, checkrhs, cwritechain
+      character*(54) str
+      integer strl
+c
+c   Creation of a Scilab variable Str of type string
+c   from a name and an a Fortran string 
+
+      minrhs=0
+      maxrhs=0
+      minlhs=1
+      maxlhs=1
+c
+      if(.not.checkrhs(fname,minrhs,maxrhs)) return
+      if(.not.checklhs(fname,minlhs,maxlhs)) return
+
+      str='Pilgrim said he, where can it be this land of Eldorado'
+      strl=len(str)
+      if(.not.cwritechain('Str', strl, str)) return
+
+c   No output
+      lhsvar(1)=0
+      return
+      end
+
index 572267e..7dcbaf5 100644 (file)
@@ -1,16 +1,16 @@
-examples = [ 'ex1f.sce' ; 'ex2f.sce' ;\r
-             'ex3f.sce' ; 'ex4f.sce' ;\r
-                                               ];\r
-             \r
-for i=1:size(examples,'*')\r
-   disp('-----------------------------------');\r
-   disp('Example : ' + examples(i));\r
-   disp('-----------------------------------');\r
-   exec(examples(i));\r
-   \r
-end             \r
-\r
-\r
-\r
-\r
-\r
+examples = [ 'ex1f.sce' ; 'ex2f.sce' ;
+             'ex3f.sce' ; 'ex4f.sce' ;
+                                               ];
+             
+for i=1:size(examples,'*')
+   disp('-----------------------------------');
+   disp('Example : ' + examples(i));
+   disp('-----------------------------------');
+   exec(examples(i));
+   
+end             
+
+
+
+
+