liblinear-ruby 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/ext/blasp.h +8 -8
  4. data/ext/daxpy.c +3 -3
  5. data/ext/ddot.c +3 -3
  6. data/ext/dnrm2.c +7 -7
  7. data/ext/dscal.c +4 -4
  8. data/ext/liblinear_wrap.cxx +382 -382
  9. data/ext/linear.cpp +44 -55
  10. data/ext/linear.h +5 -1
  11. data/ext/tron.cpp +13 -5
  12. data/ext/tron.h +1 -1
  13. data/lib/liblinear.rb +2 -0
  14. data/lib/liblinear/version.rb +1 -1
  15. metadata +2 -41
  16. data/liblinear-2.1/COPYRIGHT +0 -31
  17. data/liblinear-2.1/Makefile +0 -37
  18. data/liblinear-2.1/Makefile.win +0 -24
  19. data/liblinear-2.1/README +0 -600
  20. data/liblinear-2.1/blas/Makefile +0 -22
  21. data/liblinear-2.1/blas/blas.h +0 -25
  22. data/liblinear-2.1/blas/blasp.h +0 -438
  23. data/liblinear-2.1/blas/daxpy.c +0 -57
  24. data/liblinear-2.1/blas/ddot.c +0 -58
  25. data/liblinear-2.1/blas/dnrm2.c +0 -70
  26. data/liblinear-2.1/blas/dscal.c +0 -52
  27. data/liblinear-2.1/heart_scale +0 -270
  28. data/liblinear-2.1/linear.cpp +0 -3053
  29. data/liblinear-2.1/linear.def +0 -22
  30. data/liblinear-2.1/linear.h +0 -79
  31. data/liblinear-2.1/matlab/Makefile +0 -49
  32. data/liblinear-2.1/matlab/README +0 -208
  33. data/liblinear-2.1/matlab/libsvmread.c +0 -212
  34. data/liblinear-2.1/matlab/libsvmwrite.c +0 -119
  35. data/liblinear-2.1/matlab/linear_model_matlab.c +0 -176
  36. data/liblinear-2.1/matlab/linear_model_matlab.h +0 -2
  37. data/liblinear-2.1/matlab/make.m +0 -22
  38. data/liblinear-2.1/matlab/predict.c +0 -341
  39. data/liblinear-2.1/matlab/train.c +0 -492
  40. data/liblinear-2.1/predict.c +0 -243
  41. data/liblinear-2.1/python/Makefile +0 -4
  42. data/liblinear-2.1/python/README +0 -380
  43. data/liblinear-2.1/python/liblinear.py +0 -323
  44. data/liblinear-2.1/python/liblinearutil.py +0 -270
  45. data/liblinear-2.1/train.c +0 -449
  46. data/liblinear-2.1/tron.cpp +0 -241
  47. data/liblinear-2.1/tron.h +0 -35
  48. data/liblinear-2.1/windows/liblinear.dll +0 -0
  49. data/liblinear-2.1/windows/libsvmread.mexw64 +0 -0
  50. data/liblinear-2.1/windows/libsvmwrite.mexw64 +0 -0
  51. data/liblinear-2.1/windows/predict.exe +0 -0
  52. data/liblinear-2.1/windows/predict.mexw64 +0 -0
  53. data/liblinear-2.1/windows/train.exe +0 -0
  54. data/liblinear-2.1/windows/train.mexw64 +0 -0
