- os: osx
install:
- brew tap homebrew/python
- - brew install swig python
+ - brew tap homebrew/science
+ - brew update
+ - brew install swig python octave
script:
- mkdir build && pushd build
- cmake -DCMAKE_INSTALL_PREFIX=~/.local -DWITH_CXX=ON ..
- - make install && make tests && ctest --output-on-failure
\ No newline at end of file
+ - make install && make tests && ctest --output-on-failure
add_test (NAME test_std_python COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_std.py)
set_tests_properties (test_std_python PROPERTIES ENVIRONMENT "${PYINSTALLCHECK_ENVIRONMENT}")
endif ()
+
+if (OCTAVE_FOUND)
+ add_test (NAME test_octave COMMAND ${OCTAVE_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/t_octave.m ${CMAKE_SOURCE_DIR}/octave ${CMAKE_BINARY_DIR}/octave)
+endif ()
\ No newline at end of file
--- /dev/null
+
+arg_list = argv ();
+for i = 1:nargin
+ loadpath = arg_list{i};
+ printf ("-- adding path: %s\n", loadpath);
+ addpath (loadpath);
+endfor
+
+function [val, gradient] = myfunc(x)
+ val = sqrt(x(2));
+ if (nargout > 1)
+ gradient = [0, 0.5 / val];
+ end
+endfunction
+
+function [val, gradient] = myconstraint(x,a,b)
+ val = (a*x(1) + b)^3 - x(2);
+ if (nargout > 1)
+ gradient = [3*a*(a*x(1) + b)^2, -1];
+ end
+endfunction
+
+
+opt.algorithm = NLOPT_LD_MMA
+% opt.algorithm = NLOPT_LN_COBYLA
+opt.lower_bounds = [-inf, 0]
+opt.min_objective = @myfunc
+opt.fc = { (@(x) myconstraint(x,2,0)), (@(x) myconstraint(x,-1,1)) }
+opt.fc_tol = [1e-8, 1e-8];
+opt.xtol_rel = 1e-4
+[xopt, fmin, retcode] = nlopt_optimize(opt, [1.234 5.678])