@@ -1,22 +0,0 @@
1
- LIBRARY liblinear
2
- EXPORTS
3
- train @1
4
- cross_validation @2
5
- save_model @3
6
- load_model @4
7
- get_nr_feature @5
8
- get_nr_class @6
9
- get_labels @7
10
- predict_values @8
11
- predict @9
12
- predict_probability @10
13
- free_and_destroy_model @11
14
- free_model_content @12
15
- destroy_param @13
16
- check_parameter @14
17
- check_probability_model @15
18
- set_print_string_function @16
19
- get_decfun_coef @17
20
- get_decfun_bias @18
21
- check_regression_model @19
22
- find_parameter_C @20
@@ -1,79 +0,0 @@
1
- #ifndef _LIBLINEAR_H
2
- #define _LIBLINEAR_H
3
-
4
- #ifdef __cplusplus
5
- extern "C" {
6
- #endif
7
-
8
- struct feature_node
9
- {
10
- int index;
11
- double value;
12
- };
13
-
14
- struct problem
15
- {
16
- int l, n;
17
- double *y;
18
- struct feature_node **x;
19
- double bias; /* < 0 if no bias term */
20
- };
21
-
22
- enum { L2R_LR, L2R_L2LOSS_SVC_DUAL, L2R_L2LOSS_SVC, L2R_L1LOSS_SVC_DUAL, MCSVM_CS, L1R_L2LOSS_SVC, L1R_LR, L2R_LR_DUAL, L2R_L2LOSS_SVR = 11, L2R_L2LOSS_SVR_DUAL, L2R_L1LOSS_SVR_DUAL }; /* solver_type */
23
-
24
- struct parameter
25
- {
26
- int solver_type;
27
-
28
- /* these are for training only */
29
- double eps; /* stopping criteria */
30
- double C;
31
- int nr_weight;
32
- int *weight_label;
33
- double* weight;
34
- double p;
35
- double *init_sol;
36
- };
37
-
38
- struct model
39
- {
40
- struct parameter param;
41
- int nr_class; /* number of classes */
42
- int nr_feature;
43
- double *w;
44
- int *label; /* label of each class */
45
- double bias;
46
- };
47
-
48
- struct model* train(const struct problem *prob, const struct parameter *param);
49
- void cross_validation(const struct problem *prob, const struct parameter *param, int nr_fold, double *target);
50
- void find_parameter_C(const struct problem *prob, const struct parameter *param, int nr_fold, double start_C, double max_C, double *best_C, double *best_rate);
51
-
52
- double predict_values(const struct model *model_, const struct feature_node *x, double* dec_values);
53
- double predict(const struct model *model_, const struct feature_node *x);
54
- double predict_probability(const struct model *model_, const struct feature_node *x, double* prob_estimates);
55
-
56
- int save_model(const char *model_file_name, const struct model *model_);
57
- struct model *load_model(const char *model_file_name);
58
-
59
- int get_nr_feature(const struct model *model_);
60
- int get_nr_class(const struct model *model_);
61
- void get_labels(const struct model *model_, int* label);
62
- double get_decfun_coef(const struct model *model_, int feat_idx, int label_idx);
63
- double get_decfun_bias(const struct model *model_, int label_idx);
64
-
65
- void free_model_content(struct model *model_ptr);
66
- void free_and_destroy_model(struct model **model_ptr_ptr);
67
- void destroy_param(struct parameter *param);
68
-
69
- const char *check_parameter(const struct problem *prob, const struct parameter *param);
70
- int check_probability_model(const struct model *model);
71
- int check_regression_model(const struct model *model);
72
- void set_print_string_function(void (*print_func) (const char*));
73
-
74
- #ifdef __cplusplus
75
- }
76
- #endif
77
-
78
- #endif /* _LIBLINEAR_H */
79
-
@@ -1,49 +0,0 @@
1
- # This Makefile is used under Linux
2
-
3
- MATLABDIR ?= /usr/local/matlab
4
- CXX ?= g++
5
- #CXX = g++-3.3
6
- CC ?= gcc
7
- CFLAGS = -Wall -Wconversion -O3 -fPIC -I$(MATLABDIR)/extern/include -I..
8
-
9
- MEX = $(MATLABDIR)/bin/mex
10
- MEX_OPTION = CC="$(CXX)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CFLAGS)"
11
- # comment the following line if you use MATLAB on a 32-bit computer
12
- MEX_OPTION += -largeArrayDims
13
- MEX_EXT = $(shell $(MATLABDIR)/bin/mexext)
14
-
15
- all: matlab
16
-
17
- matlab: binary
18
-
19
- octave:
20
- @echo "please type make under Octave"
21
- binary: train.$(MEX_EXT) predict.$(MEX_EXT) libsvmread.$(MEX_EXT) libsvmwrite.$(MEX_EXT)
22
-
23
- train.$(MEX_EXT): train.c ../linear.h ../tron.o ../linear.o linear_model_matlab.o ../blas/blas.a
24
- $(MEX) $(MEX_OPTION) train.c ../tron.o ../linear.o linear_model_matlab.o ../blas/blas.a
25
-
26
- predict.$(MEX_EXT): predict.c ../linear.h ../tron.o ../linear.o linear_model_matlab.o ../blas/blas.a
27
- $(MEX) $(MEX_OPTION) predict.c ../tron.o ../linear.o linear_model_matlab.o ../blas/blas.a
28
-
29
- libsvmread.$(MEX_EXT): libsvmread.c
30
- $(MEX) $(MEX_OPTION) libsvmread.c
31
-
32
- libsvmwrite.$(MEX_EXT): libsvmwrite.c
33
- $(MEX) $(MEX_OPTION) libsvmwrite.c
34
-
35
- linear_model_matlab.o: linear_model_matlab.c ../linear.h
36
- $(CXX) $(CFLAGS) -c linear_model_matlab.c
37
-
38
- ../linear.o: ../linear.cpp ../linear.h
39
- make -C .. linear.o
40
-
41
- ../tron.o: ../tron.cpp ../tron.h
42
- make -C .. tron.o
43
-
44
- ../blas/blas.a: ../blas/*.c ../blas/*.h
45
- make -C ../blas OPTFLAGS='$(CFLAGS)' CC='$(CC)';
46
-
47
- clean:
48
- make -C ../blas clean
49
- rm -f *~ *.o *.mex* *.obj ../linear.o ../tron.o
@@ -1,208 +0,0 @@
1
- --------------------------------------------
2
- --- MATLAB/OCTAVE interface of LIBLINEAR ---
3
- --------------------------------------------
4
-
5
- Table of Contents
6
- =================
7
-
8
- - Introduction
9
- - Installation
10
- - Usage
11
- - Returned Model Structure
12
- - Other Utilities
13
- - Examples
14
- - Additional Information
15
-
16
-
17
- Introduction
18
- ============
19
-
20
- This tool provides a simple interface to LIBLINEAR, a library for
21
- large-scale regularized linear classification and regression
22
- (http://www.csie.ntu.edu.tw/~cjlin/liblinear). It is very easy to use
23
- as the usage and the way of specifying parameters are the same as that
24
- of LIBLINEAR.
25
-
26
- Installation
27
- ============
28
-
29
- On Windows systems, pre-built binary files are already in the
30
- directory '..\windows', so no need to conduct installation. Now we
31
- provide binary files only for 64bit MATLAB on Windows. If you would
32
- like to re-build the package, please rely on the following steps.
33
-
34
- We recommend using make.m on both MATLAB and OCTAVE. Just type 'make'
35
- to build 'libsvmread.mex', 'libsvmwrite.mex', 'train.mex', and
36
- 'predict.mex'.
37
-
38
- On MATLAB or Octave:
39
-
40
- >> make
41
-
42
- If make.m does not work on MATLAB (especially for Windows), try 'mex
43
- -setup' to choose a suitable compiler for mex. Make sure your compiler
44
- is accessible and workable. Then type 'make' to start the
45
- installation.
46
-
47
- Example:
48
-
49
- matlab>> mex -setup
50
- (ps: MATLAB will show the following messages to setup default compiler.)
51
- Please choose your compiler for building external interface (MEX) files:
52
- Would you like mex to locate installed compilers [y]/n? y
53
- Select a compiler:
54
- [1] Microsoft Visual C/C++ version 7.1 in C:\Program Files\Microsoft Visual Studio
55
- [0] None
56
- Compiler: 1
57
- Please verify your choices:
58
- Compiler: Microsoft Visual C/C++ 7.1
59
- Location: C:\Program Files\Microsoft Visual Studio
60
- Are these correct?([y]/n): y
61
-
62
- matlab>> make
63
-
64
- On Unix systems, if neither make.m nor 'mex -setup' works, please use
65
- Makefile and type 'make' in a command window. Note that we assume
66
- your MATLAB is installed in '/usr/local/matlab'. If not, please change
67
- MATLABDIR in Makefile.
68
-
69
- Example:
70
- linux> make
71
-
72
- To use octave, type 'make octave':
73
-
74
- Example:
75
- linux> make octave
76
-
77
- For a list of supported/compatible compilers for MATLAB, please check
78
- the following page:
79
-
80
- http://www.mathworks.com/support/compilers/current_release/
81
-
82
- Usage
83
- =====
84
-
85
- matlab> model = train(training_label_vector, training_instance_matrix [,'liblinear_options', 'col']);
86
-
87
- -training_label_vector:
88
- An m by 1 vector of training labels. (type must be double)
89
- -training_instance_matrix:
90
- An m by n matrix of m training instances with n features.
91
- It must be a sparse matrix. (type must be double)
92
- -liblinear_options:
93
- A string of training options in the same format as that of LIBLINEAR.
94
- -col:
95
- if 'col' is set, each column of training_instance_matrix is a data instance. Otherwise each row is a data instance.
96
-
97
- matlab> [predicted_label, accuracy, decision_values/prob_estimates] = predict(testing_label_vector, testing_instance_matrix, model [, 'liblinear_options', 'col']);
98
- matlab> [predicted_label] = predict(testing_label_vector, testing_instance_matrix, model [, 'liblinear_options', 'col']);
99
-
100
- -testing_label_vector:
101
- An m by 1 vector of prediction labels. If labels of test
102
- data are unknown, simply use any random values. (type must be double)
103
- -testing_instance_matrix:
104
- An m by n matrix of m testing instances with n features.
105
- It must be a sparse matrix. (type must be double)
106
- -model:
107
- The output of train.
108
- -liblinear_options:
109
- A string of testing options in the same format as that of LIBLINEAR.
110
- -col:
111
- if 'col' is set, each column of testing_instance_matrix is a data instance. Otherwise each row is a data instance.
112
-
113
- Returned Model Structure
114
- ========================
115
-
116
- The 'train' function returns a model which can be used for future
117
- prediction. It is a structure and is organized as [Parameters, nr_class,
118
- nr_feature, bias, Label, w]:
119
-
120
- -Parameters: Parameters (now only solver type is provided)
121
- -nr_class: number of classes; = 2 for regression
122
- -nr_feature: number of features in training data (without including the bias term)
123
- -bias: If >= 0, we assume one additional feature is added to the end
124
- of each data instance.
125
- -Label: label of each class; empty for regression
126
- -w: a nr_w-by-n matrix for the weights, where n is nr_feature
127
- or nr_feature+1 depending on the existence of the bias term.
128
- nr_w is 1 if nr_class=2 and -s is not 4 (i.e., not
129
- multi-class svm by Crammer and Singer). It is
130
- nr_class otherwise.
131
-
132
- If the '-v' option is specified, cross validation is conducted and the
133
- returned model is just a scalar: cross-validation accuracy for
134
- classification and mean-squared error for regression. If the '-C' option
135
- is specified, the best parameter C is found by cross validation. The
136
- returned model is a two dimensional vector, where the first value is
137
- the best C and the second value is the corresponding cross-validation
138
- accuracy. The parameter selection utility is supported by only -s 0
139
- and -s 2.
140
-
141
- Result of Prediction
142
- ====================
143
-
144
- The function 'predict' has three outputs. The first one,
145
- predicted_label, is a vector of predicted labels. The second output,
146
- accuracy, is a vector including accuracy (for classification), mean
147
- squared error, and squared correlation coefficient (for regression).
148
- The third is a matrix containing decision values or probability
149
- estimates (if '-b 1' is specified). If k is the number of classes
150
- and k' is the number of classifiers (k'=1 if k=2, otherwise k'=k), for decision values,
151
- each row includes results of k' binary linear classifiers. For probabilities,
152
- each row contains k values indicating the probability that the testing instance is in
153
- each class. Note that the order of classes here is the same as 'Label'
154
- field in the model structure.
155
-
156
- Other Utilities
157
- ===============
158
-
159
- A matlab function libsvmread reads files in LIBSVM format:
160
-
161
- [label_vector, instance_matrix] = libsvmread('data.txt');
162
-
163
- Two outputs are labels and instances, which can then be used as inputs
164
- of svmtrain or svmpredict.
165
-
166
- A matlab function libsvmwrite writes Matlab matrix to a file in LIBSVM format:
167
-
168
- libsvmwrite('data.txt', label_vector, instance_matrix]
169
-
170
- The instance_matrix must be a sparse matrix. (type must be double)
171
- For windows, `libsvmread.mexw64' and `libsvmwrite.mexw64' are ready in
172
- the directory `..\windows'.
173
-
174
- These codes are prepared by Rong-En Fan and Kai-Wei Chang from National
175
- Taiwan University.
176
-
177
- Examples
178
- ========
179
-
180
- Train and test on the provided data heart_scale:
181
-
182
- matlab> [heart_scale_label, heart_scale_inst] = libsvmread('../heart_scale');
183
- matlab> model = train(heart_scale_label, heart_scale_inst, '-c 1');
184
- matlab> [predict_label, accuracy, dec_values] = predict(heart_scale_label, heart_scale_inst, model); % test the training data
185
-
186
- Note that for testing, you can put anything in the testing_label_vector.
187
-
188
- For probability estimates, you need '-b 1' only in the testing phase:
189
-
190
- matlab> [predict_label, accuracy, prob_estimates] = predict(heart_scale_label, heart_scale_inst, model, '-b 1');
191
-
192
- Use the best parameter to train (only supported by -s 0 and -s 2):
193
-
194
- matlab> best = train(heart_scale_label, heart_scale_inst, '-C -s 0');
195
- matlab> model = train(heart_scale_label, heart_scale_inst, sprintf('-c %f -s 0', best(1))); % use the same solver: -s 0
196
-
197
- Additional Information
198
- ======================
199
-
200
- Please cite LIBLINEAR as follows
201
-
202
- R.-E. Fan, K.-W. Chang, C.-J. Hsieh, X.-R. Wang, and C.-J. Lin.
203
- LIBLINEAR: A Library for Large Linear Classification, Journal of
204
- Machine Learning Research 9(2008), 1871-1874.Software available at
205
- http://www.csie.ntu.edu.tw/~cjlin/liblinear
206
-
207
- For any question, please contact Chih-Jen Lin <cjlin@csie.ntu.edu.tw>.
208
-
@@ -1,212 +0,0 @@
1
- #include <stdio.h>
2
- #include <string.h>
3
- #include <stdlib.h>
4
- #include <ctype.h>
5
- #include <errno.h>
6
-
7
- #include "mex.h"
8
-
9
- #ifdef MX_API_VER
10
- #if MX_API_VER < 0x07030000
11
- typedef int mwIndex;
12
- #endif
13
- #endif
14
- #ifndef max
15
- #define max(x,y) (((x)>(y))?(x):(y))
16
- #endif
17
- #ifndef min
18
- #define min(x,y) (((x)<(y))?(x):(y))
19
- #endif
20
-
21
- void exit_with_help()
22
- {
23
- mexPrintf(
24
- "Usage: [label_vector, instance_matrix] = libsvmread('filename');\n"
25
- );
26
- }
27
-
28
- static void fake_answer(int nlhs, mxArray *plhs[])
29
- {
30
- int i;
31
- for(i=0;i<nlhs;i++)
32
- plhs[i] = mxCreateDoubleMatrix(0, 0, mxREAL);
33
- }
34
-
35
- static char *line;
36
- static int max_line_len;
37
-
38
- static char* readline(FILE *input)
39
- {
40
- int len;
41
-
42
- if(fgets(line,max_line_len,input) == NULL)
43
- return NULL;
44
-
45
- while(strrchr(line,'\n') == NULL)
46
- {
47
- max_line_len *= 2;
48
- line = (char *) realloc(line, max_line_len);
49
- len = (int) strlen(line);
50
- if(fgets(line+len,max_line_len-len,input) == NULL)
51
- break;
52
- }
53
- return line;
54
- }
55
-
56
- // read in a problem (in libsvm format)
57
- void read_problem(const char *filename, int nlhs, mxArray *plhs[])
58
- {
59
- int max_index, min_index, inst_max_index;
60
- size_t elements, k, i, l=0;
61
- FILE *fp = fopen(filename,"r");
62
- char *endptr;
63
- mwIndex *ir, *jc;
64
- double *labels, *samples;
65
-
66
- if(fp == NULL)
67
- {
68
- mexPrintf("can't open input file %s\n",filename);
69
- fake_answer(nlhs, plhs);
70
- return;
71
- }
72
-
73
- max_line_len = 1024;
74
- line = (char *) malloc(max_line_len*sizeof(char));
75
-
76
- max_index = 0;
77
- min_index = 1; // our index starts from 1
78
- elements = 0;
79
- while(readline(fp) != NULL)
80
- {
81
- char *idx, *val;
82
- // features
83
- int index = 0;
84
-
85
- inst_max_index = -1; // strtol gives 0 if wrong format, and precomputed kernel has <index> start from 0
86
- strtok(line," \t"); // label
87
- while (1)
88
- {
89
- idx = strtok(NULL,":"); // index:value
90
- val = strtok(NULL," \t");
91
- if(val == NULL)
92
- break;
93
-
94
- errno = 0;
95
- index = (int) strtol(idx,&endptr,10);
96
- if(endptr == idx || errno != 0 || *endptr != '\0' || index <= inst_max_index)
97
- {
98
- mexPrintf("Wrong input format at line %d\n",l+1);
99
- fake_answer(nlhs, plhs);
100
- return;
101
- }
102
- else
103
- inst_max_index = index;
104
-
105
- min_index = min(min_index, index);
106
- elements++;
107
- }
108
- max_index = max(max_index, inst_max_index);
109
- l++;
110
- }
111
- rewind(fp);
112
-
113
- // y
114
- plhs[0] = mxCreateDoubleMatrix(l, 1, mxREAL);
115
- // x^T
116
- if (min_index <= 0)
117
- plhs[1] = mxCreateSparse(max_index-min_index+1, l, elements, mxREAL);
118
- else
119
- plhs[1] = mxCreateSparse(max_index, l, elements, mxREAL);
120
-
121
- labels = mxGetPr(plhs[0]);
122
- samples = mxGetPr(plhs[1]);
123
- ir = mxGetIr(plhs[1]);
124
- jc = mxGetJc(plhs[1]);
125
-
126
- k=0;
127
- for(i=0;i<l;i++)
128
- {
129
- char *idx, *val, *label;
130
- jc[i] = k;
131
-
132
- readline(fp);
133
-
134
- label = strtok(line," \t\n");
135
- if(label == NULL)
136
- {
137
- mexPrintf("Empty line at line %d\n",i+1);
138
- fake_answer(nlhs, plhs);
139
- return;
140
- }
141
- labels[i] = strtod(label,&endptr);
142
- if(endptr == label || *endptr != '\0')
143
- {
144
- mexPrintf("Wrong input format at line %d\n",i+1);
145
- fake_answer(nlhs, plhs);
146
- return;
147
- }
148
-
149
- // features
150
- while(1)
151
- {
152
- idx = strtok(NULL,":");
153
- val = strtok(NULL," \t");
154
- if(val == NULL)
155
- break;
156
-
157
- ir[k] = (mwIndex) (strtol(idx,&endptr,10) - min_index); // precomputed kernel has <index> start from 0
158
-
159
- errno = 0;
160
- samples[k] = strtod(val,&endptr);
161
- if (endptr == val || errno != 0 || (*endptr != '\0' && !isspace(*endptr)))
162
- {
163
- mexPrintf("Wrong input format at line %d\n",i+1);
164
- fake_answer(nlhs, plhs);
165
- return;
166
- }
167
- ++k;
168
- }
169
- }
170
- jc[l] = k;
171
-
172
- fclose(fp);
173
- free(line);
174
-
175
- {
176
- mxArray *rhs[1], *lhs[1];
177
- rhs[0] = plhs[1];
178
- if(mexCallMATLAB(1, lhs, 1, rhs, "transpose"))
179
- {
180
- mexPrintf("Error: cannot transpose problem\n");
181
- fake_answer(nlhs, plhs);
182
- return;
183
- }
184
- plhs[1] = lhs[0];
185
- }
186
- }
187
-
188
- void mexFunction( int nlhs, mxArray *plhs[],
189
- int nrhs, const mxArray *prhs[] )
190
- {
191
- char filename[256];
192
-
193
- if(nrhs != 1 || nlhs != 2)
194
- {
195
- exit_with_help();
196
- fake_answer(nlhs, plhs);
197
- return;
198
- }
199
-
200
- mxGetString(prhs[0], filename, mxGetN(prhs[0]) + 1);
201
-
202
- if(filename == NULL)
203
- {
204
- mexPrintf("Error: filename is NULL\n");
205
- return;
206
- }
207
-
208
- read_problem(filename, nlhs, plhs);
209
-
210
- return;
211
- }
212
-